Tianyi Cui 8af3d2461b Merge branch 'master' into worktree/dsh-arg-parser 1 месяц назад
..
app-boot 007e8fd92f refactor(cli): bail early in the arg adapter instead of returning errors as data 1 месяц назад
commands e819a586b0 refactor(acp): reduce bridge to automation protocol 2 месяцев назад
jsonrpc be29b012f1 fix(jsonrpc): update agent followup test doubles 2 месяцев назад
permission 5569f3f8ac docs: repair rewritten rationale and stale claims from the ACP reduction 2 месяцев назад
tool-ask-user 7d3cb39047 Merge branch 'codex/tool-json-schema-dsl' into codex/canonical-tool-output 2 месяцев назад
tui 8af3d2461b Merge branch 'master' into worktree/dsh-arg-parser 1 месяц назад
user-approval e819a586b0 refactor(acp): reduce bridge to automation protocol 2 месяцев назад
user-interaction e819a586b0 refactor(acp): reduce bridge to automation protocol 2 месяцев назад
README.md 2dfd8635e8 Merge branch 'master' into worktree/dsh-arg-parser 1 месяц назад

README.md

ui/ — human and SDK-client integration surfaces

Human-facing channels and the out-of-process SDK server. These are product packages: real interfaces that a person or SDK client drives.

Package Role ctx key
commands/ Human-command registry: shared discovery metadata, scoped shadowing, cancellation, and direct UI dispatch ctx.commands
user-approval/ One-shot user-approval mechanism, closed outcome vocabulary, audit events, and per-session approval policy ctx.approval
permission/ User-facing permission presets (workspace-write/danger-full-access): one product-level select bundling the sandbox-mode and approval-policy knobs, written through to their session events ctx.permission
user-interaction/ Abstract human question/answer seam used by UI-backed confirmation tools ctx.userInteraction
tool-ask-user/ Model-facing ask_user_question tool over ctx.userInteraction (registers on ctx.tools)
tui/ Interactive pi-tui terminal channel; renders session titles/events and tool intents, answers ctx.userInteraction, and hosts effect-owned plugin overlays ctx.tui (drives ctx.agents)
jsonrpc/ Stdio JSON-RPC server for out-of-process SDK clients (drives ctx.agents)
app-boot/ Shared boot glue for the app bins: .env loading, fail-loud Loader guards, snapshot-aware config resolution, the settle-the-tree boot sequence (library for the bins)

A UI integration is a client-driver plugin, not a loop change: it consumes the existing agent/* event taxonomy and the dsh-agent factory. tui is the interactive terminal front door and supplies the terminal-local ctx.tui extension service; jsonrpc serves out-of-process SDK clients, while non-interactive one-shot tasks use cli-demo. commands is the human-only discovery and dispatch plane consumed by TUI; command input and output do not become model messages.

user-approval, user-interaction, and tool-ask-user live here because asking a human is a UI-backed product affordance, not part of the providerless core spine. user-approval owns the one-shot ctx.approval decision mechanism and its policy tier; answerers remain with the channel or automation transport that owns the agent. user-interaction remains provider-neutral (ctx.userInteraction), while tool-ask-user is its model-facing consumer and interactive app packages provide concrete providers.

The runnable app bundles composed over agent-spine-demo live in examples/ (tui-demo, acp-demo, jsonrpc-demo). acp-demo and jsonrpc-demo own boot bins; the tui-demo bundle is booted by the product dsh CLI. ui/ keeps the reusable human/SDK channel plugins and shared app-boot glue; the automation-only ACP transport lives in acp/. Each front door owns its stdout policy, and a leaf cordis.yml supplies backends and optional tools.