@open-mercato/cezar 0.13.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/agent-config/catalog.d.ts +4 -0
- package/dist/agent-config/catalog.js +85 -3
- package/dist/agent-config/catalog.js.map +1 -1
- package/dist/agent-config/model-settings/copilot.d.ts +15 -0
- package/dist/agent-config/model-settings/copilot.js +25 -0
- package/dist/agent-config/model-settings/copilot.js.map +1 -0
- package/dist/agent-config/model-settings/junie.d.ts +12 -0
- package/dist/agent-config/model-settings/junie.js +18 -0
- package/dist/agent-config/model-settings/junie.js.map +1 -0
- package/dist/agent-config/models.js +4 -0
- package/dist/agent-config/models.js.map +1 -1
- package/dist/automations/prompts.d.ts +2 -2
- package/dist/automations/prompts.js +1 -1
- package/dist/automations/types.d.ts +12 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/contract/agent-config.d.ts +4 -0
- package/dist/contract/agent-profiles.d.ts +30 -0
- package/dist/contract/automations.d.ts +32 -0
- package/dist/contract/dashboard-insights.d.ts +186 -0
- package/dist/contract/dashboard.d.ts +88 -0
- package/dist/contract/dispatch.d.ts +6 -0
- package/dist/contract/health.d.ts +8 -0
- package/dist/contract/index.d.ts +2 -0
- package/dist/contract/index.js +249 -72
- package/dist/contract/runs.d.ts +144 -0
- package/dist/contract/self-update.d.ts +111 -2
- package/dist/contract/skills.d.ts +19 -0
- package/dist/contract/star-count.d.ts +18 -0
- package/dist/contract/workflows.d.ts +12 -0
- package/dist/contract/workspace.d.ts +42 -2
- package/dist/core/acp-client.d.ts +99 -0
- package/dist/core/acp-client.js +198 -0
- package/dist/core/acp-client.js.map +1 -0
- package/dist/core/acp-ui-mapper.d.ts +95 -0
- package/dist/core/acp-ui-mapper.js +444 -0
- package/dist/core/acp-ui-mapper.js.map +1 -0
- package/dist/core/agent-env.js +10 -0
- package/dist/core/agent-env.js.map +1 -1
- package/dist/core/agent-profiles.d.ts +10 -0
- package/dist/core/agent-profiles.js +16 -0
- package/dist/core/agent-profiles.js.map +1 -1
- package/dist/core/agent-runner.d.ts +5 -3
- package/dist/core/agent-runner.js +5 -3
- package/dist/core/agent-runner.js.map +1 -1
- package/dist/core/backend-detect.d.ts +3 -3
- package/dist/core/backend-detect.js +61 -2
- package/dist/core/backend-detect.js.map +1 -1
- package/dist/core/claude-cli-runner.d.ts +5 -2
- package/dist/core/claude-cli-runner.js +11 -6
- package/dist/core/claude-cli-runner.js.map +1 -1
- package/dist/core/claude-ui-mapper.d.ts +14 -0
- package/dist/core/claude-ui-mapper.js +102 -11
- package/dist/core/claude-ui-mapper.js.map +1 -1
- package/dist/core/codex-app-server-transport.js +8 -4
- package/dist/core/codex-app-server-transport.js.map +1 -1
- package/dist/core/copilot-acp-runner.d.ts +60 -0
- package/dist/core/copilot-acp-runner.js +528 -0
- package/dist/core/copilot-acp-runner.js.map +1 -0
- package/dist/core/copilot-ui-mapper.d.ts +47 -0
- package/dist/core/copilot-ui-mapper.js +111 -0
- package/dist/core/copilot-ui-mapper.js.map +1 -0
- package/dist/core/cursor-agent-runner.js +4 -4
- package/dist/core/cursor-agent-runner.js.map +1 -1
- package/dist/core/disclaim-spawn.d.ts +9 -0
- package/dist/core/disclaim-spawn.js +53 -0
- package/dist/core/disclaim-spawn.js.map +1 -0
- package/dist/core/junie-acp-transport.d.ts +58 -0
- package/dist/core/junie-acp-transport.js +179 -0
- package/dist/core/junie-acp-transport.js.map +1 -0
- package/dist/core/junie-auth-probe.d.ts +12 -0
- package/dist/core/junie-auth-probe.js +30 -0
- package/dist/core/junie-auth-probe.js.map +1 -0
- package/dist/core/junie-model-catalog.d.ts +10 -0
- package/dist/core/junie-model-catalog.js +104 -0
- package/dist/core/junie-model-catalog.js.map +1 -0
- package/dist/core/junie-runner.d.ts +45 -0
- package/dist/core/junie-runner.js +533 -0
- package/dist/core/junie-runner.js.map +1 -0
- package/dist/core/junie-ui-mapper.d.ts +132 -0
- package/dist/core/junie-ui-mapper.js +459 -0
- package/dist/core/junie-ui-mapper.js.map +1 -0
- package/dist/core/model-identity.js +17 -0
- package/dist/core/model-identity.js.map +1 -1
- package/dist/core/model-presets.js +10 -0
- package/dist/core/model-presets.js.map +1 -1
- package/dist/core/opencode-server-runner.js +4 -4
- package/dist/core/opencode-server-runner.js.map +1 -1
- package/dist/core/pi-runner.js +4 -4
- package/dist/core/pi-runner.js.map +1 -1
- package/dist/core/provider-auth.d.ts +16 -2
- package/dist/core/provider-auth.js +113 -7
- package/dist/core/provider-auth.js.map +1 -1
- package/dist/core/runner-factory.js +6 -0
- package/dist/core/runner-factory.js.map +1 -1
- package/dist/core/runner-model-catalog.js +12 -8
- package/dist/core/runner-model-catalog.js.map +1 -1
- package/dist/core/tool-display.js +6 -1
- package/dist/core/tool-display.js.map +1 -1
- package/dist/core/ui-events.d.ts +6 -2
- package/dist/git-diff-base.js +23 -2
- package/dist/git-diff-base.js.map +1 -1
- package/dist/git-worktree.d.ts +21 -2
- package/dist/git-worktree.js +68 -5
- package/dist/git-worktree.js.map +1 -1
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/dist/paths.js +2 -0
- package/dist/paths.js.map +1 -1
- package/dist/runs/event-history.js +3 -0
- package/dist/runs/event-history.js.map +1 -1
- package/dist/runs/store.d.ts +42 -3
- package/dist/runs/store.js +112 -6
- package/dist/runs/store.js.map +1 -1
- package/dist/self-update/checkouts.d.ts +53 -0
- package/dist/self-update/checkouts.js +268 -0
- package/dist/self-update/checkouts.js.map +1 -0
- package/dist/self-update/cli.d.ts +5 -3
- package/dist/self-update/cli.js +75 -8
- package/dist/self-update/cli.js.map +1 -1
- package/dist/self-update/layout.d.ts +33 -1
- package/dist/self-update/layout.js +102 -3
- package/dist/self-update/layout.js.map +1 -1
- package/dist/self-update/pulls.d.ts +40 -0
- package/dist/self-update/pulls.js +127 -0
- package/dist/self-update/pulls.js.map +1 -0
- package/dist/self-update/service.d.ts +26 -3
- package/dist/self-update/service.js +85 -9
- package/dist/self-update/service.js.map +1 -1
- package/dist/server/dashboard.d.ts +107 -0
- package/dist/server/dashboard.js +2 -1
- package/dist/server/dashboard.js.map +1 -1
- package/dist/server/forge/github.js +4 -1
- package/dist/server/forge/github.js.map +1 -1
- package/dist/server/fs-browse.d.ts +3 -1
- package/dist/server/fs-browse.js +27 -5
- package/dist/server/fs-browse.js.map +1 -1
- package/dist/server/open-in-app.js +2 -0
- package/dist/server/open-in-app.js.map +1 -1
- package/dist/server/provider-action-gate.js +5 -1
- package/dist/server/provider-action-gate.js.map +1 -1
- package/dist/server/server.d.ts +880 -511
- package/dist/server/server.js +40 -5
- package/dist/server/server.js.map +1 -1
- package/dist/server/star-count.d.ts +67 -0
- package/dist/server/star-count.js +186 -0
- package/dist/server/star-count.js.map +1 -0
- package/dist/skills-banner.d.ts +19 -0
- package/dist/skills-banner.js +24 -0
- package/dist/skills-banner.js.map +1 -1
- package/dist/workflows/run.d.ts +0 -2
- package/dist/workflows/run.js +45 -29
- package/dist/workflows/run.js.map +1 -1
- package/dist/workflows/types.d.ts +6 -0
- package/dist/workspace/agent-accounts.d.ts +9 -1
- package/dist/workspace/agent-accounts.js +2 -0
- package/dist/workspace/agent-accounts.js.map +1 -1
- package/dist/workspace/agent-profiles.d.ts +2 -2
- package/dist/workspace/agent-profiles.js +25 -6
- package/dist/workspace/agent-profiles.js.map +1 -1
- package/dist/workspace/config.d.ts +9 -1
- package/dist/workspace/config.js +10 -3
- package/dist/workspace/config.js.map +1 -1
- package/dist/workspace/dashboard-insights.d.ts +42 -0
- package/dist/workspace/dashboard-insights.js +220 -0
- package/dist/workspace/dashboard-insights.js.map +1 -0
- package/dist/workspace/dashboard.d.ts +71 -1
- package/dist/workspace/dashboard.js +14 -1
- package/dist/workspace/dashboard.js.map +1 -1
- package/dist/workspace/semaphore.d.ts +3 -0
- package/dist/workspace/semaphore.js +8 -1
- package/dist/workspace/semaphore.js.map +1 -1
- package/package.json +3 -3
- package/scripts/mock-claude.mjs +34 -1
- package/scripts/mock-copilot-acp.mjs +190 -0
- package/scripts/mock-junie-acp.mjs +208 -0
- package/web/dist/assets/agent-task-pickers-BeQi-UTm.js +1 -0
- package/web/dist/assets/alert-dialog-CnRAuqwb.js +1 -0
- package/web/dist/assets/arrow-down-Da0kNRNH.js +1 -0
- package/web/dist/assets/arrow-left-BIZHhBIP.js +1 -0
- package/web/dist/assets/automation-format-CfPmkcsg.js +1 -0
- package/web/dist/assets/automations-route-AMJbFP53.js +1 -0
- package/web/dist/assets/centered-state-3r2Kaar_.js +1 -0
- package/web/dist/assets/chevron-left-DLAUPC66.js +1 -0
- package/web/dist/assets/chevron-right-KVZcXiPL.js +1 -0
- package/web/dist/assets/{circle-x-C9UoMP1V.js → circle-x-C0Jm5Ppb.js} +1 -1
- package/web/dist/assets/collapsible-DG_SIWqU.js +1 -0
- package/web/dist/assets/command-Dfln3D4A.js +1 -0
- package/web/dist/assets/{commit-list-BSfPsVsu.js → commit-list-_RA72yB_.js} +1 -1
- package/web/dist/assets/compare-variants-D6Ji6od4.js +1 -0
- package/web/dist/assets/dashboard-B3-tPimG.js +44 -0
- package/web/dist/assets/dialog-CiDREdUK.js +1 -0
- package/web/dist/assets/{diff-I0xowULh.js → diff-CxdyRumG.js} +2 -2
- package/web/dist/assets/diff-controls-DqJMMV4z.js +1 -0
- package/web/dist/assets/{diff-stat-yKn7joEr.js → diff-stat-Hupj4hxh.js} +1 -1
- package/web/dist/assets/{diff-view-DjvMeW1M.js → diff-view-BBYT5k6c.js} +1 -1
- package/web/dist/assets/dist-BqMwqJFX.js +1 -0
- package/web/dist/assets/dist-DpiX6WjA.js +1 -0
- package/web/dist/assets/{download-BcgZ2yk4.js → download-BR7EN9gW.js} +1 -1
- package/web/dist/assets/dropdown-menu-Ci4HFML0.js +1 -0
- package/web/dist/assets/editable-title-DDtUgRKZ.js +1 -0
- package/web/dist/assets/{ellipsis-vertical-g4O4NlLV.js → ellipsis-vertical-DBklom4U.js} +1 -1
- package/web/dist/assets/facet-filter-CfI4QvOd.js +1 -0
- package/web/dist/assets/{file-wXNeZwi7.js → file-CZb7cKNH.js} +1 -1
- package/web/dist/assets/{file-text-DV1gE2L6.js → file-text-Dm6CrEGW.js} +1 -1
- package/web/dist/assets/{folder-wjVId5un.js → folder-zQj-FYOo.js} +1 -1
- package/web/dist/assets/{git-pull-request-BBEDdTLK.js → git-pull-request-AhwzJc7s.js} +1 -1
- package/web/dist/assets/git-toolbar-j7gKkhGL.js +1 -0
- package/web/dist/assets/github-De-DFy8s.js +1 -0
- package/web/dist/assets/{image-preview-u1f-wzxC.js → image-preview-Dd3NVB7N.js} +1 -1
- package/web/dist/assets/index-HS1hr5Sz.js +12 -0
- package/web/dist/assets/index-YwgrLyBj.css +2 -0
- package/web/dist/assets/loader-circle-sk4vKJKp.js +1 -0
- package/web/dist/assets/{markdown-Bnm47qUl.js → markdown-DjNR-1p8.js} +2 -2
- package/web/dist/assets/new-task-form-vLs2G1_z.js +1 -0
- package/web/dist/assets/picker-pill-VW-M1ZiV.js +1 -0
- package/web/dist/assets/{pill-7dm3vWF7.js → pill-CPl6sysj.js} +1 -1
- package/web/dist/assets/popover-CNGONAql.js +1 -0
- package/web/dist/assets/project-router-dCZQu1wQ.js +1 -0
- package/web/dist/assets/{prompt-templates-BMZ5q5H_.js → prompt-templates-jNjVTAws.js} +1 -1
- package/web/dist/assets/{refresh-cw-C69euZ2H.js → refresh-cw-BfkEydKA.js} +1 -1
- package/web/dist/assets/repo-git-BZWZ6_pR.js +1 -0
- package/web/dist/assets/{run-diff-CoNVGn23.js → run-diff-u_roDsAJ.js} +2 -2
- package/web/dist/assets/run-header-Br1yJR0m.js +1 -0
- package/web/dist/assets/{search-x-BNLFOxI6.js → search-x-CT0NTqK1.js} +1 -1
- package/web/dist/assets/segmented-IDD4ucht.js +1 -0
- package/web/dist/assets/skills-Dsi5YdLG.js +1 -0
- package/web/dist/assets/{sparkles-ChorK-gZ.js → sparkles-CvOeAoyJ.js} +1 -1
- package/web/dist/assets/{square-terminal-C7KCPznz.js → square-terminal-eSs8YYZe.js} +1 -1
- package/web/dist/assets/{tab-link-E5O2Cesc.js → tab-link-CPF6ORha.js} +1 -1
- package/web/dist/assets/task-changes-DIT9Y1rh.js +1 -0
- package/web/dist/assets/task-commits-B4VvdiHH.js +1 -0
- package/web/dist/assets/task-files-BMm9C0DW.js +2 -0
- package/web/dist/assets/task-thread-RXabJAt0.js +9 -0
- package/web/dist/assets/{textarea-DLAfWPb0.js → textarea-DtBqPhIs.js} +1 -1
- package/web/dist/assets/thread-loading-Dnxb6Ar-.js +1 -0
- package/web/dist/assets/toaster-CfRVb8vH.js +43 -0
- package/web/dist/assets/token-metrics-DldVlr6m.js +1 -0
- package/web/dist/assets/tooltip-_O50N3pt.js +1 -0
- package/web/dist/assets/tracker-J0fdcH1G.js +4 -0
- package/web/dist/assets/{trash-2-_vwSMdPG.js → trash-2-CUH7GOVh.js} +1 -1
- package/web/dist/assets/{triangle-alert-fBRUkB46.js → triangle-alert-D5K_zyD3.js} +1 -1
- package/web/dist/assets/{upload-B4OIpdyq.js → upload-D7_n-9cl.js} +1 -1
- package/web/dist/assets/{use-now-sqAvRMna.js → use-now-3lElDuTi.js} +1 -1
- package/web/dist/assets/utils-BXvEm7Ve.js +64 -0
- package/web/dist/assets/workflows-D-dx9c_0.js +7 -0
- package/web/dist/assets/x-kLybIvX4.js +1 -0
- package/web/dist/assets/{zoomable-image-X81SApIg.js → zoomable-image-CnyQ9wyw.js} +1 -1
- package/web/dist/index.html +38 -36
- package/web/dist/assets/agent-task-pickers-DQ1qvgrD.js +0 -1
- package/web/dist/assets/alert-dialog-B_2uU4Bg.js +0 -1
- package/web/dist/assets/arrow-down-DieVZxSE.js +0 -1
- package/web/dist/assets/arrow-left-C8M0efjn.js +0 -1
- package/web/dist/assets/automation-format-CzinzpHK.js +0 -1
- package/web/dist/assets/automations-route-DYHUjV9R.js +0 -1
- package/web/dist/assets/centered-state-DJLgwvA4.js +0 -43
- package/web/dist/assets/chevron-left-BhXrOEE3.js +0 -1
- package/web/dist/assets/chevron-right-B3Ta8VKK.js +0 -1
- package/web/dist/assets/collapsible-BcKvItwg.js +0 -1
- package/web/dist/assets/command-BvGGv2_u.js +0 -1
- package/web/dist/assets/compare-variants-DBvMYMs3.js +0 -1
- package/web/dist/assets/dashboard-CGaFh4RV.js +0 -44
- package/web/dist/assets/dialog-B6NgKh0-.js +0 -1
- package/web/dist/assets/diff-controls-DskkZqmD.js +0 -1
- package/web/dist/assets/dist-BvXEdcbG.js +0 -1
- package/web/dist/assets/dist-CTksUkKh.js +0 -1
- package/web/dist/assets/dropdown-menu-B7HeKCfN.js +0 -1
- package/web/dist/assets/editable-title-BHbHmSIK.js +0 -1
- package/web/dist/assets/facet-filter-DZ3wfvN9.js +0 -1
- package/web/dist/assets/git-toolbar-EZuX4Cuz.js +0 -1
- package/web/dist/assets/github-zcLRxv77.js +0 -1
- package/web/dist/assets/index-BrZhA4_u.css +0 -2
- package/web/dist/assets/index-CSNFuBvj.js +0 -12
- package/web/dist/assets/loader-circle-Cwgo6onL.js +0 -1
- package/web/dist/assets/new-task-form-CQODCzBP.js +0 -1
- package/web/dist/assets/picker-pill-DNB9ETjS.js +0 -1
- package/web/dist/assets/popover-BRq6QnwI.js +0 -1
- package/web/dist/assets/project-router-I8Pbsrxy.js +0 -1
- package/web/dist/assets/repo-git-G436Abni.js +0 -1
- package/web/dist/assets/run-header-CxdaA86t.js +0 -1
- package/web/dist/assets/skills-C_kBDesq.js +0 -1
- package/web/dist/assets/task-changes-Bhw4Ysvg.js +0 -1
- package/web/dist/assets/task-commits-DBuGXuGm.js +0 -1
- package/web/dist/assets/task-files-CYDbeffM.js +0 -2
- package/web/dist/assets/task-thread-RuxHMJgN.js +0 -9
- package/web/dist/assets/thread-loading-BAuVAbcA.js +0 -1
- package/web/dist/assets/token-metrics-rVl4kXe_.js +0 -1
- package/web/dist/assets/tooltip-Bdl8mQG8.js +0 -1
- package/web/dist/assets/tracker-DJ8JW59-.js +0 -4
- package/web/dist/assets/utils-DoBmOlX3.js +0 -64
- package/web/dist/assets/workflows-C54D7mlm.js +0 -7
- package/web/dist/assets/x-HXr9KZBr.js +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Agent Client Protocol → normalized protocol-v2 mapper, shared by every ACP runner (spec
|
|
3
|
+
* `2026-09-19-runner-seam-native-backends` § "The shared ACP layer"; `AGENT_PROTOCOL.md` §4).
|
|
4
|
+
*
|
|
5
|
+
* It maps RAW JSON-RPC frames in wire order — both directions, exactly what `AcpClient`'s `onFrame`
|
|
6
|
+
* tap hands out — so a golden fixture is literally a captured transcript. Outbound requests are
|
|
7
|
+
* remembered by id, which is how an inbound answer is known to be the `session/new` result (→
|
|
8
|
+
* `session.started`) or the `session/prompt` result (→ `turn.completed`). `(frame, state) →
|
|
9
|
+
* {events, state}`: explicit immutable state, never throws, unknown or malformed frames yield no
|
|
10
|
+
* events (the mapper robustness contract).
|
|
11
|
+
*
|
|
12
|
+
* What differs between agents is a small `AcpDialect` (tool names, tool kinds, usage, plans,
|
|
13
|
+
* error wording); fixtures, the mapper test and the parity row stay per runner.
|
|
14
|
+
*/
|
|
15
|
+
import type { PlanEntry, StopReason, TokenUsage, ToolKind, ToolStatus, UiBackend, UiEvent, UiToolItem } from './ui-events.ts';
|
|
16
|
+
/** One frame as the `AcpClient` tap reports it — and as a golden fixture line stores it. */
|
|
17
|
+
export interface AcpFrame {
|
|
18
|
+
dir: 'in' | 'out';
|
|
19
|
+
frame: unknown;
|
|
20
|
+
}
|
|
21
|
+
/** The per-agent knowledge the shared mapper needs. Everything is optional except the identity. */
|
|
22
|
+
export interface AcpDialect {
|
|
23
|
+
readonly backend: UiBackend;
|
|
24
|
+
/** The agent's own tool name for a `tool_call` (ACP carries a title and a kind, not a name). */
|
|
25
|
+
toolNameOf(update: Record<string, unknown>): string;
|
|
26
|
+
/** A kind the ACP `kind` field cannot express (a subagent delegation → `task`). */
|
|
27
|
+
toolKindOf?(name: string, update: Record<string, unknown>): ToolKind | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* A status the ACP `status` field understates. ACP's `pending` means "not started yet", but
|
|
30
|
+
* Copilot emits it from its own `tool.execution_start` and never sends `in_progress`
|
|
31
|
+
* (`.ai/runs/2026-09-27-copilot-cli-runner/copilot-acp-notes.md`), so for that dialect a
|
|
32
|
+
* `pending` announcement really is a running tool. Returning `undefined` keeps the ACP reading.
|
|
33
|
+
*/
|
|
34
|
+
toolStatusOf?(update: Record<string, unknown>, previous: ToolStatus | undefined): ToolStatus | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* The item this tool call belongs to, for an agent whose wire attributes delegated work to its
|
|
37
|
+
* parent (Copilot tags a subagent's calls with the delegating `task` call's id). Ignored when it
|
|
38
|
+
* names the call itself.
|
|
39
|
+
*/
|
|
40
|
+
parentItemOf?(update: Record<string, unknown>): string | undefined;
|
|
41
|
+
/** Per-turn token counts from the `session/prompt` result, when the agent reports them off-schema. */
|
|
42
|
+
usageFromPromptResult?(result: Record<string, unknown>): TokenUsage | undefined;
|
|
43
|
+
/** Plan entries carried by a tool call (for agents whose plan is a tool, not a `plan` update). */
|
|
44
|
+
planFromToolCall?(name: string, update: Record<string, unknown>): PlanEntry[] | undefined;
|
|
45
|
+
/** The user-facing line for a JSON-RPC error — lets a dialect replace vendor prose (auth hints). */
|
|
46
|
+
errorMessage?(error: Record<string, unknown>): string | undefined;
|
|
47
|
+
}
|
|
48
|
+
export interface AcpUiMapperState {
|
|
49
|
+
/** Outbound requests still waiting for their answer, keyed by `String(id)`. */
|
|
50
|
+
readonly requests: ReadonlyMap<string, {
|
|
51
|
+
method: string;
|
|
52
|
+
params: Record<string, unknown>;
|
|
53
|
+
}>;
|
|
54
|
+
readonly sessionId: string | null;
|
|
55
|
+
readonly turnSeq: number;
|
|
56
|
+
readonly turnId: string | null;
|
|
57
|
+
/**
|
|
58
|
+
* True from an outbound `session/load` until the agent's replay of that session's history is over.
|
|
59
|
+
* Gemini replays every past message, thought and tool call as `session/update` frames — some
|
|
60
|
+
* before, some after the load result — and ends with `available_commands_update`
|
|
61
|
+
* (`__fixtures__/gemini/load-replay.ndjson`). cezar already has that history in its own NDJSON,
|
|
62
|
+
* so the replay must not become a second copy of every item. Only that marker ends it — or the
|
|
63
|
+
* runner, through `endAcpReplay`, when it gives up waiting for one. An early `session/prompt` does
|
|
64
|
+
* NOT: in the captured transcript the client prompted mid-replay, and the rest of the replay (old
|
|
65
|
+
* tool calls, an old "DONE") still arrived before the live answer.
|
|
66
|
+
*/
|
|
67
|
+
readonly replaying: boolean;
|
|
68
|
+
readonly itemSeq: number;
|
|
69
|
+
/** The message or reasoning item chunks are currently appended to. */
|
|
70
|
+
readonly openText: {
|
|
71
|
+
readonly id: string;
|
|
72
|
+
readonly kind: 'message' | 'reasoning';
|
|
73
|
+
readonly text: string;
|
|
74
|
+
} | null;
|
|
75
|
+
readonly tools: ReadonlyMap<string, UiToolItem>;
|
|
76
|
+
/** Cumulative-for-session usage (`usage.updated` semantics). */
|
|
77
|
+
readonly sessionUsage: TokenUsage | null;
|
|
78
|
+
}
|
|
79
|
+
export interface AcpUiMapping {
|
|
80
|
+
events: UiEvent[];
|
|
81
|
+
state: AcpUiMapperState;
|
|
82
|
+
}
|
|
83
|
+
export declare function createAcpUiState(): AcpUiMapperState;
|
|
84
|
+
/** The runner's own end of a `session/load` replay, for an agent that never sends the marker. */
|
|
85
|
+
export declare function endAcpReplay(state: AcpUiMapperState): AcpUiMapperState;
|
|
86
|
+
/**
|
|
87
|
+
* A turn the transport lost: the agent died or was stopped mid-prompt, so no answer frame will
|
|
88
|
+
* ever come. With a `message` it settles exactly as an error answer would (`session.error`, then
|
|
89
|
+
* `turn.completed{error}`); without one it settles with `stopReason` — `cancelled` for a stop cezar
|
|
90
|
+
* asked for, `timeout` for the run's own deadline.
|
|
91
|
+
*/
|
|
92
|
+
export declare function abortAcpTurn(state: AcpUiMapperState, dialect: AcpDialect, stopReason: StopReason, message?: string): AcpUiMapping;
|
|
93
|
+
export declare function mapAcpFrame(input: AcpFrame | unknown, state: AcpUiMapperState, dialect: AcpDialect): AcpUiMapping;
|
|
94
|
+
/** ACP `StopReason` → v2. `max_turn_requests` has no v2 twin; it is a length stop like `max_tokens`. */
|
|
95
|
+
export declare function stopReasonOf(value: unknown): StopReason;
|
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
import { toolDisplay } from './tool-display.js';
|
|
2
|
+
export function createAcpUiState() {
|
|
3
|
+
return {
|
|
4
|
+
requests: new Map(),
|
|
5
|
+
sessionId: null,
|
|
6
|
+
turnSeq: 0,
|
|
7
|
+
turnId: null,
|
|
8
|
+
replaying: false,
|
|
9
|
+
itemSeq: 0,
|
|
10
|
+
openText: null,
|
|
11
|
+
tools: new Map(),
|
|
12
|
+
sessionUsage: null,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const NONE = (state) => ({ events: [], state });
|
|
16
|
+
/** The runner's own end of a `session/load` replay, for an agent that never sends the marker. */
|
|
17
|
+
export function endAcpReplay(state) {
|
|
18
|
+
return state.replaying ? { ...state, replaying: false } : state;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A turn the transport lost: the agent died or was stopped mid-prompt, so no answer frame will
|
|
22
|
+
* ever come. With a `message` it settles exactly as an error answer would (`session.error`, then
|
|
23
|
+
* `turn.completed{error}`); without one it settles with `stopReason` — `cancelled` for a stop cezar
|
|
24
|
+
* asked for, `timeout` for the run's own deadline.
|
|
25
|
+
*/
|
|
26
|
+
export function abortAcpTurn(state, dialect, stopReason, message) {
|
|
27
|
+
return message !== undefined
|
|
28
|
+
? completeTurn(state, dialect, undefined, { message })
|
|
29
|
+
: completeTurn(state, dialect, undefined, undefined, stopReason);
|
|
30
|
+
}
|
|
31
|
+
export function mapAcpFrame(input, state, dialect) {
|
|
32
|
+
if (!isRecord(input) || (input.dir !== 'in' && input.dir !== 'out') || !isRecord(input.frame))
|
|
33
|
+
return NONE(state);
|
|
34
|
+
const frame = input.frame;
|
|
35
|
+
const method = string(frame.method);
|
|
36
|
+
const id = frame.id;
|
|
37
|
+
const hasId = typeof id === 'number' || typeof id === 'string';
|
|
38
|
+
if (input.dir === 'out') {
|
|
39
|
+
// Only requests cezar sends matter here; its answers to inbound requests and its notifications
|
|
40
|
+
// (`session/cancel`) change nothing the cockpit renders.
|
|
41
|
+
if (!method || !hasId)
|
|
42
|
+
return NONE(state);
|
|
43
|
+
const params = isRecord(frame.params) ? frame.params : {};
|
|
44
|
+
const requests = new Map(state.requests);
|
|
45
|
+
requests.set(String(id), { method, params });
|
|
46
|
+
let next = { ...state, requests };
|
|
47
|
+
if (method === 'session/load')
|
|
48
|
+
next = { ...next, replaying: true };
|
|
49
|
+
if (method !== 'session/prompt')
|
|
50
|
+
return NONE(next);
|
|
51
|
+
const turnSeq = state.turnSeq + 1;
|
|
52
|
+
const turnId = `turn_${turnSeq}`;
|
|
53
|
+
return {
|
|
54
|
+
events: [{ type: 'turn.started', turnId }],
|
|
55
|
+
state: { ...next, turnSeq, turnId, openText: null },
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Inbound.
|
|
59
|
+
if (method) {
|
|
60
|
+
if (method === 'session/update')
|
|
61
|
+
return mapUpdate(frame.params, state, dialect);
|
|
62
|
+
if (method === 'session/request_permission' && hasId)
|
|
63
|
+
return mapPermissionRequest(frame.params, state, dialect);
|
|
64
|
+
return NONE(state);
|
|
65
|
+
}
|
|
66
|
+
if (!hasId)
|
|
67
|
+
return NONE(state);
|
|
68
|
+
const request = state.requests.get(String(id));
|
|
69
|
+
if (!request)
|
|
70
|
+
return NONE(state);
|
|
71
|
+
const requests = new Map(state.requests);
|
|
72
|
+
requests.delete(String(id));
|
|
73
|
+
const next = { ...state, requests };
|
|
74
|
+
const result = isRecord(frame.result) ? frame.result : undefined;
|
|
75
|
+
const error = frame.error !== undefined ? (isRecord(frame.error) ? frame.error : { message: String(frame.error) }) : undefined;
|
|
76
|
+
switch (request.method) {
|
|
77
|
+
case 'session/new':
|
|
78
|
+
case 'session/load':
|
|
79
|
+
if (error) {
|
|
80
|
+
// A failed load is recoverable — the runner starts a fresh session — a failed new is not.
|
|
81
|
+
return {
|
|
82
|
+
events: [{ type: 'session.error', message: errorText(error, dialect), fatal: request.method === 'session/new' }],
|
|
83
|
+
state: { ...next, replaying: false },
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return startSession(request, result ?? {}, next, dialect);
|
|
87
|
+
case 'session/prompt':
|
|
88
|
+
return completeTurn(next, dialect, result, error);
|
|
89
|
+
default:
|
|
90
|
+
return NONE(next);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function startSession(request, result, state, dialect) {
|
|
94
|
+
// `session/new` mints the id; `session/load` answers without one — it is the id cezar asked for.
|
|
95
|
+
const sessionId = string(result.sessionId) ?? string(request.params.sessionId);
|
|
96
|
+
if (!sessionId || sessionId === state.sessionId)
|
|
97
|
+
return NONE(state);
|
|
98
|
+
const models = isRecord(result.models) ? result.models : undefined;
|
|
99
|
+
const model = models ? string(models.currentModelId) : undefined;
|
|
100
|
+
const cwd = string(request.params.cwd);
|
|
101
|
+
return {
|
|
102
|
+
events: [
|
|
103
|
+
{
|
|
104
|
+
type: 'session.started',
|
|
105
|
+
sessionId,
|
|
106
|
+
backend: dialect.backend,
|
|
107
|
+
...(model ? { model } : {}),
|
|
108
|
+
...(cwd ? { cwd } : {}),
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
state: { ...state, sessionId },
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function mapUpdate(params, state, dialect) {
|
|
115
|
+
if (!isRecord(params) || !isRecord(params.update))
|
|
116
|
+
return NONE(state);
|
|
117
|
+
const update = params.update;
|
|
118
|
+
const kind = string(update.sessionUpdate);
|
|
119
|
+
if (kind === 'available_commands_update')
|
|
120
|
+
return state.replaying ? NONE({ ...state, replaying: false }) : NONE(state);
|
|
121
|
+
// Replayed history, and anything outside a turn (a `set_mode` echo), renders nothing.
|
|
122
|
+
if (state.replaying || !state.turnId)
|
|
123
|
+
return NONE(state);
|
|
124
|
+
switch (kind) {
|
|
125
|
+
case 'agent_message_chunk':
|
|
126
|
+
return appendText('message', update.content, state);
|
|
127
|
+
case 'agent_thought_chunk':
|
|
128
|
+
return appendText('reasoning', update.content, state);
|
|
129
|
+
case 'tool_call':
|
|
130
|
+
return upsertTool(update, state, dialect, true);
|
|
131
|
+
case 'tool_call_update':
|
|
132
|
+
return upsertTool(update, state, dialect, false);
|
|
133
|
+
case 'plan': {
|
|
134
|
+
const entries = planEntries(update.entries);
|
|
135
|
+
return entries ? { events: [{ type: 'plan.updated', entries }], state } : NONE(state);
|
|
136
|
+
}
|
|
137
|
+
default:
|
|
138
|
+
// user_message_chunk, current_mode_update, usage_update, … — nothing to render (yet).
|
|
139
|
+
return NONE(state);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function appendText(kind, content, state) {
|
|
143
|
+
if (!isRecord(content))
|
|
144
|
+
return NONE(state);
|
|
145
|
+
if (content.type === 'image') {
|
|
146
|
+
const data = string(content.data);
|
|
147
|
+
const mediaType = string(content.mimeType);
|
|
148
|
+
return data && mediaType ? { events: [{ type: 'image', mediaType, data }], state } : NONE(state);
|
|
149
|
+
}
|
|
150
|
+
const delta = content.type === 'text' ? string(content.text) : undefined;
|
|
151
|
+
if (delta === undefined)
|
|
152
|
+
return NONE(state);
|
|
153
|
+
const events = [];
|
|
154
|
+
let next = state;
|
|
155
|
+
if (next.openText && next.openText.kind !== kind) {
|
|
156
|
+
const closed = closeText(next);
|
|
157
|
+
events.push(...closed.events);
|
|
158
|
+
next = closed.state;
|
|
159
|
+
}
|
|
160
|
+
let open = next.openText;
|
|
161
|
+
if (!open) {
|
|
162
|
+
const itemSeq = next.itemSeq + 1;
|
|
163
|
+
open = { id: `${next.turnId}_${kind === 'message' ? 'msg' : 'reasoning'}_${itemSeq}`, kind, text: '' };
|
|
164
|
+
next = { ...next, itemSeq };
|
|
165
|
+
events.push({ type: 'item.started', item: textItem(open.id, kind, '') });
|
|
166
|
+
}
|
|
167
|
+
events.push({ type: 'item.delta', itemId: open.id, field: kind === 'message' ? 'text' : 'reasoning', delta });
|
|
168
|
+
return { events, state: { ...next, openText: { ...open, text: open.text + delta } } };
|
|
169
|
+
}
|
|
170
|
+
function closeText(state) {
|
|
171
|
+
const open = state.openText;
|
|
172
|
+
if (!open)
|
|
173
|
+
return NONE(state);
|
|
174
|
+
return { events: [{ type: 'item.completed', item: textItem(open.id, open.kind, open.text) }], state: { ...state, openText: null } };
|
|
175
|
+
}
|
|
176
|
+
function textItem(id, kind, text) {
|
|
177
|
+
return kind === 'message' ? { kind: 'message', id, role: 'assistant', text } : { kind: 'reasoning', id, text };
|
|
178
|
+
}
|
|
179
|
+
function upsertTool(update, state, dialect, isCall) {
|
|
180
|
+
const toolCallId = string(update.toolCallId);
|
|
181
|
+
if (!toolCallId)
|
|
182
|
+
return NONE(state);
|
|
183
|
+
const closed = closeText(state);
|
|
184
|
+
const events = [...closed.events];
|
|
185
|
+
let next = closed.state;
|
|
186
|
+
const previous = next.tools.get(toolCallId);
|
|
187
|
+
const status = dialect.toolStatusOf?.(update, previous?.status) ??
|
|
188
|
+
toolStatus(update.status) ??
|
|
189
|
+
previous?.status ??
|
|
190
|
+
(isCall ? 'running' : undefined);
|
|
191
|
+
if (!status)
|
|
192
|
+
return { events, state: next };
|
|
193
|
+
const name = previous?.name ?? dialect.toolNameOf(update);
|
|
194
|
+
const rawInput = update.rawInput;
|
|
195
|
+
const display = toolDisplay(name, rawInput ?? previous?.input);
|
|
196
|
+
const content = toolContent(update.content);
|
|
197
|
+
const failed = status === 'failed';
|
|
198
|
+
const item = {
|
|
199
|
+
...(previous ?? {}),
|
|
200
|
+
kind: 'tool',
|
|
201
|
+
id: toolCallId,
|
|
202
|
+
name,
|
|
203
|
+
toolKind: previous?.toolKind ?? dialect.toolKindOf?.(name, update) ?? acpToolKind(update.kind) ?? display.toolKind,
|
|
204
|
+
// A `failed` update carries no title on Gemini (`write-todos-quota.ndjson`): keep the one we had.
|
|
205
|
+
title: string(update.title) || previous?.title || display.title,
|
|
206
|
+
status,
|
|
207
|
+
};
|
|
208
|
+
if (rawInput !== undefined)
|
|
209
|
+
item.input = rawInput;
|
|
210
|
+
const parentItemId = previous?.parentItemId ?? dialect.parentItemOf?.(update);
|
|
211
|
+
if (parentItemId !== undefined && parentItemId !== toolCallId)
|
|
212
|
+
item.parentItemId = parentItemId;
|
|
213
|
+
const locations = toolLocations(update.locations);
|
|
214
|
+
if (locations)
|
|
215
|
+
item.locations = locations;
|
|
216
|
+
if (content.diffs.length > 0)
|
|
217
|
+
item.diffs = content.diffs;
|
|
218
|
+
// The text of a starting call is the agent's explanation of what it is about to do, not output.
|
|
219
|
+
if (!isCall && content.text !== undefined) {
|
|
220
|
+
if (failed)
|
|
221
|
+
item.error = content.text;
|
|
222
|
+
else
|
|
223
|
+
item.output = content.text;
|
|
224
|
+
}
|
|
225
|
+
if (failed && item.error === undefined)
|
|
226
|
+
item.error = 'tool failed';
|
|
227
|
+
const tools = new Map(next.tools);
|
|
228
|
+
tools.set(toolCallId, item);
|
|
229
|
+
next = { ...next, tools };
|
|
230
|
+
const terminal = status === 'completed' || status === 'failed' || status === 'declined';
|
|
231
|
+
if (!previous)
|
|
232
|
+
events.push({ type: 'item.started', item });
|
|
233
|
+
if (terminal)
|
|
234
|
+
events.push({ type: 'item.completed', item });
|
|
235
|
+
else if (previous)
|
|
236
|
+
events.push({ type: 'item.updated', item });
|
|
237
|
+
const plan = dialect.planFromToolCall?.(name, update);
|
|
238
|
+
if (plan)
|
|
239
|
+
events.push({ type: 'plan.updated', entries: plan });
|
|
240
|
+
return { events, state: next };
|
|
241
|
+
}
|
|
242
|
+
function mapPermissionRequest(params, state, dialect) {
|
|
243
|
+
// Gemini sends no `tool_call` for a call that needed approval: the request's `toolCall` is the
|
|
244
|
+
// only announcement, then a `tool_call_update` finishes it (`__fixtures__/gemini/permission.ndjson`).
|
|
245
|
+
// The request itself is answered by the runner (Q15: auto `allow_always` + a v1 note).
|
|
246
|
+
if (!isRecord(params) || !isRecord(params.toolCall) || state.replaying || !state.turnId)
|
|
247
|
+
return NONE(state);
|
|
248
|
+
const toolCall = params.toolCall;
|
|
249
|
+
const toolCallId = string(toolCall.toolCallId);
|
|
250
|
+
if (!toolCallId || state.tools.has(toolCallId))
|
|
251
|
+
return NONE(state);
|
|
252
|
+
return upsertTool({ ...toolCall, status: toolCall.status ?? 'pending' }, state, dialect, true);
|
|
253
|
+
}
|
|
254
|
+
function completeTurn(state, dialect, result, error, forced) {
|
|
255
|
+
const closed = closeText(state);
|
|
256
|
+
const events = [...closed.events];
|
|
257
|
+
let next = closed.state;
|
|
258
|
+
if (!next.turnId)
|
|
259
|
+
return { events, state: next };
|
|
260
|
+
const stopReason = error ? 'error' : forced ?? stopReasonOf(result?.stopReason);
|
|
261
|
+
// Tools a cancelled or failed turn left running would spin forever: settle them as failed.
|
|
262
|
+
if (stopReason !== 'end_turn') {
|
|
263
|
+
const tools = new Map(next.tools);
|
|
264
|
+
for (const [id, tool] of next.tools) {
|
|
265
|
+
if (tool.status !== 'pending' && tool.status !== 'running')
|
|
266
|
+
continue;
|
|
267
|
+
const item = { ...tool, status: 'failed', error: `turn ended (${stopReason}) before the tool finished` };
|
|
268
|
+
tools.set(id, item);
|
|
269
|
+
events.push({ type: 'item.completed', item });
|
|
270
|
+
}
|
|
271
|
+
next = { ...next, tools };
|
|
272
|
+
}
|
|
273
|
+
if (error)
|
|
274
|
+
events.push({ type: 'session.error', message: errorText(error, dialect), fatal: false });
|
|
275
|
+
const usage = result ? dialect.usageFromPromptResult?.(result) ?? standardUsage(result.usage) : undefined;
|
|
276
|
+
if (usage) {
|
|
277
|
+
const sessionUsage = addUsage(next.sessionUsage, usage);
|
|
278
|
+
events.push({ type: 'usage.updated', usage: sessionUsage });
|
|
279
|
+
next = { ...next, sessionUsage };
|
|
280
|
+
}
|
|
281
|
+
const completed = { type: 'turn.completed', turnId: next.turnId, stopReason };
|
|
282
|
+
if (usage)
|
|
283
|
+
completed.usage = usage;
|
|
284
|
+
events.push(completed);
|
|
285
|
+
return { events, state: { ...next, turnId: null } };
|
|
286
|
+
}
|
|
287
|
+
/** ACP `StopReason` → v2. `max_turn_requests` has no v2 twin; it is a length stop like `max_tokens`. */
|
|
288
|
+
export function stopReasonOf(value) {
|
|
289
|
+
switch (value) {
|
|
290
|
+
case 'max_tokens':
|
|
291
|
+
case 'max_turn_requests':
|
|
292
|
+
return 'max_tokens';
|
|
293
|
+
case 'refusal':
|
|
294
|
+
return 'refusal';
|
|
295
|
+
case 'cancelled':
|
|
296
|
+
return 'cancelled';
|
|
297
|
+
default:
|
|
298
|
+
return 'end_turn';
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function toolStatus(value) {
|
|
302
|
+
switch (value) {
|
|
303
|
+
case 'pending':
|
|
304
|
+
return 'pending';
|
|
305
|
+
case 'in_progress':
|
|
306
|
+
return 'running';
|
|
307
|
+
case 'completed':
|
|
308
|
+
return 'completed';
|
|
309
|
+
case 'failed':
|
|
310
|
+
return 'failed';
|
|
311
|
+
default:
|
|
312
|
+
return undefined;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/** ACP tool kinds are v2 tool kinds by design; `switch_mode` and anything unknown are `other`. */
|
|
316
|
+
function acpToolKind(value) {
|
|
317
|
+
switch (value) {
|
|
318
|
+
case 'read':
|
|
319
|
+
case 'edit':
|
|
320
|
+
case 'delete':
|
|
321
|
+
case 'move':
|
|
322
|
+
case 'search':
|
|
323
|
+
case 'execute':
|
|
324
|
+
case 'think':
|
|
325
|
+
case 'fetch':
|
|
326
|
+
case 'other':
|
|
327
|
+
return value;
|
|
328
|
+
case 'switch_mode':
|
|
329
|
+
return 'other';
|
|
330
|
+
default:
|
|
331
|
+
return undefined;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
function toolContent(value) {
|
|
335
|
+
const diffs = [];
|
|
336
|
+
const texts = [];
|
|
337
|
+
if (!Array.isArray(value))
|
|
338
|
+
return { diffs };
|
|
339
|
+
for (const part of value) {
|
|
340
|
+
if (!isRecord(part))
|
|
341
|
+
continue;
|
|
342
|
+
if (part.type === 'diff') {
|
|
343
|
+
const path = string(part.path);
|
|
344
|
+
if (!path)
|
|
345
|
+
continue;
|
|
346
|
+
const newText = string(part.newText);
|
|
347
|
+
diffs.push({ path, oldText: string(part.oldText) ?? null, ...(newText !== undefined ? { newText } : {}) });
|
|
348
|
+
}
|
|
349
|
+
else if (part.type === 'content' && isRecord(part.content) && part.content.type === 'text') {
|
|
350
|
+
const text = string(part.content.text);
|
|
351
|
+
if (text)
|
|
352
|
+
texts.push(text);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return texts.length > 0 ? { text: texts.join('\n'), diffs } : { diffs };
|
|
356
|
+
}
|
|
357
|
+
function toolLocations(value) {
|
|
358
|
+
if (!Array.isArray(value))
|
|
359
|
+
return undefined;
|
|
360
|
+
const locations = [];
|
|
361
|
+
for (const entry of value) {
|
|
362
|
+
if (!isRecord(entry))
|
|
363
|
+
continue;
|
|
364
|
+
const path = string(entry.path);
|
|
365
|
+
if (!path)
|
|
366
|
+
continue;
|
|
367
|
+
const line = number(entry.line);
|
|
368
|
+
locations.push(line !== undefined ? { path, line } : { path });
|
|
369
|
+
}
|
|
370
|
+
return locations.length > 0 ? locations : undefined;
|
|
371
|
+
}
|
|
372
|
+
/** An ACP `plan` update's entries (`{content, priority, status}`). Malformed entries are dropped;
|
|
373
|
+
* a non-array yields no plan at all — only a genuinely empty list clears the dock. */
|
|
374
|
+
function planEntries(value) {
|
|
375
|
+
if (!Array.isArray(value))
|
|
376
|
+
return undefined;
|
|
377
|
+
const entries = [];
|
|
378
|
+
for (const entry of value) {
|
|
379
|
+
if (!isRecord(entry))
|
|
380
|
+
continue;
|
|
381
|
+
const content = string(entry.content);
|
|
382
|
+
if (!content)
|
|
383
|
+
continue;
|
|
384
|
+
const status = entry.status === 'in_progress' || entry.status === 'completed' ? entry.status : 'pending';
|
|
385
|
+
const priority = entry.priority === 'high' || entry.priority === 'medium' || entry.priority === 'low' ? entry.priority : undefined;
|
|
386
|
+
entries.push({ content, status, ...(priority ? { priority } : {}) });
|
|
387
|
+
}
|
|
388
|
+
return entries;
|
|
389
|
+
}
|
|
390
|
+
/** The ACP-standard `PromptResponse.usage` (`inputTokens`, `outputTokens`, …). */
|
|
391
|
+
function standardUsage(value) {
|
|
392
|
+
if (!isRecord(value))
|
|
393
|
+
return undefined;
|
|
394
|
+
const input = number(value.inputTokens) ?? 0;
|
|
395
|
+
const output = number(value.outputTokens) ?? 0;
|
|
396
|
+
const cacheRead = number(value.cachedReadTokens);
|
|
397
|
+
const cacheWrite = number(value.cachedWriteTokens);
|
|
398
|
+
const reasoning = number(value.thoughtTokens);
|
|
399
|
+
const total = number(value.totalTokens) ?? input + output;
|
|
400
|
+
if (total <= 0)
|
|
401
|
+
return undefined;
|
|
402
|
+
return {
|
|
403
|
+
input,
|
|
404
|
+
output,
|
|
405
|
+
total,
|
|
406
|
+
...(cacheRead !== undefined ? { cacheRead } : {}),
|
|
407
|
+
...(cacheWrite !== undefined ? { cacheWrite } : {}),
|
|
408
|
+
...(reasoning !== undefined ? { reasoning } : {}),
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
function addUsage(a, b) {
|
|
412
|
+
if (!a)
|
|
413
|
+
return b;
|
|
414
|
+
const sum = (x, y) => (x === undefined && y === undefined ? undefined : (x ?? 0) + (y ?? 0));
|
|
415
|
+
const cacheRead = sum(a.cacheRead, b.cacheRead);
|
|
416
|
+
const cacheWrite = sum(a.cacheWrite, b.cacheWrite);
|
|
417
|
+
const reasoning = sum(a.reasoning, b.reasoning);
|
|
418
|
+
return {
|
|
419
|
+
input: a.input + b.input,
|
|
420
|
+
output: a.output + b.output,
|
|
421
|
+
total: a.total + b.total,
|
|
422
|
+
...(cacheRead !== undefined ? { cacheRead } : {}),
|
|
423
|
+
...(cacheWrite !== undefined ? { cacheWrite } : {}),
|
|
424
|
+
...(reasoning !== undefined ? { reasoning } : {}),
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
function errorText(error, dialect) {
|
|
428
|
+
const dialectText = dialect.errorMessage?.(error);
|
|
429
|
+
if (dialectText)
|
|
430
|
+
return dialectText;
|
|
431
|
+
const message = string(error.message) ?? 'ACP request failed';
|
|
432
|
+
const details = isRecord(error.data) ? string(error.data.details) : undefined;
|
|
433
|
+
return details ? `${message}: ${details}` : message;
|
|
434
|
+
}
|
|
435
|
+
function isRecord(value) {
|
|
436
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
437
|
+
}
|
|
438
|
+
function string(value) {
|
|
439
|
+
return typeof value === 'string' ? value : undefined;
|
|
440
|
+
}
|
|
441
|
+
function number(value) {
|
|
442
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
443
|
+
}
|
|
444
|
+
//# sourceMappingURL=acp-ui-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-ui-mapper.js","sourceRoot":"","sources":["../../src/core/acp-ui-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/core/agent-env.js
CHANGED
|
@@ -223,6 +223,16 @@ const BACKEND_ALLOW_PREFIXES = {
|
|
|
223
223
|
// granting it here handed pi the whole `AWS_*` / `GOOGLE_CLOUD_*` family on any host that had
|
|
224
224
|
// set `CLAUDE_CODE_USE_BEDROCK=1` for Claude Code, plus Claude's own config dir.
|
|
225
225
|
pi: ['PI_', ...MULTI_PROVIDER_PREFIXES],
|
|
226
|
+
// junie's default auth (JetBrains account) lives entirely under `~/.junie/`
|
|
227
|
+
// (already reachable via the base `HOME` allowlist — no env var needed). Its BYOK
|
|
228
|
+
// path is CLI flags (`--anthropic-api-key=<text>` etc, `junie --help`), which
|
|
229
|
+
// cezar never passes, and nothing documents junie reading the provider env vars —
|
|
230
|
+
// so no provider prefix is granted on the strength of a flag.
|
|
231
|
+
junie: ['JUNIE_'],
|
|
232
|
+
// Copilot routes every model through GitHub, so it needs only its own family. The `gh` names
|
|
233
|
+
// it authenticates with (`GH_TOKEN`, `GITHUB_TOKEN`, `GH_HOST`) are already forwarded to every
|
|
234
|
+
// backend below, and `COPILOT_GITHUB_TOKEN` is covered by this prefix — so nothing else widens.
|
|
235
|
+
copilot: ['COPILOT_'],
|
|
226
236
|
};
|
|
227
237
|
/** `gh` handoff (draft PRs) works in every backend — the one credential the
|
|
228
238
|
* project deliberately keeps in the environment (AGENTS.md "No secrets in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-env.js","sourceRoot":"","sources":["../../src/core/agent-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,KAAwB;IACxC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,6EAA6E;AAC7E,MAAM,gBAAgB,GAAwB,QAAQ,CAAC;IACrD,gCAAgC;IAChC,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;IACT,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,UAAU;IACV,MAAM;IACN,UAAU;IACV,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,KAAK;IACL,IAAI;IACJ,SAAS;IACT,MAAM;IACN,UAAU;IACV,qBAAqB;IACrB,MAAM;IACN,UAAU;IACV,WAAW;IACX,SAAS;IACT,OAAO;IACP,UAAU;IACV,aAAa;IACb,UAAU;IACV,SAAS;IACT,iBAAiB;IACjB,YAAY;IACZ,uEAAuE;IACvE,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,oCAAoC;IACpC,WAAW;IACX,YAAY;IACZ,qBAAqB;IACrB,SAAS;IACT,iBAAiB;IACjB,eAAe;IACf,yEAAyE;IACzE,YAAY;IACZ,aAAa;IACb,WAAW;IACX,WAAW;IACX,UAAU;IACV,2EAA2E;IAC3E,wEAAwE;IACxE,wEAAwE;IACxE,4EAA4E;IAC5E,oCAAoC;IACpC,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,SAAS;IACT,SAAS;IACT,aAAa;IACb,WAAW;IACX,UAAU;IACV,SAAS;IACT,cAAc;IACd,aAAa;IACb,iBAAiB;IACjB,QAAQ;IACR,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,oBAAoB;IACpB,yBAAyB;IACzB,oBAAoB;IACpB,cAAc;IACd,UAAU;IACV,YAAY;IACZ,cAAc;IACd,aAAa;IACb,aAAa;IACb,IAAI;IACJ,sBAAsB;IACtB,wBAAwB;IACxB,sBAAsB;IACtB,iBAAiB;IACjB,oBAAoB;CACrB,CAAC,CAAC;AAEH;;gEAEgE;AAChE,MAAM,mBAAmB,GAAsB;IAC7C,KAAK;IACL,MAAM;IACN,OAAO;IACP,YAAY;IACZ,OAAO;IACP,aAAa;IACb,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,WAAW;IACX,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,SAAS;IACT,aAAa;IACb,QAAQ;IACR,KAAK;IACL,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,YAAY;IACZ,SAAS;IACT,SAAS;IACT,WAAW;IACX,aAAa;IACb,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,aAAa;IACb,yBAAyB;IACzB,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,eAAe;IACf,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,WAAW;IACX,OAAO;IACP,OAAO;IACP,WAAW;CACZ,CAAC;AAEF;+FAC+F;AAC/F,MAAM,uBAAuB,GAAsB;IACjD,SAAS;IACT,YAAY;IACZ,eAAe;IACf,aAAa;IACb,OAAO;IACP,UAAU;IACV,SAAS;IACT,uBAAuB;IACvB,WAAW;IACX,MAAM;IACN,aAAa;IACb,WAAW;IACX,YAAY;CACb,CAAC;AAEF,qEAAqE;AACrE,MAAM,sBAAsB,GAA4C;IACtE,MAAM,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,YAAY,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IACvC,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC;IACnB,QAAQ,EAAE,uBAAuB;IACjC,wFAAwF;IACxF,6FAA6F;IAC7F,6FAA6F;IAC7F,6FAA6F;IAC7F,8FAA8F;IAC9F,iFAAiF;IACjF,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-env.js","sourceRoot":"","sources":["../../src/core/agent-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,16 @@ import type { ProviderId } from './provider-auth.ts';
|
|
|
37
37
|
* - **pi** → nothing documented. pi ships no per-user home variable of its own, so — exactly like
|
|
38
38
|
* OpenCode — a second account cannot be carried without silently billing the wrong one. `null`
|
|
39
39
|
* until pi documents a single home variable that moves credentials as well as config.
|
|
40
|
+
* - **junie** → nothing documented. Its shim's `JUNIE_DATA` relocates only the installed BINARY
|
|
41
|
+
* versions directory (`~/.local/share/junie`); the actual per-user state — `secure_credentials.json`,
|
|
42
|
+
* `config.json`, `sessions/` — lives under `~/.junie` with no override var in `junie --help`
|
|
43
|
+
* (`--config-location`/`--cache-dir` add or redirect narrower pieces, not the whole home). `null`
|
|
44
|
+
* until junie documents one, same rule as OpenCode/pi.
|
|
45
|
+
* - **copilot** → `COPILOT_HOME` moves config and state, but whether it also moves the stored
|
|
46
|
+
* login has not been tested, and Copilot reads `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` /
|
|
47
|
+
* `GITHUB_TOKEN` ahead of any stored credential regardless. `null` until a test proves one
|
|
48
|
+
* variable moves both (spec 2026-09-19-runner-seam-native-backends Q14) — being wrong here
|
|
49
|
+
* bills the wrong account.
|
|
40
50
|
*/
|
|
41
51
|
export declare const PROFILE_ENV_VAR: Record<ProviderId, string | null>;
|
|
42
52
|
/** Providers that can carry more than one account — what the UI offers "Add account" for. */
|