@koda-sl/baker-bridge 0.142.0 → 0.143.0-dev.d167daeeb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -7
- package/dist/hono/agent.d.ts.map +1 -1
- package/dist/hono/agent.js +3 -0
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/bridge-job.d.ts +16 -0
- package/dist/hono/bridge-job.d.ts.map +1 -1
- package/dist/hono/bridge-job.js +65 -13
- package/dist/hono/bridge-job.js.map +1 -1
- package/dist/hono/bridge-job.test.js +67 -33
- package/dist/hono/bridge-job.test.js.map +1 -1
- package/dist/hono/publish-handoff.d.ts +63 -0
- package/dist/hono/publish-handoff.d.ts.map +1 -0
- package/dist/hono/publish-handoff.js +261 -0
- package/dist/hono/publish-handoff.js.map +1 -0
- package/dist/hono/publish-handoff.test.d.ts +2 -0
- package/dist/hono/publish-handoff.test.d.ts.map +1 -0
- package/dist/hono/publish-handoff.test.js +91 -0
- package/dist/hono/publish-handoff.test.js.map +1 -0
- package/dist/hono/runtime-files.d.ts +1 -0
- package/dist/hono/runtime-files.d.ts.map +1 -1
- package/dist/hono/runtime-files.js +1 -0
- package/dist/hono/runtime-files.js.map +1 -1
- package/dist/hono/session-continuity.d.ts.map +1 -1
- package/dist/hono/session-continuity.js +5 -2
- package/dist/hono/session-continuity.js.map +1 -1
- package/dist/hono/turn-events.d.ts +1 -1
- package/dist/hono/turn-events.d.ts.map +1 -1
- package/dist/hono/turn-events.js.map +1 -1
- package/dist/hono/types.d.ts +2 -0
- package/dist/hono/types.d.ts.map +1 -1
- package/dist/review/evidence-block.d.ts.map +1 -1
- package/dist/review/evidence-block.js +1 -3
- package/dist/review/evidence-block.js.map +1 -1
- package/dist/review/evidence-block.test.js +1 -33
- package/dist/review/evidence-block.test.js.map +1 -1
- package/dist/review/evidence.d.ts +0 -3
- package/dist/review/evidence.d.ts.map +1 -1
- package/dist/review/evidence.js +11 -27
- package/dist/review/evidence.js.map +1 -1
- package/dist/review/transcripts.d.ts +6 -29
- package/dist/review/transcripts.d.ts.map +1 -1
- package/dist/review/transcripts.js +18 -100
- package/dist/review/transcripts.js.map +1 -1
- package/dist/review/transcripts.test.js +0 -37
- package/dist/review/transcripts.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/review/evidence.test.d.ts +0 -2
- package/dist/review/evidence.test.d.ts.map +0 -1
- package/dist/review/evidence.test.js +0 -94
- package/dist/review/evidence.test.js.map +0 -1
package/dist/hono/types.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ export interface DispatchHistoryEntry {
|
|
|
29
29
|
attachments?: DispatchHistoryAttachment[];
|
|
30
30
|
omittedAttachmentCount?: number;
|
|
31
31
|
sender?: DispatchSender;
|
|
32
|
+
/** In the user's seat but typed by no person (a plan decision, a casting decline): carries nobody's language. */
|
|
33
|
+
bakerWritten?: true;
|
|
32
34
|
}
|
|
33
35
|
export interface DispatchHistorySnapshot {
|
|
34
36
|
entries: DispatchHistoryEntry[];
|
package/dist/hono/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hono/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,8GAA8G;IAC9G,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,yBAAyB;IACjC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hono/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,8GAA8G;IAC9G,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,yBAAyB;IACjC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,iHAAiH;IACjH,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,cAAc,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sGAAsG;IACtG,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,gFAAgF;IAChF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC;QACnC,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-block.d.ts","sourceRoot":"","sources":["../../src/review/evidence-block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"evidence-block.d.ts","sourceRoot":"","sources":["../../src/review/evidence-block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC;AAgBF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CA0ErE"}
|
|
@@ -7,9 +7,7 @@ function threadLines(evidence) {
|
|
|
7
7
|
return `- ${thread.threadId}: **missing** (${why})`;
|
|
8
8
|
}
|
|
9
9
|
const subagents = thread.subagentFiles.length > 0 ? ` (+${thread.subagentFiles.length} subagent transcripts)` : "";
|
|
10
|
-
|
|
11
|
-
const partial = gone.length > 0 ? ` — **partly missing**: ${gone.join(", ")}` : "";
|
|
12
|
-
return `- ${thread.threadId}: ${thread.files.join(", ")}${subagents}${partial}`;
|
|
10
|
+
return `- ${thread.threadId}: ${thread.files.join(", ")}${subagents}`;
|
|
13
11
|
});
|
|
14
12
|
}
|
|
15
13
|
export function renderEvidenceBlock(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-block.js","sourceRoot":"","sources":["../../src/review/evidence-block.ts"],"names":[],"mappings":"AA8BA,SAAS,WAAW,CAAC,QAAwB;IAC3C,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,GACP,MAAM,CAAC,OAAO,KAAK,iBAAiB;gBAClC,CAAC,CAAC,wEAAwE;gBAC1E,CAAC,CAAC,sDAAsD,CAAC;YAC7D,OAAO,KAAK,MAAM,CAAC,QAAQ,kBAAkB,GAAG,GAAG,CAAC;QACtD,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,
|
|
1
|
+
{"version":3,"file":"evidence-block.js","sourceRoot":"","sources":["../../src/review/evidence-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,6 @@ function report(overrides = {}) {
|
|
|
9
9
|
{
|
|
10
10
|
threadId: "thread-1",
|
|
11
11
|
sessionIds: ["sess-1"],
|
|
12
|
-
sessionIdsWithoutTranscript: [],
|
|
13
12
|
files: ["/home/u/.claude/projects/p/sess-1.jsonl"],
|
|
14
13
|
subagentFiles: ["/home/u/.claude/projects/p/sess-1/subagents/a.jsonl"],
|
|
15
14
|
},
|
|
@@ -57,16 +56,7 @@ describe("renderEvidenceBlock", () => {
|
|
|
57
56
|
digestDir: "/tmp/d",
|
|
58
57
|
paths,
|
|
59
58
|
evidence: report({
|
|
60
|
-
threads: [
|
|
61
|
-
{
|
|
62
|
-
threadId: "t2",
|
|
63
|
-
sessionIds: [],
|
|
64
|
-
sessionIdsWithoutTranscript: [],
|
|
65
|
-
files: [],
|
|
66
|
-
subagentFiles: [],
|
|
67
|
-
missing: "no_session_file",
|
|
68
|
-
},
|
|
69
|
-
],
|
|
59
|
+
threads: [{ threadId: "t2", sessionIds: [], files: [], subagentFiles: [], missing: "no_session_file" }],
|
|
70
60
|
transcriptsFound: 0,
|
|
71
61
|
transcriptsMissing: 1,
|
|
72
62
|
}),
|
|
@@ -76,28 +66,6 @@ describe("renderEvidenceBlock", () => {
|
|
|
76
66
|
expect(block).toContain("t2: **missing**");
|
|
77
67
|
expect(block).toContain("no session file");
|
|
78
68
|
});
|
|
79
|
-
it("names a session the thread ran under whose transcript is gone, beside the ones it read", () => {
|
|
80
|
-
const block = renderEvidenceBlock({
|
|
81
|
-
digestDir: "/tmp/d",
|
|
82
|
-
paths,
|
|
83
|
-
evidence: report({
|
|
84
|
-
threads: [
|
|
85
|
-
{
|
|
86
|
-
threadId: "thread-1",
|
|
87
|
-
sessionIds: ["sess-0", "sess-1"],
|
|
88
|
-
sessionIdsWithoutTranscript: ["sess-0"],
|
|
89
|
-
files: ["/home/u/.claude/projects/p/sess-1.jsonl"],
|
|
90
|
-
subagentFiles: [],
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
transcriptsMissing: 1,
|
|
94
|
-
}),
|
|
95
|
-
chatId: "chat_1",
|
|
96
|
-
threadIds: ["thread-1"],
|
|
97
|
-
});
|
|
98
|
-
expect(block).toContain("/home/u/.claude/projects/p/sess-1.jsonl");
|
|
99
|
-
expect(block).toContain("no transcript for session sess-0");
|
|
100
|
-
});
|
|
101
69
|
it("puts the digest before the raw transcript in the reading order", () => {
|
|
102
70
|
// Starting on the JSONL spends the whole context arriving at numbers the
|
|
103
71
|
// digest already has — and getting them wrong on the way.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-block.test.js","sourceRoot":"","sources":["../../src/review/evidence-block.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAExC,SAAS,MAAM,CAAC,SAAS,GAA4B,EAAE;IACrD,OAAO;QACL,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE;YACP;gBACE,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,CAAC,QAAQ,CAAC;gBACtB,
|
|
1
|
+
{"version":3,"file":"evidence-block.test.js","sourceRoot":"","sources":["../../src/review/evidence-block.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,15 +16,12 @@ export type EvidenceReport = {
|
|
|
16
16
|
threads: {
|
|
17
17
|
threadId: string;
|
|
18
18
|
sessionIds: string[];
|
|
19
|
-
/** Session ids the thread ran under whose transcript is not on disk. */
|
|
20
|
-
sessionIdsWithoutTranscript: string[];
|
|
21
19
|
files: string[];
|
|
22
20
|
subagentFiles: string[];
|
|
23
21
|
/** Present when this thread's transcript could not be read, and why. */
|
|
24
22
|
missing?: string;
|
|
25
23
|
}[];
|
|
26
24
|
transcriptsFound: number;
|
|
27
|
-
/** Threads with no transcript at all, plus every session a thread ran under whose transcript is gone. */
|
|
28
25
|
transcriptsMissing: number;
|
|
29
26
|
debugLogPresent: boolean;
|
|
30
27
|
turnEventsPresent: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/review/evidence.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,aAAa,EAalB,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;GASG;AAEH,eAAO,MAAM,UAAU,6BAA6B,CAAC;AAKrD,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/review/evidence.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,aAAa,EAalB,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;;;GASG;AAEH,eAAO,MAAM,UAAU,6BAA6B,CAAC;AAKrD,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,wEAAwE;QACxE,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,aAAa,EAAE,CAAC;IACrB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,kEAAkE;IAClE,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,aAAa,EAAE,CAAC;IACrB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;CAC1B,GAAG,aAAa,EAAE,CAiBlB;AAkBD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAU5D;AA+DD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,YAAY,CAAC,CAyCvB"}
|
package/dist/review/evidence.js
CHANGED
|
@@ -85,32 +85,25 @@ async function readTranscriptLines(transcripts) {
|
|
|
85
85
|
const skippedForSize = [];
|
|
86
86
|
const lines = [];
|
|
87
87
|
for (const thread of transcripts) {
|
|
88
|
-
const seenUuids = new Set();
|
|
89
88
|
// Grouped by thread rather than interleaved by clock: two threads are two
|
|
90
89
|
// conversations, and a turn stream that alternates between them reads as
|
|
91
90
|
// one conversation nobody had. Each line is stamped instead, so a finding
|
|
92
91
|
// can name the thread it happened in.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
// `isSidechain` flag lives only in the parent's copy. Taken at face value
|
|
103
|
-
// every fan-out opens a turn the marketer never took, and every per-turn
|
|
104
|
-
// number is then divided by a turn count that is wrong.
|
|
105
|
-
for (const file of session.subagentFiles) {
|
|
106
|
-
await absorbFile(file, { threadId: thread.threadId, isSubagent: true }, lines, skippedForSize, seenUuids);
|
|
107
|
-
}
|
|
92
|
+
for (const file of thread.files) {
|
|
93
|
+
await absorbFile(file, { threadId: thread.threadId }, lines, skippedForSize);
|
|
94
|
+
}
|
|
95
|
+
// A subagent's own file records its prompt as an ordinary `user` line — the
|
|
96
|
+
// `isSidechain` flag lives only in the parent's copy. Taken at face value
|
|
97
|
+
// every fan-out opens a turn the marketer never took, and every per-turn
|
|
98
|
+
// number is then divided by a turn count that is wrong.
|
|
99
|
+
for (const file of thread.subagentFiles) {
|
|
100
|
+
await absorbFile(file, { threadId: thread.threadId, isSubagent: true }, lines, skippedForSize);
|
|
108
101
|
}
|
|
109
102
|
}
|
|
110
103
|
return { lines, skippedForSize };
|
|
111
104
|
}
|
|
112
105
|
/** Read one transcript, stamp every line with where it came from, or record why not. */
|
|
113
|
-
async function absorbFile(file, stamp, into, skippedForSize
|
|
106
|
+
async function absorbFile(file, stamp, into, skippedForSize) {
|
|
114
107
|
const bytes = await byteSize(file);
|
|
115
108
|
if (bytes !== null && bytes > MAX_TRANSCRIPT_BYTES) {
|
|
116
109
|
skippedForSize.push({ path: file, bytes });
|
|
@@ -121,14 +114,6 @@ async function absorbFile(file, stamp, into, skippedForSize, seenUuids) {
|
|
|
121
114
|
return;
|
|
122
115
|
}
|
|
123
116
|
for (const line of parseTranscript(body)) {
|
|
124
|
-
// A fork starts with a copy of the conversation it forked from, under the
|
|
125
|
-
// same uuids: the first file to carry a line is the one that counts it.
|
|
126
|
-
if (line.uuid !== undefined) {
|
|
127
|
-
if (seenUuids.has(line.uuid)) {
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
seenUuids.add(line.uuid);
|
|
131
|
-
}
|
|
132
117
|
into.push({ ...line, ...stamp });
|
|
133
118
|
}
|
|
134
119
|
}
|
|
@@ -164,13 +149,12 @@ export async function buildReviewDigest(threadIds, options = {}) {
|
|
|
164
149
|
threads: transcripts.map((thread) => ({
|
|
165
150
|
threadId: thread.threadId,
|
|
166
151
|
sessionIds: thread.sessionIds,
|
|
167
|
-
sessionIdsWithoutTranscript: thread.sessionIdsWithoutTranscript,
|
|
168
152
|
files: thread.files,
|
|
169
153
|
subagentFiles: thread.subagentFiles,
|
|
170
154
|
...(thread.missing === undefined ? {} : { missing: thread.missing }),
|
|
171
155
|
})),
|
|
172
156
|
transcriptsFound: transcripts.filter((thread) => thread.files.length > 0).length,
|
|
173
|
-
transcriptsMissing: transcripts.
|
|
157
|
+
transcriptsMissing: transcripts.filter((thread) => thread.missing !== undefined).length,
|
|
174
158
|
debugLogPresent: debugBody !== null,
|
|
175
159
|
turnEventsPresent: (await readIfPresent(paths.turnEvents)) !== null,
|
|
176
160
|
relayErrorsPresent: (await readIfPresent(paths.relayErrors)) !== null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/review/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,cAAc,EACd,qBAAqB,EAGrB,UAAU,EACV,eAAe,EACf,SAAS,EACT,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAKhB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,wBAAwB,EAA0B,MAAM,kBAAkB,CAAC;AAEpF;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAErD,uEAAuE;AACvE,MAAM,oBAAoB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/review/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,41 +6,18 @@
|
|
|
6
6
|
* this sandbox. That file is append-only, so it survives compaction: a
|
|
7
7
|
* compaction adds a summary line, it never removes one.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* and each id maps to `~/.claude/projects/<cwd-slug>/<sessionId>.jsonl` plus the
|
|
15
|
-
* subagent directory beside it — a subagent lives under the id it was spawned
|
|
16
|
-
* in, so reading the latest alone drops every earlier turn's fan-out.
|
|
17
|
-
*
|
|
18
|
-
* A fork copies the conversation so far into its new file under the same line
|
|
19
|
-
* uuids, so the files overlap; the reader dedupes by uuid.
|
|
20
|
-
*
|
|
21
|
-
* Whatever cannot be read is reported rather than skipped: "we could not read
|
|
22
|
-
* this" and "this had no tool calls" must never look the same to the reviewer.
|
|
9
|
+
* The mapping runs thread id → `~/.baker/sessions/<threadId>.json` → session id
|
|
10
|
+
* → `~/.claude/projects/<cwd-slug>/<sessionId>.jsonl`, plus the subagent
|
|
11
|
+
* directory beside it. A thread whose session file is missing is reported rather
|
|
12
|
+
* than skipped: "we could not read this thread" and "this thread had no tool
|
|
13
|
+
* calls" must never look the same to the reviewer.
|
|
23
14
|
*/
|
|
24
15
|
/** Claude Code names a project directory after its cwd, with every separator folded to `-`. */
|
|
25
16
|
export declare function projectSlug(cwd: string): string;
|
|
26
|
-
/** One session a thread ran under: its own transcript and the subagents spawned in it. */
|
|
27
|
-
export type SessionTranscripts = {
|
|
28
|
-
sessionId: string;
|
|
29
|
-
/** The session's transcript, or null when it is not on disk. */
|
|
30
|
-
file: string | null;
|
|
31
|
-
subagentFiles: string[];
|
|
32
|
-
};
|
|
33
17
|
export type ThreadTranscripts = {
|
|
34
18
|
threadId: string;
|
|
35
|
-
/**
|
|
36
|
-
* Per session, in run order. Read in this order so a subagent follows the turn
|
|
37
|
-
* that spawned it, not the thread's last turn.
|
|
38
|
-
*/
|
|
39
|
-
sessions: SessionTranscripts[];
|
|
40
|
-
/** Every session id this thread ran under, in the order it first ran under each. */
|
|
19
|
+
/** Every session id this thread ran under. A stall fork resumes into a new one. */
|
|
41
20
|
sessionIds: string[];
|
|
42
|
-
/** Session ids the thread ran under whose transcript file is not on disk. */
|
|
43
|
-
sessionIdsWithoutTranscript: string[];
|
|
44
21
|
/** Transcript files that exist on disk. */
|
|
45
22
|
files: string[];
|
|
46
23
|
/** Subagent transcript files, one per fan-out task. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcripts.d.ts","sourceRoot":"","sources":["../../src/review/transcripts.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"transcripts.d.ts","sourceRoot":"","sources":["../../src/review/transcripts.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AAEH,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;CAC/C,CAAC;AA6BF,MAAM,MAAM,uBAAuB,GAAG;IACpC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B"}
|
|
@@ -10,20 +10,11 @@ import { bridgeRuntimeFiles, runtimeFileStore } from "../hono/runtime-files.js";
|
|
|
10
10
|
* this sandbox. That file is append-only, so it survives compaction: a
|
|
11
11
|
* compaction adds a summary line, it never removes one.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* and each id maps to `~/.claude/projects/<cwd-slug>/<sessionId>.jsonl` plus the
|
|
19
|
-
* subagent directory beside it — a subagent lives under the id it was spawned
|
|
20
|
-
* in, so reading the latest alone drops every earlier turn's fan-out.
|
|
21
|
-
*
|
|
22
|
-
* A fork copies the conversation so far into its new file under the same line
|
|
23
|
-
* uuids, so the files overlap; the reader dedupes by uuid.
|
|
24
|
-
*
|
|
25
|
-
* Whatever cannot be read is reported rather than skipped: "we could not read
|
|
26
|
-
* this" and "this had no tool calls" must never look the same to the reviewer.
|
|
13
|
+
* The mapping runs thread id → `~/.baker/sessions/<threadId>.json` → session id
|
|
14
|
+
* → `~/.claude/projects/<cwd-slug>/<sessionId>.jsonl`, plus the subagent
|
|
15
|
+
* directory beside it. A thread whose session file is missing is reported rather
|
|
16
|
+
* than skipped: "we could not read this thread" and "this thread had no tool
|
|
17
|
+
* calls" must never look the same to the reviewer.
|
|
27
18
|
*/
|
|
28
19
|
/** Claude Code names a project directory after its cwd, with every separator folded to `-`. */
|
|
29
20
|
export function projectSlug(cwd) {
|
|
@@ -45,53 +36,6 @@ async function readSessionId(threadId) {
|
|
|
45
36
|
return undefined;
|
|
46
37
|
}
|
|
47
38
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Session ids per thread, in the order the bridge first saw each one.
|
|
50
|
-
*
|
|
51
|
-
* Absent or unreadable is an empty map: a Runtime whose bridge predates the
|
|
52
|
-
* `session` event still has the session file, which is what it had before.
|
|
53
|
-
*/
|
|
54
|
-
async function readTurnSessionIds() {
|
|
55
|
-
const byThread = new Map();
|
|
56
|
-
const result = await runtimeFileStore.readText(bridgeRuntimeFiles.turnEventsFile());
|
|
57
|
-
if (!result.ok) {
|
|
58
|
-
return byThread;
|
|
59
|
-
}
|
|
60
|
-
for (const line of result.value.split("\n")) {
|
|
61
|
-
const sessionId = sessionEventId(line);
|
|
62
|
-
if (!sessionId) {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
const ids = byThread.get(sessionId.threadId) ?? [];
|
|
66
|
-
if (!ids.includes(sessionId.sessionId)) {
|
|
67
|
-
ids.push(sessionId.sessionId);
|
|
68
|
-
}
|
|
69
|
-
byThread.set(sessionId.threadId, ids);
|
|
70
|
-
}
|
|
71
|
-
return byThread;
|
|
72
|
-
}
|
|
73
|
-
function sessionEventId(line) {
|
|
74
|
-
if (line.trim().length === 0) {
|
|
75
|
-
return undefined;
|
|
76
|
-
}
|
|
77
|
-
let parsed;
|
|
78
|
-
try {
|
|
79
|
-
parsed = JSON.parse(line);
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// A truncated final line is normal on a file still being appended to.
|
|
83
|
-
return undefined;
|
|
84
|
-
}
|
|
85
|
-
if (typeof parsed !== "object" || parsed === null) {
|
|
86
|
-
return undefined;
|
|
87
|
-
}
|
|
88
|
-
const event = parsed;
|
|
89
|
-
if (event.event !== "session" || typeof event.threadId !== "string") {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
const sessionId = event.detail?.sessionId;
|
|
93
|
-
return typeof sessionId === "string" && sessionId.length > 0 ? { threadId: event.threadId, sessionId } : undefined;
|
|
94
|
-
}
|
|
95
39
|
async function listJsonl(dir) {
|
|
96
40
|
try {
|
|
97
41
|
const entries = await readdir(dir);
|
|
@@ -113,50 +57,24 @@ export async function resolveThreadTranscripts(threadIds, options = {}) {
|
|
|
113
57
|
const projectsRoot = options.projectsRoot ?? join(homedir(), ".claude", "projects");
|
|
114
58
|
const projectDir = join(projectsRoot, projectSlug(projectRoot));
|
|
115
59
|
const onDisk = new Set(await listJsonl(projectDir));
|
|
116
|
-
const turnSessionIds = await readTurnSessionIds();
|
|
117
60
|
const out = [];
|
|
118
61
|
for (const threadId of threadIds) {
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
62
|
+
const sessionId = await readSessionId(threadId);
|
|
63
|
+
if (!sessionId) {
|
|
64
|
+
out.push({ threadId, sessionIds: [], files: [], subagentFiles: [], missing: "no_session_file" });
|
|
65
|
+
continue;
|
|
123
66
|
}
|
|
124
|
-
out.push(await threadTranscripts(threadId, sessionIds, projectDir, onDisk));
|
|
125
|
-
}
|
|
126
|
-
return out;
|
|
127
|
-
}
|
|
128
|
-
async function threadTranscripts(threadId, sessionIds, projectDir, onDisk) {
|
|
129
|
-
if (sessionIds.length === 0) {
|
|
130
|
-
return {
|
|
131
|
-
threadId,
|
|
132
|
-
sessions: [],
|
|
133
|
-
sessionIds: [],
|
|
134
|
-
sessionIdsWithoutTranscript: [],
|
|
135
|
-
files: [],
|
|
136
|
-
subagentFiles: [],
|
|
137
|
-
missing: "no_session_file",
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
const sessions = [];
|
|
141
|
-
for (const sessionId of sessionIds) {
|
|
142
67
|
const file = join(projectDir, `${sessionId}.jsonl`);
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
68
|
+
const files = onDisk.has(file) ? [file] : [];
|
|
69
|
+
const subagentFiles = await listJsonl(join(projectDir, sessionId, "subagents"));
|
|
70
|
+
out.push({
|
|
71
|
+
threadId,
|
|
72
|
+
sessionIds: [sessionId],
|
|
73
|
+
files,
|
|
74
|
+
subagentFiles,
|
|
75
|
+
...(files.length === 0 ? { missing: "no_transcript" } : {}),
|
|
147
76
|
});
|
|
148
77
|
}
|
|
149
|
-
|
|
150
|
-
return {
|
|
151
|
-
threadId,
|
|
152
|
-
sessions,
|
|
153
|
-
sessionIds,
|
|
154
|
-
sessionIdsWithoutTranscript: sessions
|
|
155
|
-
.filter((session) => session.file === null)
|
|
156
|
-
.map((session) => session.sessionId),
|
|
157
|
-
subagentFiles: sessions.flatMap((session) => session.subagentFiles),
|
|
158
|
-
files,
|
|
159
|
-
...(files.length === 0 ? { missing: "no_transcript" } : {}),
|
|
160
|
-
};
|
|
78
|
+
return out;
|
|
161
79
|
}
|
|
162
80
|
//# sourceMappingURL=transcripts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcripts.js","sourceRoot":"","sources":["../../src/review/transcripts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEhF
|
|
1
|
+
{"version":3,"file":"transcripts.js","sourceRoot":"","sources":["../../src/review/transcripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,6 @@ vi.mock("../hono/runtime-files.ts", async () => {
|
|
|
10
10
|
bridgeRuntimeFiles: {
|
|
11
11
|
...actual.bridgeRuntimeFiles,
|
|
12
12
|
sessionFile: (threadId) => join(bakerHome, "sessions", `${threadId}.json`),
|
|
13
|
-
turnEventsFile: () => join(bakerHome, "turn-events.jsonl"),
|
|
14
13
|
},
|
|
15
14
|
};
|
|
16
15
|
});
|
|
@@ -26,9 +25,6 @@ function writeSession(threadId, body) {
|
|
|
26
25
|
mkdirSync(join(bakerHome, "sessions"), { recursive: true });
|
|
27
26
|
writeFileSync(join(bakerHome, "sessions", `${threadId}.json`), body);
|
|
28
27
|
}
|
|
29
|
-
function writeTurnEvents(events) {
|
|
30
|
-
writeFileSync(join(bakerHome, "turn-events.jsonl"), events.map((event) => `${JSON.stringify(event)}\n`).join(""));
|
|
31
|
-
}
|
|
32
28
|
describe("projectSlug", () => {
|
|
33
29
|
it("folds every path separator and dot, the way Claude Code names its project directory", () => {
|
|
34
30
|
expect(projectSlug("/home/user/my.repo")).toBe("-home-user-my-repo");
|
|
@@ -82,38 +78,5 @@ describe("resolveThreadTranscripts", () => {
|
|
|
82
78
|
const result = await resolveThreadTranscripts(["thread-reaped"], { projectRoot, projectsRoot });
|
|
83
79
|
expect(result[0]?.missing).toBe("no_transcript");
|
|
84
80
|
});
|
|
85
|
-
it("joins every session a resumed thread ran under, with each one's subagents", async () => {
|
|
86
|
-
// Every message forks the SDK session: the thread's session file names only
|
|
87
|
-
// the last id, while the visual checks of turn 2 sit under the id turn 2 ran in.
|
|
88
|
-
const projectsRoot = mkdtempSync(join(tmpdir(), "projects-"));
|
|
89
|
-
created.push(projectsRoot);
|
|
90
|
-
const projectRoot = "/work/resumed";
|
|
91
|
-
const dir = join(projectsRoot, projectSlug(projectRoot));
|
|
92
|
-
mkdirSync(dir, { recursive: true });
|
|
93
|
-
for (const sessionId of ["s-turn1", "s-turn2", "s-turn3"]) {
|
|
94
|
-
writeFileSync(join(dir, `${sessionId}.jsonl`), "{}\n");
|
|
95
|
-
}
|
|
96
|
-
mkdirSync(join(dir, "s-turn2", "subagents"), { recursive: true });
|
|
97
|
-
writeFileSync(join(dir, "s-turn2", "subagents", "agent-v4.jsonl"), "{}\n");
|
|
98
|
-
writeFileSync(join(dir, "s-turn2", "subagents", "agent-v1.jsonl"), "{}\n");
|
|
99
|
-
mkdirSync(join(dir, "s-turn3", "subagents"), { recursive: true });
|
|
100
|
-
writeFileSync(join(dir, "s-turn3", "subagents", "agent-last.jsonl"), "{}\n");
|
|
101
|
-
writeSession("thread-resumed", JSON.stringify({ version: 2, sessionId: "s-turn3", updatedAtMs: 3 }));
|
|
102
|
-
writeTurnEvents([
|
|
103
|
-
{ threadId: "thread-resumed", turnId: "t1", event: "session", detail: { sessionId: "s-turn1" } },
|
|
104
|
-
{ threadId: "thread-other", turnId: "o1", event: "session", detail: { sessionId: "s-other" } },
|
|
105
|
-
{ threadId: "thread-resumed", turnId: "t2", event: "session", detail: { sessionId: "s-turn2" } },
|
|
106
|
-
{ threadId: "thread-resumed", turnId: "t2", event: "turn_end" },
|
|
107
|
-
{ threadId: "thread-resumed", turnId: "t3", event: "session", detail: { sessionId: "s-turn3" } },
|
|
108
|
-
]);
|
|
109
|
-
const [thread] = await resolveThreadTranscripts(["thread-resumed"], { projectRoot, projectsRoot });
|
|
110
|
-
expect(thread?.sessionIds).toEqual(["s-turn1", "s-turn2", "s-turn3"]);
|
|
111
|
-
expect(thread?.files).toEqual(["s-turn1", "s-turn2", "s-turn3"].map((id) => join(dir, `${id}.jsonl`)));
|
|
112
|
-
expect([...(thread?.subagentFiles ?? [])].sort()).toEqual([
|
|
113
|
-
join(dir, "s-turn2", "subagents", "agent-v1.jsonl"),
|
|
114
|
-
join(dir, "s-turn2", "subagents", "agent-v4.jsonl"),
|
|
115
|
-
join(dir, "s-turn3", "subagents", "agent-last.jsonl"),
|
|
116
|
-
].sort());
|
|
117
|
-
});
|
|
118
81
|
});
|
|
119
82
|
//# sourceMappingURL=transcripts.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcripts.test.js","sourceRoot":"","sources":["../../src/review/transcripts.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AAE7D,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;IAC7C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAA4C,0BAA0B,CAAC,CAAC;IAC5G,OAAO;QACL,GAAG,MAAM;QACT,kBAAkB,EAAE;YAClB,GAAG,MAAM,CAAC,kBAAkB;YAC5B,WAAW,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,QAAQ,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"transcripts.test.js","sourceRoot":"","sources":["../../src/review/transcripts.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koda-sl/baker-bridge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.143.0-dev.d167daeeb",
|
|
4
4
|
"description": "HTTP server wrapping the Claude Agent SDK. Persists chat events to Convex; the dashboard subscribes via Convex realtime",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.test.d.ts","sourceRoot":"","sources":["../../src/review/evidence.test.ts"],"names":[],"mappings":""}
|