@herdctl/core 5.5.0 → 5.7.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.
Files changed (172) hide show
  1. package/dist/config/__tests__/merge.test.js +1 -1
  2. package/dist/config/__tests__/merge.test.js.map +1 -1
  3. package/dist/config/index.d.ts +1 -1
  4. package/dist/config/index.d.ts.map +1 -1
  5. package/dist/config/index.js +3 -1
  6. package/dist/config/index.js.map +1 -1
  7. package/dist/config/schema.d.ts +10 -2
  8. package/dist/config/schema.d.ts.map +1 -1
  9. package/dist/config/schema.js +6 -2
  10. package/dist/config/schema.js.map +1 -1
  11. package/dist/distribution/__tests__/agent-discovery.test.d.ts +7 -0
  12. package/dist/distribution/__tests__/agent-discovery.test.d.ts.map +1 -0
  13. package/dist/distribution/__tests__/agent-discovery.test.js +443 -0
  14. package/dist/distribution/__tests__/agent-discovery.test.js.map +1 -0
  15. package/dist/distribution/__tests__/agent-info.test.d.ts +7 -0
  16. package/dist/distribution/__tests__/agent-info.test.d.ts.map +1 -0
  17. package/dist/distribution/__tests__/agent-info.test.js +568 -0
  18. package/dist/distribution/__tests__/agent-info.test.js.map +1 -0
  19. package/dist/distribution/__tests__/agent-remover.test.d.ts +7 -0
  20. package/dist/distribution/__tests__/agent-remover.test.d.ts.map +1 -0
  21. package/dist/distribution/__tests__/agent-remover.test.js +498 -0
  22. package/dist/distribution/__tests__/agent-remover.test.js.map +1 -0
  23. package/dist/distribution/__tests__/agent-repo-metadata.test.d.ts +5 -0
  24. package/dist/distribution/__tests__/agent-repo-metadata.test.d.ts.map +1 -0
  25. package/dist/distribution/__tests__/agent-repo-metadata.test.js +500 -0
  26. package/dist/distribution/__tests__/agent-repo-metadata.test.js.map +1 -0
  27. package/dist/distribution/__tests__/env-scanner.test.d.ts +5 -0
  28. package/dist/distribution/__tests__/env-scanner.test.d.ts.map +1 -0
  29. package/dist/distribution/__tests__/env-scanner.test.js +576 -0
  30. package/dist/distribution/__tests__/env-scanner.test.js.map +1 -0
  31. package/dist/distribution/__tests__/file-installer.test.d.ts +7 -0
  32. package/dist/distribution/__tests__/file-installer.test.d.ts.map +1 -0
  33. package/dist/distribution/__tests__/file-installer.test.js +714 -0
  34. package/dist/distribution/__tests__/file-installer.test.js.map +1 -0
  35. package/dist/distribution/__tests__/fleet-config-updater.test.d.ts +7 -0
  36. package/dist/distribution/__tests__/fleet-config-updater.test.d.ts.map +1 -0
  37. package/dist/distribution/__tests__/fleet-config-updater.test.js +531 -0
  38. package/dist/distribution/__tests__/fleet-config-updater.test.js.map +1 -0
  39. package/dist/distribution/__tests__/installation-metadata.test.d.ts +2 -0
  40. package/dist/distribution/__tests__/installation-metadata.test.d.ts.map +1 -0
  41. package/dist/distribution/__tests__/installation-metadata.test.js +292 -0
  42. package/dist/distribution/__tests__/installation-metadata.test.js.map +1 -0
  43. package/dist/distribution/__tests__/integration.test.d.ts +10 -0
  44. package/dist/distribution/__tests__/integration.test.d.ts.map +1 -0
  45. package/dist/distribution/__tests__/integration.test.js +522 -0
  46. package/dist/distribution/__tests__/integration.test.js.map +1 -0
  47. package/dist/distribution/__tests__/repository-fetcher.test.d.ts +5 -0
  48. package/dist/distribution/__tests__/repository-fetcher.test.d.ts.map +1 -0
  49. package/dist/distribution/__tests__/repository-fetcher.test.js +386 -0
  50. package/dist/distribution/__tests__/repository-fetcher.test.js.map +1 -0
  51. package/dist/distribution/__tests__/repository-validator.test.d.ts +7 -0
  52. package/dist/distribution/__tests__/repository-validator.test.d.ts.map +1 -0
  53. package/dist/distribution/__tests__/repository-validator.test.js +447 -0
  54. package/dist/distribution/__tests__/repository-validator.test.js.map +1 -0
  55. package/dist/distribution/__tests__/source-specifier.test.d.ts +5 -0
  56. package/dist/distribution/__tests__/source-specifier.test.d.ts.map +1 -0
  57. package/dist/distribution/__tests__/source-specifier.test.js +533 -0
  58. package/dist/distribution/__tests__/source-specifier.test.js.map +1 -0
  59. package/dist/distribution/agent-discovery.d.ts +81 -0
  60. package/dist/distribution/agent-discovery.d.ts.map +1 -0
  61. package/dist/distribution/agent-discovery.js +264 -0
  62. package/dist/distribution/agent-discovery.js.map +1 -0
  63. package/dist/distribution/agent-info.d.ts +86 -0
  64. package/dist/distribution/agent-info.d.ts.map +1 -0
  65. package/dist/distribution/agent-info.js +225 -0
  66. package/dist/distribution/agent-info.js.map +1 -0
  67. package/dist/distribution/agent-remover.d.ts +83 -0
  68. package/dist/distribution/agent-remover.d.ts.map +1 -0
  69. package/dist/distribution/agent-remover.js +222 -0
  70. package/dist/distribution/agent-remover.js.map +1 -0
  71. package/dist/distribution/agent-repo-metadata.d.ts +181 -0
  72. package/dist/distribution/agent-repo-metadata.d.ts.map +1 -0
  73. package/dist/distribution/agent-repo-metadata.js +143 -0
  74. package/dist/distribution/agent-repo-metadata.js.map +1 -0
  75. package/dist/distribution/env-scanner.d.ts +78 -0
  76. package/dist/distribution/env-scanner.d.ts.map +1 -0
  77. package/dist/distribution/env-scanner.js +144 -0
  78. package/dist/distribution/env-scanner.js.map +1 -0
  79. package/dist/distribution/file-installer.d.ts +80 -0
  80. package/dist/distribution/file-installer.d.ts.map +1 -0
  81. package/dist/distribution/file-installer.js +268 -0
  82. package/dist/distribution/file-installer.js.map +1 -0
  83. package/dist/distribution/fleet-config-updater.d.ts +96 -0
  84. package/dist/distribution/fleet-config-updater.d.ts.map +1 -0
  85. package/dist/distribution/fleet-config-updater.js +266 -0
  86. package/dist/distribution/fleet-config-updater.js.map +1 -0
  87. package/dist/distribution/index.d.ts +23 -0
  88. package/dist/distribution/index.d.ts.map +1 -0
  89. package/dist/distribution/index.js +42 -0
  90. package/dist/distribution/index.js.map +1 -0
  91. package/dist/distribution/installation-metadata.d.ts +191 -0
  92. package/dist/distribution/installation-metadata.d.ts.map +1 -0
  93. package/dist/distribution/installation-metadata.js +100 -0
  94. package/dist/distribution/installation-metadata.js.map +1 -0
  95. package/dist/distribution/repository-fetcher.d.ts +104 -0
  96. package/dist/distribution/repository-fetcher.d.ts.map +1 -0
  97. package/dist/distribution/repository-fetcher.js +246 -0
  98. package/dist/distribution/repository-fetcher.js.map +1 -0
  99. package/dist/distribution/repository-validator.d.ts +86 -0
  100. package/dist/distribution/repository-validator.d.ts.map +1 -0
  101. package/dist/distribution/repository-validator.js +296 -0
  102. package/dist/distribution/repository-validator.js.map +1 -0
  103. package/dist/distribution/source-specifier.d.ts +106 -0
  104. package/dist/distribution/source-specifier.d.ts.map +1 -0
  105. package/dist/distribution/source-specifier.js +247 -0
  106. package/dist/distribution/source-specifier.js.map +1 -0
  107. package/dist/fleet-manager/errors.d.ts +15 -0
  108. package/dist/fleet-manager/errors.d.ts.map +1 -1
  109. package/dist/fleet-manager/errors.js +16 -0
  110. package/dist/fleet-manager/errors.js.map +1 -1
  111. package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
  112. package/dist/fleet-manager/fleet-manager.js +31 -9
  113. package/dist/fleet-manager/fleet-manager.js.map +1 -1
  114. package/dist/index.d.ts +1 -0
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +2 -0
  117. package/dist/index.js.map +1 -1
  118. package/dist/runner/message-processor.d.ts.map +1 -1
  119. package/dist/runner/message-processor.js +7 -2
  120. package/dist/runner/message-processor.js.map +1 -1
  121. package/dist/runner/runtime/container-manager.js +1 -1
  122. package/dist/runner/runtime/container-manager.js.map +1 -1
  123. package/dist/scheduler/errors.d.ts +15 -0
  124. package/dist/scheduler/errors.d.ts.map +1 -1
  125. package/dist/scheduler/schedule-runner.d.ts.map +1 -1
  126. package/dist/scheduler/schedule-runner.js +6 -5
  127. package/dist/scheduler/schedule-runner.js.map +1 -1
  128. package/dist/state/__tests__/jsonl-parser.test.d.ts +5 -0
  129. package/dist/state/__tests__/jsonl-parser.test.d.ts.map +1 -0
  130. package/dist/state/__tests__/jsonl-parser.test.js +307 -0
  131. package/dist/state/__tests__/jsonl-parser.test.js.map +1 -0
  132. package/dist/state/__tests__/session-attribution.test.d.ts +2 -0
  133. package/dist/state/__tests__/session-attribution.test.d.ts.map +1 -0
  134. package/dist/state/__tests__/session-attribution.test.js +567 -0
  135. package/dist/state/__tests__/session-attribution.test.js.map +1 -0
  136. package/dist/state/__tests__/session-discovery.test.d.ts +2 -0
  137. package/dist/state/__tests__/session-discovery.test.d.ts.map +1 -0
  138. package/dist/state/__tests__/session-discovery.test.js +941 -0
  139. package/dist/state/__tests__/session-discovery.test.js.map +1 -0
  140. package/dist/state/__tests__/session-metadata.test.d.ts +2 -0
  141. package/dist/state/__tests__/session-metadata.test.d.ts.map +1 -0
  142. package/dist/state/__tests__/session-metadata.test.js +422 -0
  143. package/dist/state/__tests__/session-metadata.test.js.map +1 -0
  144. package/dist/state/__tests__/tool-parsing.test.d.ts +5 -0
  145. package/dist/state/__tests__/tool-parsing.test.d.ts.map +1 -0
  146. package/dist/state/__tests__/tool-parsing.test.js +315 -0
  147. package/dist/state/__tests__/tool-parsing.test.js.map +1 -0
  148. package/dist/state/index.d.ts +5 -0
  149. package/dist/state/index.d.ts.map +1 -1
  150. package/dist/state/index.js +10 -0
  151. package/dist/state/index.js.map +1 -1
  152. package/dist/state/jsonl-parser.d.ts +115 -0
  153. package/dist/state/jsonl-parser.d.ts.map +1 -0
  154. package/dist/state/jsonl-parser.js +437 -0
  155. package/dist/state/jsonl-parser.js.map +1 -0
  156. package/dist/state/session-attribution.d.ts +35 -0
  157. package/dist/state/session-attribution.d.ts.map +1 -0
  158. package/dist/state/session-attribution.js +179 -0
  159. package/dist/state/session-attribution.js.map +1 -0
  160. package/dist/state/session-discovery.d.ts +188 -0
  161. package/dist/state/session-discovery.d.ts.map +1 -0
  162. package/dist/state/session-discovery.js +513 -0
  163. package/dist/state/session-discovery.js.map +1 -0
  164. package/dist/state/session-metadata.d.ts +186 -0
  165. package/dist/state/session-metadata.d.ts.map +1 -0
  166. package/dist/state/session-metadata.js +297 -0
  167. package/dist/state/session-metadata.js.map +1 -0
  168. package/dist/state/tool-parsing.d.ts +88 -0
  169. package/dist/state/tool-parsing.d.ts.map +1 -0
  170. package/dist/state/tool-parsing.js +199 -0
  171. package/dist/state/tool-parsing.js.map +1 -0
  172. package/package.json +1 -1
