@urateam/core 0.1.51 → 0.1.53
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/__tests__/execute-stage-session-opts.test.js +17 -8
- package/dist/__tests__/execute-stage-session-opts.test.js.map +1 -1
- package/dist/__tests__/session-lazy-creation.test.d.ts +17 -0
- package/dist/__tests__/session-lazy-creation.test.d.ts.map +1 -0
- package/dist/__tests__/session-lazy-creation.test.js +146 -0
- package/dist/__tests__/session-lazy-creation.test.js.map +1 -0
- package/dist/__tests__/session-resume-fallback.test.d.ts +16 -12
- package/dist/__tests__/session-resume-fallback.test.d.ts.map +1 -1
- package/dist/__tests__/session-resume-fallback.test.js +35 -27
- package/dist/__tests__/session-resume-fallback.test.js.map +1 -1
- package/dist/__tests__/session-store.test.js +23 -8
- package/dist/__tests__/session-store.test.js.map +1 -1
- package/dist/executor/executor.d.ts.map +1 -1
- package/dist/executor/executor.js +61 -51
- package/dist/executor/executor.js.map +1 -1
- package/dist/executor/session-store.d.ts +15 -0
- package/dist/executor/session-store.d.ts.map +1 -1
- package/dist/executor/session-store.js +16 -4
- package/dist/executor/session-store.js.map +1 -1
- package/package.json +1 -1
|
@@ -38,15 +38,19 @@ vi.mock("../executor/extract-handoff.js", () => ({
|
|
|
38
38
|
structured: true,
|
|
39
39
|
}),
|
|
40
40
|
}));
|
|
41
|
-
// BEC-227 Task 7
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
//
|
|
41
|
+
// BEC-227 Task 7 / BEC-231 update: under BEC-231 the executor derives the
|
|
42
|
+
// session shape from `transcriptExists()` on every stage entry, not from an
|
|
43
|
+
// in-memory `isFirstResumableStage` flag. Mock the helper so each test below
|
|
44
|
+
// can set the return value to exercise either the "first/create" path
|
|
45
|
+
// (false → `sessionId:`) or the "resume" path (true → `resume:`).
|
|
46
|
+
const { transcriptExistsMock } = vi.hoisted(() => ({
|
|
47
|
+
transcriptExistsMock: vi.fn().mockReturnValue(true),
|
|
48
|
+
}));
|
|
45
49
|
vi.mock("../executor/session-store.js", async () => {
|
|
46
50
|
const real = await vi.importActual("../executor/session-store.js");
|
|
47
51
|
return {
|
|
48
52
|
...real,
|
|
49
|
-
transcriptExists:
|
|
53
|
+
transcriptExists: transcriptExistsMock,
|
|
50
54
|
};
|
|
51
55
|
});
|
|
52
56
|
// ── Imports ───────────────────────────────────────────────────────────────────
|
|
@@ -97,9 +101,12 @@ describe("executeStage — agent session options (BEC-227, Task 6)", () => {
|
|
|
97
101
|
db = await createDb({ connectionString: ":memory:" });
|
|
98
102
|
vi.clearAllMocks();
|
|
99
103
|
});
|
|
100
|
-
it("first resumable stage: passes options.sessionId, NOT options.resume", async () => {
|
|
104
|
+
it("first resumable stage (JSONL absent): passes options.sessionId, NOT options.resume", async () => {
|
|
101
105
|
const { query } = await import("@anthropic-ai/claude-agent-sdk");
|
|
102
106
|
query.mockReturnValue(makeMinimalStream());
|
|
107
|
+
// BEC-231: "first resumable stage" semantically means "JSONL doesn't
|
|
108
|
+
// exist yet" — the create path. Force the existence check to false.
|
|
109
|
+
transcriptExistsMock.mockReturnValue(false);
|
|
103
110
|
await seedPipelineRun(db, "run-first-resumable");
|
|
104
111
|
await executeStage({
|
|
105
112
|
runId: "run-first-resumable",
|
|
@@ -110,7 +117,7 @@ describe("executeStage — agent session options (BEC-227, Task 6)", () => {
|
|
|
110
117
|
workdir: "/tmp/bec227-workdir",
|
|
111
118
|
db,
|
|
112
119
|
agentSessionId: "uuid-1",
|
|
113
|
-
isFirstResumableStage: true,
|
|
120
|
+
isFirstResumableStage: true, // BEC-231: ignored; transcriptExists drives the shape
|
|
114
121
|
});
|
|
115
122
|
expect(query).toHaveBeenCalledOnce();
|
|
116
123
|
const opts = query.mock.calls[0][0].options;
|
|
@@ -123,9 +130,11 @@ describe("executeStage — agent session options (BEC-227, Task 6)", () => {
|
|
|
123
130
|
excludeDynamicSections: true,
|
|
124
131
|
});
|
|
125
132
|
});
|
|
126
|
-
it("non-first resumable stage: passes options.resume, NOT options.sessionId", async () => {
|
|
133
|
+
it("non-first resumable stage (JSONL present): passes options.resume, NOT options.sessionId", async () => {
|
|
127
134
|
const { query } = await import("@anthropic-ai/claude-agent-sdk");
|
|
128
135
|
query.mockReturnValue(makeMinimalStream());
|
|
136
|
+
// BEC-231: JSONL is present on disk → resume path
|
|
137
|
+
transcriptExistsMock.mockReturnValue(true);
|
|
129
138
|
await seedPipelineRun(db, "run-non-first-resumable");
|
|
130
139
|
await executeStage({
|
|
131
140
|
runId: "run-non-first-resumable",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-stage-session-opts.test.js","sourceRoot":"","sources":["../../src/__tests__/execute-stage-session-opts.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9D,iFAAiF;AAEjF,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;CACf,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAClD,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;CAClE,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACxC,QAAQ,EAAE;YACR,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,cAAc;YACvB,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YAC/D,WAAW,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE;SAC9D;QACD,UAAU,EAAE,IAAI;KACjB,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,
|
|
1
|
+
{"version":3,"file":"execute-stage-session-opts.test.js","sourceRoot":"","sources":["../../src/__tests__/execute-stage-session-opts.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BEC-231 — Lazy / retry SDK session creation.
|
|
3
|
+
*
|
|
4
|
+
* Reproduces the production bug surfaced during the BEC-227 Phase 2 dogfood
|
|
5
|
+
* soak: when the first resumable stage's SDK call fails before any JSONL
|
|
6
|
+
* message is written (auth 401, pre-stream stall, etc.), subsequent stages
|
|
7
|
+
* MUST retry the create path (`sessionId:`) rather than blindly using
|
|
8
|
+
* `resume:` against a transcript that never materialized.
|
|
9
|
+
*
|
|
10
|
+
* The pre-BEC-231 implementation used an in-memory `hasInitiatedSession` flag
|
|
11
|
+
* (flipped after the first resumable stage's CALL, not after the SDK actually
|
|
12
|
+
* wrote a message). The new implementation derives the shape from
|
|
13
|
+
* `transcriptExists()` on every stage entry, so a stage 2 invocation against
|
|
14
|
+
* a non-existent JSONL re-attempts creation.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=session-lazy-creation.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-lazy-creation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/session-lazy-creation.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BEC-231 — Lazy / retry SDK session creation.
|
|
3
|
+
*
|
|
4
|
+
* Reproduces the production bug surfaced during the BEC-227 Phase 2 dogfood
|
|
5
|
+
* soak: when the first resumable stage's SDK call fails before any JSONL
|
|
6
|
+
* message is written (auth 401, pre-stream stall, etc.), subsequent stages
|
|
7
|
+
* MUST retry the create path (`sessionId:`) rather than blindly using
|
|
8
|
+
* `resume:` against a transcript that never materialized.
|
|
9
|
+
*
|
|
10
|
+
* The pre-BEC-231 implementation used an in-memory `hasInitiatedSession` flag
|
|
11
|
+
* (flipped after the first resumable stage's CALL, not after the SDK actually
|
|
12
|
+
* wrote a message). The new implementation derives the shape from
|
|
13
|
+
* `transcriptExists()` on every stage entry, so a stage 2 invocation against
|
|
14
|
+
* a non-existent JSONL re-attempts creation.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
17
|
+
// ── Module mocks (declared before imports) ────────────────────────────────────
|
|
18
|
+
vi.mock("@anthropic-ai/claude-agent-sdk", () => ({
|
|
19
|
+
query: vi.fn(),
|
|
20
|
+
}));
|
|
21
|
+
vi.mock("../executor/auth-check.js", () => ({
|
|
22
|
+
isClaudeAuthValid: vi.fn().mockResolvedValue(true),
|
|
23
|
+
resolveClaudeAuth: vi.fn().mockReturnValue({ method: "session" }),
|
|
24
|
+
}));
|
|
25
|
+
vi.mock("../executor/extract-handoff.js", () => ({
|
|
26
|
+
extractHandoff: vi.fn().mockResolvedValue({
|
|
27
|
+
artifact: {
|
|
28
|
+
runId: "run-bec231",
|
|
29
|
+
issueId: "BEC-231",
|
|
30
|
+
stage: "implement",
|
|
31
|
+
timestamp: new Date().toISOString(),
|
|
32
|
+
summary: "Stub handoff",
|
|
33
|
+
filesChanged: [],
|
|
34
|
+
approach: "Stub",
|
|
35
|
+
context: { issueIntent: "x", constraints: [], assumptions: [] },
|
|
36
|
+
tokenBudget: { contextTokensUsed: 0, recommendedMaxTurns: 1 },
|
|
37
|
+
},
|
|
38
|
+
structured: true,
|
|
39
|
+
}),
|
|
40
|
+
}));
|
|
41
|
+
const { transcriptExistsMock } = vi.hoisted(() => ({
|
|
42
|
+
transcriptExistsMock: vi.fn(),
|
|
43
|
+
}));
|
|
44
|
+
vi.mock("../executor/session-store.js", async () => {
|
|
45
|
+
const real = await vi.importActual("../executor/session-store.js");
|
|
46
|
+
return {
|
|
47
|
+
...real,
|
|
48
|
+
transcriptExists: transcriptExistsMock,
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
// ── Imports ───────────────────────────────────────────────────────────────────
|
|
52
|
+
import { executeStage } from "../executor/executor.js";
|
|
53
|
+
import { createDb } from "../db/client.js";
|
|
54
|
+
import { pipelineRuns } from "../db/schema.js";
|
|
55
|
+
// ── Fixtures ──────────────────────────────────────────────────────────────────
|
|
56
|
+
const testIssue = {
|
|
57
|
+
id: "BEC-231",
|
|
58
|
+
slug: "lazy-session-creation",
|
|
59
|
+
title: "BEC-231 lazy session creation",
|
|
60
|
+
description: "Verify session shape is derived from on-disk state",
|
|
61
|
+
acceptanceCriteria: ["transcriptExists drives sessionId vs resume choice"],
|
|
62
|
+
labels: ["bug"],
|
|
63
|
+
priority: 2,
|
|
64
|
+
};
|
|
65
|
+
const testRepoConfig = {
|
|
66
|
+
url: "https://github.com/test-org/test-repo",
|
|
67
|
+
defaultBranch: "main",
|
|
68
|
+
testCommand: "echo ok",
|
|
69
|
+
buildCommand: "echo ok",
|
|
70
|
+
};
|
|
71
|
+
async function seedPipelineRun(db, runId) {
|
|
72
|
+
await db.insert(pipelineRuns).values({
|
|
73
|
+
id: runId,
|
|
74
|
+
issueId: testIssue.id,
|
|
75
|
+
issueTitle: testIssue.title,
|
|
76
|
+
pipelineKey: "auto-implement",
|
|
77
|
+
repoUrl: testRepoConfig.url,
|
|
78
|
+
branch: `agent/${runId}`,
|
|
79
|
+
status: "running",
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function makeMinimalStream() {
|
|
83
|
+
return (async function* () {
|
|
84
|
+
yield { type: "assistant", content: [{ type: "text", text: "done" }] };
|
|
85
|
+
})();
|
|
86
|
+
}
|
|
87
|
+
// ── Tests ─────────────────────────────────────────────────────────────────────
|
|
88
|
+
describe("BEC-231 — lazy session creation derives shape from transcriptExists()", () => {
|
|
89
|
+
let db;
|
|
90
|
+
beforeEach(async () => {
|
|
91
|
+
db = await createDb({ connectionString: ":memory:" });
|
|
92
|
+
vi.clearAllMocks();
|
|
93
|
+
});
|
|
94
|
+
it("isFirstResumableStage=false BUT transcript absent → retries create (sessionId:), not resume:", async () => {
|
|
95
|
+
// This is the exact bug pattern: a "second" stage gets called with
|
|
96
|
+
// isFirstResumableStage=false (because the runner's in-memory flag
|
|
97
|
+
// believed the first stage initiated the session) but the JSONL was
|
|
98
|
+
// never written (first stage failed at auth before any SDK message).
|
|
99
|
+
// Pre-BEC-231: routed to resume:, found JSONL missing, dropped to
|
|
100
|
+
// legacy fresh-session-no-opts, lost the session permanently.
|
|
101
|
+
// Post-BEC-231: routes to sessionId: → SDK creates the session now.
|
|
102
|
+
const { query } = await import("@anthropic-ai/claude-agent-sdk");
|
|
103
|
+
query.mockReturnValue(makeMinimalStream());
|
|
104
|
+
transcriptExistsMock.mockReturnValue(false);
|
|
105
|
+
await seedPipelineRun(db, "run-bec231-stage2-recreate");
|
|
106
|
+
await executeStage({
|
|
107
|
+
runId: "run-bec231-stage2-recreate",
|
|
108
|
+
issueId: testIssue.id,
|
|
109
|
+
stage: "implement",
|
|
110
|
+
sanitizedIssue: testIssue,
|
|
111
|
+
repoConfig: testRepoConfig,
|
|
112
|
+
workdir: "/tmp/bec231-workdir",
|
|
113
|
+
db,
|
|
114
|
+
agentSessionId: "uuid-bec231",
|
|
115
|
+
isFirstResumableStage: false,
|
|
116
|
+
});
|
|
117
|
+
const opts = query.mock.calls[0][0].options;
|
|
118
|
+
expect(opts.sessionId).toBe("uuid-bec231");
|
|
119
|
+
expect(opts.resume).toBeUndefined();
|
|
120
|
+
});
|
|
121
|
+
it("isFirstResumableStage=true AND transcript present → resumes (transcriptExists wins over the flag)", async () => {
|
|
122
|
+
// Symmetric case: the runner says "this is the first resumable stage"
|
|
123
|
+
// but the JSONL actually already exists (e.g. retriable resume after a
|
|
124
|
+
// restart that lost the in-memory flag). BEC-231 still routes to
|
|
125
|
+
// resume: because the transcript is on disk.
|
|
126
|
+
const { query } = await import("@anthropic-ai/claude-agent-sdk");
|
|
127
|
+
query.mockReturnValue(makeMinimalStream());
|
|
128
|
+
transcriptExistsMock.mockReturnValue(true);
|
|
129
|
+
await seedPipelineRun(db, "run-bec231-restarted");
|
|
130
|
+
await executeStage({
|
|
131
|
+
runId: "run-bec231-restarted",
|
|
132
|
+
issueId: testIssue.id,
|
|
133
|
+
stage: "implement",
|
|
134
|
+
sanitizedIssue: testIssue,
|
|
135
|
+
repoConfig: testRepoConfig,
|
|
136
|
+
workdir: "/tmp/bec231-workdir",
|
|
137
|
+
db,
|
|
138
|
+
agentSessionId: "uuid-bec231-existing",
|
|
139
|
+
isFirstResumableStage: true,
|
|
140
|
+
});
|
|
141
|
+
const opts = query.mock.calls[0][0].options;
|
|
142
|
+
expect(opts.resume).toBe("uuid-bec231-existing");
|
|
143
|
+
expect(opts.sessionId).toBeUndefined();
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
//# sourceMappingURL=session-lazy-creation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-lazy-creation.test.js","sourceRoot":"","sources":["../../src/__tests__/session-lazy-creation.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9D,iFAAiF;AAEjF,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;CACf,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAClD,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;CAClE,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACxC,QAAQ,EAAE;YACR,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,cAAc;YACvB,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YAC/D,WAAW,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE;SAC9D;QACD,UAAU,EAAE,IAAI;KACjB,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,MAAM,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC9B,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;IACjD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,YAAY,CAChC,8BAA8B,CAC/B,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,gBAAgB,EAAE,oBAAoB;KACvC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAW,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,iFAAiF;AAEjF,MAAM,SAAS,GAAmB;IAChC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,oDAAoD;IACjE,kBAAkB,EAAE,CAAC,oDAAoD,CAAC;IAC1E,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,cAAc,GAAe;IACjC,GAAG,EAAE,uCAAuC;IAC5C,aAAa,EAAE,MAAM;IACrB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;CACxB,CAAC;AAEF,KAAK,UAAU,eAAe,CAAC,EAAM,EAAE,KAAa;IAClD,MAAO,EAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;QAC5C,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,SAAS,CAAC,EAAE;QACrB,UAAU,EAAE,SAAS,CAAC,KAAK;QAC3B,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,cAAc,CAAC,GAAG;QAC3B,MAAM,EAAE,SAAS,KAAK,EAAE;QACxB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CAAC,KAAK,SAAS,CAAC;QACrB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,iFAAiF;AAEjF,QAAQ,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACrF,IAAI,EAAM,CAAC;IAEX,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC;QACtD,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;QAC5G,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,qEAAqE;QACrE,kEAAkE;QAClE,8DAA8D;QAC9D,oEAAoE;QACpE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAChE,KAAa,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACpD,oBAAoB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,MAAM,eAAe,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAExD,MAAM,YAAY,CAAC;YACjB,KAAK,EAAE,4BAA4B;YACnC,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,KAAK,EAAE,WAAW;YAClB,cAAc,EAAE,SAAS;YACzB,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE,qBAAqB;YAC9B,EAAE;YACF,cAAc,EAAE,aAAa;YAC7B,qBAAqB,EAAE,KAAK;SAC7B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAI,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mGAAmG,EAAE,KAAK,IAAI,EAAE;QACjH,sEAAsE;QACtE,uEAAuE;QACvE,iEAAiE;QACjE,6CAA6C;QAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAChE,KAAa,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACpD,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,eAAe,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,YAAY,CAAC;YACjB,KAAK,EAAE,sBAAsB;YAC7B,OAAO,EAAE,SAAS,CAAC,EAAE;YACrB,KAAK,EAAE,WAAW;YAClB,cAAc,EAAE,SAAS;YACzB,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE,qBAAqB;YAC9B,EAAE;YACF,cAAc,EAAE,sBAAsB;YACtC,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAI,KAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tests for BEC-227
|
|
3
|
-
* JSONL-exists pre-check on the resume path of `executeStage()`.
|
|
2
|
+
* Tests for BEC-227 Task 7, AS UPDATED BY BEC-231 (lazy session creation).
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
4
|
+
* Original BEC-227 design (T7): when `isFirstResumableStage=false` AND the
|
|
5
|
+
* JSONL is missing, drop to fresh-session shape (no opts) + emit
|
|
6
|
+
* `missing_fallback` audit event. The bug: the in-memory `hasInitiatedSession`
|
|
7
|
+
* flag flipped after the first stage's CALL, not after the SDK actually wrote
|
|
8
|
+
* the JSONL. If the first stage failed (auth 401, etc.) before writing, every
|
|
9
|
+
* later stage thought "session initiated; use resume:" but the JSONL didn't
|
|
10
|
+
* exist, so they all dropped to fresh-session-with-no-opts — losing the
|
|
11
|
+
* session permanently for the run's lifetime.
|
|
13
12
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* BEC-231 fix: derive the shape from on-disk state, not from the in-memory
|
|
14
|
+
* flag. JSONL present → `resume:`. JSONL absent → `sessionId:` (retries
|
|
15
|
+
* creation). The `missing_fallback` audit event is no longer emitted from
|
|
16
|
+
* the executor — the new logic always picks the right shape.
|
|
17
|
+
*
|
|
18
|
+
* This test now verifies the new behavior: missing JSONL → SDK call shape
|
|
19
|
+
* is `{ sessionId: <uuid> }` (the create/retry path), NOT empty opts.
|
|
16
20
|
*/
|
|
17
21
|
export {};
|
|
18
22
|
//# sourceMappingURL=session-resume-fallback.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resume-fallback.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/session-resume-fallback.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-resume-fallback.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/session-resume-fallback.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tests for BEC-227
|
|
3
|
-
* JSONL-exists pre-check on the resume path of `executeStage()`.
|
|
2
|
+
* Tests for BEC-227 Task 7, AS UPDATED BY BEC-231 (lazy session creation).
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
4
|
+
* Original BEC-227 design (T7): when `isFirstResumableStage=false` AND the
|
|
5
|
+
* JSONL is missing, drop to fresh-session shape (no opts) + emit
|
|
6
|
+
* `missing_fallback` audit event. The bug: the in-memory `hasInitiatedSession`
|
|
7
|
+
* flag flipped after the first stage's CALL, not after the SDK actually wrote
|
|
8
|
+
* the JSONL. If the first stage failed (auth 401, etc.) before writing, every
|
|
9
|
+
* later stage thought "session initiated; use resume:" but the JSONL didn't
|
|
10
|
+
* exist, so they all dropped to fresh-session-with-no-opts — losing the
|
|
11
|
+
* session permanently for the run's lifetime.
|
|
13
12
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* BEC-231 fix: derive the shape from on-disk state, not from the in-memory
|
|
14
|
+
* flag. JSONL present → `resume:`. JSONL absent → `sessionId:` (retries
|
|
15
|
+
* creation). The `missing_fallback` audit event is no longer emitted from
|
|
16
|
+
* the executor — the new logic always picks the right shape.
|
|
17
|
+
*
|
|
18
|
+
* This test now verifies the new behavior: missing JSONL → SDK call shape
|
|
19
|
+
* is `{ sessionId: <uuid> }` (the create/retry path), NOT empty opts.
|
|
16
20
|
*/
|
|
17
21
|
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
18
22
|
// ── Module mocks (declared before imports) ────────────────────────────────────
|
|
@@ -97,7 +101,7 @@ function makeMinimalStream() {
|
|
|
97
101
|
})();
|
|
98
102
|
}
|
|
99
103
|
// ── Tests ─────────────────────────────────────────────────────────────────────
|
|
100
|
-
describe("executeStage — session
|
|
104
|
+
describe("executeStage — lazy session creation when JSONL absent (BEC-231 update of BEC-227 T7)", () => {
|
|
101
105
|
let db;
|
|
102
106
|
beforeEach(async () => {
|
|
103
107
|
db = await createDb({ connectionString: ":memory:" });
|
|
@@ -105,33 +109,37 @@ describe("executeStage — session resume fallback (BEC-227, Task 7)", () => {
|
|
|
105
109
|
logAuditEventMock.mockClear();
|
|
106
110
|
logAuditEventMock.mockResolvedValue(undefined);
|
|
107
111
|
});
|
|
108
|
-
it("transcript missing →
|
|
112
|
+
it("transcript missing → retries session creation (sessionId set), does NOT emit missing_fallback (BEC-231)", async () => {
|
|
109
113
|
const { query } = await import("@anthropic-ai/claude-agent-sdk");
|
|
110
114
|
query.mockReturnValue(makeMinimalStream());
|
|
111
|
-
await seedPipelineRun(db, "run-
|
|
115
|
+
await seedPipelineRun(db, "run-bec231-retry-create");
|
|
116
|
+
// Even though the caller passes isFirstResumableStage=false (the old
|
|
117
|
+
// pre-BEC-231 callers do this for non-first stages), the new logic checks
|
|
118
|
+
// transcriptExists() and routes to sessionId: when it returns false.
|
|
112
119
|
await executeStage({
|
|
113
|
-
runId: "run-
|
|
120
|
+
runId: "run-bec231-retry-create",
|
|
114
121
|
issueId: testIssue.id,
|
|
115
122
|
stage: "implement",
|
|
116
123
|
sanitizedIssue: testIssue,
|
|
117
124
|
repoConfig: testRepoConfig,
|
|
118
|
-
workdir: "/nonexistent/path/
|
|
125
|
+
workdir: "/nonexistent/path/bec231",
|
|
119
126
|
db,
|
|
120
|
-
agentSessionId: "uuid-
|
|
121
|
-
isFirstResumableStage: false,
|
|
127
|
+
agentSessionId: "uuid-bec231-recreate",
|
|
128
|
+
isFirstResumableStage: false, // ← ignored under BEC-231
|
|
122
129
|
});
|
|
123
|
-
// SDK call shape: no resume, no sessionId (fresh)
|
|
124
130
|
expect(query).toHaveBeenCalledOnce();
|
|
125
131
|
const opts = query.mock.calls[0][0].options;
|
|
132
|
+
// BEC-231: when JSONL is absent, we (re-)create with sessionId: rather
|
|
133
|
+
// than dropping to legacy fresh-session shape.
|
|
134
|
+
expect(opts.sessionId).toBe("uuid-bec231-recreate");
|
|
126
135
|
expect(opts.resume).toBeUndefined();
|
|
127
|
-
|
|
128
|
-
//
|
|
136
|
+
// BEC-231: missing_fallback audit event is no longer emitted from the
|
|
137
|
+
// executor — the new logic always picks the right shape.
|
|
129
138
|
const fallbackCall = logAuditEventMock.mock.calls.find((call) => call[1]?.eventType === "pipeline.agent_session_missing_fallback");
|
|
130
|
-
expect(fallbackCall).
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
expect(
|
|
134
|
-
expect(fallbackCall[1].payload.issueId).toBe(testIssue.id);
|
|
139
|
+
expect(fallbackCall).toBeUndefined();
|
|
140
|
+
// resumed event is also not emitted (we're creating, not resuming).
|
|
141
|
+
const resumedCall = logAuditEventMock.mock.calls.find((call) => call[1]?.eventType === "pipeline.agent_session_resumed");
|
|
142
|
+
expect(resumedCall).toBeUndefined();
|
|
135
143
|
});
|
|
136
144
|
});
|
|
137
145
|
//# sourceMappingURL=session-resume-fallback.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resume-fallback.test.js","sourceRoot":"","sources":["../../src/__tests__/session-resume-fallback.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-resume-fallback.test.js","sourceRoot":"","sources":["../../src/__tests__/session-resume-fallback.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,24 +10,25 @@ beforeEach(() => {
|
|
|
10
10
|
afterEach(() => {
|
|
11
11
|
rmSync(tmpRoot, { recursive: true, force: true });
|
|
12
12
|
});
|
|
13
|
-
describe("session-store (BEC-227)", () => {
|
|
14
|
-
it("transcriptPath builds the
|
|
13
|
+
describe("session-store (BEC-227 + BEC-232)", () => {
|
|
14
|
+
it("transcriptPath builds the SDK's leading-dash encoding for absolute cwds (BEC-232)", () => {
|
|
15
15
|
const p = transcriptPath({
|
|
16
16
|
projectsRoot: tmpRoot,
|
|
17
17
|
cwd: "/home/ura/data/runs/abc/worktree",
|
|
18
18
|
sessionId: "uuid-1",
|
|
19
19
|
});
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
expect(p).
|
|
20
|
+
// BEC-232: leading "/" is replaced with "-", not stripped. Matches the
|
|
21
|
+
// SDK's actual on-disk path: <projectsRoot>/-home-ura-...-worktree/<id>.jsonl
|
|
22
|
+
expect(p).toBe(join(tmpRoot, "-home-ura-data-runs-abc-worktree", "uuid-1.jsonl"));
|
|
23
23
|
});
|
|
24
|
-
it("transcriptExists returns true when the JSONL file is
|
|
25
|
-
|
|
24
|
+
it("transcriptExists returns true when the JSONL file is at the SDK-encoded path", () => {
|
|
25
|
+
// Place the file where the SDK would actually write it (leading-dash dir).
|
|
26
|
+
const dir = join(tmpRoot, "-home-ura-data-runs-abc-worktree");
|
|
26
27
|
mkdirSync(dir, { recursive: true });
|
|
27
28
|
writeFileSync(join(dir, "uuid-1.jsonl"), '{"message":"hi"}\n');
|
|
28
29
|
const exists = transcriptExists({
|
|
29
30
|
projectsRoot: tmpRoot,
|
|
30
|
-
cwd: "/
|
|
31
|
+
cwd: "/home/ura/data/runs/abc/worktree",
|
|
31
32
|
sessionId: "uuid-1",
|
|
32
33
|
});
|
|
33
34
|
expect(exists).toBe(true);
|
|
@@ -40,5 +41,19 @@ describe("session-store (BEC-227)", () => {
|
|
|
40
41
|
});
|
|
41
42
|
expect(exists).toBe(false);
|
|
42
43
|
});
|
|
44
|
+
it("regression (BEC-232): the OLD no-leading-dash path is NOT what we look up", () => {
|
|
45
|
+
// If anyone places a JSONL at the pre-BEC-232 (incorrect) location,
|
|
46
|
+
// transcriptExists() should NOT find it — the fix is unconditional, not
|
|
47
|
+
// a fallback-to-old-path behavior.
|
|
48
|
+
const wrongDir = join(tmpRoot, "home-ura-data-runs-abc-worktree");
|
|
49
|
+
mkdirSync(wrongDir, { recursive: true });
|
|
50
|
+
writeFileSync(join(wrongDir, "uuid-1.jsonl"), '{"message":"hi"}\n');
|
|
51
|
+
const exists = transcriptExists({
|
|
52
|
+
projectsRoot: tmpRoot,
|
|
53
|
+
cwd: "/home/ura/data/runs/abc/worktree",
|
|
54
|
+
sessionId: "uuid-1",
|
|
55
|
+
});
|
|
56
|
+
expect(exists).toBe(false);
|
|
57
|
+
});
|
|
43
58
|
});
|
|
44
59
|
//# sourceMappingURL=session-store.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.test.js","sourceRoot":"","sources":["../../src/__tests__/session-store.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"session-store.test.js","sourceRoot":"","sources":["../../src/__tests__/session-store.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,EAAE,EAAS,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,EAAE,EAAS,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA+BnE;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,OAAO,GACzB,YAAY,CAKd;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;kEAC8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;mFAE+E;IAC/E,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;;kEAG8D;IAC9D,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAsXtB"}
|
|
@@ -11,7 +11,13 @@ import { consumeAgentStream, StagePreStreamStalledError } from "./agent-stream.j
|
|
|
11
11
|
import { isClaudeAuthValid, resolveClaudeAuth } from "./auth-check.js";
|
|
12
12
|
import { isResumable } from "./session-policy.js";
|
|
13
13
|
import { transcriptExists, defaultProjectsRoot } from "./session-store.js";
|
|
14
|
-
|
|
14
|
+
// BEC-231 — `agentSessionMissingFallbackEvent` was previously fired from this
|
|
15
|
+
// module when the resume branch found the JSONL absent. The new logic always
|
|
16
|
+
// picks the right shape (`sessionId:` to create, `resume:` to continue) based
|
|
17
|
+
// on actual disk state, so the missing-fallback path is unreachable from here.
|
|
18
|
+
// The event type itself is kept in `audit/events.ts` for callers (e.g. the
|
|
19
|
+
// session-volume boot check) that may need it.
|
|
20
|
+
import { agentSessionResumedEvent } from "../audit/index.js";
|
|
15
21
|
import { logAuditEvent } from "../audit/writer.js";
|
|
16
22
|
/**
|
|
17
23
|
* BEC-183: wall-clock stage timeouts. Independent of the in-stream watchdog
|
|
@@ -120,70 +126,74 @@ Do NOT run build, test, or lint commands directly on the host — always use \`d
|
|
|
120
126
|
// operator wiped `~/.claude/projects`), the SDK would throw on resume.
|
|
121
127
|
// Drop to a fresh-session shape, emit a `missing_fallback` audit event,
|
|
122
128
|
// and warn so operators can spot loss patterns.
|
|
129
|
+
// BEC-231 — derive session-shape from on-disk state, not from an in-memory
|
|
130
|
+
// flag. The previous implementation passed `isFirstResumableStage` (set by
|
|
131
|
+
// the runner via `hasInitiatedSession`) and used it to pick `sessionId:` vs.
|
|
132
|
+
// `resume:`. That flag flipped after the first resumable stage's CALL —
|
|
133
|
+
// before the SDK had actually written a single message to the JSONL. If the
|
|
134
|
+
// first stage failed (auth 401, MCP init error, pre-stream stall) before
|
|
135
|
+
// the SDK got that far, every subsequent stage saw "session initiated; use
|
|
136
|
+
// resume:" and fell back when the JSONL didn't exist. The session was lost
|
|
137
|
+
// for the run's lifetime.
|
|
138
|
+
//
|
|
139
|
+
// Fix: ignore `isFirstResumableStage`. Check `transcriptExists()` on every
|
|
140
|
+
// stage. JSONL present → `resume:`. JSONL absent → `sessionId:` (which
|
|
141
|
+
// re-attempts creation; the SDK pre-assigns the UUID and writes a fresh
|
|
142
|
+
// transcript if there's nothing on disk).
|
|
143
|
+
//
|
|
144
|
+
// The `isFirstResumableStage` field is retained on `ExecuteStageContext`
|
|
145
|
+
// for backwards compatibility with callers that still pass it; the value
|
|
146
|
+
// is now ignored. Runner cleanup is in the companion runner.ts edit.
|
|
123
147
|
const resolvedModel = context.stageModels?.[stage] ?? effectiveProfile.model;
|
|
124
148
|
const agentSessionId = context.agentSessionId ?? null;
|
|
125
|
-
const isFirstResumableStage = context.isFirstResumableStage ?? false;
|
|
126
149
|
const wantsResume = agentSessionId !== null &&
|
|
127
150
|
!!resolvedModel &&
|
|
128
151
|
isResumable(stage, resolvedModel);
|
|
129
152
|
let sessionOpts = {};
|
|
130
153
|
if (wantsResume) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
.filter((line) => line.trim().length > 0).length;
|
|
157
|
-
void logAuditEvent(db, agentSessionResumedEvent({
|
|
158
|
-
runId,
|
|
159
|
-
issueId,
|
|
160
|
-
sessionId: agentSessionId,
|
|
161
|
-
stage,
|
|
162
|
-
priorMessageCount,
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
catch (err) {
|
|
166
|
-
log.warn({ err: err.message }, "failed to count prior session messages — emitting resumed event with count=0");
|
|
167
|
-
void logAuditEvent(db, agentSessionResumedEvent({
|
|
168
|
-
runId,
|
|
169
|
-
issueId,
|
|
170
|
-
sessionId: agentSessionId,
|
|
171
|
-
stage,
|
|
172
|
-
priorMessageCount: 0,
|
|
173
|
-
}));
|
|
174
|
-
}
|
|
154
|
+
const exists = transcriptExists({
|
|
155
|
+
projectsRoot: defaultProjectsRoot(),
|
|
156
|
+
cwd: workdir,
|
|
157
|
+
sessionId: agentSessionId,
|
|
158
|
+
});
|
|
159
|
+
if (exists) {
|
|
160
|
+
// Transcript present — resume the conversation.
|
|
161
|
+
sessionOpts = { resume: agentSessionId };
|
|
162
|
+
try {
|
|
163
|
+
const { readFileSync } = await import("node:fs");
|
|
164
|
+
const tp = (await import("./session-store.js")).transcriptPath({
|
|
165
|
+
projectsRoot: defaultProjectsRoot(),
|
|
166
|
+
cwd: workdir,
|
|
167
|
+
sessionId: agentSessionId,
|
|
168
|
+
});
|
|
169
|
+
const priorMessageCount = readFileSync(tp, "utf8")
|
|
170
|
+
.split("\n")
|
|
171
|
+
.filter((line) => line.trim().length > 0).length;
|
|
172
|
+
void logAuditEvent(db, agentSessionResumedEvent({
|
|
173
|
+
runId,
|
|
174
|
+
issueId,
|
|
175
|
+
sessionId: agentSessionId,
|
|
176
|
+
stage,
|
|
177
|
+
priorMessageCount,
|
|
178
|
+
}));
|
|
175
179
|
}
|
|
176
|
-
|
|
177
|
-
|
|
180
|
+
catch (err) {
|
|
181
|
+
log.warn({ err: err.message }, "failed to count prior session messages — emitting resumed event with count=0");
|
|
182
|
+
void logAuditEvent(db, agentSessionResumedEvent({
|
|
178
183
|
runId,
|
|
179
184
|
issueId,
|
|
180
185
|
sessionId: agentSessionId,
|
|
181
|
-
|
|
186
|
+
stage,
|
|
187
|
+
priorMessageCount: 0,
|
|
182
188
|
}));
|
|
183
|
-
log.warn({ runId, sessionId: agentSessionId, stage, cwd: workdir }, "agent session JSONL missing — falling back to fresh session");
|
|
184
|
-
sessionOpts = {};
|
|
185
189
|
}
|
|
186
190
|
}
|
|
191
|
+
else {
|
|
192
|
+
// Transcript absent — (re-)create the session. The SDK pre-assigns
|
|
193
|
+
// our UUID; if a prior call started but failed before writing, this
|
|
194
|
+
// call gets a fresh shot at writing the first message.
|
|
195
|
+
sessionOpts = { sessionId: agentSessionId };
|
|
196
|
+
}
|
|
187
197
|
}
|
|
188
198
|
const messages = query({
|
|
189
199
|
prompt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAYhC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAsB,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,+CAA+C;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,2BAA2B,GAAoC;IACnE,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,oCAAoC;CAC7D,CAAC;AACF,MAAM,mCAAmC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,wBAAwB;AAEjF,oEAAoE;AACpE,MAAM,wBAAwB,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ;AAErD;;;;;;GAMG;AACH,MAAM,UAAU,kCAAkC,CAChD,OAAqB,EACrB,KAAgB,EAChB,iBAA0B;IAE1B,IAAI,iBAAiB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC/C,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AA8DD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA4B;IAE5B,MAAM,EACJ,KAAK,EACL,OAAO,EACP,KAAK,EACL,cAAc,EACd,UAAU,EACV,OAAO,EACP,OAAO,EACP,EAAE,EAAE,KAAK,GACV,GAAG,OAAO,CAAC;IAEZ,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,gBAAgB,GAAG,kCAAkC,CACzD,OAAO,EACP,KAAK,EACL,CAAC,CAAC,OAAO,CAAC,cAAc,CACzB,CAAC;IAEF,oEAAoE;IACpE,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3E,MAAM,EAAE,GAAG,KAAc,CAAC;IAC1B,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,cAAc,CACzB,KAAK,EACL,cAAc,EACd,UAAU,EACV,OAAO,EACP,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,oBAAoB,EAC5B,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,KAAK,EAAE,CACtD,CAAC;IAEF,oFAAoF;IACpF,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC;QACvD,MAAM,IAAI;;yCAE2B,OAAO,CAAC,mBAAmB,CAAC,YAAY;gDACjC,EAAE;;wBAE1B,CAAC;IACvB,CAAC;IAED,6DAA6D;IAC7D,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAChC,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,KAAK;QACpB,KAAK;QACL,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,wBAAwB,GAAG,CAAC,CAAC;IACjC,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAE7B,IAAI,CAAC;QACH,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC;QAE3E,qEAAqE;QACrE,qEAAqE;QACrE,4DAA4D;QAC5D,IAAI,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAE9C,sDAAsD;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS;YAC/B,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;YAC9D,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAEpC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAChF,CAAC;QAED,6DAA6D;QAC7D,yEAAyE;QACzE,wEAAwE;QACxE,iEAAiE;QACjE,0EAA0E;QAC1E,gBAAgB;QAChB,EAAE;QACF,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,gDAAgD;QAChD,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,wEAAwE;QACxE,4EAA4E;QAC5E,yEAAyE;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,0BAA0B;QAC1B,EAAE;QACF,2EAA2E;QAC3E,uEAAuE;QACvE,wEAAwE;QACxE,0CAA0C;QAC1C,EAAE;QACF,yEAAyE;QACzE,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAC7E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QACtD,MAAM,WAAW,GACf,cAAc,KAAK,IAAI;YACvB,CAAC,CAAC,aAAa;YACf,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACpC,IAAI,WAAW,GAA4C,EAAE,CAAC;QAC9D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,gBAAgB,CAAC;gBAC9B,YAAY,EAAE,mBAAmB,EAAE;gBACnC,GAAG,EAAE,OAAO;gBACZ,SAAS,EAAE,cAAe;aAC3B,CAAC,CAAC;YACH,IAAI,MAAM,EAAE,CAAC;gBACX,gDAAgD;gBAChD,WAAW,GAAG,EAAE,MAAM,EAAE,cAAe,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;oBACjD,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc,CAAC;wBAC7D,YAAY,EAAE,mBAAmB,EAAE;wBACnC,GAAG,EAAE,OAAO;wBACZ,SAAS,EAAE,cAAe;qBAC3B,CAAC,CAAC;oBACH,MAAM,iBAAiB,GAAG,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC;yBAC/C,KAAK,CAAC,IAAI,CAAC;yBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;oBACnD,KAAK,aAAa,CAChB,EAAE,EACF,wBAAwB,CAAC;wBACvB,KAAK;wBACL,OAAO;wBACP,SAAS,EAAE,cAAe;wBAC1B,KAAK;wBACL,iBAAiB;qBAClB,CAAC,CACH,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CACN,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,EAC/B,8EAA8E,CAC/E,CAAC;oBACF,KAAK,aAAa,CAChB,EAAE,EACF,wBAAwB,CAAC;wBACvB,KAAK;wBACL,OAAO;wBACP,SAAS,EAAE,cAAe;wBAC1B,KAAK;wBACL,iBAAiB,EAAE,CAAC;qBACrB,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,mEAAmE;gBACnE,oEAAoE;gBACpE,uDAAuD;gBACvD,WAAW,GAAG,EAAE,SAAS,EAAE,cAAe,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM;YACN,OAAO,EAAE;gBACP,YAAY,EAAE,gBAAgB,CAAC,KAAK;gBACpC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;gBACnC,GAAG,EAAE,OAAO;gBACZ,GAAG,2BAA2B,CAAC,KAAK,CAAC;gBACrC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,WAAW;gBACd,kEAAkE;gBAClE,8DAA8D;gBAC9D,iEAAiE;gBACjE,oEAAoE;gBACpE,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAiB;oBACvB,MAAM,EAAE,aAAsB;oBAC9B,sBAAsB,EAAE,IAAI;iBAC7B;aACF;SACF,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAErC,0CAA0C;QAC1C,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,QAAQ,GAA6E,EAAE,CAAC;QAE5F,KAAK,UAAU,aAAa;YAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,0EAA0E;QAC1E,4EAA4E;QAC5E,mEAAmE;QACnE,yEAAyE;QACzE,sCAAsC;QACtC,IAAI,wBAA4D,CAAC;QACjE,MAAM,mBAAmB,GAA2B;YAClD,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9C,wBAAwB,GAAG,IAAI,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;QAEF,yEAAyE;QACzE,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,cAAc,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,mCAAmC,CAAC;QACjG,IAAI,iBAA4D,CAAC;QACjE,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC3D,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,MAAM,CAAC,IAAI,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC;YACzD,CAAC,EAAE,cAAc,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,kBAAkB,CAAC,mBAAmB,EAAE;gBACtC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;oBACpB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;gBAC7C,CAAC;gBACD,aAAa,EAAE,CAAC,GAAkB,EAAE,EAAE;oBACpC,QAAQ,CAAC,IAAI,CAAC;wBACZ,EAAE,EAAE,MAAM,EAAE;wBACZ,UAAU,EAAE,UAAU;wBACtB,IAAI,EAAE,GAAG,CAAC,IAAK;wBACf,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;qBAC5C,CAAC,CAAC;oBACH,IAAI,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;wBAClC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,mCAAmC,CAAC,CAAC,CAAC;oBACzF,CAAC;gBACH,CAAC;gBACD,qBAAqB,EAAE,wBAAwB;aAChD,CAAC;YACF,mBAAmB;SACpB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACxB,oEAAoE;YACpE,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,kEAAkE;YAClE,qDAAqD;YACrD,wBAAwB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACd,yEAAyE;YACzE,yEAAyE;YACzE,8BAA8B;YAC9B,IAAI,iBAAiB;gBAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,aAAa,EAAE,CAAC;QAEtB,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACnC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QAC3D,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACnD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;QAElC,+DAA+D;QAC/D,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,oEAAoE;QACpE,gDAAgD;QAChD,MAAM,aAAa,GAAG,MAAM,cAAc,CACxC,eAAe,EACf,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,UAAU,CAAC,aAAa,EAAE,CACrC,CAAC;QAEF,MAAM,EAAE;aACL,MAAM,CAAC,SAAS,CAAC;aACjB,GAAG,CAAC;YACH,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,IAAI,IAAI,EAAE;YACvB,WAAW;YACX,YAAY;YACZ,wBAAwB;YACxB,oBAAoB;YACpB,KAAK;YACL,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;SACxD,CAAC;aACD,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAEvC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAClE,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,eAAe,EAAE,aAAa,CAAC,QAAQ;YACvC,mBAAmB,EAAE,aAAa,CAAC,UAAU;YAC7C,WAAW;YACX,YAAY;YACZ,KAAK;YACL,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;QAE1C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YAChC,EAAE,EAAE,MAAM,EAAE;YACZ,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,EAAE;aACL,MAAM,CAAC,SAAS,CAAC;aACjB,GAAG,CAAC;YACH,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,IAAI,IAAI,EAAE;YACvB,WAAW;YACX,YAAY;YACZ,wBAAwB;YACxB,oBAAoB;YACpB,KAAK;YACL,YAAY;SACb,CAAC;aACD,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAEvC,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,WAAW;YACX,YAAY;YACZ,KAAK;YACL,YAAY;YACZ,UAAU;SACX,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -17,6 +17,21 @@
|
|
|
17
17
|
* `URATEAM_CLAUDE_PROJECTS_DIR` env var for tests or non-standard deploys.
|
|
18
18
|
*/
|
|
19
19
|
export declare function defaultProjectsRoot(env?: NodeJS.ProcessEnv): string;
|
|
20
|
+
/**
|
|
21
|
+
* Encode a cwd into the SDK's per-project directory name.
|
|
22
|
+
*
|
|
23
|
+
* BEC-232 — match the SDK's encoding exactly. The SDK replaces ALL path
|
|
24
|
+
* separators (including a leading `/`) with `-`, producing a directory name
|
|
25
|
+
* like `"-home-ura-data-runs-<run>-worktree"` (note the LEADING dash).
|
|
26
|
+
*
|
|
27
|
+
* The pre-BEC-232 implementation stripped the leading `/` BEFORE replacing,
|
|
28
|
+
* producing `"home-..."` (no leading dash). The mismatch caused
|
|
29
|
+
* `transcriptExists()` to always return false for absolute cwds — every
|
|
30
|
+
* BEC-227 session-resume attempt fell back to legacy handoff because
|
|
31
|
+
* urateam looked for the JSONL at the wrong path. Verified on the dogfood
|
|
32
|
+
* instance against real SDK-written transcripts (BEC-231 soak observation).
|
|
33
|
+
*/
|
|
34
|
+
export declare function encodeCwd(cwd: string): string;
|
|
20
35
|
/** Build the JSONL transcript path for a given (cwd, sessionId). */
|
|
21
36
|
export declare function transcriptPath(opts: {
|
|
22
37
|
projectsRoot: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/executor/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAEhF;
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/executor/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAEhF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAET;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAEV"}
|
|
@@ -22,10 +22,22 @@ import { homedir } from "node:os";
|
|
|
22
22
|
export function defaultProjectsRoot(env = process.env) {
|
|
23
23
|
return env.URATEAM_CLAUDE_PROJECTS_DIR ?? join(homedir(), ".claude", "projects");
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Encode a cwd into the SDK's per-project directory name.
|
|
27
|
+
*
|
|
28
|
+
* BEC-232 — match the SDK's encoding exactly. The SDK replaces ALL path
|
|
29
|
+
* separators (including a leading `/`) with `-`, producing a directory name
|
|
30
|
+
* like `"-home-ura-data-runs-<run>-worktree"` (note the LEADING dash).
|
|
31
|
+
*
|
|
32
|
+
* The pre-BEC-232 implementation stripped the leading `/` BEFORE replacing,
|
|
33
|
+
* producing `"home-..."` (no leading dash). The mismatch caused
|
|
34
|
+
* `transcriptExists()` to always return false for absolute cwds — every
|
|
35
|
+
* BEC-227 session-resume attempt fell back to legacy handoff because
|
|
36
|
+
* urateam looked for the JSONL at the wrong path. Verified on the dogfood
|
|
37
|
+
* instance against real SDK-written transcripts (BEC-231 soak observation).
|
|
38
|
+
*/
|
|
39
|
+
export function encodeCwd(cwd) {
|
|
40
|
+
return cwd.replace(/[\/\\]/g, "-");
|
|
29
41
|
}
|
|
30
42
|
/** Build the JSONL transcript path for a given (cwd, sessionId). */
|
|
31
43
|
export function transcriptPath(opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/executor/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,OAAO,GAAG,CAAC,2BAA2B,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/executor/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,OAAO,GAAG,CAAC,2BAA2B,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,IAI9B;IACC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,gBAAgB,CAAC,IAIhC;IACC,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|