@toddzheng024/dscode-bundle 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/THIRD_PARTY_NOTICES.md +11 -0
  4. package/bin/apply_patch +4 -0
  5. package/bootstrap.mjs +21 -0
  6. package/cordis.patch.yml +756 -0
  7. package/package.json +327 -0
  8. package/plugins/auto-review/audit.mjs +20 -0
  9. package/plugins/auto-review/index.mjs +181 -0
  10. package/plugins/auto-review/policy.mjs +59 -0
  11. package/plugins/dscode/index.mjs +35 -0
  12. package/plugins/session-metrics/index.mjs +44 -0
  13. package/plugins/session-metrics/pricing.mjs +18 -0
  14. package/plugins/session-metrics/store.mjs +24 -0
  15. package/plugins/session-metrics/view.mjs +58 -0
  16. package/plugins/tui-tools/hooks.mjs +23 -0
  17. package/plugins/tui-tools/index.mjs +164 -0
  18. package/plugins/ultra/policy.mjs +11 -0
  19. package/presets/dscode/agent.cordis.yml +288 -0
  20. package/presets/dscode/preset.yml +3 -0
  21. package/vendor/bash/LICENSE +21 -0
  22. package/vendor/bash/index.js +449 -0
  23. package/vendor/bash/types/background.d.ts +19 -0
  24. package/vendor/bash/types/index.d.ts +22 -0
  25. package/vendor/bash/types/render.d.ts +38 -0
  26. package/vendor/deepseek/LICENSE +21 -0
  27. package/vendor/deepseek/index.js +2102 -0
  28. package/vendor/deepseek/types/adapter.d.ts +163 -0
  29. package/vendor/deepseek/types/file-id.d.ts +19 -0
  30. package/vendor/deepseek/types/file-store.d.ts +83 -0
  31. package/vendor/deepseek/types/files-api.d.ts +103 -0
  32. package/vendor/deepseek/types/image-tokens.d.ts +19 -0
  33. package/vendor/deepseek/types/index.d.ts +106 -0
  34. package/vendor/deepseek/types/request-pricing.d.ts +48 -0
  35. package/vendor/deepseek/types/serialize.d.ts +85 -0
  36. package/vendor/deepseek/types/sse.d.ts +24 -0
  37. package/vendor/deepseek/types/translate.d.ts +37 -0
  38. package/vendor/deepseek/types/types.d.ts +178 -0
  39. package/vendor/deepseek/types/upload-index.d.ts +68 -0
  40. package/vendor/persistent/LICENSE +21 -0
  41. package/vendor/persistent/index.js +386 -0
  42. package/vendor/persistent/types/index.d.ts +24 -0
  43. package/vendor/tui/LICENSE +21 -0
  44. package/vendor/tui/devtools-CdTl3MNy.mjs +3643 -0
  45. package/vendor/tui/index.mjs +39105 -0
  46. package/vendor/tui/invariant.mjs +21 -0
  47. package/vendor/tui/rolldown-runtime-CMFfr-1z.mjs +26 -0
  48. package/vendor/tui/startup.mjs +109 -0
  49. package/vendor/tui/theme-DCT8Y2xf.mjs +628 -0
  50. package/vendor/tui/types/app.d.ts +304 -0
  51. package/vendor/tui/types/approval.d.ts +59 -0
  52. package/vendor/tui/types/attachments.d.ts +52 -0
  53. package/vendor/tui/types/authorization-panel.d.ts +22 -0
  54. package/vendor/tui/types/authorization.d.ts +36 -0
  55. package/vendor/tui/types/commands.d.ts +52 -0
  56. package/vendor/tui/types/editor-keys.d.ts +105 -0
  57. package/vendor/tui/types/editor.d.ts +6 -0
  58. package/vendor/tui/types/fork.d.ts +8 -0
  59. package/vendor/tui/types/git-workflow.d.ts +32 -0
  60. package/vendor/tui/types/history.d.ts +97 -0
  61. package/vendor/tui/types/index.d.ts +124 -0
  62. package/vendor/tui/types/input-split.d.ts +54 -0
  63. package/vendor/tui/types/internals.d.ts +26 -0
  64. package/vendor/tui/types/invariant.d.ts +15 -0
  65. package/vendor/tui/types/kernel-panels.d.ts +167 -0
  66. package/vendor/tui/types/keyboard.d.ts +80 -0
  67. package/vendor/tui/types/mentions.d.ts +81 -0
  68. package/vendor/tui/types/model-capabilities.d.ts +82 -0
  69. package/vendor/tui/types/models.d.ts +119 -0
  70. package/vendor/tui/types/permissions.d.ts +27 -0
  71. package/vendor/tui/types/plugin-inventory.d.ts +11 -0
  72. package/vendor/tui/types/presets.d.ts +22 -0
  73. package/vendor/tui/types/provider-settings.d.ts +239 -0
  74. package/vendor/tui/types/questions.d.ts +54 -0
  75. package/vendor/tui/types/render/animations.d.ts +265 -0
  76. package/vendor/tui/types/render/editor.d.ts +162 -0
  77. package/vendor/tui/types/render/export.d.ts +9 -0
  78. package/vendor/tui/types/render/fuzzy.d.ts +21 -0
  79. package/vendor/tui/types/render/inspector.d.ts +36 -0
  80. package/vendor/tui/types/render/lines.d.ts +66 -0
  81. package/vendor/tui/types/render/markdown.d.ts +29 -0
  82. package/vendor/tui/types/render/projection.d.ts +461 -0
  83. package/vendor/tui/types/render/status.d.ts +196 -0
  84. package/vendor/tui/types/render/text.d.ts +58 -0
  85. package/vendor/tui/types/render/tool-detail.d.ts +94 -0
  86. package/vendor/tui/types/render/tool-preview.d.ts +28 -0
  87. package/vendor/tui/types/render/width.d.ts +29 -0
  88. package/vendor/tui/types/session-directory.d.ts +173 -0
  89. package/vendor/tui/types/session-switch.d.ts +17 -0
  90. package/vendor/tui/types/settings-file.d.ts +41 -0
  91. package/vendor/tui/types/skills.d.ts +47 -0
  92. package/vendor/tui/types/startup.d.ts +65 -0
  93. package/vendor/tui/types/store.d.ts +58 -0
  94. package/vendor/tui/types/subagents.d.ts +70 -0
  95. package/vendor/tui/types/theme-panel.d.ts +24 -0
  96. package/vendor/tui/types/theme.d.ts +215 -0
  97. package/vendor/tui/types/version.d.ts +18 -0
  98. package/vendor/tui/types/whale-glyph.d.ts +6 -0
