@herdctl/core 5.6.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.
- package/dist/config/__tests__/merge.test.js +1 -1
- package/dist/config/__tests__/merge.test.js.map +1 -1
- package/dist/config/schema.d.ts +10 -2
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +6 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/scheduler/schedule-runner.d.ts.map +1 -1
- package/dist/scheduler/schedule-runner.js +6 -5
- package/dist/scheduler/schedule-runner.js.map +1 -1
- package/dist/state/__tests__/jsonl-parser.test.d.ts +5 -0
- package/dist/state/__tests__/jsonl-parser.test.d.ts.map +1 -0
- package/dist/state/__tests__/jsonl-parser.test.js +307 -0
- package/dist/state/__tests__/jsonl-parser.test.js.map +1 -0
- package/dist/state/__tests__/session-attribution.test.d.ts +2 -0
- package/dist/state/__tests__/session-attribution.test.d.ts.map +1 -0
- package/dist/state/__tests__/session-attribution.test.js +567 -0
- package/dist/state/__tests__/session-attribution.test.js.map +1 -0
- package/dist/state/__tests__/session-discovery.test.d.ts +2 -0
- package/dist/state/__tests__/session-discovery.test.d.ts.map +1 -0
- package/dist/state/__tests__/session-discovery.test.js +941 -0
- package/dist/state/__tests__/session-discovery.test.js.map +1 -0
- package/dist/state/__tests__/session-metadata.test.d.ts +2 -0
- package/dist/state/__tests__/session-metadata.test.d.ts.map +1 -0
- package/dist/state/__tests__/session-metadata.test.js +422 -0
- package/dist/state/__tests__/session-metadata.test.js.map +1 -0
- package/dist/state/__tests__/tool-parsing.test.d.ts +5 -0
- package/dist/state/__tests__/tool-parsing.test.d.ts.map +1 -0
- package/dist/state/__tests__/tool-parsing.test.js +315 -0
- package/dist/state/__tests__/tool-parsing.test.js.map +1 -0
- package/dist/state/index.d.ts +5 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +10 -0
- package/dist/state/index.js.map +1 -1
- package/dist/state/jsonl-parser.d.ts +115 -0
- package/dist/state/jsonl-parser.d.ts.map +1 -0
- package/dist/state/jsonl-parser.js +437 -0
- package/dist/state/jsonl-parser.js.map +1 -0
- package/dist/state/session-attribution.d.ts +35 -0
- package/dist/state/session-attribution.d.ts.map +1 -0
- package/dist/state/session-attribution.js +179 -0
- package/dist/state/session-attribution.js.map +1 -0
- package/dist/state/session-discovery.d.ts +188 -0
- package/dist/state/session-discovery.d.ts.map +1 -0
- package/dist/state/session-discovery.js +513 -0
- package/dist/state/session-discovery.js.map +1 -0
- package/dist/state/session-metadata.d.ts +186 -0
- package/dist/state/session-metadata.d.ts.map +1 -0
- package/dist/state/session-metadata.js +297 -0
- package/dist/state/session-metadata.js.map +1 -0
- package/dist/state/tool-parsing.d.ts +88 -0
- package/dist/state/tool-parsing.d.ts.map +1 -0
- package/dist/state/tool-parsing.js +199 -0
- package/dist/state/tool-parsing.js.map +1 -0
- 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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"}
|
package/dist/state/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/state/index.js
CHANGED
|
@@ -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
|
package/dist/state/index.js.map
CHANGED
|
@@ -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"}
|