@claudexor/orchestrator 3.20.1 → 3.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attemptFinalize.d.ts +14 -101
- package/dist/attemptFinalize.d.ts.map +1 -1
- package/dist/attemptFinalize.js +7 -328
- package/dist/attemptFinalize.js.map +1 -1
- package/dist/candidateEvidence.d.ts +15 -6
- package/dist/candidateEvidence.d.ts.map +1 -1
- package/dist/candidateEvidence.js +1 -1
- package/dist/candidateEvidence.js.map +1 -1
- package/dist/candidateOutputs.d.ts +7 -3
- package/dist/candidateOutputs.d.ts.map +1 -1
- package/dist/candidateOutputs.js +4 -1
- package/dist/candidateOutputs.js.map +1 -1
- package/dist/candidateReview.d.ts.map +1 -1
- package/dist/candidateReview.js +3 -1
- package/dist/candidateReview.js.map +1 -1
- package/dist/candidateTerminals.d.ts +4 -0
- package/dist/candidateTerminals.d.ts.map +1 -1
- package/dist/candidateTerminals.js +18 -7
- package/dist/candidateTerminals.js.map +1 -1
- package/dist/candidateWorkProduct.d.ts.map +1 -1
- package/dist/candidateWorkProduct.js +6 -6
- package/dist/candidateWorkProduct.js.map +1 -1
- package/dist/carrier-planner.d.ts +94 -0
- package/dist/carrier-planner.d.ts.map +1 -0
- package/dist/carrier-planner.js +111 -0
- package/dist/carrier-planner.js.map +1 -0
- package/dist/continuation-custody.d.ts +57 -0
- package/dist/continuation-custody.d.ts.map +1 -0
- package/dist/continuation-custody.js +151 -0
- package/dist/continuation-custody.js.map +1 -0
- package/dist/continuation-evidence-io.d.ts +18 -0
- package/dist/continuation-evidence-io.d.ts.map +1 -0
- package/dist/continuation-evidence-io.js +167 -0
- package/dist/continuation-evidence-io.js.map +1 -0
- package/dist/continuation-evidence.d.ts +81 -0
- package/dist/continuation-evidence.d.ts.map +1 -0
- package/dist/continuation-evidence.js +122 -0
- package/dist/continuation-evidence.js.map +1 -0
- package/dist/continuation-input.d.ts +10 -0
- package/dist/continuation-input.d.ts.map +1 -0
- package/dist/continuation-input.js +69 -0
- package/dist/continuation-input.js.map +1 -0
- package/dist/continue-from.d.ts +41 -0
- package/dist/continue-from.d.ts.map +1 -0
- package/dist/continue-from.js +292 -0
- package/dist/continue-from.js.map +1 -0
- package/dist/continuity-notice.d.ts +42 -0
- package/dist/continuity-notice.d.ts.map +1 -0
- package/dist/continuity-notice.js +42 -0
- package/dist/continuity-notice.js.map +1 -0
- package/dist/continuity-terminal.d.ts +19 -0
- package/dist/continuity-terminal.d.ts.map +1 -0
- package/dist/continuity-terminal.js +34 -0
- package/dist/continuity-terminal.js.map +1 -0
- package/dist/credential-cooldown.d.ts.map +1 -1
- package/dist/credential-cooldown.js +8 -3
- package/dist/credential-cooldown.js.map +1 -1
- package/dist/credential-differential.d.ts +1 -0
- package/dist/credential-differential.d.ts.map +1 -1
- package/dist/credential-differential.js +32 -4
- package/dist/credential-differential.js.map +1 -1
- package/dist/deepScanReducer.d.ts +4 -1
- package/dist/deepScanReducer.d.ts.map +1 -1
- package/dist/deepScanReducer.js +10 -5
- package/dist/deepScanReducer.js.map +1 -1
- package/dist/delegatedHome.d.ts +30 -1
- package/dist/delegatedHome.d.ts.map +1 -1
- package/dist/delegatedHome.js +37 -2
- package/dist/delegatedHome.js.map +1 -1
- package/dist/delegationFailure.d.ts +4 -3
- package/dist/delegationFailure.d.ts.map +1 -1
- package/dist/delegationFailure.js +25 -24
- package/dist/delegationFailure.js.map +1 -1
- package/dist/directoryCandidate.d.ts +2 -3
- package/dist/directoryCandidate.d.ts.map +1 -1
- package/dist/directoryCandidate.js +3 -2
- package/dist/directoryCandidate.js.map +1 -1
- package/dist/inrun-continuity-carrier.d.ts +76 -0
- package/dist/inrun-continuity-carrier.d.ts.map +1 -0
- package/dist/inrun-continuity-carrier.js +218 -0
- package/dist/inrun-continuity-carrier.js.map +1 -0
- package/dist/inrun-continuity-thread.d.ts +8 -0
- package/dist/inrun-continuity-thread.d.ts.map +1 -0
- package/dist/inrun-continuity-thread.js +23 -0
- package/dist/inrun-continuity-thread.js.map +1 -0
- package/dist/inrun-continuity-types.d.ts +105 -0
- package/dist/inrun-continuity-types.d.ts.map +1 -0
- package/dist/inrun-continuity-types.js +2 -0
- package/dist/inrun-continuity-types.js.map +1 -0
- package/dist/inrun-continuity.d.ts +79 -0
- package/dist/inrun-continuity.d.ts.map +1 -0
- package/dist/inrun-continuity.js +465 -0
- package/dist/inrun-continuity.js.map +1 -0
- package/dist/inrun-continuity.test-support.d.ts +374 -0
- package/dist/inrun-continuity.test-support.d.ts.map +1 -0
- package/dist/inrun-continuity.test-support.js +198 -0
- package/dist/inrun-continuity.test-support.js.map +1 -0
- package/dist/inrun-retained-output.d.ts +9 -0
- package/dist/inrun-retained-output.d.ts.map +1 -0
- package/dist/inrun-retained-output.js +16 -0
- package/dist/inrun-retained-output.js.map +1 -0
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.d.ts.map +1 -1
- package/dist/interaction.js +6 -1
- package/dist/interaction.js.map +1 -1
- package/dist/modelGovernance.d.ts +4 -0
- package/dist/modelGovernance.d.ts.map +1 -1
- package/dist/modelGovernance.js +27 -1
- package/dist/modelGovernance.js.map +1 -1
- package/dist/orchestrator-credentials.d.ts +1 -1
- package/dist/orchestrator-credentials.d.ts.map +1 -1
- package/dist/orchestrator-credentials.js +4 -3
- package/dist/orchestrator-credentials.js.map +1 -1
- package/dist/orchestrator.d.ts +4 -4
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +261 -235
- package/dist/orchestrator.js.map +1 -1
- package/dist/persistedPatch.d.ts +55 -0
- package/dist/persistedPatch.d.ts.map +1 -0
- package/dist/persistedPatch.js +132 -0
- package/dist/persistedPatch.js.map +1 -0
- package/dist/planFinalize.d.ts +37 -0
- package/dist/planFinalize.d.ts.map +1 -0
- package/dist/planFinalize.js +94 -0
- package/dist/planFinalize.js.map +1 -0
- package/dist/planRun.d.ts +2 -28
- package/dist/planRun.d.ts.map +1 -1
- package/dist/planRun.js +5 -88
- package/dist/planRun.js.map +1 -1
- package/dist/plannerAttempt.d.ts +4 -1
- package/dist/plannerAttempt.d.ts.map +1 -1
- package/dist/plannerAttempt.js +9 -4
- package/dist/plannerAttempt.js.map +1 -1
- package/dist/prompt-framing.d.ts +1 -1
- package/dist/prompt-framing.d.ts.map +1 -1
- package/dist/prompt-framing.js.map +1 -1
- package/dist/reviewerEffort.d.ts +41 -0
- package/dist/reviewerEffort.d.ts.map +1 -0
- package/dist/reviewerEffort.js +37 -0
- package/dist/reviewerEffort.js.map +1 -0
- package/dist/reviewerPanel.d.ts +5 -5
- package/dist/reviewerPanel.d.ts.map +1 -1
- package/dist/reviewerPanel.js +22 -50
- package/dist/reviewerPanel.js.map +1 -1
- package/dist/run-input-resolution.d.ts.map +1 -1
- package/dist/run-input-resolution.js +10 -0
- package/dist/run-input-resolution.js.map +1 -1
- package/dist/runAdmission.js +1 -1
- package/dist/runAdmission.js.map +1 -1
- package/dist/runEventLog.d.ts.map +1 -1
- package/dist/runEventLog.js +5 -0
- package/dist/runEventLog.js.map +1 -1
- package/dist/runFactsBuilder.d.ts.map +1 -1
- package/dist/runFactsBuilder.js +11 -2
- package/dist/runFactsBuilder.js.map +1 -1
- package/dist/runSupport.d.ts +2 -1
- package/dist/runSupport.d.ts.map +1 -1
- package/dist/runSupport.js +2 -1
- package/dist/runSupport.js.map +1 -1
- package/dist/runTelemetryWriter.d.ts.map +1 -1
- package/dist/runTelemetryWriter.js +7 -2
- package/dist/runTelemetryWriter.js.map +1 -1
- package/dist/runTerminalResults.d.ts +6 -2
- package/dist/runTerminalResults.d.ts.map +1 -1
- package/dist/runTerminalResults.js +8 -1
- package/dist/runTerminalResults.js.map +1 -1
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +6 -5
- package/dist/runTerminals.js.map +1 -1
- package/dist/secretDiff.d.ts +67 -27
- package/dist/secretDiff.d.ts.map +1 -1
- package/dist/secretDiff.js +143 -113
- package/dist/secretDiff.js.map +1 -1
- package/dist/session-capsule.d.ts +29 -0
- package/dist/session-capsule.d.ts.map +1 -0
- package/dist/session-capsule.js +86 -0
- package/dist/session-capsule.js.map +1 -0
- package/dist/workReportEnvelope.d.ts +123 -0
- package/dist/workReportEnvelope.d.ts.map +1 -0
- package/dist/workReportEnvelope.js +362 -0
- package/dist/workReportEnvelope.js.map +1 -0
- package/package.json +17 -17
- package/dist/effortGovernance.d.ts +0 -13
- package/dist/effortGovernance.d.ts.map +0 -1
- package/dist/effortGovernance.js +0 -7
- package/dist/effortGovernance.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuation-evidence.js","sourceRoot":"","sources":["../src/continuation-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ContinuationSources } from "@claudexor/schema";
|
|
2
|
+
export interface UncertainInput {
|
|
3
|
+
text: string;
|
|
4
|
+
runDir: string;
|
|
5
|
+
}
|
|
6
|
+
/** Reuse complete durable context; only missing text needs a new context file. */
|
|
7
|
+
export declare function completeInputPath(input: UncertainInput, currentRunDir: string): string;
|
|
8
|
+
/** Reference only: the notice tells the next process to reconcile, never replay blindly. */
|
|
9
|
+
export declare function unconfirmedContinuationInputs(sources: ContinuationSources): UncertainInput[];
|
|
10
|
+
//# sourceMappingURL=continuation-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuation-input.d.ts","sourceRoot":"","sources":["../src/continuation-input.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAKnF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAYtF;AAED,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAiD5F"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** Caller text of earlier continuations needs delivery proof, not merely a copied capsule. */
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { dirname, join, resolve } from "node:path";
|
|
5
|
+
import { readRunEvents } from "@claudexor/event-log";
|
|
6
|
+
import { RunContinuityReceipt } from "@claudexor/schema";
|
|
7
|
+
import { readContinuationSources } from "@claudexor/workspace";
|
|
8
|
+
import { readTextSafe } from "@claudexor/util";
|
|
9
|
+
import { steeringFromRunLog } from "./continuation-evidence-io.js";
|
|
10
|
+
/** Reuse complete durable context; only missing text needs a new context file. */
|
|
11
|
+
export function completeInputPath(input, currentRunDir) {
|
|
12
|
+
for (const runDir of [input.runDir, currentRunDir]) {
|
|
13
|
+
const path = resolve(runDir, "context", "work-order.md");
|
|
14
|
+
if (readTextSafe(path)?.includes(input.text))
|
|
15
|
+
return path;
|
|
16
|
+
}
|
|
17
|
+
const digest = createHash("sha256").update(input.text).digest("hex");
|
|
18
|
+
const path = resolve(currentRunDir, "context", `uncertain-input-${digest}.md`);
|
|
19
|
+
if (readTextSafe(path) !== input.text) {
|
|
20
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
21
|
+
writeFileSync(path, input.text);
|
|
22
|
+
}
|
|
23
|
+
return path;
|
|
24
|
+
}
|
|
25
|
+
/** Reference only: the notice tells the next process to reconcile, never replay blindly. */
|
|
26
|
+
export function unconfirmedContinuationInputs(sources) {
|
|
27
|
+
const uncertain = [];
|
|
28
|
+
// A newer run of the chain whose process started was handed these inputs in its notice.
|
|
29
|
+
let newerStarted = false;
|
|
30
|
+
for (const [index, source] of sources.entries()) {
|
|
31
|
+
const { events } = readRunEvents(join(source.runDir, "events.jsonl"));
|
|
32
|
+
const startedHere = events.some((event) => event.type === "harness.event" && event.payload["type"] === "started");
|
|
33
|
+
// A stopped run's admitted steering without delivery proof is newer than its caller text.
|
|
34
|
+
// The live run's own steering is read per attempt by `uncertainInputFor`.
|
|
35
|
+
if (!newerStarted && source.state !== "running") {
|
|
36
|
+
uncertain.push(...steeringFromRunLog(source.runDir)
|
|
37
|
+
.filter((message) => message.delivery === "uncertain")
|
|
38
|
+
.reverse()
|
|
39
|
+
.map(({ text }) => ({ text, runDir: source.runDir })));
|
|
40
|
+
}
|
|
41
|
+
newerStarted ||= startedHere;
|
|
42
|
+
if (index === sources.length - 1 && readContinuationSources(source.runDir).length === 0)
|
|
43
|
+
continue;
|
|
44
|
+
const text = events.find((event) => event.type === "run.created")?.payload["prompt"];
|
|
45
|
+
if (typeof text !== "string" || !text.trim())
|
|
46
|
+
continue;
|
|
47
|
+
const settled = events
|
|
48
|
+
.map((event, index) => ({
|
|
49
|
+
index,
|
|
50
|
+
receipt: event.type === "run.continuity"
|
|
51
|
+
? RunContinuityReceipt.safeParse(event.payload["receipt"]).data
|
|
52
|
+
: undefined,
|
|
53
|
+
}))
|
|
54
|
+
.find((entry) => entry.receipt?.tryIndex === 0);
|
|
55
|
+
const receipt = settled?.receipt;
|
|
56
|
+
// A mismatched handshake is not delivery. A missing receipt (including a crash
|
|
57
|
+
// during the first try) leaves delivery unproved even if a session file exists.
|
|
58
|
+
const delivered = receipt &&
|
|
59
|
+
!receipt.identityCheck.startsWith("mismatch") &&
|
|
60
|
+
events.some((event, index) => event.type === "harness.event" &&
|
|
61
|
+
index < settled.index &&
|
|
62
|
+
event.payload["attempt_id"] === receipt.attemptId &&
|
|
63
|
+
event.payload["type"] === "started");
|
|
64
|
+
if (!delivered)
|
|
65
|
+
uncertain.push({ text, runDir: source.runDir });
|
|
66
|
+
}
|
|
67
|
+
return uncertain;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=continuation-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuation-input.js","sourceRoot":"","sources":["../src/continuation-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ArtifactStore } from "@claudexor/artifact-store";
|
|
2
|
+
import { type HarnessRunSpec, type ContinuationSources } from "@claudexor/schema";
|
|
3
|
+
import { type CarrierPreference } from "./carrier-planner.js";
|
|
4
|
+
import type { RunContinuation } from "./continuation-custody.js";
|
|
5
|
+
import { InRunContinuity } from "./inrun-continuity.js";
|
|
6
|
+
import type { InRunContinuityDeps } from "./inrun-continuity-types.js";
|
|
7
|
+
import type { AttemptTelemetry } from "./attemptTelemetry.js";
|
|
8
|
+
/** The predecessor a successor continues, resolved by the daemon from its own records. */
|
|
9
|
+
export interface ContinueFromSource {
|
|
10
|
+
runId: string;
|
|
11
|
+
/** Absolute run directory of the predecessor. */
|
|
12
|
+
runDir: string;
|
|
13
|
+
/** The lifecycle the predecessor ended with. */
|
|
14
|
+
state: string;
|
|
15
|
+
/** The predecessor's work order: every prompt of its chain, root first. */
|
|
16
|
+
workOrder: string;
|
|
17
|
+
preference: CarrierPreference;
|
|
18
|
+
/** Earlier chain links, newest first; a refused head may own no carrier yet. */
|
|
19
|
+
ancestors?: ContinuationSources;
|
|
20
|
+
/** Captured before inheritance/defaults; a caller-selected model always wins. */
|
|
21
|
+
inheritModel?: boolean;
|
|
22
|
+
/** Inherited project scope, used only when no capsule/workspace records the root. */
|
|
23
|
+
scopeRoot?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Open the attempt's continuation controller. For the first candidate attempt
|
|
27
|
+
* of a `continueFrom` successor, plan the carrier of its first try and return
|
|
28
|
+
* the composed spec; every other attempt gets the controller unchanged.
|
|
29
|
+
* `continuation.from` is consumed here: synthesis, a D-16d continuation or a
|
|
30
|
+
* repair attempt of the same run never re-plans the predecessor's carrier.
|
|
31
|
+
*/
|
|
32
|
+
export declare function openContinuity(deps: InRunContinuityDeps, first: {
|
|
33
|
+
spec: HarnessRunSpec;
|
|
34
|
+
continuation: RunContinuation | undefined;
|
|
35
|
+
store: ArtifactStore;
|
|
36
|
+
telemetry: Pick<AttemptTelemetry, "requestedModel">;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
continuity: InRunContinuity;
|
|
39
|
+
spec: HarnessRunSpec;
|
|
40
|
+
}>;
|
|
41
|
+
//# sourceMappingURL=continue-from.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue-from.d.ts","sourceRoot":"","sources":["../src/continue-from.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAGzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAQ9D,0FAA0F;AAC1F,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,gFAAgF;IAChF,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuID;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE;IACL,IAAI,EAAE,cAAc,CAAC;IACrB,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;CACrD,GACA,OAAO,CAAC;IAAE,UAAU,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAmKhE"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The first try of a `continueFrom` successor (PLAN §2.3, INTERFACES §1 + §7).
|
|
3
|
+
*
|
|
4
|
+
* The in-run controller (`inrun-continuity.ts`) continues later tries of ONE
|
|
5
|
+
* attempt; a successor run continues a terminal PREDECESSOR. Its first try is
|
|
6
|
+
* planned here, once per run, through the same two planner functions: the
|
|
7
|
+
* predecessor's session capsule, terminal `resumable` facts and evidence
|
|
8
|
+
* decide the carrier; the spec is composed the way the controller composes a
|
|
9
|
+
* continued try (a native carrier never resends the original prompt — the
|
|
10
|
+
* notice plus the caller's text ride the user prompt; a packet re-briefs a
|
|
11
|
+
* fresh session with the evidence index); the capsule is written into the
|
|
12
|
+
* successor's attempt, so its later tries resume the same session; and the
|
|
13
|
+
* controller is seeded with the predecessor's sticky `acted` and this try's
|
|
14
|
+
* receipt (`from` = the predecessor, `same_root` / `different_root`), which
|
|
15
|
+
* it emits when the try settles, with THIS try's attested model.
|
|
16
|
+
*
|
|
17
|
+
* A successor's work order is the chain's: the predecessor's work order plus
|
|
18
|
+
* the caller's continuation text, recorded as `context/work-order.md` so the
|
|
19
|
+
* next link reads one file instead of walking the chain.
|
|
20
|
+
*/
|
|
21
|
+
import { existsSync, mkdirSync, readdirSync, realpathSync, writeFileSync } from "node:fs";
|
|
22
|
+
import { join, resolve } from "node:path";
|
|
23
|
+
import { readRunEvents, retainedOutput } from "@claudexor/event-log";
|
|
24
|
+
import { HarnessRunSpec as HarnessRunSpecSchema, RunResumable, RunTelemetry, } from "@claudexor/schema";
|
|
25
|
+
import { readTextSafe } from "@claudexor/util";
|
|
26
|
+
import { retainedEnvelopeInChain } from "@claudexor/workspace";
|
|
27
|
+
import { decideCarrier, prepareCarrier, } from "./carrier-planner.js";
|
|
28
|
+
import { buildEvidenceIndex } from "./continuation-evidence.js";
|
|
29
|
+
import { collectEvidenceIndexInput, diffStatFromPatch } from "./continuation-evidence-io.js";
|
|
30
|
+
import { continuationNotice, packetContinuationPrompt } from "./continuity-notice.js";
|
|
31
|
+
import { unconfirmedContinuationInputs } from "./continuation-input.js";
|
|
32
|
+
import { InRunContinuity } from "./inrun-continuity.js";
|
|
33
|
+
import { routeListsModel } from "./modelGovernance.js";
|
|
34
|
+
import { uncertainInputFor } from "./inrun-continuity-carrier.js";
|
|
35
|
+
import { readSessionCapsule, registryProfile, storeEnvFor, writeSessionCapsule, } from "./session-capsule.js";
|
|
36
|
+
const WORK_ORDER_FILE = join("context", "work-order.md");
|
|
37
|
+
const DIFFERENT_ROOT_NOTE = "This process runs in a different working tree than the previous one: check which of its changes are present here before continuing.";
|
|
38
|
+
/** The capsule of the predecessor's session: the attempt matching the
|
|
39
|
+
* terminal `resumable.session`, else the most recently located one. */
|
|
40
|
+
function heldSession(runDir, nativeSessionId) {
|
|
41
|
+
const attemptsDir = join(runDir, "attempts");
|
|
42
|
+
if (!existsSync(attemptsDir))
|
|
43
|
+
return null;
|
|
44
|
+
const held = readdirSync(attemptsDir)
|
|
45
|
+
.sort()
|
|
46
|
+
.flatMap((attemptId) => {
|
|
47
|
+
const capsule = readSessionCapsule(join(attemptsDir, attemptId));
|
|
48
|
+
return capsule ? [{ attemptId, capsule }] : [];
|
|
49
|
+
});
|
|
50
|
+
return (held.find((entry) => entry.capsule.nativeSessionId === nativeSessionId) ??
|
|
51
|
+
held.reduce((newest, entry) => newest && (newest.capsule.mtimeMs ?? 0) > (entry.capsule.mtimeMs ?? 0) ? newest : entry, null));
|
|
52
|
+
}
|
|
53
|
+
function readSource(store, from) {
|
|
54
|
+
const finalDir = join(from.runDir, "final");
|
|
55
|
+
const resumable = RunResumable.safeParse(store.readYaml(join(finalDir, "resumable.yaml"))).data;
|
|
56
|
+
const telemetry = RunTelemetry.safeParse(store.readYaml(join(finalDir, "telemetry.yaml"))).data;
|
|
57
|
+
const held = heldSession(from.runDir, resumable?.session?.nativeSessionId ?? null);
|
|
58
|
+
const attemptId = held?.attemptId ?? telemetry?.final_attempt_id ?? "a01";
|
|
59
|
+
const attempt = telemetry?.attempts.find((entry) => entry.attempt_id === attemptId);
|
|
60
|
+
const patch = readTextSafe(join(from.runDir, "attempts", attemptId, "patch.diff")) ??
|
|
61
|
+
readTextSafe(join(finalDir, "patch.diff")) ??
|
|
62
|
+
"";
|
|
63
|
+
const events = readRunEvents(join(from.runDir, "events.jsonl"));
|
|
64
|
+
const output = readTextSafe(join(finalDir, "answer.md"))?.trim() ||
|
|
65
|
+
readTextSafe(join(finalDir, "retained-output.md"))?.trim() ||
|
|
66
|
+
retainedOutput(events.events, events.malformed) ||
|
|
67
|
+
"";
|
|
68
|
+
const hasEvidence = !!patch.trim() ||
|
|
69
|
+
!!output ||
|
|
70
|
+
events.events.some((event) => event.type === "harness.event" &&
|
|
71
|
+
["tool_call", "file_change"].includes(String(event.payload["type"])));
|
|
72
|
+
const cause = resumable?.cause ??
|
|
73
|
+
(from.state === "interrupted"
|
|
74
|
+
? "host_restart"
|
|
75
|
+
: from.state === "cancelled"
|
|
76
|
+
? "cancelled"
|
|
77
|
+
: "other");
|
|
78
|
+
return {
|
|
79
|
+
attemptId,
|
|
80
|
+
runDir: from.runDir,
|
|
81
|
+
capsule: held?.capsule ?? null,
|
|
82
|
+
resumable: resumable ?? null,
|
|
83
|
+
cause,
|
|
84
|
+
// Sticky `acted` of the predecessor: its terminal block lists `packet`
|
|
85
|
+
// exactly when it acted; without the block, the evidence decides.
|
|
86
|
+
acted: resumable
|
|
87
|
+
? resumable.carriers.includes("packet")
|
|
88
|
+
: hasEvidence || from.state === "succeeded",
|
|
89
|
+
hasEvidence,
|
|
90
|
+
// The predecessor's controller dropped the session on a typed fact.
|
|
91
|
+
nativeRejected: resumable !== undefined && resumable.session === null && held !== null,
|
|
92
|
+
observedModel: attempt?.observed_model ?? held?.capsule.requestedModel ?? null,
|
|
93
|
+
profileId: held?.capsule.holderProfileId ?? attempt?.profile_id ?? null,
|
|
94
|
+
// What the predecessor itself was given, else the daemon's chain record.
|
|
95
|
+
workOrder: readTextSafe(join(from.runDir, WORK_ORDER_FILE))?.trim() || from.workOrder,
|
|
96
|
+
output,
|
|
97
|
+
diffStat: diffStatFromPatch(patch),
|
|
98
|
+
root: held?.capsule.cwd ?? resumable?.workspace.root ?? from.scopeRoot ?? null,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function readPredecessor(store, from) {
|
|
102
|
+
const own = readSource(store, from);
|
|
103
|
+
for (const source of [from, ...(from.ancestors ?? [])]) {
|
|
104
|
+
const facts = source === from
|
|
105
|
+
? own
|
|
106
|
+
: readSource(store, { ...from, ...source, scopeRoot: source.scopeRoot });
|
|
107
|
+
if (facts.capsule || facts.resumable || facts.hasEvidence)
|
|
108
|
+
return { ...facts, workOrder: own.workOrder };
|
|
109
|
+
}
|
|
110
|
+
return own;
|
|
111
|
+
}
|
|
112
|
+
function samePath(a, b) {
|
|
113
|
+
if (a === null)
|
|
114
|
+
return false;
|
|
115
|
+
const canonical = (path) => (existsSync(path) ? realpathSync(path) : resolve(path));
|
|
116
|
+
return canonical(a) === canonical(b);
|
|
117
|
+
}
|
|
118
|
+
function profileRef(deps, spec, profileId) {
|
|
119
|
+
const row = registryProfile(deps.registry, profileId);
|
|
120
|
+
return {
|
|
121
|
+
profileId,
|
|
122
|
+
env: storeEnvFor(spec.env, row),
|
|
123
|
+
storeLocator: row?.isolation_locator ?? null,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Open the attempt's continuation controller. For the first candidate attempt
|
|
128
|
+
* of a `continueFrom` successor, plan the carrier of its first try and return
|
|
129
|
+
* the composed spec; every other attempt gets the controller unchanged.
|
|
130
|
+
* `continuation.from` is consumed here: synthesis, a D-16d continuation or a
|
|
131
|
+
* repair attempt of the same run never re-plans the predecessor's carrier.
|
|
132
|
+
*/
|
|
133
|
+
export async function openContinuity(deps, first) {
|
|
134
|
+
const { spec, continuation, store } = first;
|
|
135
|
+
const from = continuation?.from;
|
|
136
|
+
if (!continuation || !from)
|
|
137
|
+
return { continuity: new InRunContinuity(deps), spec };
|
|
138
|
+
continuation.from = null;
|
|
139
|
+
const pred = readPredecessor(store, from);
|
|
140
|
+
const completed = pred.resumable === null && from.state === "succeeded";
|
|
141
|
+
const evidenceSources = [from, ...(from.ancestors ?? [])]
|
|
142
|
+
.reverse()
|
|
143
|
+
.map((source) => {
|
|
144
|
+
const facts = readSource(store, { ...from, ...source });
|
|
145
|
+
return {
|
|
146
|
+
runDir: facts.runDir,
|
|
147
|
+
attemptId: facts.attemptId,
|
|
148
|
+
workOrder: facts.workOrder,
|
|
149
|
+
steering: [],
|
|
150
|
+
retainedOutput: facts.output,
|
|
151
|
+
diffStat: facts.diffStat,
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
const model = from.inheritModel &&
|
|
155
|
+
pred.observedModel &&
|
|
156
|
+
deps.route &&
|
|
157
|
+
(await routeListsModel(deps.route, spec, pred.observedModel))
|
|
158
|
+
? pred.observedModel
|
|
159
|
+
: spec.model_hint;
|
|
160
|
+
const callerText = deps.workOrder;
|
|
161
|
+
const workOrder = [pred.workOrder.trim(), callerText.trim()].filter(Boolean).join("\n\n");
|
|
162
|
+
store.writeText(join(deps.runDir, WORK_ORDER_FILE), `${workOrder}\n`);
|
|
163
|
+
// Another harness cannot resume this session: the evidence index carries it.
|
|
164
|
+
const capsule = pred.capsule?.harness === deps.adapter.id ? pred.capsule : null;
|
|
165
|
+
const targetId = spec.credential_profile?.profile_id ?? null;
|
|
166
|
+
const sourceId = capsule ? capsule.holderProfileId : targetId;
|
|
167
|
+
const facts = {
|
|
168
|
+
capsule,
|
|
169
|
+
acted: pred.acted,
|
|
170
|
+
cause: pred.cause,
|
|
171
|
+
sourceProfile: profileRef(deps, spec, sourceId),
|
|
172
|
+
targetProfile: profileRef(deps, spec, targetId),
|
|
173
|
+
effectiveModel: pred.observedModel ?? spec.model_hint ?? null,
|
|
174
|
+
preference: from.preference,
|
|
175
|
+
adapter: deps.adapter,
|
|
176
|
+
nativeRejected: pred.nativeRejected,
|
|
177
|
+
};
|
|
178
|
+
const evidence = {
|
|
179
|
+
runDir: pred.runDir,
|
|
180
|
+
attemptId: pred.attemptId,
|
|
181
|
+
workOrder: pred.workOrder,
|
|
182
|
+
steering: [],
|
|
183
|
+
predecessors: evidenceSources.filter((source) => source.runDir !== pred.runDir),
|
|
184
|
+
};
|
|
185
|
+
const extras = {
|
|
186
|
+
cause: pred.cause,
|
|
187
|
+
retainedOutput: pred.output,
|
|
188
|
+
diffStat: pred.diffStat,
|
|
189
|
+
completed,
|
|
190
|
+
};
|
|
191
|
+
const prepared = await prepareCarrier(decideCarrier(facts), {
|
|
192
|
+
facts,
|
|
193
|
+
evidence,
|
|
194
|
+
targetCwd: deps.cwd,
|
|
195
|
+
retainedOutput: pred.output,
|
|
196
|
+
diffStat: pred.diffStat,
|
|
197
|
+
completed,
|
|
198
|
+
});
|
|
199
|
+
const uncertainInput = uncertainInputFor(pred.runDir, unconfirmedContinuationInputs([from, ...(from.ancestors ?? [])]), pred.attemptId, deps.runDir);
|
|
200
|
+
const retainedRoot = continuation.adopt?.envelope.worktree_path ??
|
|
201
|
+
retainedEnvelopeInChain([from, ...(from.ancestors ?? [])])?.envelope.worktree_path ??
|
|
202
|
+
null;
|
|
203
|
+
const sameRoot = samePath(retainedRoot, deps.cwd) || samePath(pred.root, deps.cwd);
|
|
204
|
+
// The notice says the workspace is as it was left; in another tree that is
|
|
205
|
+
// not known, so the child is told to check before relying on it.
|
|
206
|
+
const patchPath = join(pred.runDir, "final", "patch.diff");
|
|
207
|
+
const treeNote = sameRoot
|
|
208
|
+
? ""
|
|
209
|
+
: [
|
|
210
|
+
DIFFERENT_ROOT_NOTE,
|
|
211
|
+
existsSync(patchPath) ? `The predecessor's saved patch is at: ${patchPath}` : "",
|
|
212
|
+
]
|
|
213
|
+
.filter(Boolean)
|
|
214
|
+
.join("\n");
|
|
215
|
+
const withNote = (text) => [treeNote, text.trim()].filter(Boolean).join("\n\n");
|
|
216
|
+
const native = prepared.carrier === "native" || prepared.carrier === "native_moved";
|
|
217
|
+
let composed;
|
|
218
|
+
if (prepared.carrier === "native" || prepared.carrier === "native_moved") {
|
|
219
|
+
writeSessionCapsule(deps.attemptDir, prepared.capsule);
|
|
220
|
+
try {
|
|
221
|
+
await prepared.retire?.();
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// The published capsule is authoritative even if a stale source copy remains.
|
|
225
|
+
}
|
|
226
|
+
// A follow-up on finished work is the caller's text alone; unfinished
|
|
227
|
+
// work gets the continuation notice (cause, undelivered input) first.
|
|
228
|
+
const followUp = completed && callerText.trim() && uncertainInput === null;
|
|
229
|
+
composed = HarnessRunSpecSchema.parse({
|
|
230
|
+
...spec,
|
|
231
|
+
model_hint: model,
|
|
232
|
+
resume_session_id: prepared.resumeRef.nativeSessionId,
|
|
233
|
+
prompt: followUp
|
|
234
|
+
? withNote(callerText)
|
|
235
|
+
: continuationNotice({
|
|
236
|
+
cause: pred.cause,
|
|
237
|
+
completed,
|
|
238
|
+
uncertainInput,
|
|
239
|
+
callerText: withNote(callerText),
|
|
240
|
+
}),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// `fresh` (the predecessor did not act) still needs the work order: the
|
|
245
|
+
// same index is the brief, it simply carries no work.
|
|
246
|
+
const index = prepared.carrier === "packet"
|
|
247
|
+
? prepared.packet
|
|
248
|
+
: buildEvidenceIndex(collectEvidenceIndexInput(evidence, extras));
|
|
249
|
+
const dir = join(deps.attemptDir, "continuation");
|
|
250
|
+
mkdirSync(dir, { recursive: true });
|
|
251
|
+
const evidencePath = join(dir, "evidence-index-try0.md");
|
|
252
|
+
writeFileSync(evidencePath, index.markdown);
|
|
253
|
+
composed = HarnessRunSpecSchema.parse({
|
|
254
|
+
...spec,
|
|
255
|
+
resume_session_id: null,
|
|
256
|
+
model_hint: model,
|
|
257
|
+
prompt: packetContinuationPrompt({
|
|
258
|
+
originalPrompt: spec.prompt,
|
|
259
|
+
notice: continuationNotice({
|
|
260
|
+
cause: pred.cause,
|
|
261
|
+
completed,
|
|
262
|
+
uncertainInput,
|
|
263
|
+
callerText: withNote(""),
|
|
264
|
+
}),
|
|
265
|
+
evidencePath,
|
|
266
|
+
evidenceMarkdown: index.markdown,
|
|
267
|
+
completed,
|
|
268
|
+
}),
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
const continued = {
|
|
272
|
+
carrier: prepared.carrier,
|
|
273
|
+
summarized: prepared.carrier === "packet" && prepared.packet.summarized,
|
|
274
|
+
cause: pred.cause,
|
|
275
|
+
fromProfileId: capsule ? capsule.holderProfileId : pred.profileId,
|
|
276
|
+
toProfileId: targetId,
|
|
277
|
+
memory: native ? "full" : "partial",
|
|
278
|
+
inputDelivery: uncertainInput === null ? "confirmed" : "uncertain",
|
|
279
|
+
from: { runId: from.runId, attemptId: pred.attemptId },
|
|
280
|
+
workspace: sameRoot ? "same_root" : "different_root",
|
|
281
|
+
};
|
|
282
|
+
first.telemetry.requestedModel = composed.model_hint ?? null;
|
|
283
|
+
return {
|
|
284
|
+
continuity: new InRunContinuity({
|
|
285
|
+
...deps,
|
|
286
|
+
workOrder,
|
|
287
|
+
seed: { acted: pred.acted, completed, continued, evidenceSources },
|
|
288
|
+
}),
|
|
289
|
+
spec: composed,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=continue-from.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue-from.js","sourceRoot":"","sources":["../src/continue-from.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The continuation notice (B1): what a continued vendor process is told.
|
|
3
|
+
*
|
|
4
|
+
* On a NATIVE carrier the original prompt is never resent — the transcript
|
|
5
|
+
* already holds it — so the engine sends one constant notice as the user
|
|
6
|
+
* prompt, followed by the caller's text when any. Every new fact travels in
|
|
7
|
+
* the prompt, never in `instructions`: Claude Code records the system prompt on
|
|
8
|
+
* the first request and resends that record on resume, so instructions are not
|
|
9
|
+
* a continuation channel.
|
|
10
|
+
*
|
|
11
|
+
* On a PACKET carrier the successor is a fresh session: it receives the
|
|
12
|
+
* original prompt (engine constraints included), the notice and the bounded
|
|
13
|
+
* evidence index.
|
|
14
|
+
*
|
|
15
|
+
* Unknown input (R3-Astra): when the predecessor's last input may not be in
|
|
16
|
+
* the vendor history (a crash between recovery and the turn start), the notice
|
|
17
|
+
* carries it as a reference to reconcile against the observed work — never as a
|
|
18
|
+
* blind replay.
|
|
19
|
+
*/
|
|
20
|
+
import type { ResumableCause } from "@claudexor/schema";
|
|
21
|
+
export interface ContinuationNoticeInput {
|
|
22
|
+
cause: ResumableCause;
|
|
23
|
+
/** A succeeded predecessor without unfinished work receives a neutral follow-up. */
|
|
24
|
+
completed?: boolean;
|
|
25
|
+
/** The predecessor's last input when its delivery is uncertain; null when confirmed. */
|
|
26
|
+
uncertainInput: string | null;
|
|
27
|
+
/** The caller's own continuation text (`continueFrom` prompt); null in-run. */
|
|
28
|
+
callerText: string | null;
|
|
29
|
+
}
|
|
30
|
+
/** The constant notice a continued process receives as its user prompt. */
|
|
31
|
+
export declare function continuationNotice(input: ContinuationNoticeInput): string;
|
|
32
|
+
/** Pointer to the evidence index of a packet carrier (fresh session). */
|
|
33
|
+
export declare function evidenceIndexPointer(path: string, inlineMarkdown: string, completed?: boolean): string;
|
|
34
|
+
/** The packet carrier's prompt: original prompt (constraints included) + notice + evidence index. */
|
|
35
|
+
export declare function packetContinuationPrompt(input: {
|
|
36
|
+
originalPrompt: string;
|
|
37
|
+
notice: string;
|
|
38
|
+
evidencePath: string;
|
|
39
|
+
evidenceMarkdown: string;
|
|
40
|
+
completed?: boolean;
|
|
41
|
+
}): string;
|
|
42
|
+
//# sourceMappingURL=continuity-notice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuity-notice.d.ts","sourceRoot":"","sources":["../src/continuity-notice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAexD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,oFAAoF;IACpF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAazE;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,SAAS,UAAQ,GAChB,MAAM,CAKR;AAED,qGAAqG;AACrG,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,MAAM,CAMT"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const CAUSE_PHRASE = {
|
|
2
|
+
vendor_limit: "a usage limit on the previous account",
|
|
3
|
+
pool_exhausted: "every account's usage limit",
|
|
4
|
+
pinned_limit: "the pinned account's usage limit",
|
|
5
|
+
transport: "the process died",
|
|
6
|
+
context_exhausted: "the context window was exhausted",
|
|
7
|
+
wall_clock: "the wall-clock deadline",
|
|
8
|
+
cancelled: "a cancel",
|
|
9
|
+
host_restart: "a host restart",
|
|
10
|
+
input_required: "a request for input",
|
|
11
|
+
other: "an interruption",
|
|
12
|
+
};
|
|
13
|
+
/** The constant notice a continued process receives as its user prompt. */
|
|
14
|
+
export function continuationNotice(input) {
|
|
15
|
+
const parts = [
|
|
16
|
+
input.completed
|
|
17
|
+
? "Continue from the previous work. Check the current workspace before making further changes. Finish with a self-contained final message: this process's final message alone is the run's answer."
|
|
18
|
+
: `The previous process stopped (${CAUSE_PHRASE[input.cause]}). Continue the task from where it stopped. The workspace is as it was left. A tool call that was cut off may or may not have taken effect: check before repeating it. Finish with a self-contained final message: this process's final message alone is the run's answer.`,
|
|
19
|
+
];
|
|
20
|
+
if (input.uncertainInput !== null && input.uncertainInput.trim()) {
|
|
21
|
+
parts.push(`The last instruction sent to the previous process may not have been delivered. It was:\n\n${input.uncertainInput.trim()}\n\nReconcile it against the work you observe; do not replay it blindly.`);
|
|
22
|
+
}
|
|
23
|
+
if (input.callerText !== null && input.callerText.trim())
|
|
24
|
+
parts.push(input.callerText.trim());
|
|
25
|
+
return parts.join("\n\n");
|
|
26
|
+
}
|
|
27
|
+
/** Pointer to the evidence index of a packet carrier (fresh session). */
|
|
28
|
+
export function evidenceIndexPointer(path, inlineMarkdown, completed = false) {
|
|
29
|
+
const prior = completed
|
|
30
|
+
? "The previous work is recorded in its evidence index."
|
|
31
|
+
: "Earlier work on this task was done by another process that could not finish.";
|
|
32
|
+
return `${prior} Its evidence index is at: ${path} — read it before continuing. The same index follows:\n\n${inlineMarkdown}`;
|
|
33
|
+
}
|
|
34
|
+
/** The packet carrier's prompt: original prompt (constraints included) + notice + evidence index. */
|
|
35
|
+
export function packetContinuationPrompt(input) {
|
|
36
|
+
return [
|
|
37
|
+
input.originalPrompt,
|
|
38
|
+
input.notice,
|
|
39
|
+
evidenceIndexPointer(input.evidencePath, input.evidenceMarkdown, input.completed),
|
|
40
|
+
].join("\n\n");
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=continuity-notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuity-notice.js","sourceRoot":"","sources":["../src/continuity-notice.ts"],"names":[],"mappings":"AAqBA,MAAM,YAAY,GAAmC;IACnD,YAAY,EAAE,uCAAuC;IACrD,cAAc,EAAE,6BAA6B;IAC7C,YAAY,EAAE,kCAAkC;IAChD,SAAS,EAAE,kBAAkB;IAC7B,iBAAiB,EAAE,kCAAkC;IACrD,UAAU,EAAE,yBAAyB;IACrC,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,gBAAgB;IAC9B,cAAc,EAAE,qBAAqB;IACrC,KAAK,EAAE,iBAAiB;CACzB,CAAC;AAYF,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,SAAS;YACb,CAAC,CAAC,iMAAiM;YACnM,CAAC,CAAC,iCAAiC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,4QAA4Q;KAC3U,CAAC;IACF,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QACjE,KAAK,CAAC,IAAI,CACR,6FAA6F,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,0EAA0E,CACnM,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9F,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,cAAsB,EACtB,SAAS,GAAG,KAAK;IAEjB,MAAM,KAAK,GAAG,SAAS;QACrB,CAAC,CAAC,sDAAsD;QACxD,CAAC,CAAC,8EAA8E,CAAC;IACnF,OAAO,GAAG,KAAK,8BAA8B,IAAI,4DAA4D,cAAc,EAAE,CAAC;AAChI,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,wBAAwB,CAAC,KAMxC;IACC,OAAO;QACL,KAAK,CAAC,cAAc;QACpB,KAAK,CAAC,MAAM;QACZ,oBAAoB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;KAClF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ArtifactStore, RunPaths } from "@claudexor/artifact-store";
|
|
2
|
+
import type { ResumableCause, RunResumable } from "@claudexor/schema";
|
|
3
|
+
export interface ContinuityTerminalFacts {
|
|
4
|
+
resumable?: RunResumable;
|
|
5
|
+
/** Internal snapshot used only if gates/review/arbitration later leave work unfinished. */
|
|
6
|
+
resumableOnFailure?: RunResumable;
|
|
7
|
+
}
|
|
8
|
+
/** Execution roots without an isolated envelope survive this run (Agent and Ask). */
|
|
9
|
+
export declare function continuityWorkspace(envelope: {
|
|
10
|
+
worktree_path: string;
|
|
11
|
+
repo_root: string;
|
|
12
|
+
} | null, cwd: string): RunResumable["workspace"];
|
|
13
|
+
/** The first attempt that declared continuation facts speaks for the run. */
|
|
14
|
+
export declare function resumableOf(items: ReadonlyArray<ContinuityTerminalFacts>, cause?: ResumableCause): RunResumable | null;
|
|
15
|
+
/** Write `final/resumable.yaml` when present and return the terminal payload fragment. */
|
|
16
|
+
export declare function resumableTerminal(store: ArtifactStore, paths: Pick<RunPaths, "finalDir">, items: ReadonlyArray<ContinuityTerminalFacts>, nonSuccess?: boolean): {
|
|
17
|
+
resumable: RunResumable;
|
|
18
|
+
} | Record<never, never>;
|
|
19
|
+
//# sourceMappingURL=continuity-terminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuity-terminal.d.ts","sourceRoot":"","sources":["../src/continuity-terminal.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtE,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,YAAY,CAAC;CACnC;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC7D,GAAG,EAAE,MAAM,GACV,YAAY,CAAC,WAAW,CAAC,CAI3B;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,KAAK,CAAC,EAAE,cAAc,GACrB,YAAY,GAAG,IAAI,CAMrB;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EACjC,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,UAAU,UAAQ,GACjB;IAAE,SAAS,EAAE,YAAY,CAAA;CAAE,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAKpD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The terminal `resumable` block (INTERFACES §2): present on every terminal
|
|
3
|
+
* whose WORK is unfinished and can be continued — non-success lifecycles and
|
|
4
|
+
* `succeeded` runs whose work state is `needs_input`/`incomplete`. The attempt
|
|
5
|
+
* loop decides it (`InRunContinuity.finish`); this owner materializes it as
|
|
6
|
+
* `final/resumable.yaml` and the payload fragment every terminal event carries,
|
|
7
|
+
* so no lane re-derives the block.
|
|
8
|
+
*/
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
/** Execution roots without an isolated envelope survive this run (Agent and Ask). */
|
|
11
|
+
export function continuityWorkspace(envelope, cwd) {
|
|
12
|
+
return !envelope || envelope.worktree_path === envelope.repo_root
|
|
13
|
+
? { kind: "in_place", root: cwd }
|
|
14
|
+
: { kind: "none", root: null };
|
|
15
|
+
}
|
|
16
|
+
/** The first attempt that declared continuation facts speaks for the run. */
|
|
17
|
+
export function resumableOf(items, cause) {
|
|
18
|
+
const declared = items.find((item) => item.resumable)?.resumable;
|
|
19
|
+
if (declared)
|
|
20
|
+
return declared;
|
|
21
|
+
if (!cause)
|
|
22
|
+
return null;
|
|
23
|
+
const completed = items.find((item) => item.resumableOnFailure)?.resumableOnFailure;
|
|
24
|
+
return completed ? { ...completed, cause } : null;
|
|
25
|
+
}
|
|
26
|
+
/** Write `final/resumable.yaml` when present and return the terminal payload fragment. */
|
|
27
|
+
export function resumableTerminal(store, paths, items, nonSuccess = false) {
|
|
28
|
+
const resumable = resumableOf(items, nonSuccess ? "other" : undefined);
|
|
29
|
+
if (!resumable)
|
|
30
|
+
return {};
|
|
31
|
+
store.writeYaml(join(paths.finalDir, "resumable.yaml"), resumable);
|
|
32
|
+
return { resumable };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=continuity-terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuity-terminal.js","sourceRoot":"","sources":["../src/continuity-terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CACjC,QAA6D,EAC7D,GAAW;IAEX,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,SAAS;QAC/D,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE;QACjC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CACzB,KAA6C,EAC7C,KAAsB;IAEtB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACjE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACpF,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,iBAAiB,CAC/B,KAAoB,EACpB,KAAiC,EACjC,KAA6C,EAC7C,UAAU,GAAG,KAAK;IAElB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
|