@@ -0,0 +1,315 @@
1
+ /**
2
+ * Tests for tool parsing utilities
3
+ */
4
+ import { describe, expect, it } from "vitest";
5
+ import { extractToolResultContent, extractToolResults, extractToolUseBlocks, getToolInputSummary, TOOL_EMOJIS, } from "../tool-parsing.js";
6
+ describe("tool-parsing", () => {
7
+ // ===========================================================================
8
+ // extractToolUseBlocks
9
+ // ===========================================================================
10
+ describe("extractToolUseBlocks", () => {
11
+ it("returns empty array for non-array content", () => {
12
+ expect(extractToolUseBlocks({ type: "assistant" })).toEqual([]);
13
+ expect(extractToolUseBlocks({
14
+ type: "assistant",
15
+ message: { content: "just text" },
16
+ })).toEqual([]);
17
+ });
18
+ it("extracts tool_use blocks from content array", () => {
19
+ const message = {
20
+ type: "assistant",
21
+ message: {
22
+ content: [
23
+ { type: "text", text: "Let me read that file." },
24
+ {
25
+ type: "tool_use",
26
+ id: "toolu_123",
27
+ name: "Read",
28
+ input: { file_path: "/foo/bar.ts" },
29
+ },
30
+ ],
31
+ },
32
+ };
33
+ const blocks = extractToolUseBlocks(message);
34
+ expect(blocks).toHaveLength(1);
35
+ expect(blocks[0]).toEqual({
36
+ id: "toolu_123",
37
+ name: "Read",
38
+ input: { file_path: "/foo/bar.ts" },
39
+ });
40
+ });
41
+ it("extracts multiple tool_use blocks", () => {
42
+ const message = {
43
+ type: "assistant",
44
+ message: {
45
+ content: [
46
+ {
47
+ type: "tool_use",
48
+ id: "toolu_1",
49
+ name: "Bash",
50
+ input: { command: "ls" },
51
+ },
52
+ { type: "text", text: "Some text" },
53
+ {
54
+ type: "tool_use",
55
+ id: "toolu_2",
56
+ name: "Read",
57
+ input: { file_path: "/a.ts" },
58
+ },
59
+ ],
60
+ },
61
+ };
62
+ const blocks = extractToolUseBlocks(message);
63
+ expect(blocks).toHaveLength(2);
64
+ expect(blocks[0].name).toBe("Bash");
65
+ expect(blocks[1].name).toBe("Read");
66
+ });
67
+ it("handles blocks without id", () => {
68
+ const message = {
69
+ type: "assistant",
70
+ message: {
71
+ content: [{ type: "tool_use", name: "Bash", input: { command: "ls" } }],
72
+ },
73
+ };
74
+ const blocks = extractToolUseBlocks(message);
75
+ expect(blocks).toHaveLength(1);
76
+ expect(blocks[0].id).toBeUndefined();
77
+ });
78
+ it("skips non-tool_use blocks", () => {
79
+ const message = {
80
+ type: "assistant",
81
+ message: {
82
+ content: [
83
+ { type: "text", text: "Hello" },
84
+ { type: "image", source: {} },
85
+ { type: "tool_use", id: "toolu_1", name: "Bash" },
86
+ ],
87
+ },
88
+ };
89
+ const blocks = extractToolUseBlocks(message);
90
+ expect(blocks).toHaveLength(1);
91
+ });
92
+ });
93
+ // ===========================================================================
94
+ // getToolInputSummary
95
+ // ===========================================================================
96
+ describe("getToolInputSummary", () => {
97
+ it("returns command for Bash", () => {
98
+ expect(getToolInputSummary("Bash", { command: "ls -la" })).toBe("ls -la");
99
+ });
100
+ it("truncates long Bash commands", () => {
101
+ const longCommand = "a".repeat(250);
102
+ const result = getToolInputSummary("Bash", { command: longCommand });
103
+ expect(result).toBe(`${"a".repeat(200)}...`);
104
+ });
105
+ it("returns file_path for Read", () => {
106
+ expect(getToolInputSummary("Read", { file_path: "/foo/bar.ts" })).toBe("/foo/bar.ts");
107
+ });
108
+ it("returns file_path for Write", () => {
109
+ expect(getToolInputSummary("Write", { file_path: "/foo/bar.ts" })).toBe("/foo/bar.ts");
110
+ });
111
+ it("returns file_path for Edit", () => {
112
+ expect(getToolInputSummary("Edit", { file_path: "/foo/bar.ts" })).toBe("/foo/bar.ts");
113
+ });
114
+ it("returns pattern for Glob", () => {
115
+ expect(getToolInputSummary("Glob", { pattern: "**/*.ts" })).toBe("**/*.ts");
116
+ });
117
+ it("returns pattern for Grep", () => {
118
+ expect(getToolInputSummary("Grep", { pattern: "function foo" })).toBe("function foo");
119
+ });
120
+ it("returns url for WebFetch", () => {
121
+ expect(getToolInputSummary("WebFetch", { url: "https://example.com" })).toBe("https://example.com");
122
+ });
123
+ it("returns query for WebSearch", () => {
124
+ expect(getToolInputSummary("WebSearch", { query: "how to test" })).toBe("how to test");
125
+ });
126
+ it("returns undefined for unknown tools", () => {
127
+ expect(getToolInputSummary("UnknownTool", { data: "test" })).toBeUndefined();
128
+ });
129
+ it("returns undefined when input is undefined", () => {
130
+ expect(getToolInputSummary("Bash")).toBeUndefined();
131
+ });
132
+ it("handles bash (lowercase)", () => {
133
+ expect(getToolInputSummary("bash", { command: "ls" })).toBe("ls");
134
+ });
135
+ });
136
+ // ===========================================================================
137
+ // extractToolResults
138
+ // ===========================================================================
139
+ describe("extractToolResults", () => {
140
+ it("returns empty array for non-user messages", () => {
141
+ expect(extractToolResults({ type: "assistant" })).toEqual([]);
142
+ });
143
+ it("extracts from top-level tool_use_result string", () => {
144
+ const message = {
145
+ type: "user",
146
+ tool_use_result: "command output here",
147
+ };
148
+ const results = extractToolResults(message);
149
+ expect(results).toHaveLength(1);
150
+ expect(results[0]).toEqual({
151
+ output: "command output here",
152
+ isError: false,
153
+ });
154
+ });
155
+ it("extracts from content blocks with tool_result type", () => {
156
+ const message = {
157
+ type: "user",
158
+ message: {
159
+ content: [
160
+ {
161
+ type: "tool_result",
162
+ tool_use_id: "toolu_123",
163
+ content: "file contents here",
164
+ is_error: false,
165
+ },
166
+ ],
167
+ },
168
+ };
169
+ const results = extractToolResults(message);
170
+ expect(results).toHaveLength(1);
171
+ expect(results[0]).toEqual({
172
+ output: "file contents here",
173
+ isError: false,
174
+ toolUseId: "toolu_123",
175
+ });
176
+ });
177
+ it("extracts error tool results", () => {
178
+ const message = {
179
+ type: "user",
180
+ message: {
181
+ content: [
182
+ {
183
+ type: "tool_result",
184
+ tool_use_id: "toolu_456",
185
+ content: "command failed: exit code 1",
186
+ is_error: true,
187
+ },
188
+ ],
189
+ },
190
+ };
191
+ const results = extractToolResults(message);
192
+ expect(results).toHaveLength(1);
193
+ expect(results[0].isError).toBe(true);
194
+ expect(results[0].toolUseId).toBe("toolu_456");
195
+ });
196
+ it("extracts from content blocks array inside tool_result", () => {
197
+ const message = {
198
+ type: "user",
199
+ message: {
200
+ content: [
201
+ {
202
+ type: "tool_result",
203
+ tool_use_id: "toolu_789",
204
+ content: [
205
+ { type: "text", text: "line 1\n" },
206
+ { type: "text", text: "line 2" },
207
+ ],
208
+ },
209
+ ],
210
+ },
211
+ };
212
+ const results = extractToolResults(message);
213
+ expect(results).toHaveLength(1);
214
+ expect(results[0].output).toBe("line 1\n\nline 2");
215
+ });
216
+ it("extracts multiple tool results", () => {
217
+ const message = {
218
+ type: "user",
219
+ message: {
220
+ content: [
221
+ {
222
+ type: "tool_result",
223
+ tool_use_id: "toolu_1",
224
+ content: "result 1",
225
+ },
226
+ {
227
+ type: "tool_result",
228
+ tool_use_id: "toolu_2",
229
+ content: "result 2",
230
+ is_error: true,
231
+ },
232
+ ],
233
+ },
234
+ };
235
+ const results = extractToolResults(message);
236
+ expect(results).toHaveLength(2);
237
+ expect(results[0].output).toBe("result 1");
238
+ expect(results[1].output).toBe("result 2");
239
+ expect(results[1].isError).toBe(true);
240
+ });
241
+ it("skips empty content", () => {
242
+ const message = {
243
+ type: "user",
244
+ message: {
245
+ content: [{ type: "tool_result", content: "" }],
246
+ },
247
+ };
248
+ expect(extractToolResults(message)).toEqual([]);
249
+ });
250
+ });
251
+ // ===========================================================================
252
+ // extractToolResultContent
253
+ // ===========================================================================
254
+ describe("extractToolResultContent", () => {
255
+ it("extracts from plain string", () => {
256
+ const result = extractToolResultContent("hello world");
257
+ expect(result).toEqual({ output: "hello world", isError: false });
258
+ });
259
+ it("returns undefined for empty string", () => {
260
+ expect(extractToolResultContent("")).toBeUndefined();
261
+ });
262
+ it("extracts from object with content string", () => {
263
+ const result = extractToolResultContent({
264
+ content: "file data",
265
+ is_error: false,
266
+ tool_use_id: "toolu_abc",
267
+ });
268
+ expect(result).toEqual({
269
+ output: "file data",
270
+ isError: false,
271
+ toolUseId: "toolu_abc",
272
+ });
273
+ });
274
+ it("extracts from object with error flag", () => {
275
+ const result = extractToolResultContent({
276
+ content: "error occurred",
277
+ is_error: true,
278
+ });
279
+ expect(result?.isError).toBe(true);
280
+ });
281
+ it("extracts from object with content blocks array", () => {
282
+ const result = extractToolResultContent({
283
+ content: [
284
+ { type: "text", text: "part 1" },
285
+ { type: "text", text: "part 2" },
286
+ ],
287
+ });
288
+ expect(result?.output).toBe("part 1\npart 2");
289
+ });
290
+ it("returns undefined for null", () => {
291
+ expect(extractToolResultContent(null)).toBeUndefined();
292
+ });
293
+ it("returns undefined for number", () => {
294
+ expect(extractToolResultContent(42)).toBeUndefined();
295
+ });
296
+ });
297
+ // ===========================================================================
298
+ // TOOL_EMOJIS
299
+ // ===========================================================================
300
+ describe("TOOL_EMOJIS", () => {
301
+ it("has emoji for common tools", () => {
302
+ expect(TOOL_EMOJIS.Bash).toBeDefined();
303
+ expect(TOOL_EMOJIS.Read).toBeDefined();
304
+ expect(TOOL_EMOJIS.Write).toBeDefined();
305
+ expect(TOOL_EMOJIS.Glob).toBeDefined();
306
+ expect(TOOL_EMOJIS.Grep).toBeDefined();
307
+ expect(TOOL_EMOJIS.WebFetch).toBeDefined();
308
+ expect(TOOL_EMOJIS.WebSearch).toBeDefined();
309
+ });
310
+ it("has lowercase bash variant", () => {
311
+ expect(TOOL_EMOJIS.bash).toBe(TOOL_EMOJIS.Bash);
312
+ });
313
+ });
314
+ });
315
+ //# sourceMappingURL=tool-parsing.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-parsing.test.js","sourceRoot":"","sources":["../../../src/state/__tests__/tool-parsing.test.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,14 @@ export * from "./errors.js";
14
14
  export { type AgentStateUpdates, initializeFleetState, type ReadFleetStateOptions, readFleetState, removeAgentState, type StateLogger, updateAgentState, type WriteFleetStateOptions, writeFleetState, } from "./fleet-state.js";
