| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- # dsh web — the full web-shape composition: host runtime (layer 1), the
- # transport/service layer (layer 2), and the browser plugin roster (dshClient
- # rows the modules node half scans into window.__DSH_BOOT__). Row order
- # carries no load semantics (activation is service-availability driven); the
- # grouping below is for readers. `--dev` appends the dsh-client-hmr row in
- # code (AppCLIEntry) — prod and dev differ by exactly that one row.
- # AppCLIEntry patches this tree before boot: profile json + CLI flags +
- # distIndex land as config patches over the rows below (yaml = engineering
- # defaults, json = user config, user wins per field).
- # ── layer 1: runtime ────────────────────────────────────────────────────────
- - id: timer
- name: '@cordisjs/plugin-timer'
- - id: llm
- name: '@deepseek-ai/dsh-llm'
- - id: session
- name: '@deepseek-ai/dsh-session'
- - id: session-title
- name: '@deepseek-ai/dsh-session-title'
- config:
- fallbackMaxWords: 5
- fallbackMaxBytes: 40
- maxTitleBytes: 80
- # Model-made titles on the first-message cadence (the web sidebar renders
- # session/title). Same values as the TUI composition.
- - id: session-title-llm
- name: '@deepseek-ai/dsh-session-title-first-message-llm'
- config:
- targetWords: 5
- targetCjkCharacters: 10
- maxInputBytes: 4096
- maxOutputTokens: 64
- timeoutMs: 60000
- - id: system-prompt
- name: '@deepseek-ai/dsh-system-prompt'
- config:
- persona: ''
- - id: tools
- name: '@deepseek-ai/dsh-tools'
- - id: user-interaction
- name: '@deepseek-ai/dsh-user-interaction'
- - id: agent
- name: '@deepseek-ai/dsh-agent'
- - id: tasks
- name: '@deepseek-ai/dsh-tasks'
- - id: agent-loop
- name: '@deepseek-ai/dsh-agent-loop'
- config:
- agents: []
- # The native DeepSeek adapter; reads the key/base-url the boot's layered
- # .env loading (cwd then $DSH_HOME) left in the environment.
- - id: llm-deepseek
- name: '@deepseek-ai/dsh-llm-deepseek'
- config:
- apiKey: !!js process.env.DEEPSEEK_API_KEY
- baseURL: !!js process.env.DEEPSEEK_BASE_URL
- - id: session-persistence-jsonl
- name: '@deepseek-ai/dsh-session-persistence-jsonl'
- config:
- root: './.sessions'
- - id: storage
- name: '@deepseek-ai/dsh-storage'
- - id: storage-json
- name: '@deepseek-ai/dsh-storage-json'
- config:
- root: './.storages'
- - id: storage-domain
- name: '@deepseek-ai/dsh-storage-domain'
- config:
- backend: json
- - id: workspace
- name: '@deepseek-ai/dsh-workspace'
- - id: bash-local
- name: '@deepseek-ai/dsh-bash-local'
- - id: tool-bash
- name: '@deepseek-ai/dsh-tool-bash'
- - id: tool-todo
- name: '@deepseek-ai/dsh-tool-todo'
- - id: tool-tasks
- name: '@deepseek-ai/dsh-tool-tasks'
- # fs cwd stays the package default (process.cwd()) — the same value the
- # gateway injects into session.cwd, so paths and sessions agree.
- - id: fs-local
- name: '@deepseek-ai/dsh-fs-local'
- - id: fs-policy
- name: '@deepseek-ai/dsh-fs-policy'
- - id: tool-fs
- name: '@deepseek-ai/dsh-tool-fs'
- - id: tool-fs-search
- name: '@deepseek-ai/dsh-tool-fs-search'
- - id: workspace-context
- name: '@deepseek-ai/dsh-workspace-context'
- config:
- maxBytes: 65536
- - id: skill
- name: '@deepseek-ai/dsh-skill'
- - id: skill-local
- name: '@deepseek-ai/dsh-skill-local'
- - id: tool-skill
- name: '@deepseek-ai/dsh-tool-skill'
- # token-meter rejects unknown config keys — keep this row bare.
- - id: token-meter
- name: '@deepseek-ai/dsh-token-meter'
- - id: compact-basic
- name: '@deepseek-ai/dsh-compact-basic'
- - id: subagent
- name: '@deepseek-ai/dsh-subagent'
- - id: subagent-spawn
- name: '@deepseek-ai/dsh-subagent-spawn'
- config:
- providerName: spawn
- - id: subagent-fork
- name: '@deepseek-ai/dsh-subagent-fork'
- config:
- providerName: fork
- - id: tool-subagent
- name: '@deepseek-ai/dsh-tool-subagent'
- config:
- provider: spawn
- toolName: subagent
- - id: tool-subagent-fork
- name: '@deepseek-ai/dsh-tool-subagent'
- config:
- provider: fork
- toolName: subagent_fork
- - id: workflow-workerthread
- name: '@deepseek-ai/dsh-workflow-workerthread'
- config:
- provider: spawn
- - id: tool-workflow
- name: '@deepseek-ai/dsh-tool-workflow'
- - id: timeout-policy
- name: '@deepseek-ai/dsh-timeout-policy'
- - id: spill-local
- name: '@deepseek-ai/dsh-spill-local'
- # Omitting maxInlineBytes makes the whole policy a silent no-op — always
- # state it explicitly.
- - id: spill-policy
- name: '@deepseek-ai/dsh-spill-policy'
- config:
- maxInlineBytes: 50000
- # The API gateway: the transport-agnostic dispatch face every client shape
- # shares. provider/model are the host default routing — the profile json's
- # mapping target (user config overrides these engineering defaults).
- - id: api-gateway
- name: '@deepseek-ai/dsh-host-apiproxy'
- config:
- provider: deepseek
- model: deepseek-v4-flash
- # ── layer 2: transport/service ──────────────────────────────────────────────
- # Plain route-registration carrier. distIndex is an assembly fact, not user
- # config — AppCLIEntry resolves the frontend dist and patches it in; host and
- # port arrive as CLI-flag patches over these defaults.
- - id: webserver
- name: '@deepseek-ai/dsh-host-webserver'
- config:
- host: 127.0.0.1
- port: 3080
- # ── browser plugin roster (dshClient rows; node halves are layer-2 hosts) ──
- # Dual-face: node half scans this very tree for dshClient rows, composes
- # window.__DSH_BOOT__, serves /plugins/<id>/client.js; browser half is the
- # module table the shell kernel constructs before cordis exists (§4.7 —
- # adopted as a plugin entry by the kernel, never fetched).
- - id: modules
- name: '@deepseek-ai/dsh-client-modules'
- # Owns both ends of the web transport: node half binds the gateway to the
- # webserver under /api; browser half is the fetch/SSE client.
- - id: connection
- name: '@deepseek-ai/dsh-client-connection'
- - id: client-runtime
- name: '@deepseek-ai/dsh-client-runtime'
- - id: ui-theme
- name: '@deepseek-ai/dsh-client-ui-theme'
- - id: locale
- name: '@deepseek-ai/dsh-client-locale'
- - id: ui-layout
- name: '@deepseek-ai/dsh-client-ui-layout'
- - id: ui-sidebar
- name: '@deepseek-ai/dsh-client-ui-sidebar'
- - id: ui-settings
- name: '@deepseek-ai/dsh-client-ui-settings'
- - id: ui-settings-general
- name: '@deepseek-ai/dsh-client-ui-settings-general'
- - id: ui-models
- name: '@deepseek-ai/dsh-client-ui-models'
- - id: ui-conversation
- name: '@deepseek-ai/dsh-client-ui-conversation'
- - id: ui-workspace
- name: '@deepseek-ai/dsh-client-ui-workspace'
- - id: ui-question
- name: '@deepseek-ai/dsh-client-ui-question'
- - id: ui-trajectory
- name: '@deepseek-ai/dsh-client-ui-trajectory'
|