@nuvin/session 0.1.0-rc.5

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.
Files changed (72) hide show
  1. package/dist/chunk-3IPZO7LP.js +66 -0
  2. package/dist/chunk-7G3R25NS.js +6 -0
  3. package/dist/chunk-DGC7JSCG.js +0 -0
  4. package/dist/chunk-FR3R66RD.js +678 -0
  5. package/dist/chunk-UVJIG4DT.js +17 -0
  6. package/dist/client/directory.d.ts +141 -0
  7. package/dist/client/directory.d.ts.map +1 -0
  8. package/dist/client/endpoint.d.ts +33 -0
  9. package/dist/client/endpoint.d.ts.map +1 -0
  10. package/dist/client/index.d.ts +8 -0
  11. package/dist/client/index.d.ts.map +1 -0
  12. package/dist/client/index.js +1060 -0
  13. package/dist/client/session-client.d.ts +60 -0
  14. package/dist/client/session-client.d.ts.map +1 -0
  15. package/dist/client/socket.d.ts +38 -0
  16. package/dist/client/socket.d.ts.map +1 -0
  17. package/dist/client/transport.d.ts +9 -0
  18. package/dist/client/transport.d.ts.map +1 -0
  19. package/dist/client/uds-socket.d.ts +23 -0
  20. package/dist/client/uds-socket.d.ts.map +1 -0
  21. package/dist/client/websocket.d.ts +54 -0
  22. package/dist/client/websocket.d.ts.map +1 -0
  23. package/dist/controller/agent-channel.d.ts +58 -0
  24. package/dist/controller/agent-channel.d.ts.map +1 -0
  25. package/dist/controller/index.d.ts +3 -0
  26. package/dist/controller/index.d.ts.map +1 -0
  27. package/dist/controller/index.js +441 -0
  28. package/dist/controller/session-controller.d.ts +147 -0
  29. package/dist/controller/session-controller.d.ts.map +1 -0
  30. package/dist/controller/test-utils.d.ts +15 -0
  31. package/dist/controller/test-utils.d.ts.map +1 -0
  32. package/dist/grant/index.d.ts +33 -0
  33. package/dist/grant/index.d.ts.map +1 -0
  34. package/dist/grant/index.js +12 -0
  35. package/dist/protocol/index.d.ts +3 -0
  36. package/dist/protocol/index.d.ts.map +1 -0
  37. package/dist/protocol/index.js +7 -0
  38. package/dist/protocol/types.d.ts +855 -0
  39. package/dist/protocol/types.d.ts.map +1 -0
  40. package/dist/protocol/version.d.ts +8 -0
  41. package/dist/protocol/version.d.ts.map +1 -0
  42. package/dist/state/approvals.d.ts +34 -0
  43. package/dist/state/approvals.d.ts.map +1 -0
  44. package/dist/state/dir-access.d.ts +9 -0
  45. package/dist/state/dir-access.d.ts.map +1 -0
  46. package/dist/state/index.d.ts +6 -0
  47. package/dist/state/index.d.ts.map +1 -0
  48. package/dist/state/index.js +48 -0
  49. package/dist/state/json.d.ts +7 -0
  50. package/dist/state/json.d.ts.map +1 -0
  51. package/dist/state/messages.d.ts +105 -0
  52. package/dist/state/messages.d.ts.map +1 -0
  53. package/dist/state/session.d.ts +9 -0
  54. package/dist/state/session.d.ts.map +1 -0
  55. package/dist/state/tool-preview.d.ts +31 -0
  56. package/dist/state/tool-preview.d.ts.map +1 -0
  57. package/dist/state/tool-preview.js +300 -0
  58. package/dist/state/workflow-view.d.ts +10 -0
  59. package/dist/state/workflow-view.d.ts.map +1 -0
  60. package/dist/test-utils/fake-relay.d.ts +24 -0
  61. package/dist/test-utils/fake-relay.d.ts.map +1 -0
  62. package/dist/test-utils/index.d.ts +2 -0
  63. package/dist/test-utils/index.d.ts.map +1 -0
  64. package/dist/test-utils/index.js +250 -0
  65. package/dist/ui/history-grouping.d.ts +36 -0
  66. package/dist/ui/history-grouping.d.ts.map +1 -0
  67. package/dist/ui/index.d.ts +3 -0
  68. package/dist/ui/index.d.ts.map +1 -0
  69. package/dist/ui/index.js +135 -0
  70. package/dist/ui/picker-rows.d.ts +62 -0
  71. package/dist/ui/picker-rows.d.ts.map +1 -0
  72. package/package.json +70 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/protocol/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Single protocol version shared by daemon and clients. Bump on ANY change to