15
15
  export { createJob, deleteJob, getJob, type JobLogger, type JobMetadataOptions, type JobMetadataUpdates, type ListJobsFilter, type ListJobsResult, listJobs, updateJob, } from "./job-metadata.js";
16
16
  export { appendJobOutput, appendJobOutputBatch, getJobOutputPath, type JobOutputLogger, type JobOutputOptions, type ReadJobOutputOptions, readJobOutput, readJobOutputAll, } from "./job-output.js";
17
+ export { type ChatMessage, type ChatToolCall, extractLastSummary, extractSessionMetadata, extractSessionUsage, isSidechainSession, parseSessionMessages, type SessionMetadata, type SessionUsage, } from "./jsonl-parser.js";
17
18
  export * from "./schemas/index.js";
18
19
  export { clearSession, getSessionInfo, listSessions, type SessionInfoUpdates, type SessionLogger, type SessionOptions, updateSessionInfo, } from "./session.js";
20
+ export { type AttributionIndex, buildAttributionIndex, type SessionAttribution, type SessionOrigin, } from "./session-attribution.js";
21
+ export { type DirectoryGroup, type DiscoveredSession, type SessionDiscoveryOptions, SessionDiscoveryService, } from "./session-discovery.js";
22
+ export { type SessionMetadataEntry, SessionMetadataEntrySchema, type SessionMetadataFile, SessionMetadataFileSchema, SessionMetadataStore, } from "./session-metadata.js";
19
23
  export { cliSessionFileExists, dockerSessionFileExists, isSessionExpiredError, isTokenExpiredError, type SessionFileCheckOptions, validateRuntimeContext, validateSession, validateSessionWithFileCheck, } from "./session-validation.js";
