2026-08-06 04:40:11 +08:00
# bundle/ — profile plugin bundles
English | [中文 ](README.zh.md )
2026-07-30 03:48:07 +08:00
Profile bundles: npm packages whose manifest declares `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }` , making them installable patch layers for `dsh --profile` compositions ([profile contract ](../boot/app-boot/README.md#profiles )). A bundle's substance is its patch list; some also ship runtime glue plugins their patch mounts.
2026-08-06 04:40:11 +08:00
2026-08-15 03:25:43 +08:00
The manifest declaration, not this directory, defines Bundle identity. Domain packages can carry their own optional Profile layer; the [Codex and Claude Code subagent packages ](../subagent/README.md ) are directly installable examples.
2026-08-12 19:28:31 +08:00
2026-08-06 04:40:11 +08:00
| Package | Role | ctx key |
|---|---|---|
docs(python): define the standalone minimal profile
Record sdk-minimal as the narrow repository-owned exception to base-first profile composition: callers still launch only dsh and cannot provide an arbitrary Cordis tree, while the shipped bundle may own a complete explicit roster. Cross-link the launcher, profile-bundle, Python-runtime, minimal-agent, snapshot, and telemetry decisions; the supersession audit keeps each older note active because its remaining rationale is independent.
Update the CLI, architecture, Python tutorial/reference, example, runtime-wheel reference, and bundle documentation. The docs distinguish the full sdk profile from sdk-minimal, explain explicit-home/plugin/patch customization, state the minimal permission and persistence choices, and retain the separately packaged web profile and frontend assets for direct dsh use.
Correct dsh-base descriptions to cover base-backed profiles, make SDK startup configuration visible in the generated config catalog, add sdk-minimal to the module graph, and regenerate the base-composition graph. English and Chinese pairs are re-recorded at the exact reviewed contents.
2026-08-24 15:39:43 +08:00
| [`base/` ](base/README.md ) | The shared dsh core applied first by base-backed profiles | — (patch only) |
2026-08-23 01:44:10 +08:00
| [`acp-app/` ](acp-app/README.md ) | Automation-only ACP stdio application over base | mounts the ACP bridge |
2026-08-06 04:40:11 +08:00
| [`web-app/` ](web-app/README.md ) | Browser surface: web patch layer + runtime glue plugin | mounts rows |
2026-08-09 12:13:58 +08:00
| [`headless/` ](headless/README.md ) | Direct one-shot task mode over base, with no Host or Web layer | mounts `headless-runner` |
feat(profiles): add the SDK application bundle
Introduce @deepseek-ai/dsh-sdk-app as the thin application layer for the built-in sdk profile. The bundle contributes the JSON-RPC server and startup-only profile metadata, while dsh-base continues to own the shared agent, provider, persistence, and tool composition.
Publish ctx.appReady from the launcher only after the Loader tree and launcher-owned setup succeed. The stdio lifetime binding leaves stdin unread until the protocol transport claims it and defers EOF exit 0 until readiness commits, so early protocol frames remain buffered and a racing startup failure remains the nonzero process outcome. Fiber disposal cancels both pending lifecycle listeners.
Register the bundle in the CLI resolver closure, generated configuration catalog, workspace graph, and built-bin smoke. Startup tests prove that base plus sdk-app exposes the SDK server without taking ownership of shared runtime plugins; focused and built-bin regressions cover early input, EOF readiness, and startup-error precedence.
2026-08-23 01:43:36 +08:00
| [`sdk-app/` ](sdk-app/README.md ) | SDK stdio JSON-RPC application over base | mounts the SDK server |
feat(bundle): ship the standalone sdk-minimal profile
Add a startup-only sdk-minimal template whose sole bundle inserts the complete JSON-RPC agent tree over the empty profile root. The roster is an explicit composition allowlist: it contains one DeepSeek adapter, the minimal agent spine, persistent Bash, the string-replace editor, local execution, and JSONL persistence, while dsh-base and Web remain absent.
Reuse the SDK app startup provider so the new profile retains help, stdin EOF, and bounded launcher shutdown semantics. Make that provider render its configured profile name, which keeps both sdk and sdk-minimal help truthful without duplicating process lifecycle code.
Register the package in the CLI closure, TypeScript graph, lockfile, Knip policy, and bilingual bundle references. Exact manifest, row-roster, profile-template, config-dump, and HMR tests make later additions visible instead of relying on a blacklist.
2026-08-24 14:50:41 +08:00
| [`sdk-minimal/` ](sdk-minimal/README.md ) | Standalone minimal SDK application without base or Web | — (complete patch tree) |
2026-08-06 04:40:11 +08:00
In-box bundles resolve from the dsh installation; out-of-tree bundles install into a profile through `dsh plugin --profile <name> add <package>` .