Files
deepseek-harness/packages/host/runtime/tsconfig.json
T
Turtle f0410d592d feat(web): permission presets and approval answering for the web UI
The web host now composes the sandboxed product path (sandbox-local +
sandbox-policy behind bash-sandbox/fs-sandbox, with user-approval and
permission on top); BootHostOptions.sandbox carries the deployment
defaults (workspace-write + ask).

createApiProxy owns the approval pending registry: a ctx.approval ask
becomes an answerable approval/requested mux frame with a stable rpcId,
replayed verbatim on every mux open until settled; respond routes by the
echoed rpcId, validates the ApprovalResponsePayload audit correlation,
and broadcasts approval/resolved; the ask's abort signal withdraws the
question as cancelled.

session.permissions / session.setPermission project ctx.permission into
a protocol-owned PermissionOption select; idle switches are held
last-write-wins and
flushed into the next prompted turn (the ACP bridge's anchoring
pattern). The shared hasOpenTurn fold moved to dsh-session,
deduplicating the private copies in user-approval, the ACP bridge, and
the proxy.

Client, per the designer draft: a pending approval takes over the
composer (ApprovalPanel replaces the InputBar — amber strip,
justification headline, paired command, one-shot refuse/allow, keyed by
rpcId so a queued second approval remounts live; the resolved frame
restores the composer); the sidebar session row shows an amber
waiting-approval dot that outranks the running ring (manager-tracked
approvalId set, idempotent under mux-open replays, cleared per
connection generation, lit for uninstantiated sessions too); the
permission selector is a composer bottom-row chip over an invisible
native select, with a presentation-only title-case transform
(workspace-write renders as Workspace Write; wire names untouched). Question placeholders stay in the message flow. The
connection fixture mirrors the host behavior for keyless browser
acceptance.
2026-07-24 19:15:04 +08:00

148 lines
2.5 KiB
JSON

{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "lib/types"
},
"include": [
"src"
],
"references": [
{
"path": "../../../vendor/cordis"
},
{
"path": "../../../vendor/timer"
},
{
"path": "../../llm/llm"
},
{
"path": "../../llm/llm-deepseek"
},
{
"path": "../../core/session"
},
{
"path": "../../session-title/session-title"
},
{
"path": "../../session-title/session-title-first-message-llm"
},
{
"path": "../../core/system-prompt"
},
{
"path": "../../core/tools"
},
{
"path": "../../core/agent"
},
{
"path": "../../tasks/tasks"
},
{
"path": "../../core/agent-loop"
},
{
"path": "../../session-persistence/session-persistence-jsonl"
},
{
"path": "../../bash/bash-sandbox"
},
{
"path": "../../bash/tool-bash"
},
{
"path": "../../sandbox/sandbox"
},
{
"path": "../../sandbox/sandbox-local"
},
{
"path": "../../sandbox/sandbox-policy"
},
{
"path": "../../ui/user-approval"
},
{
"path": "../../ui/permission"
},
{
"path": "../../compact/compact-basic"
},
{
"path": "../../fs/fs-sandbox"
},
{
"path": "../../fs/fs-policy"
},
{
"path": "../../fs/tool-fs"
},
{
"path": "../../fs/tool-fs-search"
},
{
"path": "../../llm/token-meter"
},
{
"path": "../../skill/skill"
},
{
"path": "../../skill/skill-local"
},
{
"path": "../../skill/tool-skill"
},
{
"path": "../../spill/spill-local"
},
{
"path": "../../spill/spill-policy"
},
{
"path": "../../subagent/subagent"
},
{
"path": "../../subagent/subagent-fork"
},
{
"path": "../../subagent/subagent-spawn"
},
{
"path": "../../subagent/tool-subagent"
},
{
"path": "../../support/invariants"
},
{
"path": "../../tasks/tool-tasks"
},
{
"path": "../../timeout/timeout-policy"
},
{
"path": "../../todo/tool-todo"
},
{
"path": "../../workflow/tool-workflow"
},
{
"path": "../../workflow/workflow-workerthread"
},
{
"path": "../apiproxy"
},
{
"path": "../../../vendor/loader"
},
{
"path": "../../context/workspace-context"
},
{
"path": "../../ui/user-interaction"
}
]
}