2026-08-09 12:13:58 +08:00
|
|
|
# The dsh-headless bundle patch: one-shot task mode directly over dsh-base.
|
2026-08-10 21:49:11 +08:00
|
|
|
# It mounts no Host, HTTP server, Web runtime, or browser plugin. An ordinary
|
|
|
|
|
# provider plugin injects `cmdlineArgs`, parses the task positional
|
|
|
|
|
# (`dsh --profile headless "<task>"`) and this app's --help, then the direct
|
|
|
|
|
# driver creates an Agent through the core registry and prints its durable result.
|
2026-08-06 04:40:11 +08:00
|
|
|
|
2026-08-09 12:13:58 +08:00
|
|
|
- id: system-prompt
|
2026-08-06 04:40:11 +08:00
|
|
|
config:
|
2026-08-09 12:13:58 +08:00
|
|
|
persona: >-
|
|
|
|
|
You are a coding agent powered by the {{model}} model. Your working directory is {{cwd}}.
|
2026-08-06 04:40:11 +08:00
|
|
|
|
2026-08-09 12:13:58 +08:00
|
|
|
- id: tools
|
2026-08-06 04:40:11 +08:00
|
|
|
config:
|
2026-08-09 12:13:58 +08:00
|
|
|
# Keep the same temporary process-wide Code Mode opt-in as the Web surface.
|
|
|
|
|
mode: !!js process.env.DSH_TOOLS_MODE
|
2026-08-06 04:40:11 +08:00
|
|
|
|
|
|
|
|
- insert:
|
2026-08-09 12:13:58 +08:00
|
|
|
# Code Mode is a core execution capability, not a Web component.
|
|
|
|
|
- id: code-runtime
|
2026-08-13 00:36:22 +08:00
|
|
|
name: '@deepseek-ai/dsh-code-runtime-worker-thread'
|
2026-08-09 12:13:58 +08:00
|
|
|
|
2026-08-06 20:52:26 +08:00
|
|
|
- id: headless-startup
|
|
|
|
|
name: '@deepseek-ai/dsh-headless/startup'
|
|
|
|
|
|
2026-08-10 21:49:11 +08:00
|
|
|
# Reads its task from the ordinary headlessStartup provider.
|
2026-08-06 04:40:11 +08:00
|
|
|
- id: headless-runner
|
|
|
|
|
name: '@deepseek-ai/dsh-headless'
|
2026-08-06 20:52:26 +08:00
|
|
|
inject: [headlessStartup]
|
refactor(cmdline)!: an app's entrypoint provides values its rows read
Replaces the patch round trip. An app's entrypoint resolves the command
line into a service, and the rows it configures read that service from
their own config — port: !!js ctx.get('webStartup')?.port ?? 3080 — so the
resolved value beats the value written beside it and nothing is written
back into a row or handed to the launcher.
A bundle names the entrypoint row in its manifest (dsh.bundle.entrypoint),
which is what lets the boot mount in two passes: entrypoints alone, then
the whole composition. That ordering is required, not cosmetic — a row's
config expressions are evaluated when the include applies the row, and a
strict ctx.get only answers for a service whose providing fiber is already
active.
What this removes: ctx.appPatches and the launcher-owned patch layer, the
disable/re-enable recycle and its in-flight-mount barrier, overrideConfig,
and the reload hazard they existed for. A live config edit now re-applies
the second pass against services that are still up, so a served port
survives by construction.
What it adds: ctx.appReady, because Loader settlement no longer means the
app is up — a row mounted in the second pass can observe a settled tree
while that pass is still running, or already rolling back. The web URL line
waits for it, so a boot that fails in the second pass announces nothing.
2026-08-07 11:58:03 +08:00
|
|
|
config:
|
2026-08-07 17:27:38 +08:00
|
|
|
task: !!js ctx.headlessStartup.task
|