@koda-sl/baker-bridge 0.142.0-dev.fe5f5a0fa → 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 -4
- package/dist/review/evidence.d.ts.map +1 -1
- package/dist/review/evidence.js +5 -18
- package/dist/review/evidence.js.map +1 -1
- package/dist/review/transcripts.d.ts +6 -17
- package/dist/review/transcripts.d.ts.map +1 -1
- package/dist/review/transcripts.js +19 -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 -92
- 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":"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"}
|
|
@@ -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;
|
|
@@ -83,7 +80,6 @@ export declare function digestPaths(projectRoot: string): DigestPaths;
|
|
|
83
80
|
*/
|
|
84
81
|
export declare function buildReviewDigest(threadIds: readonly string[], options?: {
|
|
85
82
|
projectRoot?: string;
|
|
86
|
-
projectsRoot?: string;
|
|
87
83
|
dir?: string;
|
|
88
84
|
}): Promise<DigestResult>;
|
|
89
85
|
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -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,26 +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
92
|
for (const file of thread.files) {
|
|
94
|
-
await absorbFile(file, { threadId: thread.threadId }, lines, skippedForSize
|
|
93
|
+
await absorbFile(file, { threadId: thread.threadId }, lines, skippedForSize);
|
|
95
94
|
}
|
|
96
95
|
// A subagent's own file records its prompt as an ordinary `user` line — the
|
|
97
96
|
// `isSidechain` flag lives only in the parent's copy. Taken at face value
|
|
98
97
|
// every fan-out opens a turn the marketer never took, and every per-turn
|
|
99
98
|
// number is then divided by a turn count that is wrong.
|
|
100
99
|
for (const file of thread.subagentFiles) {
|
|
101
|
-
await absorbFile(file, { threadId: thread.threadId, isSubagent: true }, lines, skippedForSize
|
|
100
|
+
await absorbFile(file, { threadId: thread.threadId, isSubagent: true }, lines, skippedForSize);
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
return { lines, skippedForSize };
|
|
105
104
|
}
|
|
106
105
|
/** Read one transcript, stamp every line with where it came from, or record why not. */
|
|
107
|
-
async function absorbFile(file, stamp, into, skippedForSize
|
|
106
|
+
async function absorbFile(file, stamp, into, skippedForSize) {
|
|
108
107
|
const bytes = await byteSize(file);
|
|
109
108
|
if (bytes !== null && bytes > MAX_TRANSCRIPT_BYTES) {
|
|
110
109
|
skippedForSize.push({ path: file, bytes });
|
|
@@ -115,14 +114,6 @@ async function absorbFile(file, stamp, into, skippedForSize, seenUuids) {
|
|
|
115
114
|
return;
|
|
116
115
|
}
|
|
117
116
|
for (const line of parseTranscript(body)) {
|
|
118
|
-
// A fork starts with a copy of the conversation it forked from, under the
|
|
119
|
-
// same uuids: the first file to carry a line is the one that counts it.
|
|
120
|
-
if (line.uuid !== undefined) {
|
|
121
|
-
if (seenUuids.has(line.uuid)) {
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
seenUuids.add(line.uuid);
|
|
125
|
-
}
|
|
126
117
|
into.push({ ...line, ...stamp });
|
|
127
118
|
}
|
|
128
119
|
}
|
|
@@ -146,10 +137,7 @@ export async function buildReviewDigest(threadIds, options = {}) {
|
|
|
146
137
|
const projectRoot = options.projectRoot ?? bridgeRuntimeFiles.projectRoot();
|
|
147
138
|
const dir = options.dir ?? DIGEST_DIR;
|
|
148
139
|
const paths = digestPaths(projectRoot);
|
|
149
|
-
const transcripts = await resolveThreadTranscripts(threadIds, {
|
|
150
|
-
projectRoot,
|
|
151
|
-
...(options.projectsRoot === undefined ? {} : { projectsRoot: options.projectsRoot }),
|
|
152
|
-
});
|
|
140
|
+
const transcripts = await resolveThreadTranscripts(threadIds, { projectRoot });
|
|
153
141
|
const { lines, skippedForSize } = await readTranscriptLines(transcripts);
|
|
154
142
|
const digest = buildTranscriptDigest(lines);
|
|
155
143
|
const debugBody = await readIfPresent(paths.debugLog);
|
|
@@ -161,13 +149,12 @@ export async function buildReviewDigest(threadIds, options = {}) {
|
|
|
161
149
|
threads: transcripts.map((thread) => ({
|
|
162
150
|
threadId: thread.threadId,
|
|
163
151
|
sessionIds: thread.sessionIds,
|
|
164
|
-
sessionIdsWithoutTranscript: thread.sessionIdsWithoutTranscript,
|
|
165
152
|
files: thread.files,
|
|
166
153
|
subagentFiles: thread.subagentFiles,
|
|
167
154
|
...(thread.missing === undefined ? {} : { missing: thread.missing }),
|
|
168
155
|
})),
|
|
169
156
|
transcriptsFound: transcripts.filter((thread) => thread.files.length > 0).length,
|
|
170
|
-
transcriptsMissing: transcripts.
|
|
157
|
+
transcriptsMissing: transcripts.filter((thread) => thread.missing !== undefined).length,
|
|
171
158
|
debugLogPresent: debugBody !== null,
|
|
172
159
|
turnEventsPresent: (await readIfPresent(paths.turnEvents)) !== null,
|
|
173
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,29 +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
17
|
export type ThreadTranscripts = {
|
|
27
18
|
threadId: string;
|
|
28
|
-
/** Every session id this thread ran under
|
|
19
|
+
/** Every session id this thread ran under. A stall fork resumes into a new one. */
|
|
29
20
|
sessionIds: string[];
|
|
30
|
-
/** Session ids the thread ran under whose transcript file is not on disk. */
|
|
31
|
-
sessionIdsWithoutTranscript: string[];
|
|
32
21
|
/** Transcript files that exist on disk. */
|
|
33
22
|
files: string[];
|
|
34
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,49 +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
|
-
sessionIds: [],
|
|
133
|
-
sessionIdsWithoutTranscript: [],
|
|
134
|
-
files: [],
|
|
135
|
-
subagentFiles: [],
|
|
136
|
-
missing: "no_session_file",
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
const files = [];
|
|
140
|
-
const sessionIdsWithoutTranscript = [];
|
|
141
|
-
const subagentFiles = [];
|
|
142
|
-
for (const sessionId of sessionIds) {
|
|
143
67
|
const file = join(projectDir, `${sessionId}.jsonl`);
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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" } : {}),
|
|
76
|
+
});
|
|
151
77
|
}
|
|
152
|
-
return
|
|
153
|
-
threadId,
|
|
154
|
-
sessionIds,
|
|
155
|
-
sessionIdsWithoutTranscript,
|
|
156
|
-
files,
|
|
157
|
-
subagentFiles,
|
|
158
|
-
...(files.length === 0 ? { missing: "no_transcript" } : {}),
|
|
159
|
-
};
|
|
78
|
+
return out;
|
|
160
79
|
}
|
|
161
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":""}
|