The four near-twin helpers the two published bins carried — loadEnv, installFailLoud, assertEntriesLoaded, boot — live once in packages/ui/app-boot, parameterized by the bin's diagnostic prefix and injectable at their side-effect seams (warn sink, process slice), so every branch sits under the per-file 100% coverage gate: the unit suite drives boot() in-process against the real Loader (relative-specifier configs) through both the settled-tree path and the fiber-less-entry rejection, and exercises the ENOENT/unloadable .env split, the Error/non-Error/stackless fail-loud arms, and the disabled-entry exclusion. resolveConfigPath (snapshot-aware) becomes the single path resolver for both bins. Each bin.ts is now a thin self-executing composition plus its app-specific lifecycle (acp: replay env-skip + stdin-EOF dispose; stdio: nothing extra), exports nothing, and stays coverage-excluded; the built-bin smokes still prove both artifacts under plain node in the node_modules-shaped temp dir (now symlinking ui/app-boot), including the missing-config non-zero exit. Implements docs/rfc/implemented/simplification/2026-07-04-share-app-bin-boot-glue.md (moved from proposed/ and amended); the extract-example-app-packages RFC's bin-ownership facts are amended in the same change.
26 lines
1.0 KiB
JavaScript
26 lines
1.0 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* The `dsh-stdio-agent` bin: boot a Cordis app from a leaf `cordis.yml` that
|
|
* loads the {@link @deepseek-ai/dsh-stdio-agent} app plugin (plus a backend LLM
|
|
* adapter and a bash executor). The boot glue — `.env` loading, the fail-loud
|
|
* Loader guards, the settle-the-tree boot sequence — lives in
|
|
* {@link @deepseek-ai/dsh-app-boot}, shared with the ACP bin.
|
|
*
|
|
* Usage: `dsh-stdio-agent [path-to-cordis.yml]` (default `./cordis.yml`). The
|
|
* `demo:echo` / `demo:repl` scripts invoke it with the example's config.
|
|
*
|
|
* @module @deepseek-ai/dsh-stdio-agent/bin
|
|
*/
|
|
|
|
import { boot, installFailLoud, loadEnv, resolveConfigPath } from '@deepseek-ai/dsh-app-boot'
|
|
|
|
const NAME = 'dsh-stdio-agent'
|
|
|
|
/* v8 ignore start -- thin self-executing composition over the unit-tested
|
|
dsh-app-boot helpers; exercised end-to-end by the keyless Loader-path and
|
|
built-bin smokes */
|
|
installFailLoud(NAME)
|
|
loadEnv(NAME)
|
|
await boot(NAME, resolveConfigPath(process.argv[2] ?? './cordis.yml', undefined))
|
|
/* v8 ignore stop */
|