`config.default` becomes the composition base of an `agent-presets` settings namespace, so the user document layers over the deployment's engineering default and a person can change which preset new sessions get without a restart. The value is read per resolution rather than snapshotted: a hot-reloaded document takes effect on the next session created, and every running session stays on the preset it was composed from — which is the same rule the session-header guard enforces from the other side. `resolve()` read `config.default` directly, which would have made the whole setting inert; it now goes through `defaultId` like every other caller. The write-protection test is rewritten against a temp profile root. It was passing vacuously: the un-overridden Loader REWRITES the composition it read — stamping `disabled: true` onto the self-disposing row — so the committed fixture had been mutated by the very run that proved the bug, and every later run compared against the damaged file and passed. Building the preset in a temp directory makes the assertion immune to its own failure mode, and it now fails with a visible `+ disabled: true` when the override is removed. Review follow-ups on this layer. The exported schema is `AgentPresetSettingsSchema`, symmetric with the `AgentPresetSettings` interface it resolves and self-describing at an import site. The `session.create` JSDoc promised "the deployment's default preset" for an omitted `agentPreset`, which this layer makes false — it now names the effective default. The constructor records why it does not use `installSettingsSection`: that helper re-judges what a consumer DERIVED across attach and detach, and nothing here is derived. The provider-unload test disposes the fiber `ctx.plugin()` handed back instead of reaching into `ctx.reflect.store`, and the write-protection wait says why slack is the right shape for an absence assertion. The real composition covers the layering too. `apps/cli` boots the shipped `cordis.yml`, stores `agent-presets.default`, and asserts an unnamed session composes from it — the package suite proves the layering against a hand-built context, this proves the roster and the settings provider are wired to each other. That test also pins the settings row at a temp file: it defaulted to `$DSH_HOME/settings.yaml`, so a developer's own stored default decided the outcome of a file whose whole point is that only the shipped root does. The Agent Note records the per-resolution read and its correspondence with the session header, and the vacuous-test finding above.
50 lines
1.7 KiB
JSON
50 lines
1.7 KiB
JSON
{
|
|
"name": "@deepseek-ai/dsh",
|
|
"description": "dsh CLI: profile boot, plugin management, and the browser UI alias",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"bin": {
|
|
"dsh": "lib/bin.js"
|
|
},
|
|
"files": [
|
|
"lib/*.js",
|
|
"config"
|
|
],
|
|
"license": "BSD-3-Clause",
|
|
"dependencies": {
|
|
"@cordisjs/plugin-hmr": "workspace:*",
|
|
"@cordisjs/plugin-include": "workspace:*",
|
|
"@cordisjs/plugin-loader": "workspace:*",
|
|
"@cordisjs/plugin-timer": "workspace:*",
|
|
"@deepseek-ai/dsh-app-boot": "workspace:^",
|
|
"@deepseek-ai/dsh-base": "workspace:^",
|
|
"@deepseek-ai/dsh-headless": "workspace:^",
|
|
"@deepseek-ai/dsh-mcp-client": "workspace:^",
|
|
"@deepseek-ai/dsh-paths": "workspace:^",
|
|
"@deepseek-ai/dsh-pty": "workspace:^",
|
|
"@deepseek-ai/dsh-pty-local": "workspace:^",
|
|
"@deepseek-ai/dsh-session-reference": "workspace:^",
|
|
"@deepseek-ai/dsh-tmux-context": "workspace:^",
|
|
"@deepseek-ai/dsh-tool-ask-user": "workspace:^",
|
|
"@deepseek-ai/dsh-tool-bash-persistent": "workspace:^",
|
|
"@deepseek-ai/dsh-tool-cordis": "workspace:^",
|
|
"@deepseek-ai/dsh-web-app": "workspace:^",
|
|
"commander": "^15.0.0",
|
|
"cordis": "^4.0.0-rc.7",
|
|
"js-yaml": "^4.2.0",
|
|
"node-addon-require-builtin": "^0.1.4"
|
|
},
|
|
"devDependencies": {
|
|
"@deepseek-ai/dsh-frontend-static": "workspace:^",
|
|
"@deepseek-ai/dsh-host-apiproxy": "workspace:^",
|
|
"@deepseek-ai/dsh-host-webserver": "workspace:^",
|
|
"@deepseek-ai/dsh-loader-smoke": "workspace:^",
|
|
"@deepseek-ai/dsh-settings": "workspace:^",
|
|
"@deepseek-ai/dsh-system-prompt": "workspace:^",
|
|
"@deepseek-ai/dsh-tools": "workspace:^",
|
|
"@types/js-yaml": "^4.0.9",
|
|
"execa": "^10.0.0"
|
|
}
|
|
}
|