24
+ export { extractToolResultContent, extractToolResults, extractToolUseBlocks, getToolInputSummary, TOOL_EMOJIS, type ToolResult, type ToolUseBlock, } from "./tool-parsing.js";
20
25
  export * from "./types.js";
21
26
  export * from "./utils/index.js";
22
27
  export { validateWorkingDirectory, type WorkingDirectoryValidation, } from "./working-directory-validation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,cAAc,aAAa,CAAC;AAE5B,OAAO,EACL,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,cAAc,EACd,gBAAgB,EAChB,KAAK,WAAW,EAChB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,MAAM,EACN,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,QAAQ,EACR,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,sBAAsB,EACtB,eAAe,EACf,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,cAAc,YAAY,CAAC;AAE3B,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,wBAAwB,EACxB,KAAK,0BAA0B,GAChC,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,cAAc,aAAa,CAAC;AAE5B,OAAO,EACL,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,cAAc,EACd,gBAAgB,EAChB,KAAK,WAAW,EAChB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,MAAM,EACN,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,QAAQ,EACR,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAE3B,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,sBAAsB,EACtB,eAAe,EACf,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAE3B,cAAc,YAAY,CAAC;AAE3B,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,wBAAwB,EACxB,KAAK,0BAA0B,GAChC,MAAM,mCAAmC,CAAC"}