3
+ * the wire types in this directory — including changes to AgentEvent in
4
+ * @nuvin/agent-core, which is wire-frozen by inclusion in ServerEvent.
5
+ * Handshake policy is exact match (see spec §4.1).
6
+ */
7
+ export declare const PROTOCOL_VERSION = 15;
8
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/protocol/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Tools that are safe to auto-approve (no destructive side effects).
3
+ * Moved from packages/cli/src/lib/tools/constants.ts — the CLI re-exports it.
4
+ */
5
+ export declare const READ_ONLY_TOOLS: ReadonlySet<string>;
6
+ /**
7
+ * Tools rendered without an outer background block in the message list (CLI gap
8
+ * collapse + web bare card). A superset of READ_ONLY_TOOLS: write tools such as
9
+ * FileNew are visually backgroundless but still require approval, so they appear
10
+ * here but NOT in READ_ONLY_TOOLS (which gates `isAutoApprovedTool`).
11
+ */
12
+ export declare const BACKGROUNDLESS_TOOLS: ReadonlySet<string>;
13
+ export declare function isAutoApprovedTool(toolName: string): boolean;
14
+ /**
15
+ * Decision the user makes on a pending tool approval.
16
+ * - 'y' → approve this call
17
+ * - 'n' → deny this call
18
+ * - 'a' → approve and remember (always-allow this tool for the agent)
19
+ * - 'o' → "other" → submit a deny-with-reason from the note input
20
+ */
21
+ export type ApprovalDecision = "a" | "n" | "o" | "y";
22
+ export type ApprovalQueueState<T> = {
23
+ active: T | null;
24
+ pending: T[];
25
+ };
26
+ export declare function createApprovalQueueState<T>(): ApprovalQueueState<T>;
27
+ export declare function enqueueApproval<T>(state: ApprovalQueueState<T>, approval: T): ApprovalQueueState<T>;
28
+ export declare function dequeueActiveApproval<T>(state: ApprovalQueueState<T>): ApprovalQueueState<T>;
29
+ /**
30
+ * Remove one approval by key wherever it sits (active slot or pending list).
31
+ * Used by the session reducer when an `approval-settled` event arrives.
32
+ */
33
+ export declare function removeApproval<T>(state: ApprovalQueueState<T>, matches: (item: T) => boolean): ApprovalQueueState<T>;
34
+ //# sourceMappingURL=approvals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/state/approvals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAU9C,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAA4C,CAAC;AAKlG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,EAAE,CAAC;CACd,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAEnE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,GACV,kBAAkB,CAAC,CAAC,CAAC,CAKvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAG5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC5B,kBAAkB,CAAC,CAAC,CAAC,CAMvB"}
@@ -0,0 +1,9 @@
1
+ /** True when `target` is `dir` itself or lives underneath it. */
2
+ export declare function dirContains(dir: string, target: string): boolean;
3
+ /**
4
+ * Server-side validation of a user-edited grant directory: the edit must
5
+ * still contain the requested path, else fall back to the proposed default
6
+ * (spec: invalid or missing edits fall back to proposedDir).
7
+ */
8
+ export declare function resolveGrantDir(requestedPath: string, proposedDir: string, edited?: string): string;
9
+ //# sourceMappingURL=dir-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dir-access.d.ts","sourceRoot":"","sources":["../../src/state/dir-access.ts"],"names":[],"mappings":"AAEA,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAKR"}
@@ -0,0 +1,6 @@
1
+ export * from "./approvals.ts";
2
+ export * from "./dir-access.ts";
3
+ export * from "./json.ts";
4
+ export * from "./messages.ts";
5
+ export * from "./session.ts";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,48 @@
1
+ import {
2
+ dirContains,
3
+ resolveGrantDir
4
+ } from "../chunk-UVJIG4DT.js";
5
+ import {
6
+ BACKGROUNDLESS_TOOLS,
7
+ READ_ONLY_TOOLS,
8
+ appendErrorMessage,
9
+ appendInfoMessage,
10
+ appendUserMessage,
11
+ appendWarningMessage,
12
+ applyAgentEvent,
13
+ asJsonObject,
14
+ createApprovalQueueState,
15
+ createMessageState,
16
+ createMessageStateFromMessages,
17
+ createSessionViewState,
18
+ dequeueActiveApproval,
19
+ enqueueApproval,
20
+ isAutoApprovedTool,
21
+ reduceSessionEvent,
22
+ removeApproval,
23
+ setToolMessageHidden,
24
+ setToolMessageStatus
25
+ } from "../chunk-FR3R66RD.js";
26
+ export {
27
+ BACKGROUNDLESS_TOOLS,
28
+ READ_ONLY_TOOLS,
29
+ appendErrorMessage,
30
+ appendInfoMessage,
31
+ appendUserMessage,
32
+ appendWarningMessage,
33
+ applyAgentEvent,
34
+ asJsonObject,
35
+ createApprovalQueueState,
36
+ createMessageState,
37
+ createMessageStateFromMessages,
38
+ createSessionViewState,
39
+ dequeueActiveApproval,
40
+ dirContains,
41
+ enqueueApproval,
42
+ isAutoApprovedTool,
43
+ reduceSessionEvent,
44
+ removeApproval,
45
+ resolveGrantDir,
46
+ setToolMessageHidden,
47
+ setToolMessageStatus
48
+ };
@@ -0,0 +1,7 @@
1
+ import type { JsonObject, JsonValue } from "@nuvin/agent-core/shared";
2
+ /**
3
+ * Narrow a JsonValue to a JsonObject, returning undefined for arrays, primitives, and null.
4
+ * Shared between message state reducers and approval rendering.
5
+ */
6
+ export declare function asJsonObject(value: JsonValue | undefined): JsonObject | undefined;
7
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/state/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAEjF"}
@@ -0,0 +1,105 @@
1
+ import type { AgentEvent, JsonObject } from "@nuvin/agent-core/shared";
2
+ export type ToolMessageStatus = "approved" | "error" | "ok" | "pending" | "rejected" | "running";
3
+ export type BasicTuiMessage = {
4
+ id: string;
5
+ live?: boolean;
6
+ /**
7
+ * When set, this message was emitted by a delegated child agent and should
8
+ * be rendered nested under the `AssignTask` tool call identified by
9
+ * this id rather than at the top level of the message list.
10
+ */
11
+ parentToolCallId?: string;
12
+ role: "assistant" | "error" | "info" | "reasoning" | "user" | "warning";
13
+ text: string;
14
+ /** Image attachment labels, if any were submitted with this message. */
15
+ attachmentLabels?: string[];
16
+ /** Reasoning timing: when the first reasoning chunk arrived. */
17
+ startedAt?: number;
18
+ /** Reasoning timing: when the reasoning message finalized (live → settled). */
19
+ completedAt?: number;
20
+ /** Provider that produced this message (persisted metadata). */
21
+ provider?: string;
22
+ /** Model id that produced this message (persisted metadata). */
23
+ model?: string;
24
+ /** Local wall-clock time (ms epoch) a user message was sent; shown in the UI. */
25
+ createdAt?: number;
26
+ };
27
+ export type ToolTuiMessage = {
28
+ completedAt?: number;
29
+ id: string;
30
+ /**
31
+ * When set, this tool message was dispatched by a delegated child agent and
32
+ * should be rendered nested under the parent `AssignTask` tool call.
33
+ */
34
+ parentToolCallId?: string;
35
+ role: "tool";
36
+ startedAt?: number;
37
+ status: ToolMessageStatus;
38
+ summary: string;
39
+ text: string;
40
+ toolCallId: string;
41
+ toolName: string;
42
+ input?: JsonObject;
43
+ structured?: JsonObject;
44
+ hidden?: boolean;
45
+ streamingPreview?: {
46
+ text: string;
47
+ totalLines: number;
48
+ /**
49
+ * Internal accumulator for the incremental preview builder. Carries just
50
+ * enough bounded state (running newline count + a retained tail of recent
51
+ * content + the current trailing-whitespace run) to advance the preview from
52
+ * one chunk without ever touching the full multi-MB output — the fix that
53
+ * keeps streaming O(chunk) instead of O(total²). Not read by renderers;
54
+ * absent on a snapshot rebuild or a hand-built fixture, in which case the
55
+ * builder reseeds once from the accumulated text.
56
+ */
57
+ acc?: StreamPreviewAcc;
58
+ };
59
+ };
60
+ /**
61
+ * Bounded accumulator behind {@link ToolTuiMessage.streamingPreview}. All string
62
+ * fields are capped to {@link STREAM_TAIL_BUDGET}, so the whole thing stays O(1)
63
+ * in size regardless of how much output has streamed.
64
+ */
65
+ type StreamPreviewAcc = {
66
+ /** Running count of raw `\n` across the full output (pre-trim). */
67
+ rawNewlines: number;
68
+ /** Tail of the output up to & including the last non-whitespace char (no trailing whitespace). */
69
+ contentTail: string;
70
+ /** The current trailing-whitespace run's tail (capped). */
71
+ trailingWs: string;
72
+ /** Exact `\n` count in the full trailing-whitespace run (not just its capped tail). */
73
+ trailingWsNewlines: number;
74
+ };
75
+ export type TuiMessage = BasicTuiMessage | ToolTuiMessage;
76
+ export type MessageState = {
77
+ assistantMessageIds: Record<string, string>;
78
+ messages: TuiMessage[];
79
+ nextId: number;
80
+ reasoningMessageIds: Record<string, string>;
81
+ toolMessageIds: Record<string, string>;
82
+ };
83
+ export declare function setToolMessageStatus(state: MessageState, toolCallId: string, status: ToolMessageStatus): MessageState;
84
+ /**
85
+ * Toggle a tool message's display visibility. Used by the approval lifecycle:
86
+ * a tool awaiting a human decision is hidden (the approval modal represents it,
87
+ * anti-flash rule §4.5) and only materializes as a transcript row once the
88
+ * decision is approved. A rejected tool stays hidden — it never ran.
89
+ */
90
+ export declare function setToolMessageHidden(state: MessageState, toolCallId: string, hidden: boolean): MessageState;
91
+ export declare function createMessageState(): MessageState;
92
+ export declare function createMessageStateFromMessages(messages: TuiMessage[]): MessageState;
93
+ export declare function appendUserMessage(state: MessageState, text: string, attachmentLabels?: string[], createdAt?: number): MessageState;
94
+ export declare function appendErrorMessage(state: MessageState, text: string): MessageState;
95
+ export declare function appendInfoMessage(state: MessageState, text: string): MessageState;
96
+ export declare function appendWarningMessage(state: MessageState, text: string): MessageState;
97
+ /**
98
+ * Applies an agent event to the message state. When the event was emitted by
99
+ * a delegated child agent the host can pass `parentToolCallId` (the id of the
100
+ * `AssignTask` tool call that spawned the child) so the resulting
101
+ * message gets tagged for nested rendering.
102
+ */
103
+ export declare function applyAgentEvent(state: MessageState, event: AgentEvent, parentToolCallId?: string, now?: number): MessageState;
104
+ export {};
105
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/state/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ServerEvent, SessionViewState } from "../protocol/types.ts";
2
+ export declare function createSessionViewState(): SessionViewState;
3
+ /**
4
+ * The single reducer both sides of the wire run. The controller applies every
5
+ * event it emits through this function; SessionClient applies every event it
6
+ * receives. Determinism rule: use `event.at` as "now", never Date.now().
7
+ */
8
+ export declare function reduceSessionEvent(state: SessionViewState, event: ServerEvent): SessionViewState;
9
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/state/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAa1E,wBAAgB,sBAAsB,IAAI,gBAAgB,CAazD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,GAAG,gBAAgB,CAyFhG"}
@@ -0,0 +1,31 @@
1
+ import type { ToolMessageStatus, ToolTuiMessage } from "./messages.ts";
2
+ export type ToolPreview = {
3
+ mainArg?: string;
4
+ phrase: string;
5
+ };
6
+ export type ToolPreviewFormatter = (message: ToolTuiMessage) => ToolPreview;
7
+ export type TodoStatus = "pending" | "in_progress" | "completed";
8
+ export type TodoItem = {
9
+ id: string;
10
+ content: string;
11
+ status: TodoStatus;
12
+ priority?: "high" | "medium" | "low";
13
+ };
14
+ /**
15
+ * Returns the status glyph for a given tool message status.
16
+ * Moved from CLI parts.tsx so the glyph logic is shared across platforms.
17
+ *
18
+ * Note: for `running` status the CLI renders an animated blink (RUNNING_FRAMES),
19
+ * NOT the static glyph returned here. Callers rendering the running state should
20
+ * implement their own animation or indicator; this function returns the static
21
+ * fallback glyph only.
22
+ */
23
+ export declare function getToolStatusGlyph(status: ToolMessageStatus): string;
24
+ export declare function getToolPreview(toolName: string, message: ToolTuiMessage): ToolPreview;
25
+ export declare function formatToolPreviewLine(message: ToolTuiMessage): string;
26
+ /**
27
+ * Extract todo items from the structured output of a TodoWrite tool message.
28
+ * Reads `structured.items` and filters to valid TodoItem shapes.
29
+ */
30
+ export declare function getTodoItems(value: unknown): TodoItem[];
31
+ //# sourceMappingURL=tool-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-preview.d.ts","sourceRoot":"","sources":["../../src/state/tool-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIvE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,WAAW,CAAC;AAE5E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;AAEjE,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACtC,CAAC;AAoUF;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAcpE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,WAAW,CAGrF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAIrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,EAAE,CAevD"}
@@ -0,0 +1,300 @@
1
+ // src/state/tool-preview.ts
2
+ function str(obj, key) {
3
+ if (!obj) return void 0;
4
+ const v = obj[key];
5
+ return typeof v === "string" && v.trim().length > 0 ? v.trim() : void 0;
6
+ }
7
+ function num(obj, key) {
8
+ if (!obj) return void 0;
9
+ const v = obj[key];
10
+ return typeof v === "number" ? v : void 0;
11
+ }
12
+ function bool(obj, key) {
13
+ return obj?.[key] === true;
14
+ }
15
+ function asObj(value) {
16
+ if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
17
+ return value;
18
+ }
19
+ var Bash_fmt = (msg) => {
20
+ const input = asObj(msg.input);
21
+ const command = str(input, "command") ?? msg.summary;
22
+ const cwd = str(input, "cwd");
23
+ const mainArg = cwd ? `${command} at ${cwd}` : command;
24
+ let phrase = "Ran command";
25
+ if (msg.status === "pending") phrase = "Waiting to run command";
26
+ else if (msg.status === "approved") phrase = "Approved command";
27
+ else if (msg.status === "running") phrase = "Running command";
28
+ else if (msg.status === "rejected") phrase = "Skipped command";
29
+ else if (msg.status === "error") phrase = "Command failed";
30
+ return { mainArg, phrase };
31
+ };
32
+ var WebSearch_fmt = (msg) => {
33
+ const input = asObj(msg.input);
34
+ const structured = asObj(msg.structured);
35
+ const query = str(input, "query") ?? msg.summary;
36
+ let phrase;
37
+ if (msg.status === "pending") phrase = "Waiting to search web";
38
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Searching web";
39
+ else if (msg.status === "rejected") phrase = "Skipped web search";
40
+ else if (msg.status === "error") phrase = "Search failed";
41
+ else {
42
+ const count = num(structured, "count");
43
+ phrase = count === void 0 ? "Searched web" : `Found ${count} results`;
44
+ }
45
+ return { mainArg: query, phrase };
46
+ };
47
+ var WebFetch_fmt = (msg) => {
48
+ const input = asObj(msg.input);
49
+ const structured = asObj(msg.structured);
50
+ const url = str(input, "url") ?? msg.summary;
51
+ let phrase;
52
+ if (msg.status === "pending") phrase = "Waiting to fetch URL";
53
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Fetching URL";
54
+ else if (msg.status === "rejected") phrase = "Skipped fetch";
55
+ else if (msg.status === "error") phrase = "Fetch failed";
56
+ else {
57
+ const format = str(structured, "format");
58
+ phrase = format ? `Fetched ${format}` : "Fetched";
59
+ }
60
+ return { mainArg: url, phrase };
61
+ };
62
+ var FileRead_fmt = (msg) => {
63
+ const input = asObj(msg.input);
64
+ const filePath = str(input, "path") ?? msg.summary;
65
+ const lineStart = num(input, "lineStart");
66
+ const lineEnd = num(input, "lineEnd");
67
+ let mainArg = filePath;
68
+ if (lineStart !== void 0 && lineEnd !== void 0)
69
+ mainArg = `${filePath}:${lineStart}-${lineEnd}`;
70
+ else if (lineStart !== void 0) mainArg = `${filePath}:${lineStart}`;
71
+ let phrase = "Read file";
72
+ if (msg.status === "pending") phrase = "Waiting to read file";
73
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Reading file";
74
+ else if (msg.status === "error") phrase = "File read failed";
75
+ else if (msg.status === "rejected") phrase = "Skipped file read";
76
+ return { mainArg, phrase };
77
+ };
78
+ var FileEdit_fmt = (msg) => {
79
+ const input = asObj(msg.input);
80
+ const structured = asObj(msg.structured);
81
+ const filePath = str(structured, "filePath") ?? str(input, "filePath") ?? msg.summary;
82
+ const bytesWritten = num(structured, "bytesWritten");
83
+ let phrase;
84
+ if (msg.status === "error") phrase = "Edit failed";
85
+ else if (msg.status === "rejected") phrase = "Skipped file edit";
86
+ else if (msg.status === "pending") phrase = "Waiting to edit file";
87
+ else if (msg.status === "approved" || msg.status === "running") phrase = "Editing file";
88
+ else phrase = bytesWritten !== void 0 ? `Edited file (${bytesWritten} bytes)` : "Edited file";
89
+ return { mainArg: filePath, phrase };
90
+ };
91
+ var FileNew_fmt = (msg) => {
92
+ const input = asObj(msg.input);
93
+ const structured = asObj(msg.structured);
94
+ const filePath = str(structured, "filePath") ?? str(input, "filePath") ?? msg.summary;
95
+ const lines = num(structured, "lines");
96
+ const bytes = num(structured, "bytes");
97
+ let phrase = "Created file";
98
+ if (msg.status === "pending") phrase = "Waiting to create file";
99
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Creating file";
100
+ else if (msg.status === "rejected") phrase = "Skipped file creation";
101
+ else if (msg.status === "error") phrase = "File creation failed";
102
+ else if (lines !== void 0 && bytes !== void 0)
103
+ phrase = `Created file (${lines} lines, ${bytes} bytes)`;
104
+ else if (lines !== void 0) phrase = `Created file (${lines} lines)`;
105
+ else if (bytes !== void 0) phrase = `Created file (${bytes} bytes)`;
106
+ return { mainArg: filePath, phrase };
107
+ };
108
+ var Grep_fmt = (msg) => {
109
+ const input = asObj(msg.input);
110
+ const structured = asObj(msg.structured);
111
+ const pattern = str(input, "pattern") ?? "";
112
+ const searchPath = str(input, "path");
113
+ const mainArg = searchPath ? `${pattern} at ${searchPath}` : pattern || msg.summary;
114
+ let phrase;
115
+ if (msg.status === "pending") phrase = "Waiting to search";
116
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Searching";
117
+ else if (msg.status === "rejected") phrase = "Skipped search";
118
+ else if (msg.status === "error") phrase = "Search failed";
119
+ else {
120
+ const matchCount = num(structured, "matchCount");
121
+ const fileCount = num(structured, "fileCount");
122
+ const truncated = bool(structured, "truncated");
123
+ if (matchCount === 0) phrase = "Not found";
124
+ else if (matchCount === void 0) phrase = "Search complete";
125
+ else {
126
+ phrase = `Found ${matchCount} match${matchCount === 1 ? "" : "es"}`;
127
+ if (fileCount !== void 0) phrase += ` in ${fileCount} file${fileCount === 1 ? "" : "s"}`;
128
+ if (truncated) phrase += " (truncated)";
129
+ }
130
+ }
131
+ return { mainArg, phrase };
132
+ };
133
+ var Glob_fmt = (msg) => {
134
+ const input = asObj(msg.input);
135
+ const structured = asObj(msg.structured);
136
+ const pattern = str(input, "pattern") ?? msg.summary;
137
+ let phrase;
138
+ if (msg.status === "pending") phrase = "Waiting to find files";
139
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Finding files";
140
+ else if (msg.status === "rejected") phrase = "Skipped file search";
141
+ else if (msg.status === "error") phrase = "Search failed";
142
+ else {
143
+ const count = num(structured, "count");
144
+ const truncated = bool(structured, "truncated");
145
+ phrase = count !== void 0 ? `Found ${count} file${count === 1 ? "" : "s"}` : "Search complete";
146
+ if (truncated) phrase += " (truncated)";
147
+ }
148
+ return { mainArg: pattern, phrase };
149
+ };
150
+ var Ls_fmt = (msg) => {
151
+ const input = asObj(msg.input);
152
+ const structured = asObj(msg.structured);
153
+ const directoryPath = str(input, "path") ?? ".";
154
+ let phrase;
155
+ if (msg.status === "pending") phrase = "Waiting to list directory";
156
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Listing directory";
157
+ else if (msg.status === "rejected") phrase = "Skipped directory listing";
158
+ else if (msg.status === "error") phrase = "Listing failed";
159
+ else {
160
+ const total = num(structured, "total");
161
+ const truncated = bool(structured, "truncated");
162
+ phrase = total !== void 0 ? `Listed ${total} entries` : "Listed";
163
+ if (truncated) phrase += " (truncated)";
164
+ }
165
+ return { mainArg: directoryPath, phrase };
166
+ };
167
+ var Lsp_fmt = (msg) => {
168
+ const input = asObj(msg.input);
169
+ const filePath = str(input, "filePath") ?? msg.summary;
170
+ const line = num(input, "line");
171
+ const character = num(input, "character");
172
+ const operation = str(input, "operation") ?? "lsp";
173
+ let mainArg = filePath;
174
+ if (line !== void 0 && character !== void 0) mainArg = `${filePath}:${line}:${character}`;
175
+ else if (line !== void 0) mainArg = `${filePath}:${line}`;
176
+ let phrase;
177
+ if (msg.status === "pending") phrase = `Waiting to query ${operation}`;
178
+ else if (msg.status === "approved" || msg.status === "running") phrase = `Querying ${operation}`;
179
+ else if (msg.status === "error") phrase = `LSP ${operation} failed`;
180
+ else if (msg.status === "rejected") phrase = `Skipped ${operation}`;
181
+ else phrase = `Queried ${operation}`;
182
+ return { mainArg, phrase };
183
+ };
184
+ var LoadSkill_fmt = (msg) => {
185
+ const input = asObj(msg.input);
186
+ const name = str(input, "name") ?? msg.summary;
187
+ let phrase;
188
+ if (msg.status === "pending") phrase = "Waiting to load skill";
189
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Loading skill";
190
+ else if (msg.status === "rejected") phrase = "Skipped skill load";
191
+ else if (msg.status === "error") phrase = "Skill load failed";
192
+ else phrase = "Loaded skill";
193
+ return { mainArg: name, phrase };
194
+ };
195
+ var ViewFile_fmt = (msg) => {
196
+ const input = asObj(msg.input);
197
+ const filePath = str(input, "path") ?? msg.summary;
198
+ let phrase;
199
+ if (msg.status === "pending") phrase = "Waiting to view image";
200
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Viewing image";
201
+ else if (msg.status === "error") phrase = "Image view failed";
202
+ else if (msg.status === "rejected") phrase = "Skipped image view";
203
+ else phrase = "Viewed image";
204
+ return { mainArg: filePath, phrase };
205
+ };
206
+ var TodoWrite_fmt = (msg) => {
207
+ const input = asObj(msg.input);
208
+ const structured = asObj(msg.structured);
209
+ const todos = input?.todos ?? input?.items;
210
+ const count = Array.isArray(todos) ? todos.length : void 0;
211
+ const mainArg = count === void 0 ? msg.summary : `${count} item${count === 1 ? "" : "s"}`;
212
+ let phrase;
213
+ if (msg.status === "pending") phrase = "Waiting to update todos";
214
+ else if (msg.status === "running" || msg.status === "approved") phrase = "Updating todos";
215
+ else if (msg.status === "rejected") phrase = "Skipped todo update";
216
+ else if (msg.status === "error") phrase = "Todo update failed";
217
+ else {
218
+ const stats = asObj(structured?.stats);
219
+ const completed = num(stats, "completed");
220
+ const total = num(stats, "total");
221
+ const progress = str(structured, "progress");
222
+ phrase = completed !== void 0 && total !== void 0 && progress ? `Updated todos (${completed}/${total} - ${progress})` : "Updated todos";
223
+ }
224
+ return { mainArg, phrase };
225
+ };
226
+ function genericStatusPhrase(status) {
227
+ switch (status) {
228
+ case "approved":
229
+ case "running":
230
+ return "Running";
231
+ case "error":
232
+ return "Failed";
233
+ case "ok":
234
+ return "Completed";
235
+ case "pending":
236
+ return "Waiting";
237
+ case "rejected":
238
+ return "Denied";
239
+ }
240
+ }
241
+ var Unknown_fmt = (msg) => ({
242
+ mainArg: msg.summary || void 0,
243
+ phrase: genericStatusPhrase(msg.status)
244
+ });
245
+ var FORMATTERS = {
246
+ Bash: Bash_fmt,
247
+ WebSearch: WebSearch_fmt,
248
+ WebFetch: WebFetch_fmt,
249
+ FileRead: FileRead_fmt,
250
+ FileEdit: FileEdit_fmt,
251
+ FileNew: FileNew_fmt,
252
+ Grep: Grep_fmt,
253
+ Glob: Glob_fmt,
254
+ Ls: Ls_fmt,
255
+ Lsp: Lsp_fmt,
256
+ LoadSkill: LoadSkill_fmt,
257
+ ViewFile: ViewFile_fmt,
258
+ TodoWrite: TodoWrite_fmt,
259
+ AskUserTool: Unknown_fmt
260
+ };
261
+ function getToolStatusGlyph(status) {
262
+ switch (status) {
263
+ case "approved":
264
+ case "running":
265
+ return "\u23F5";
266
+ case "ok":
267
+ return "\u2699";
268
+ case "error":
269
+ return "\u2715";
270
+ case "rejected":
271
+ return "\u2298";
272
+ case "pending":
273
+ return "\u25CC";
274
+ }
275
+ }
276
+ function getToolPreview(toolName, message) {
277
+ const formatter = FORMATTERS[toolName] ?? Unknown_fmt;
278
+ return formatter(message);
279
+ }
280
+ function formatToolPreviewLine(message) {
281
+ const { phrase, mainArg } = getToolPreview(message.toolName, message);
282
+ const glyph = getToolStatusGlyph(message.status);
283
+ return mainArg ? `${glyph} ${phrase} \xB7 ${mainArg}` : `${glyph} ${phrase}`;
284
+ }
285
+ function getTodoItems(value) {
286
+ if (!value || typeof value !== "object" || Array.isArray(value)) return [];
287
+ const items = value.items;
288
+ if (!Array.isArray(items)) return [];
289
+ return items.filter((item) => {
290
+ if (!item || typeof item !== "object" || Array.isArray(item)) return false;
291
+ const candidate = item;
292
+ return typeof candidate.id === "string" && typeof candidate.content === "string" && (candidate.status === "pending" || candidate.status === "in_progress" || candidate.status === "completed");
293
+ });
294
+ }
295
+ export {
296
+ formatToolPreviewLine,
297
+ getTodoItems,
298
+ getToolPreview,
299
+ getToolStatusGlyph
300
+ };
@@ -0,0 +1,10 @@
1
+ import type { WorkflowProgressDelta, WorkflowViewState } from "../protocol/types.ts";
2
+ export declare function createWorkflowViewState(runId: string): WorkflowViewState;
3
+ /**
4
+ * Fold one journal delta into a run summary (copy-on-write). Mirrors
5
+ * WorkflowManager.status() (§8.3): titles/phases/statuses/counts/tokens only.
6
+ * agent-prompt/agent-step/agent-output are AUDIT-only — they update nothing in
7
+ * the summary (the transcript never enters this model).
8
+ */
9
+ export declare function foldWorkflowDelta(state: WorkflowViewState, delta: WorkflowProgressDelta): WorkflowViewState;
10
+ //# sourceMappingURL=workflow-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-view.d.ts","sourceRoot":"","sources":["../../src/state/workflow-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EAErB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAMxE;AA0CD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,qBAAqB,GAC3B,iBAAiB,CAmCnB"}