feat(bundle): the web and one-shot apps own their own flags

dsh-web-app owns --host/--port/--dev/--workspace-root/--trusted-host and
its --help in a web-startup row; the rows it configures wait for the
webStartup service, and the client-plugin HMR receiver now ships disabled
so --dev is a row toggle rather than a runtime insert (the Loader cannot
resolve a row inserted from inside a mounting plugin).

dsh-headless owns the task positional and rejects a missing task as its own
usage error. Its runner ships disabled, not merely waiting: the schema
requires the task, and a row's config is validated when its fiber is
created, before the startup row can supply one. A composition has exactly
one command-line owner, so the patch disables the web startup row and this
one provides webStartup too, leaving the web rows on their composed
one-shot values.

The keyless web scaffold provides the same three values with no arguments,
which is what an embedding host with no command line does.
This commit is contained in:
Turtle
2026-08-06 20:52:26 +08:00
parent 788368e314
commit 82728808d4
23 changed files with 692 additions and 36 deletions

31
pnpm-lock.yaml generated
View File

@@ -356,6 +356,9 @@ importers:
'@deepseek-ai/dsh-client-web-react':
specifier: workspace:^
version: link:../../packages/client/web-react
'@deepseek-ai/dsh-cmdline':
specifier: workspace:^
version: link:../../packages/boot/cmdline
'@deepseek-ai/dsh-pwsh-local':
specifier: workspace:^
version: link:../../packages/bash/pwsh-local
@@ -1181,18 +1184,18 @@ importers:
specifier: ^15.0.0
version: 15.0.0
devDependencies:
'@cordisjs/plugin-include':
'@deepseek-ai/cordis':
specifier: ^4.0.0-rc.7
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-include':
specifier: workspace:^
version: link:../../../vendor/include
'@cordisjs/plugin-loader':
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-invariants':
specifier: workspace:^
version: link:../../support/invariants
cordis:
specifier: ^4.0.0-rc.7
version: link:../../../vendor/cordis
packages/bundle/base:
dependencies:
@@ -1443,12 +1446,18 @@ importers:
packages/bundle/headless:
dependencies:
'@deepseek-ai/dsh-cmdline':
specifier: workspace:^
version: link:../../boot/cmdline
'@deepseek-ai/dsh-code-runtime-worker':
specifier: workspace:^
version: link:../../code-runtime/code-runtime-worker
'@deepseek-ai/schemastery':
specifier: link:../../../vendor/schemastery
version: link:../../../vendor/schemastery
commander:
specifier: ^15.0.0
version: 15.0.0
devDependencies:
'@deepseek-ai/cordis':
specifier: ^4.0.0-rc.7
@@ -1471,6 +1480,9 @@ importers:
'@deepseek-ai/dsh-session':
specifier: workspace:^
version: link:../../core/session
'@deepseek-ai/dsh-web-app':
specifier: workspace:^
version: link:../web-app
packages/bundle/web-app:
dependencies:
@@ -1558,6 +1570,9 @@ importers:
'@deepseek-ai/dsh-client-ui-workspace':
specifier: workspace:^
version: link:../../client/ui-workspace
'@deepseek-ai/dsh-cmdline':
specifier: workspace:^
version: link:../../boot/cmdline
'@deepseek-ai/dsh-code-runtime-worker':
specifier: workspace:^
version: link:../../code-runtime/code-runtime-worker
@@ -1600,10 +1615,16 @@ importers:
'@deepseek-ai/schemastery':
specifier: link:../../../vendor/schemastery
version: link:../../../vendor/schemastery
commander:
specifier: ^15.0.0
version: 15.0.0
devDependencies:
'@deepseek-ai/cordis':
specifier: ^4.0.0-rc.7
version: link:../../../vendor/cordis
'@deepseek-ai/cordis-plugin-loader':
specifier: workspace:^
version: link:../../../vendor/loader
'@deepseek-ai/dsh-bash-env':
specifier: workspace:^
version: link:../../bash/bash-env