@@ -19,12 +19,22 @@ export { initializeFleetState, readFleetState, removeAgentState, updateAgentStat
19
19
  export { createJob, deleteJob, getJob, listJobs, updateJob, } from "./job-metadata.js";
20
20
  // Re-export job output functions
21
21
  export { appendJobOutput, appendJobOutputBatch, getJobOutputPath, readJobOutput, readJobOutputAll, } from "./job-output.js";
22
+ // Re-export JSONL parser functions
23
+ export { extractLastSummary, extractSessionMetadata, extractSessionUsage, isSidechainSession, parseSessionMessages, } from "./jsonl-parser.js";
22
24
  // Re-export schemas
23
25
  export * from "./schemas/index.js";
24
26
  // Re-export session functions
25
27
  export { clearSession, getSessionInfo, listSessions, updateSessionInfo, } from "./session.js";
28
+ // Re-export session attribution functions
29
+ export { buildAttributionIndex, } from "./session-attribution.js";
30
+ // Re-export session discovery functions
31
+ export { SessionDiscoveryService, } from "./session-discovery.js";
32
+ // Re-export session metadata functions
33
+ export { SessionMetadataEntrySchema, SessionMetadataFileSchema, SessionMetadataStore, } from "./session-metadata.js";
26
34
  // Re-export session validation functions
27
35
  export { cliSessionFileExists, dockerSessionFileExists, isSessionExpiredError, isTokenExpiredError, validateRuntimeContext, validateSession, validateSessionWithFileCheck, } from "./session-validation.js";
36
+ // Re-export tool parsing functions
37
+ export { extractToolResultContent, extractToolResults, extractToolUseBlocks, getToolInputSummary, TOOL_EMOJIS, } from "./tool-parsing.js";
28
38
  // Re-export types
29
39
  export * from "./types.js";
30
40
  // Re-export file utilities
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gCAAgC;AAChC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAC5B,kCAAkC;AAClC,OAAO,EAEL,oBAAoB,EAEpB,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAEhB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,mCAAmC;AACnC,OAAO,EACL,SAAS,EACT,SAAS,EACT,MAAM,EAMN,QAAQ,EACR,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAIhB,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AACnC,8BAA8B;AAC9B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EAIZ,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,yCAAyC;AACzC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EAEnB,sBAAsB,EACtB,eAAe,EACf,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAC3B,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AAEjC,mDAAmD;AACnD,OAAO,EACL,wBAAwB,GAEzB,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gCAAgC;AAChC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAC5B,kCAAkC;AAClC,OAAO,EAEL,oBAAoB,EAEpB,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAEhB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,mCAAmC;AACnC,OAAO,EACL,SAAS,EACT,SAAS,EACT,MAAM,EAMN,QAAQ,EACR,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAIhB,aAAa,EACb,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,mCAAmC;AACnC,OAAO,EAGL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAC3B,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AACnC,8BAA8B;AAC9B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EAIZ,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,0CAA0C;AAC1C,OAAO,EAEL,qBAAqB,GAGtB,MAAM,0BAA0B,CAAC;AAClC,wCAAwC;AACxC,OAAO,EAIL,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,uCAAuC;AACvC,OAAO,EAEL,0BAA0B,EAE1B,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,yCAAyC;AACzC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EAEnB,sBAAsB,EACtB,eAAe,EACf,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,mCAAmC;AACnC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAC3B,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AAEjC,mDAAmD;AACnD,OAAO,EACL,wBAAwB,GAEzB,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * JSONL session file parser
3
+ *
4
+ * Parses Claude Code `.jsonl` session files into structured ChatMessage arrays
5
+ * for the web frontend. Supports streaming parsing for memory efficiency,
6
+ * message deduplication, tool call/result pairing, and metadata extraction.
7
+ */
8
+ /**
9
+ * A parsed chat message from a JSONL session file
10
+ */
11
+ export interface ChatMessage {
12
+ role: "user" | "assistant" | "tool";
13
+ content: string;
14
+ timestamp: string;
15
+ toolCall?: ChatToolCall;
16
+ }
17
+ /**
18
+ * Tool call metadata attached to a tool-role ChatMessage
19
+ */
20
+ export interface ChatToolCall {
21
+ toolName: string;
22
+ inputSummary?: string;
23
+ output: string;
24
+ isError: boolean;
25
+ durationMs?: number;
26
+ }
27
+ /**
28
+ * Summary metadata extracted from a session file
29
+ */
30
+ export interface SessionMetadata {
31
+ sessionId: string;
32
+ firstMessagePreview: string | undefined;
33
+ gitBranch: string | undefined;
34
+ claudeCodeVersion: string | undefined;
35
+ messageCount: number;
36
+ firstMessageAt: string | undefined;
37
+ lastMessageAt: string | undefined;
38
+ /** Auto-generated session summary from Claude Code (extracted from type: "summary" entries) */
39
+ summary: string | undefined;
40
+ /** Whether this session is a sidechain (sub-agent) session */
41
+ isSidechain: boolean;
42
+ }
43
+ /**
44
+ * Token usage summary extracted from a session file
45
+ */
46
+ export interface SessionUsage {
47
+ inputTokens: number;
48
+ turnCount: number;
49
+ hasData: boolean;
50
+ }
51
+ /**
52
+ * Parse a JSONL session file into an array of ChatMessages.
53
+ *
54
+ * Streams the file line by line for memory efficiency. Handles:
55
+ * - Plain user text messages
56
+ * - Assistant text messages (deduplicated by message.id)
57
+ * - Tool use blocks from assistant messages (stored as pending)
58
+ * - Tool result blocks from user messages (paired with pending tool uses)
59
+ *
60
+ * @param sessionFilePath - Absolute path to the .jsonl file
61
+ * @param options - Optional settings (limit caps total messages returned)
62
+ * @returns Array of ChatMessages in chronological order
63
+ */
64
+ export declare function parseSessionMessages(sessionFilePath: string, options?: {
65
+ limit?: number;
66
+ }): Promise<ChatMessage[]>;
67
+ /**
68
+ * Extract summary metadata from a JSONL session file.
69
+ *
70
+ * Streams the entire file to count messages and find timestamp bounds,
71
+ * but captures metadata fields from only the first relevant messages.
72
+ *
73
+ * @param sessionFilePath - Absolute path to the .jsonl file
74
+ * @returns Session metadata with counts and previews
75
+ */
76
+ export declare function extractSessionMetadata(sessionFilePath: string): Promise<SessionMetadata>;
77
+ /**
78
+ * Extract token usage data from a JSONL session file.
79
+ *
80
+ * Streams the file and tracks the last seen inputTokens value from
81
+ * assistant messages. The most recent value represents the current
82
+ * context window fill level (not cumulative across turns).
83
+ *
84
+ * @param sessionFilePath - Absolute path to the .jsonl file
85
+ * @returns Usage summary with input tokens, turn count, and data availability flag
86
+ */
87
+ export declare function extractSessionUsage(sessionFilePath: string): Promise<SessionUsage>;
88
+ /**
89
+ * Check if a session file represents a sidechain (sub-agent) session.
90
+ *
91
+ * Claude Code sets `isSidechain: true` on the first JSONL entry when:
92
+ * - The session is a Task tool sub-agent (most common — prompt-cache warmups)
93
+ * - The `--resume` flag was used to start the session
94
+ *
95
+ * These sessions are typically noise (a single "Warmup" message + response)
96
+ * and are filtered out of UI-facing session discovery to avoid clutter.
97
+ *
98
+ * Reads only the first line of the JSONL file for efficiency — O(1) per file.
99
+ *
100
+ * @param sessionFilePath - Absolute path to the .jsonl file
101
+ * @returns true if the session is a sidechain session
102
+ */
103
+ export declare function isSidechainSession(sessionFilePath: string): Promise<boolean>;
104
+ /**
105
+ * Extract only the last summary from a JSONL session file.
106
+ *
107
+ * This is a lightweight alternative to extractSessionMetadata when only the
108
+ * auto-generated session name is needed. It streams the file and returns the
109
+ * last `summary` value from entries with `type: "summary"`.
110
+ *
111
+ * @param sessionFilePath - Absolute path to the .jsonl file
112
+ * @returns The last summary string, or undefined if none found
113
+ */
114
+ export declare function extractLastSummary(sessionFilePath: string): Promise<string | undefined>;
115
+ //# sourceMappingURL=jsonl-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-parser.d.ts","sourceRoot":"","sources":["../../src/state/jsonl-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+FAA+F;IAC/F,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,8DAA8D;IAC9D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAsFD;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,WAAW,EAAE,CAAC,CA8IxB;AAMD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwG9F;AAMD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAsDxF;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBlF;AAMD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwB7F"}