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.
102 lines
4.0 KiB
JSON
102 lines
4.0 KiB
JSON
{
|
|
"name": "@deepseek-ai/dsh-web-app",
|
|
"description": "The dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"main": "lib/index.js",
|
|
"types": "lib/types/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./lib/types/index.d.ts",
|
|
"default": "./lib/index.js"
|
|
},
|
|
"./startup": {
|
|
"types": "./lib/types/startup.d.ts",
|
|
"default": "./lib/startup.js"
|
|
},
|
|
"./invariant": {
|
|
"types": "./lib/types/invariant.d.ts",
|
|
"default": "./lib/invariant.js"
|
|
},
|
|
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
"./src/*": "./src/*",
|
|
"./package.json": "./package.json"
|
|
},
|
|
"files": [
|
|
"lib/index.js",
|
|
"lib/invariant.js",
|
|
"lib/startup.js",
|
|
"cordis.patch.yml",
|
|
"lib/types/**/*.d.ts"
|
|
],
|
|
"license": "BSD-3-Clause",
|
|
"dsh": {
|
|
"bundle": {
|
|
"patch": "./cordis.patch.yml",
|
|
"entrypoint": "web-startup"
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"@deepseek-ai/dsh-agent-presets": "workspace:^",
|
|
"@deepseek-ai/dsh-client-connection": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-agent-preset": "workspace:^",
|
|
"@deepseek-ai/dsh-client-hmr": "workspace:^",
|
|
"@deepseek-ai/dsh-client-locale": "workspace:^",
|
|
"@deepseek-ai/dsh-client-modules": "workspace:^",
|
|
"@deepseek-ai/dsh-api-remotes": "workspace:^",
|
|
"@deepseek-ai/dsh-client-runtime": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-agent-preset": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-command": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-conversation": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-deliverables": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-goal": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-layout": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-model": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-models": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-permission": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-plan": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-question": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-settings": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-settings-general": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-sidebar": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-skill": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-slash": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-subagent": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-theme": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-tool": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-trajectory": "workspace:^",
|
|
"@deepseek-ai/dsh-client-ui-workspace": "workspace:^",
|
|
"@deepseek-ai/dsh-cmdline": "workspace:^",
|
|
"@deepseek-ai/dsh-code-runtime-worker": "workspace:^",
|
|
"@deepseek-ai/dsh-frontend": "workspace:^",
|
|
"@deepseek-ai/dsh-frontend-static": "workspace:^",
|
|
"@deepseek-ai/dsh-host-apiproxy": "workspace:^",
|
|
"@deepseek-ai/dsh-host-directory-picker-auto": "workspace:^",
|
|
"@deepseek-ai/dsh-host-directory-picker-browse": "workspace:^",
|
|
"@deepseek-ai/dsh-host-directory-picker-native": "workspace:^",
|
|
"@deepseek-ai/dsh-host-webserver": "workspace:^",
|
|
"@deepseek-ai/dsh-session-projection-cache": "workspace:^",
|
|
"@deepseek-ai/dsh-storage": "workspace:^",
|
|
"@deepseek-ai/dsh-storage-domain": "workspace:^",
|
|
"@deepseek-ai/dsh-storage-json": "workspace:^",
|
|
"@deepseek-ai/dsh-workspace": "workspace:^",
|
|
"@deepseek-ai/schemastery": "^3.18.0",
|
|
"commander": "^15.0.0"
|
|
},
|
|
"peerDependencies": {
|
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.0-rc.5",
|
|
"@deepseek-ai/dsh-bash-env": "^0.0.1",
|
|
"@deepseek-ai/dsh-invariants": "^0.0.1",
|
|
"@deepseek-ai/dsh-system-prompt": "^0.0.1",
|
|
"@deepseek-ai/cordis": "^4.0.0-rc.7"
|
|
},
|
|
"devDependencies": {
|
|
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
|
|
"@deepseek-ai/dsh-bash-env": "workspace:^",
|
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
|
"@deepseek-ai/dsh-system-prompt": "workspace:^",
|
|
"@deepseek-ai/cordis": "^4.0.0-rc.7"
|
|
}
|
|
}
|