Files
dsh-facet/package.json
T
NotExpectedYet 5d06829118
Release / release (push) Successful in 6s
feat: pick the focus and the allowed paths from a directory listing
Both scope controls were free-text boxes, and the vocabulary they asked the user
for is paths relative to the session folder. "Which folder is `../shared`" is the
one question a text box cannot answer, so the panel now shows the Host's own
directory: the `uiWorkspace.listDirectory` primitive the workspace picker's
browser drives, one level of child folders, a breadcrumb trail, and a
hidden-entries toggle. The path field stays editable inside the picker, because
the Host lists folders and an extra may legitimately name a file.

Picks are stored in the form that keeps their meaning. A folder at
`/work/root/src/shared` is declared `src/shared` when the session started in
`/work/root`, and `../shared` going up; only a path with nothing shared — another
drive, another tree — stays absolute. The Focus row shows that declared form,
with the resolved path in its title, which is what the agent will see.

`Set` is gone with the box it committed: the panel writes on pick, as every other
control here already did. `Clear` stays, because empty means the session folder —
the schema's own default rather than an override naming the same place.

The card was 380px wide and grew without bound, a single column of prose taller
than the viewport. It is 760px now, with a two-column grid that `auto-fit`
collapses to one on a narrow card, the reference prose folded into `<details>`,
and a scroll-bounded body. `Modal` sizes its own card from a hashed class in the
primitives' stylesheet, so this bundle installs one small stylesheet of its own
and outranks that rule with a doubled class selector — no `!important`, and
nothing reaching into a class name it does not own.

Two fixes came with it. The footer's "Deployment mode:" line read a slot prop
that never carried the mode, so it said "ask" in every deployment; it reads the
settings document now. And `uiWorkspace` is resolved with `ctx.get` at the call
rather than injected, because the panel is still the only way to declare scope in
a deployment with no directory browser: it keeps the panel and says what it
cannot do, instead of losing the button.
2026-09-27 07:05:47 +01:00

69 lines
1.7 KiB
JSON

{
"name": "dsh-facet",
"version": "0.2.0",
"private": true,
"type": "module",
"description": "Scope an agent session to one facet of a multi-faceted system: the session's own folder, plus whatever files the user grants it.",
"main": "index.js",
"exports": {
".": {
"types": "./lib/types/index.d.ts",
"default": "./index.js"
},
"./guard": {
"types": "./lib/types/guard.d.ts",
"default": "./lib/guard.js"
},
"./client": {
"default": "./client/client.js"
},
"./cordis.patch.yml": "./cordis.patch.yml",
"./presets/facet.patch.yml": "./presets/facet.patch.yml",
"./package.json": "./package.json"
},
"files": [
"index.js",
"lib",
"client",
"presets",
"cordis.patch.yml",
"README.md"
],
"engines": {
"node": ">=22.5"
},
"scripts": {
"test": "node --test test/*.test.js",
"test:release": "bash .gitea/scripts/release.test.sh",
"release:plan": "bash .gitea/scripts/release.sh should-release \"$(bash .gitea/scripts/release.sh range)\"",
"release:notes": "bash .gitea/scripts/release.sh notes \"$(bash .gitea/scripts/release.sh range)\""
},
"dsh": {
"bundle": {
"patch": [
"./cordis.patch.yml",
"./presets/facet.patch.yml"
]
},
"client": {
"platform": "web",
"inject": [
"@deepseek-ai/dsh-client-ui-settings",
"@deepseek-ai/dsh-client-ui-plugin-manager",
"@deepseek-ai/dsh-client-ui-conversation",
"@deepseek-ai/dsh-client-ui-workspace"
]
}
},
"keywords": [
"dsh-plugin",
"deepseek-harness",
"cordis",
"agent-preset",
"context",
"scope",
"tokens"
],
"license": "MIT"
}