feat(bundle): ship dsh-base, dsh-web-app, and dsh-headless profile bundles

Profile bundles are npm packages declaring dsh.patch in their manifest:
dsh-base carries the former base.cordis.yml rows as one insert over the empty
profile root; dsh-web-app carries the web overlay plus a runtime glue plugin
owning what used to be launcher code (frontend dist resolution via
frontend-static, the web-surface prompt section, bash runtime variables, the
readiness-gated URL line); dsh-headless carries the one-shot runner driving a
task turn through the in-process API carrier under the launcher-provided
ctx.headlessIo seam.
This commit is contained in:
Turtle
2026-08-06 04:40:11 +08:00
parent 2ee2ee2f96
commit 2365b2c54f
39 files changed
+2282 -327

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
/**
* @deepseek-ai/dsh-base — the shared dsh core as a profile bundle. The
* package's substance is `cordis.patch.yml` (declared by the `dsh.patch`
* manifest field): every profile's first patch layer, inserting the base
* plugin rows over the empty profile root. This module only names the patch
* for consumers that need the path programmatically (the profile composer
* resolves it through the manifest field, not through this export).
* @module @deepseek-ai/dsh-base
*/
import { fileURLToPath } from 'node:url'
/** Absolute path of this bundle's profile patch. */
export const patchPath: string = fileURLToPath(new URL('../cordis.patch.yml', import.meta.url))
+28
View File
@@ -0,0 +1,28 @@
/**
* Package-owned invariant companion for `@deepseek-ai/dsh-base`.
* @module @deepseek-ai/dsh-base/invariant
*/
import type { Context } from 'cordis'
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
const PACKAGE_NAME = '@deepseek-ai/dsh-base'
/** Cordis companion plugin name. */
export const name = 'base-bundle-invariant'
/** Service required before the companion can register. */
export const inject = ['invariants']
// No runtime invariant: the package is a static patch-list carrier (a YAML
// document of loader rows owned by other packages); it mounts no service,
// emits no events, and owns no mutable relation to check. Each inserted row's
// own package carries that row's invariants.
const install: InvariantInstaller = () => {}
/**
* Register this package's invariant companion.
* @param ctx - Cordis context carrying the invariant service.
* @returns the installed registration's disposer after setup succeeds.
*/
export const apply = (ctx: Context): Promise<() => void> =>
Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install))