cordis.patch.yml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. # The dsh-web-app bundle patch: the browser surface over the dsh-base layer.
  2. # Applied after dsh-base's insert; rows here override base rows by id, with
  3. # the profile's own cordis.patch.yml and any --patch overlays still to come.
  4. #
  5. # A patch replaces the targeted row's whole `config`, so each row below
  6. # restates every key it owns. The `dsh web` launcher alias turns --host/--port/
  7. # --dev/--workspace-root/--trusted-host into further patches over these rows
  8. # (`--dev` inserts the dsh-client-hmr row).
  9. # ── surface-specific values the base deliberately omits ─────────────────────
  10. - id: system-prompt
  11. config:
  12. persona: >-
  13. You are a coding agent powered by the {{model}} model. Your working directory is {{cwd}}.
  14. # TODO: Re-enable shared HMR for Web after its reload lifecycle is tested.
  15. - id: hmr
  16. disabled: true
  17. # Web content search runs on an ephemeral in-memory index. The service
  18. # activates at boot, while first-search defers the node:sqlite import and
  19. # in-memory handle so Node 22 startup stays quiet until content search
  20. # actually uses SQLite. That search then reconciles this boot's sources.
  21. - id: session-query-sqlite
  22. config:
  23. path: ':memory:'
  24. openAt: first-search
  25. - id: tools
  26. config:
  27. # TEMPORARY workaround: DSH_TOOLS_MODE (native|code|both) opts a whole dsh
  28. # process into Code Mode while per-session tool-mode selection is being
  29. # designed; unset keeps the schema default (native). Remove the env seam
  30. # once the web UI owns the choice per session.
  31. mode: !!js process.env.DSH_TOOLS_MODE
  32. # ── web-only host rows, the transport layer, and the browser roster ─────────
  33. # `dshClient` rows are the browser roster the modules node half scans into
  34. # window.__DSH_BOOT__; the modules row is simultaneously a host row.
  35. - insert:
  36. - id: code-runtime
  37. name: '@deepseek-ai/dsh-code-runtime-worker'
  38. - id: storage
  39. name: '@deepseek-ai/dsh-storage'
  40. - id: storage-json
  41. name: '@deepseek-ai/dsh-storage-json'
  42. config:
  43. root: !!js dshHomePath('storages')
  44. - id: storage-domain
  45. name: '@deepseek-ai/dsh-storage-domain'
  46. config:
  47. backend: json
  48. - id: workspace
  49. name: '@deepseek-ai/dsh-workspace'
  50. - id: session-projection-cache
  51. name: '@deepseek-ai/dsh-session-projection-cache'
  52. config:
  53. writeEveryEvents: 200
  54. writeIntervalMs: 5000
  55. # Resolve bind host, SSH launch, and display once at boot, then mount the
  56. # matching dual-face directory picker. Mount -native or -browse directly in
  57. # an overlay to pin the interaction.
  58. - id: directory-picker
  59. name: '@deepseek-ai/dsh-host-directory-picker-auto'
  60. # The API gateway: the transport-agnostic dispatch face every client shape
  61. # shares. provider/model are the host default routing — the profile json's
  62. # mapping target (user config overrides these engineering defaults).
  63. - id: api-gateway
  64. name: '@deepseek-ai/dsh-host-apiproxy'
  65. config:
  66. provider: deepseek-official
  67. model: deepseek-v4-flash
  68. # ── layer 2: transport/service ──────────────────────────────────────────────
  69. # Plain route-registration carrier; host and port arrive as `dsh web`
  70. # flag patches over these defaults. The dist is served by the web-runtime
  71. # row below through the fallback seat.
  72. - id: webserver
  73. name: '@deepseek-ai/dsh-host-webserver'
  74. config:
  75. host: 127.0.0.1
  76. port: 3080
  77. # Web glue owned by this bundle: resolves the built frontend dist (an
  78. # assembly fact of dsh-web-app, never user config), mounts the
  79. # frontend-static fallback owner, registers the web-surface prompt
  80. # section and bash runtime variables, and prints the URL line. `dsh web`
  81. # patches mode/lanAddresses over these defaults; complete-prompt overlays
  82. # set surfaceContext false to suppress every model- and shell-visible Web
  83. # runtime contribution.
  84. - id: web-runtime
  85. name: '@deepseek-ai/dsh-web-app'
  86. config:
  87. mode: production
  88. printUrl: true
  89. surfaceContext: true
  90. # ── browser plugin roster (dshClient rows; node halves are layer-2 hosts) ──
  91. # Dual-face: node half scans this very tree for dshClient rows, composes
  92. # window.__DSH_BOOT__, serves /plugins/<id>/client.js; browser half is the
  93. # module table the shell kernel constructs before cordis exists (§4.7 —
  94. # adopted as a plugin entry by the kernel, never fetched).
  95. - id: modules
  96. name: '@deepseek-ai/dsh-client-modules'
  97. # Owns both ends of the web transport: node half binds the gateway to the
  98. # webserver under /api; browser half is the fetch/SSE client.
  99. - id: connection
  100. name: '@deepseek-ai/dsh-client-connection'
  101. - id: api-remotes
  102. name: '@deepseek-ai/dsh-api-remotes'
  103. - id: client-runtime
  104. name: '@deepseek-ai/dsh-client-runtime'
  105. - id: ui-theme
  106. name: '@deepseek-ai/dsh-client-ui-theme'
  107. - id: locale
  108. name: '@deepseek-ai/dsh-client-locale'
  109. - id: ui-layout
  110. name: '@deepseek-ai/dsh-client-ui-layout'
  111. - id: ui-sidebar
  112. name: '@deepseek-ai/dsh-client-ui-sidebar'
  113. - id: ui-settings
  114. name: '@deepseek-ai/dsh-client-ui-settings'
  115. - id: ui-settings-general
  116. name: '@deepseek-ai/dsh-client-ui-settings-general'
  117. - id: ui-models
  118. name: '@deepseek-ai/dsh-client-ui-models'
  119. - id: ui-conversation
  120. name: '@deepseek-ai/dsh-client-ui-conversation'
  121. # Tool call tree, generic fallback, and keyed business Tool views.
  122. - id: ui-tool
  123. name: '@deepseek-ai/dsh-client-ui-tool'
  124. # Turn tail: the produced-files row under each closing assistant message.
  125. # Remove this entry to turn the surface off; the tail hole renders empty.
  126. - id: ui-deliverables
  127. name: '@deepseek-ai/dsh-client-ui-deliverables'
  128. - id: ui-workspace
  129. name: '@deepseek-ai/dsh-client-ui-workspace'
  130. # Input triggers: the '/' | '@' pipeline (ui-slash), the command surface over
  131. # it (ui-command), and the two reference sources (ui-skill / ui-subagent).
  132. - id: ui-slash
  133. name: '@deepseek-ai/dsh-client-ui-slash'
  134. - id: ui-command
  135. name: '@deepseek-ai/dsh-client-ui-command'
  136. - id: ui-skill
  137. name: '@deepseek-ai/dsh-client-ui-skill'
  138. - id: ui-subagent
  139. name: '@deepseek-ai/dsh-client-ui-subagent'
  140. # Goal surface: GoalBar in the input dock over the goal session projection.
  141. - id: ui-goal
  142. name: '@deepseek-ai/dsh-client-ui-goal'
  143. # Model selection: the /model popupSelect + composer seat over session.models.
  144. - id: ui-model
  145. name: '@deepseek-ai/dsh-client-ui-model'
  146. - id: ui-permission
  147. name: '@deepseek-ai/dsh-client-ui-permission'
  148. # Plan control: the composer plan seat over the plan projection + /plan channel.
  149. - id: ui-plan
  150. name: '@deepseek-ai/dsh-client-ui-plan'
  151. - id: ui-question
  152. name: '@deepseek-ai/dsh-client-ui-question'
  153. - id: ui-trajectory
  154. name: '@deepseek-ai/dsh-client-ui-trajectory'