@@ -0,0 +1,756 @@
1
+ # The dsh-base bundle patch: the shared core of each base-backed profile, applied as
2
+ # ONE insert over the empty profile root. Later bundle patches and the user's
3
+ # profile cordis.patch.yml address these rows by id, with the last write
4
+ # winning per row.
5
+ #
6
+ # A patch replaces the targeted row's whole `config` rather than merging into
7
+ # it, so a row whose value differs by mode does NOT live here: it belongs to
8
+ # each mode bundle, keeping any single row down to one bundle layer plus the
9
+ # user's. Mode-specific rows appear below only with shared plugin identity and
10
+ # neutral defaults; each mode bundle restates its complete configuration.
11
+ #
12
+ # Row order carries no load semantics (activation is service-availability
13
+ # driven); the grouping is for readers.
14
+
15
+ - insert:
16
+ - id: timer
17
+ name: '@deepseek-ai/cordis-plugin-timer'
18
+
19
+ # Module reload is opt-in per profile. `patchReload: live` config watching
20
+ # uses the launcher's watch-only fallback and does not require this row.
21
+ - id: hmr
22
+ name: '@deepseek-ai/cordis-plugin-hmr'
23
+ disabled: true
24
+ config:
25
+ root: ['.']
26
+
27
+ - id: llm
28
+ name: '@deepseek-ai/dsh-llm'
29
+
30
+ - id: deepseek-llm-api-extensions
31
+ name: '@deepseek-ai/dsh-deepseek-llm-api-extensions'
32
+
33
+ - id: session
34
+ name: '@deepseek-ai/dsh-session'
35
+
36
+ - id: session-log-deepseek
37
+ name: '@deepseek-ai/dsh-session-log-deepseek'
38
+
39
+ - id: typert
40
+ name: '@deepseek-ai/dsh-typert-registry'
41
+
42
+ - id: typert-loader
43
+ name: '@deepseek-ai/dsh-typert-loader'
44
+
45
+ - id: typert-gateway
46
+ name: '@deepseek-ai/dsh-api-gateway'
47
+
48
+ - id: session-title
49
+ name: '@deepseek-ai/dsh-session-title'
50
+ config:
51
+ fallbackMaxWords: 5
52
+ fallbackMaxBytes: 40
53
+ maxTitleBytes: 80
54
+
55
+ - id: session-title-llm
56
+ name: '@deepseek-ai/dsh-session-title-first-prompt-llm'
57
+ config:
58
+ targetWords: 5
59
+ targetCjkCharacters: 10
60
+ maxInputBytes: 4096
61
+ maxOutputTokens: 64
62
+ timeoutMs: 60000
63
+
64
+ - id: user-questions
65
+ name: '@deepseek-ai/dsh-user-questions'
66
+
67
+ - id: agent
68
+ name: '@deepseek-ai/dsh-agent'
69
+
70
+ - id: plugin-package-inventory-deepseek
71
+ name: '@deepseek-ai/dsh-plugin-package-inventory-deepseek'
72
+
73
+ # The transport-independent default for Agents created by entry points.
74
+ # Settings may supply a saved selection; consumers read it at creation time.
75
+ - id: agent-default-model
76
+ name: '@deepseek-ai/dsh-agent-default-model'
77
+ config:
78
+ provider: deepseek-official
79
+ model: deepseek-flash
80
+
81
+ - id: jobs
82
+ name: '@deepseek-ai/dsh-jobs-local'
83
+
84
+ - id: llm-retry
85
+ name: '@deepseek-ai/dsh-llm-retry'
86
+
87
+ # User-settings document (`$DSH_HOME/settings.yaml`, hot-reloaded): a
88
+ # `llm-deepseek:` or `llm-pi-ai:` section there overrides the adapter entries
89
+ # below without a restart, and is what the web Models page writes.
90
+ - id: settings
91
+ name: '@deepseek-ai/dsh-settings-file'
92
+
93
+ # Credential sources: inherited environment over the managed
94
+ # `$DSH_HOME/.credentials.yaml`, with project and user `.env` fallbacks.
95
+ # Adapters resolve references per request; the Models page writes only the
96
+ # managed document, which is never materialized into the process environment.
97
+ - id: credentials
98
+ name: '@deepseek-ai/dsh-credentials-local'
99
+
100
+ # The pi-ai multi-provider twin, mounted dormant: zero routes (and no extra
101
+ # models in the picker) until a `llm-pi-ai:` settings section supplies provider
102
+ # profiles — then those routes register live, keys resolving per request
103
+ # through their apiKeyEnv references, and drop again when the section empties.
104
+ # Supplying those profiles is exactly what the web Models page does. Which
105
+ # adapters exist is composition; which providers run is the user's settings
106
+ # document.
107
+ - id: llm-pi-ai
108
+ name: '@deepseek-ai/dsh-llm-pi-ai'
109
+
110
+ - id: session-persistence-jsonl
111
+ name: '@deepseek-ai/dsh-session-persistence-jsonl'
112
+ config:
113
+ root: !!js dshHomePath('sessions')
114
+
115
+ # Durable image bytes live outside the append-only session log. Messages
116
+ # keep content-addressed references that this shared backend resolves for
117
+ # provider requests and authorized history reads.
118
+ - id: attachment-local
119
+ name: '@deepseek-ai/dsh-attachment-local'
120
+
121
+ # Full-text session search is opt-in. `openAt: never` keeps
122
+ # ctx.sessionQuery mounted — exact reads, titles, and lineage traces
123
+ # (session export, subagent-fork Workspace inheritance) stay available —
124
+ # while search calls fail with SESSION_QUERY_SEARCH_DISABLED and SQLite is
125
+ # never opened; the Web sidebar search matches titles and workspace names
126
+ # only. Deployments enabling content search override `openAt` to
127
+ # `first-search` or `startup` in a later patch layer (profile
128
+ # cordis.patch.yml or a --patch overlay), typically with a durable `path`.
129
+ - id: session-query-sqlite
130
+ name: '@deepseek-ai/dsh-session-query-sqlite'
131
+ config:
132
+ path: ':memory:'
133
+ openAt: never
134
+
135
+ # Shared projection registry: subagent catalog identity (mode/label) folds
136
+ # through its registered units, so the `list_agents` surface below fails
137
+ # loud without it; web layers reuse this same mount for list rows.
138
+ - id: session-projection
139
+ name: '@deepseek-ai/dsh-session-projection'
140
+
141
+ # Durable KV storage: the storage hub, the json backend, and the
142
+ # schema-validated domain form over them. Session-layer persistence (the
143
+ # projection cache below; workspace in web layers)
144
+ # routes through this stack, so it belongs to the shared base.
145
+ - id: storage
146
+ name: '@deepseek-ai/dsh-storage'
147
+
148
+ - id: storage-json
149
+ name: '@deepseek-ai/dsh-storage-json'
150
+ config:
151
+ root: !!js dshHomePath('storages')
152
+
153
+ - id: storage-domain
154
+ name: '@deepseek-ai/dsh-storage-domain'
155
+ config:
156
+ backend: json
157
+
158
+ # Persisted projection cache: throttled write-behind over the
159
+ # session_projcache domain (per-record layout — one version-stamped
160
+ # checkpoint document per session), serving the session listing's
161
+ # projection column.
162
+ - id: session-projection-cache
163
+ name: '@deepseek-ai/dsh-session-projection-cache'
164
+ config:
165
+ writeEveryEvents: 200
166
+ writeIntervalMs: 5000
167
+
168
+ # OTel releases a Session-log prefix only after explicit user feedback,
169
+ # regardless of model provider. Ordinary activity never triggers capture.
170
+ # DSH_TELEMETRY_OTLP_URL overrides the production endpoint. A non-empty
171
+ # DSH_TELEMETRY_DISABLED — any value, including '0'/'false' — opts the
172
+ # process out (the launchers patch the row disabled; config cannot disable
173
+ # a row). Exports carry the harness home's anonymous user id ($DSH_HOME/.anonymous-user-id,
174
+ # random UUID; delete the file to reset the identity) as the Resource's
175
+ # user.id. The exporter/processor values normally bound the shutdown drain
176
+ # to ~1s against an unreachable collector: exporter.timeoutMillis is both
177
+ # the per-attempt socket timeout and the retry deadline (1s effectively
178
+ # disables the SDK's 5-try backoff), while maxExportBatchSize == maxQueueSize
179
+ # (both explicit) makes the drain a single batch. The SDK awaits
180
+ # exporter.forceFlush() outside exportTimeoutMillis, so the backend's 3s
181
+ # shutdownTimeoutMillis is the load-bearing outer bound when a transport
182
+ # promise never settles. Every CLI exit path drains it by disposing the root
183
+ # on SIGINT/SIGTERM.
184
+ - id: session-telemetry-otel
185
+ name: '@deepseek-ai/dsh-session-telemetry-otel'
186
+ config:
187
+ mode: !!js process.env.DSH_TELEMETRY_MODE || 'FEEDBACK_ONLY'
188
+ shutdownTimeoutMillis: 3000
189
+ exporter:
190
+ url: !!js process.env.DSH_TELEMETRY_OTLP_URL ?? 'https://harness-telemetry.deepseeksvc.com/v1/logs'
191
+ compression: gzip
192
+ timeoutMillis: 1000
193
+ processor:
194
+ scheduledDelayMillis: 10000
195
+ maxQueueSize: 2048
196
+ maxExportBatchSize: 2048
197
+ exportTimeoutMillis: 1500
198
+
199
+ - id: subprocess
200
+ name: '@deepseek-ai/dsh-subprocess-local'
201
+
202
+ # Every shipped CLI mode starts with the same file-effect boundary.
203
+ # The environment remains an explicit deployment override; otherwise fresh
204
+ # sessions pin workspace-write + ask through the permission service below.
205
+ - id: sandbox
206
+ name: '@deepseek-ai/dsh-sandbox-local'
207
+
208
+ - id: sandbox-policy
209
+ name: '@deepseek-ai/dsh-sandbox-policy'
210
+ config:
211
+ mode: !!js process.env.DSH_PERMISSION_MODE ?? 'workspace-write'
212
+ workspaceRoot: !!js process.cwd()
213
+
214
+ - id: bash-sandbox
215
+ name: '@deepseek-ai/dsh-bash-sandbox'
216
+ disabled: !!js process.platform === 'win32'
217
+ config:
218
+ timeoutMs: 60000
219
+
220
+ - id: pwsh-sandbox
221
+ name: '@deepseek-ai/dsh-pwsh-sandbox'
222
+ disabled: !!js process.platform !== 'win32'
223
+
224
+ - id: approval
225
+ name: '@deepseek-ai/dsh-user-approval'
226
+ config:
227
+ policy: !!js "(process.env.DSH_PERMISSION_MODE ?? 'workspace-write') === 'danger-full-access' ? 'never' : 'ask'"
228
+
229
+ - id: permission
230
+ name: '@deepseek-ai/dsh-permission-presets'
231
+ config:
232
+ presets:
233
+ read-only:
234
+ sandbox: read-only
235
+ approval: ask
236
+ workspace-write:
237
+ sandbox: workspace-write
238
+ approval: ask
239
+ danger-full-access:
240
+ sandbox: danger-full-access
241
+ approval: never
242
+
243
+ - id: shell-env
244
+ name: '@deepseek-ai/dsh-shell-env'
245
+
246
+ - id: tool-bash
247
+ name: '@deepseek-ai/dsh-tool-bash'
248
+ disabled: !!js process.platform === 'win32'
249
+
250
+ - id: tool-pwsh
251
+ name: '@deepseek-ai/dsh-tool-pwsh'
252
+ disabled: !!js process.platform !== 'win32'
253
+
254
+ - id: tool-jobs
255
+ name: '@deepseek-ai/dsh-tool-jobs'
256
+
257
+ - id: fs-observation-policy
258
+ name: '@deepseek-ai/dsh-fs-observation-policy'
259
+
260
+ - id: tool-fs
261
+ name: '@deepseek-ai/dsh-tool-fs'
262
+
263
+ - id: tool-fs-search
264
+ name: '@deepseek-ai/dsh-tool-fs-search'
265
+ config:
266
+ sampleOverCapGlobResults: false
267
+
268
+ - id: agent-instructions
269
+ name: '@deepseek-ai/dsh-agent-instructions'
270
+ config:
271
+ maxBytes: 65536
272
+
273
+ - id: skill
274
+ name: '@deepseek-ai/dsh-skill'
275
+
276
+ - id: skill-filesystem
277
+ name: '@deepseek-ai/dsh-skill-filesystem'
278
+
279
+ - id: skill-badge
280
+ name: '@deepseek-ai/dsh-skill-badge'
281
+ disabled: true
282
+
283
+ - id: tool-skill
284
+ name: '@deepseek-ai/dsh-tool-skill'
285
+
286
+ - id: commands
287
+ name: '@deepseek-ai/dsh-commands'
288
+
289
+ - id: command-feedback
290
+ name: '@deepseek-ai/dsh-command-feedback'
291
+
292
+ - id: goal
293
+ name: '@deepseek-ai/dsh-goal'
294
+
295
+ - id: goal-round-driver
296
+ name: '@deepseek-ai/dsh-goal-round-driver'
297
+
298
+ - id: command-goal
299
+ name: '@deepseek-ai/dsh-command-goal'
300
+
301
+ - id: plan-mode
302
+ name: '@deepseek-ai/dsh-plan-mode'
303
+ config:
304
+ section: |
305
+ You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
306
+
307
+ Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
308
+
309
+ The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed only to keep the request shape stable. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
310
+
311
+ Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
312
+
313
+ Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
314
+
315
+ When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
316
+
317
+ - id: token-meter
318
+ name: '@deepseek-ai/dsh-token-meter'
319
+
320
+ - id: compaction-basic
321
+ name: '@deepseek-ai/dsh-compaction-basic'
322
+
323
+ # Human `/compact`: one useful reduction below the automatic threshold. Backend
324
+ # independent, so it follows whichever compaction service this leaf mounts.
325
+ - id: command-compact
326
+ name: '@deepseek-ai/dsh-command-compact'
327
+
328
+ - id: subagent
329
+ name: '@deepseek-ai/dsh-subagent'
330
+
331
+ - id: subagent-spawn-in-process
332
+ name: '@deepseek-ai/dsh-subagent-spawn-in-process'
333
+ config:
334
+ providerName: spawn
335
+
336
+ - id: subagent-fork-in-process
337
+ name: '@deepseek-ai/dsh-subagent-fork-in-process'
338
+ config:
339
+ providerName: fork
340
+
341
+ # Continuable background children are selected per delegation tool. The
342
+ # separately loaded follow-up tool registers the one global `send_message`.
343
+ - id: tool-subagent-control
344
+ name: '@deepseek-ai/dsh-tool-subagent-control'
345
+
346
+ - id: tool-subagent-list-agents
347
+ name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
348
+
349
+ - id: tool-subagent
350
+ name: '@deepseek-ai/dsh-tool-subagent'
351
+ config:
352
+ provider: spawn
353
+ toolName: subagent
354
+ backgroundMode: continuable
355
+
356
+ # Fork omits model selection so provider/model stay equal to the parent and
357
+ # the inherited history remains eligible for KV Cache reuse. This base row
358
+ # stays one-shot; preset layers may select continuable mode without adding a
359
+ # child-only system-prompt section or tool schema ahead of that history.
360
+ # See .agents/notes/implemented/feature/2026-08-18-model-selected-subagent-routes.md
361
+ # and .agents/notes/implemented/architecture/2026-08-10-fork-children-stay-one-shot.md.
362
+ - id: tool-subagent-fork
363
+ name: '@deepseek-ai/dsh-tool-subagent'
364
+ config:
365
+ provider: fork
366
+ toolName: subagent_fork
367
+ backgroundMode: one-shot
368
+
369
+ - id: workflow-worker-thread
370
+ name: '@deepseek-ai/dsh-workflow-worker-thread'
371
+ config:
372
+ provider: spawn
373
+
374
+ - id: tool-workflow
375
+ name: '@deepseek-ai/dsh-tool-workflow'
376
+
377
+ - id: timeout-policy
378
+ name: '@deepseek-ai/dsh-tool-call-timeout-policy'
379
+
380
+ - id: spill-local
381
+ name: '@deepseek-ai/dsh-spill-local'
382
+
383
+ - id: spill-policy
384
+ name: '@deepseek-ai/dsh-spill-policy'
385
+ config:
386
+ maxInlineBytes: 50000
387
+
388
+ # Durability checkpoints before each model request and top-level dispatch.
389
+ - id: session-checkpoint-policy
390
+ name: '@deepseek-ai/dsh-session-checkpoint-policy'
391
+
392
+ # Compacts oversized tool results before the broader conversation compactor
393
+ # runs, preserving the model-visible result within the configured budget.
394
+ - id: tool-result-pruner
395
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
396
+ config:
397
+ thresholdChars: 8192
398
+ headChars: 4096
399
+ tailChars: 1024
400
+
401
+ - id: tool-todo
402
+ name: '@deepseek-ai/dsh-tool-todo'
403
+ config:
404
+ allowParallelInProgress: true
405
+
406
+ # Persisted same-session goals reach the model and the slash menu here; the
407
+ # domain, driver, and `/goal` command are above.
408
+ - id: tool-goal
409
+ name: '@deepseek-ai/dsh-tool-goal'
410
+
411
+ # Fresh-agent Ralph iteration over a build-time-fixed script.
412
+ - id: tool-ralph
413
+ name: '@deepseek-ai/dsh-tool-ralph'
414
+ config:
415
+ subagentProvider: spawn
416
+ maxRounds: 64
417
+
418
+ # Consecutive-repeat reminders on the tool chain.
419
+ - id: repeat-tool-reminder
420
+ name: '@deepseek-ai/dsh-repeat-tool-reminder'
421
+ config:
422
+ thresholds: [3, 5, 8]
423
+ argumentsPreviewChars: 500
424
+
425
+ # The shared base enables the stable model-facing web_search and web_fetch
426
+ # tools. The Web app disables this host row and composes both tools per agent
427
+ # preset; products with a stricter network policy override tool-web. DeepSeek
428
+ # search resolves the same DEEPSEEK_API_KEY
429
+ # credential the Models page manages for chat, at each search; its Messages
430
+ # endpoint is separate from the chat-completions endpoint, so it takes its own
431
+ # base-URL override. Anonymous fetch accepts only public HTTP(S) destinations,
432
+ # resolves and validates every destination, and pins every actual connection.
433
+ # Search is a full auxiliary model request with server-side retrieval, so this
434
+ # shipped DeepSeek route gets 60s while the provider-neutral tool default
435
+ # remains 30s.
436
+ - id: web
437
+ name: '@deepseek-ai/dsh-web'
438
+ config:
439
+ searchProvider: deepseek-official
440
+ fetchProvider: http
441
+
442
+ - id: web-search-deepseek
443
+ name: '@deepseek-ai/dsh-web-search-deepseek'
444
+ config:
445
+ apiKeyEnv: DEEPSEEK_API_KEY
446
+
447
+ - id: web-fetch-http
448
+ name: '@deepseek-ai/dsh-web-fetch-http'
449
+
450
+ - id: tool-web
451
+ name: '@deepseek-ai/dsh-tool-web'
452
+ config:
453
+ fetch: true
454
+ searchTimeoutMs: 60000
455
+
456
+ # ── rows every mode mounts, whose values each overlay may state ──────────────
457
+
458
+ # The tool registry. Presentation mode is a deployment choice; omitting it here
459
+ # keeps the schema default (native).
460
+ - id: tools
461
+ name: '@deepseek-ai/dsh-tools'
462
+
463
+ # The deployment persona is a deployment choice; plan-mode and tool plugins own
464
+ # their own prompt sections.
465
+ - id: system-prompt
466
+ name: '@deepseek-ai/dsh-system-prompt'
467
+ config:
468
+ personaPrefix: ''
469
+
470
+ # Agents created at startup. The base stays empty; raw overlays may create
471
+ # agents, while Web creates sessions on client request.
472
+ - id: agent-loop
473
+ name: '@deepseek-ai/dsh-agent-loop'
474
+ config:
475
+ agents: []
476
+
477
+ # The sandboxed filesystem provider. `cwd` defaults to `process.cwd()`; an
478
+ # overlay can pin another workspace.
479
+ - id: fs-sandbox
480
+ name: '@deepseek-ai/dsh-fs-sandbox'
481
+
482
+ # The native DeepSeek adapter. No key or endpoint is inlined: both resolve per
483
+ # request from the `llm-deepseek:` settings section over this entry, with the
484
+ # key coming from the credential store below. Thinking defaults are a deployment
485
+ # choice.
486
+ - id: llm-deepseek
487
+ name: '@deepseek-ai/dsh-llm-deepseek'
488
+
489
+ # One aggregate row initializes the macOS Service provider before publishing
490
+ # the model-facing Skill and Agent-scoped Tools.
491
+ - insert:
492
+ - id: computer-use
493
+ name: '@anionex/dsh-computer-use'
494
+ config:
495
+ observationTtlMs: 0
496
+ interaction:
497
+ focusPolicy: preserve
498
+ keyboardPolicy: activate
499
+ pointerInputPolicy: targeted
500
+ cursorVisualization: visible
501
+ cursorSpeedPxPerSecond: 1600
502
+ cursorAccelerationPxPerSecondSquared: 6000
503
+ cursorClickDelayMs: 90
504
+ cursorAutoHideMs: 0
505
+
506
+ # The dsh-code bundle patch: an Ink client over the Harness host plane. Model-
507
+ # facing rows move behind per-session agent presets, while process registries,
508
+ # persistence, sandbox/approval, session query, permissions, goals, and
509
+ # subagent providers stay shared. The runner owns one persistent terminal and
510
+ # can create, resume, and switch between top-level Agent sessions.
511
+ # (DeepSeek blue, whale wordmark), answers approval asks with a y/n bar,
512
+ # dispatches slash commands through the shared registry, and folds submitted
513
+ # prompts back into the same durable session until the user quits.
514
+
515
+ # 0.1.5 split the deployment persona into a prefix and a suffix template
516
+ # around the first-party guidance sections; this terminal keeps its identity
517
+ # line as the prefix ({{variable}} interpolation stays strict upstream).
518
+ - id: system-prompt
519
+ config:
520
+ personaPrefix: >-
521
+ You are a coding agent powered by the {{model}} model. Your working directory is {{cwd}}.
522
+
523
+ # The shared module-reload HMR row stays off; the launcher's watch-only
524
+ # fallback still keeps the user patch layers live until the app exits.
525
+ - id: hmr
526
+ disabled: true
527
+
528
+ - id: tools
529
+ config:
530
+ mode: !!js process.env.DSH_TOOLS_MODE
531
+
532
+ # Agent-plane rows are mounted by the selected preset. Keep this list aligned
533
+ # with the upstream Web bundle so two sessions can use different compositions
534
+ # without leaking model-facing registrations through the host layer.
535
+ - id: tool-bash
536
+ disabled: true
537
+ - id: tool-pwsh
538
+ disabled: true
539
+ - id: tool-jobs
540
+ disabled: true
541
+ - id: tool-fs
542
+ disabled: true
543
+ - id: tool-fs-search
544
+ disabled: true
545
+ # skill-filesystem stays ENABLED on the host: it only feeds the skill
546
+ # REGISTRY (local-root discovery), never the model-facing tool surface —
547
+ # tool-skill below stays disabled and presets mount it per session. The
548
+ # terminal offers skills in the slash menu before any session exists, and a
549
+ # bare launch has no preset layer yet, so the registry's global layer needs
550
+ # this provider; presets shadow it with the same discovery on their scope.
551
+ - id: skill-filesystem
552
+ disabled: false
553
+ - id: tool-skill
554
+ disabled: true
555
+ - id: command-goal
556
+ disabled: true
557
+ - id: tool-goal
558
+ disabled: true
559
+ - id: plan-mode
560
+ disabled: true
561
+ - id: compaction-basic
562
+ disabled: true
563
+ - id: command-compact
564
+ disabled: true
565
+ - id: tool-result-pruner
566
+ disabled: true
567
+ - id: tool-subagent-control
568
+ disabled: true
569
+ - id: tool-subagent-list-agents
570
+ disabled: true
571
+ - id: tool-subagent
572
+ disabled: true
573
+ - id: tool-subagent-fork
574
+ disabled: true
575
+ - id: workflow-worker-thread
576
+ disabled: true
577
+ - id: tool-workflow
578
+ disabled: true
579
+ - id: tool-ralph
580
+ disabled: true
581
+ - id: agent-instructions
582
+ disabled: true
583
+ - id: tool-todo
584
+ disabled: true
585
+ # tool-web keeps the 0.1.5-rc.1 base default (web_fetch enabled over the
586
+ # bundled web-fetch-http provider): the host row exposes web_fetch while the
587
+ # per-preset agent-plane rows keep their own fetch stance. The upstream base
588
+ # bundle dropped tool-str-replace-editor entirely in 0.1.5 (the minimal
589
+ # preset became a single-tool composition), so this patch no longer lists it.
590
+
591
+ - insert:
592
+ # Code Mode is a core execution capability, not a Web component.
593
+ - id: code-runtime
594
+ name: '@deepseek-ai/dsh-code-runtime-worker-thread'
595
+
596
+ # Cross-session @mentions: bounded read-only snapshots of other sessions
597
+ # as sourced model context. Opt-in upstream; the TUI's completion menu
598
+ # lists candidates and submission expands them through prepare().
599
+ - id: session-reference
600
+ name: '@deepseek-ai/dsh-session-reference'
601
+
602
+ # Workspace @file mention discovery: a bounded per-agent fuzzy index over
603
+ # the session cwd (directory listing, symlink guards, tool/result
604
+ # invalidation). The TUI's @ completion consumes ctx.fileReferences
605
+ # instead of running its own workspace scan.
606
+ - id: file-reference-local
607
+ name: '@deepseek-ai/dsh-file-reference-local'
608
+
609
+ # The launcher supplies the shipped preset root beside its own config and
610
+ # the service also discovers the user's local preset root.
611
+ - id: agent-presets
612
+ name: '@deepseek-ai/dsh-agent-presets'
613
+ config:
614
+ default: standard
615
+
616
+ # Cordis self-inspection (the shipped `cordis` agent preset's toolset):
617
+ # the host runner publishes the `dynamicCordisRunner`/`cordisInspect`
618
+ # services `tool-cordis` injects. Without this host row the preset mount
619
+ # fails ("1 row(s) did not activate: tool-cordis"), because models write
620
+ # composition through the agent plane but the runner is a host singleton.
621
+ - id: cordis-host-runner
622
+ name: '@deepseek-ai/dsh-cordis-host-runner'
623
+
624
+ # Host-owned opt-in the preset delegation tools sample: standard/ptc's
625
+ # tool-subagent rows set `modelSelectionSettings: true`, whose start
626
+ # resolves this service and fails the whole preset mount when absent
627
+ # ("failed to apply loader entry delegation (cordis:group)"). The upstream
628
+ # web-app bundle carries this host row in 0.1.5-rc.1; dsh-base still does
629
+ # not ship it.
630
+ - id: subagent-model-selection-settings
631
+ name: '@deepseek-ai/dsh-tool-subagent/model-selection-settings'
632
+
633
+ # Interactive provider authorization. The base bundle supplies the
634
+ # credential store; mounting the neutral authorization seam wakes the
635
+ # login flows already registered by llm-pi-ai without coupling the TUI to
636
+ # any provider's OAuth or device-code protocol.
637
+ - id: authorization
638
+ name: '@deepseek-ai/dsh-authorization'
639
+
640
+ - id: tui-startup
641
+ name: '@toddzheng024/dscode-bundle/startup'
642
+
643
+ # Reads its startup through lazy config, which waits for the tuiStartup
644
+ # provider the row above publishes from the parsed command line.
645
+ - id: tui-runner
646
+ name: '@toddzheng024/dscode-bundle/tui'
647
+ inject: [tuiStartup]
648
+ config:
649
+ startup: !!js ctx.tuiStartup.startup
650
+
651
+ # Host/profile overlay. The upstream standard Agent Preset supplies coding,
652
+ # skills, planning, compaction and native subagents in their correct scopes.
653
+ - id: agent-presets
654
+ config:
655
+ default: standard
656
+
657
+ - id: sandbox-policy
658
+ config:
659
+ mode: workspace-write
660
+
661
+ - id: approval
662
+ config:
663
+ policy: ask
664
+
665
+ - id: computer-use
666
+ config:
667
+ observationTtlMs: 30000
668
+ allowAllApps: false
669
+ interaction:
670
+ focusPolicy: preserve
671
+ keyboardPolicy: activate
672
+ pointerInputPolicy: targeted
673
+ cursorVisualization: visible
674
+
675
+ # Official stdio MCP bridge; Chrome starts lazily at the first browser call.
676
+ # Local launcher resolves the pinned, preinstalled entrypoint. A Hub import
677
+ # uses the equally pinned npx fallback and needs npm access on first launch.
678
+ - insert:
679
+ - id: mcp-chrome
680
+ name: '@deepseek-ai/dsh-mcp-client'
681
+ config:
682
+ serverName: chrome
683
+ transport: stdio
684
+ command: !!js "process.env.DSH_TUI_CHROME_ENTRY ? process.execPath : 'npx'"
685
+ args: !!js "[...(process.env.DSH_TUI_CHROME_ENTRY ? [process.env.DSH_TUI_CHROME_ENTRY] : ['--yes', 'chrome-devtools-mcp@1.9.0']), '--isolated', '--no-usage-statistics', '--no-performance-crux']"
686
+ env:
687
+ CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS: '1'
688
+ failOnStartupError: true
689
+ toolCallTimeoutMs: 60000
690
+
691
+ - id: permission
692
+ config:
693
+ defaultPreset: auto
694
+ presets:
695
+ auto:
696
+ sandbox: workspace-write
697
+ approval: ask
698
+ name: Auto review
699
+ description: Workspace writes; automatic review of eligible approval requests, with human fallback.
700
+ ask:
701
+ sandbox: workspace-write
702
+ approval: ask
703
+ name: Ask me
704
+ workspace-write:
705
+ sandbox: workspace-write
706
+ approval: ask
707
+ read-only:
708
+ sandbox: read-only
709
+ approval: ask
710
+ danger-full-access:
711
+ sandbox: danger-full-access
712
+ approval: never
713
+
714
+
715
+ - id: llm-deepseek
716
+ disabled: true
717
+ - insert:
718
+ - id: dscode-deepseek
719
+ name: '@toddzheng024/dscode-bundle/deepseek'
720
+ - id: dscode-bootstrap
721
+ name: '@toddzheng024/dscode-bundle/bootstrap'
722
+ - id: dscode-auto-review
723
+ name: '@toddzheng024/dscode-bundle/auto-review'
724
+ config:
725
+ timeoutMs: 30000
726
+ maxOutputTokens: 768
727
+ maxReviewsPerTurn: 20
728
+ - id: dscode-session-metrics
729
+ name: '@toddzheng024/dscode-bundle/session-metrics'
730
+ - id: dscode-tui-tools
731
+ name: '@toddzheng024/dscode-bundle/tui-tools'
732
+ - id: dscode-hooks
733
+ name: '@deepseek-ai/dsh-hooks-codex'
734
+ inject: [dscodePaths]
735
+ config:
736
+ configPath: !!js ctx.dscodePaths.hooks
737
+ defaultTimeoutMs: 10000
738
+ stderrSummaryMaxChars: 500
739
+ - id: agent-presets
740
+ inject: [dscodePaths]
741
+ config:
742
+ default: dscode
743
+ roots:
744
+ - path: !!js ctx.dscodePaths.presets
745
+ trust: system
746
+ - id: mcp-chrome
747
+ inject: [dscodePaths]
748
+ config:
749
+ serverName: chrome
750
+ transport: stdio
751
+ command: !!js process.execPath
752
+ args: !!js "[ctx.dscodePaths.chrome, '--isolated', '--no-usage-statistics', '--no-performance-crux']"
753
+ env:
754
+ CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS: '1'
755
+ failOnStartupError: true
756
+ toolCallTimeoutMs: 60000