@claudexor/orchestrator 5.0.2 → 6.0.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/account-evidence.d.ts +7 -0
- package/dist/account-evidence.d.ts.map +1 -1
- package/dist/account-evidence.js +12 -0
- package/dist/account-evidence.js.map +1 -1
- package/dist/account-pool.d.ts +4 -0
- package/dist/account-pool.d.ts.map +1 -1
- package/dist/account-pool.js +8 -1
- package/dist/account-pool.js.map +1 -1
- package/dist/account-resolution.d.ts.map +1 -1
- package/dist/account-resolution.js +7 -5
- package/dist/account-resolution.js.map +1 -1
- package/dist/attemptFinalize.d.ts +22 -7
- package/dist/attemptFinalize.d.ts.map +1 -1
- package/dist/attemptFinalize.js +29 -7
- package/dist/attemptFinalize.js.map +1 -1
- package/dist/attemptTelemetry.d.ts +19 -18
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +33 -79
- package/dist/attemptTelemetry.js.map +1 -1
- package/dist/attemptUsage.d.ts.map +1 -1
- package/dist/attemptUsage.js +6 -14
- package/dist/attemptUsage.js.map +1 -1
- package/dist/attemptUsageCost.d.ts +11 -2
- package/dist/attemptUsageCost.d.ts.map +1 -1
- package/dist/attemptUsageCost.js +16 -3
- package/dist/attemptUsageCost.js.map +1 -1
- package/dist/candidateEvidence.d.ts +33 -8
- package/dist/candidateEvidence.d.ts.map +1 -1
- package/dist/candidateEvidence.js +58 -24
- package/dist/candidateEvidence.js.map +1 -1
- package/dist/candidateReview.d.ts.map +1 -1
- package/dist/candidateReview.js +4 -2
- package/dist/candidateReview.js.map +1 -1
- package/dist/candidateTerminals.d.ts +27 -1
- package/dist/candidateTerminals.d.ts.map +1 -1
- package/dist/candidateTerminals.js +51 -2
- package/dist/candidateTerminals.js.map +1 -1
- package/dist/carrier-planner.d.ts +5 -2
- package/dist/carrier-planner.d.ts.map +1 -1
- package/dist/carrier-planner.js +6 -3
- package/dist/carrier-planner.js.map +1 -1
- package/dist/command-telemetry.d.ts +15 -0
- package/dist/command-telemetry.d.ts.map +1 -0
- package/dist/command-telemetry.js +27 -0
- package/dist/command-telemetry.js.map +1 -0
- package/dist/continuation-evidence-io.d.ts +13 -3
- package/dist/continuation-evidence-io.d.ts.map +1 -1
- package/dist/continuation-evidence-io.js +36 -4
- package/dist/continuation-evidence-io.js.map +1 -1
- package/dist/continuation-evidence.d.ts +7 -2
- package/dist/continuation-evidence.d.ts.map +1 -1
- package/dist/continuation-evidence.js +16 -4
- package/dist/continuation-evidence.js.map +1 -1
- package/dist/continuation-later.d.ts.map +1 -1
- package/dist/continuation-later.js +6 -6
- package/dist/continuation-later.js.map +1 -1
- package/dist/continuity-facts.d.ts +27 -1
- package/dist/continuity-facts.d.ts.map +1 -1
- package/dist/continuity-facts.js +72 -4
- package/dist/continuity-facts.js.map +1 -1
- package/dist/continuity-notice.d.ts.map +1 -1
- package/dist/continuity-notice.js +2 -1
- package/dist/continuity-notice.js.map +1 -1
- package/dist/continuity-summary.d.ts +7 -1
- package/dist/continuity-summary.d.ts.map +1 -1
- package/dist/continuity-summary.js +33 -13
- package/dist/continuity-summary.js.map +1 -1
- package/dist/continuity.d.ts +36 -8
- package/dist/continuity.d.ts.map +1 -1
- package/dist/continuity.js +96 -21
- package/dist/continuity.js.map +1 -1
- package/dist/credential-cooldown.d.ts +7 -0
- package/dist/credential-cooldown.d.ts.map +1 -1
- package/dist/credential-cooldown.js +31 -5
- package/dist/credential-cooldown.js.map +1 -1
- package/dist/credential-differential.d.ts +15 -1
- package/dist/credential-differential.d.ts.map +1 -1
- package/dist/credential-differential.js +32 -17
- package/dist/credential-differential.js.map +1 -1
- package/dist/credential-execution.d.ts.map +1 -1
- package/dist/credential-execution.js +14 -15
- package/dist/credential-execution.js.map +1 -1
- package/dist/credential-preflight.js +1 -1
- package/dist/credential-preflight.js.map +1 -1
- package/dist/credential-profile-rotation.d.ts +1 -0
- package/dist/credential-profile-rotation.d.ts.map +1 -1
- package/dist/credential-profile-rotation.js +1 -1
- package/dist/credential-profile-rotation.js.map +1 -1
- package/dist/deepScanReducer.d.ts.map +1 -1
- package/dist/deepScanReducer.js +8 -18
- package/dist/deepScanReducer.js.map +1 -1
- package/dist/delegatedHome.d.ts +12 -7
- package/dist/delegatedHome.d.ts.map +1 -1
- package/dist/delegatedHome.js +16 -4
- package/dist/delegatedHome.js.map +1 -1
- package/dist/delegationFailure.d.ts +9 -8
- package/dist/delegationFailure.d.ts.map +1 -1
- package/dist/delegationFailure.js +7 -5
- package/dist/delegationFailure.js.map +1 -1
- package/dist/directoryCandidate.d.ts.map +1 -1
- package/dist/directoryCandidate.js +35 -5
- package/dist/directoryCandidate.js.map +1 -1
- package/dist/harnessFailure.d.ts +26 -5
- package/dist/harnessFailure.d.ts.map +1 -1
- package/dist/harnessFailure.js +41 -6
- package/dist/harnessFailure.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/inrun-continuity-carrier.d.ts +4 -1
- package/dist/inrun-continuity-carrier.d.ts.map +1 -1
- package/dist/inrun-continuity-carrier.js +2 -0
- package/dist/inrun-continuity-carrier.js.map +1 -1
- package/dist/inrun-continuity.d.ts +2 -2
- package/dist/inrun-continuity.d.ts.map +1 -1
- package/dist/inrun-continuity.js +22 -19
- package/dist/inrun-continuity.js.map +1 -1
- package/dist/inrun-retained-output.d.ts +18 -4
- package/dist/inrun-retained-output.d.ts.map +1 -1
- package/dist/inrun-retained-output.js +39 -8
- package/dist/inrun-retained-output.js.map +1 -1
- package/dist/interaction.d.ts +14 -1
- package/dist/interaction.d.ts.map +1 -1
- package/dist/interaction.js +91 -22
- package/dist/interaction.js.map +1 -1
- package/dist/laneStreamEvents.d.ts +9 -10
- package/dist/laneStreamEvents.d.ts.map +1 -1
- package/dist/laneStreamEvents.js +21 -7
- package/dist/laneStreamEvents.js.map +1 -1
- package/dist/modelGovernance.d.ts +10 -4
- package/dist/modelGovernance.d.ts.map +1 -1
- package/dist/modelGovernance.js +21 -1
- package/dist/modelGovernance.js.map +1 -1
- package/dist/native-retry-telemetry.d.ts +4 -1
- package/dist/native-retry-telemetry.d.ts.map +1 -1
- package/dist/native-retry-telemetry.js +6 -1
- package/dist/native-retry-telemetry.js.map +1 -1
- package/dist/orchestrator.d.ts +7 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +129 -139
- package/dist/orchestrator.js.map +1 -1
- package/dist/planRun.d.ts.map +1 -1
- package/dist/planRun.js +7 -8
- package/dist/planRun.js.map +1 -1
- package/dist/plannerAttempt.d.ts +1 -0
- package/dist/plannerAttempt.d.ts.map +1 -1
- package/dist/plannerAttempt.js +14 -19
- package/dist/plannerAttempt.js.map +1 -1
- package/dist/pool-attempt-evidence.d.ts +5 -1
- package/dist/pool-attempt-evidence.d.ts.map +1 -1
- package/dist/pool-attempt-evidence.js +36 -4
- package/dist/pool-attempt-evidence.js.map +1 -1
- package/dist/processing-telemetry.d.ts +3 -1
- package/dist/processing-telemetry.d.ts.map +1 -1
- package/dist/processing-telemetry.js +11 -0
- package/dist/processing-telemetry.js.map +1 -1
- package/dist/quota-refusal-scope.d.ts +1 -0
- package/dist/quota-refusal-scope.d.ts.map +1 -1
- package/dist/quota-refusal-scope.js +29 -1
- package/dist/quota-refusal-scope.js.map +1 -1
- package/dist/rawPatchLane.d.ts +68 -0
- package/dist/rawPatchLane.d.ts.map +1 -0
- package/dist/rawPatchLane.js +116 -0
- package/dist/rawPatchLane.js.map +1 -0
- package/dist/readonlyTerminals.d.ts +0 -3
- package/dist/readonlyTerminals.d.ts.map +1 -1
- package/dist/readonlyTerminals.js +36 -14
- package/dist/readonlyTerminals.js.map +1 -1
- package/dist/requestRequirements.d.ts +5 -4
- package/dist/requestRequirements.d.ts.map +1 -1
- package/dist/requestRequirements.js +6 -5
- package/dist/requestRequirements.js.map +1 -1
- package/dist/retainedOutput.d.ts +19 -2
- package/dist/retainedOutput.d.ts.map +1 -1
- package/dist/retainedOutput.js +83 -12
- package/dist/retainedOutput.js.map +1 -1
- package/dist/reviewerInventory.d.ts +2 -8
- package/dist/reviewerInventory.d.ts.map +1 -1
- package/dist/reviewerInventory.js +2 -3
- package/dist/reviewerInventory.js.map +1 -1
- package/dist/reviewerPanel.d.ts +1 -1
- package/dist/reviewerPanel.d.ts.map +1 -1
- package/dist/reviewerPanel.js +9 -4
- package/dist/reviewerPanel.js.map +1 -1
- package/dist/route-admission.d.ts.map +1 -1
- package/dist/route-admission.js +3 -1
- package/dist/route-admission.js.map +1 -1
- package/dist/routeControls.d.ts +32 -0
- package/dist/routeControls.d.ts.map +1 -0
- package/dist/routeControls.js +47 -0
- package/dist/routeControls.js.map +1 -0
- package/dist/run-input-resolution.d.ts +5 -0
- package/dist/run-input-resolution.d.ts.map +1 -1
- package/dist/run-input-resolution.js +12 -6
- package/dist/run-input-resolution.js.map +1 -1
- package/dist/run-runtime-root.d.ts +16 -0
- package/dist/run-runtime-root.d.ts.map +1 -0
- package/dist/run-runtime-root.js +16 -0
- package/dist/run-runtime-root.js.map +1 -0
- package/dist/runAdmission.d.ts.map +1 -1
- package/dist/runAdmission.js +2 -1
- package/dist/runAdmission.js.map +1 -1
- package/dist/runFacts.d.ts +5 -2
- package/dist/runFacts.d.ts.map +1 -1
- package/dist/runFacts.js +11 -11
- package/dist/runFacts.js.map +1 -1
- package/dist/runScope.d.ts +2 -0
- package/dist/runScope.d.ts.map +1 -1
- package/dist/runScope.js +3 -2
- package/dist/runScope.js.map +1 -1
- package/dist/runSupport.d.ts +3 -1
- package/dist/runSupport.d.ts.map +1 -1
- package/dist/runSupport.js +6 -3
- package/dist/runSupport.js.map +1 -1
- package/dist/runTelemetryWriter.d.ts +18 -5
- 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.map +1 -1
- package/dist/runTerminalResults.js +36 -9
- package/dist/runTerminalResults.js.map +1 -1
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +13 -5
- package/dist/runTerminals.js.map +1 -1
- package/dist/secretDiff.d.ts.map +1 -1
- package/dist/secretDiff.js +2 -1
- package/dist/secretDiff.js.map +1 -1
- package/dist/transientClassify.d.ts +17 -9
- package/dist/transientClassify.d.ts.map +1 -1
- package/dist/transientClassify.js +33 -9
- package/dist/transientClassify.js.map +1 -1
- package/dist/webEvidence.d.ts +41 -0
- package/dist/webEvidence.d.ts.map +1 -0
- package/dist/webEvidence.js +99 -0
- package/dist/webEvidence.js.map +1 -0
- package/dist/workReportEnvelope.d.ts +12 -0
- package/dist/workReportEnvelope.d.ts.map +1 -1
- package/dist/workReportEnvelope.js +19 -0
- package/dist/workReportEnvelope.js.map +1 -1
- package/package.json +17 -17
- package/dist/continuation-chain.test-support.d.ts +0 -473
- package/dist/continuation-chain.test-support.d.ts.map +0 -1
- package/dist/continuation-chain.test-support.js +0 -206
- package/dist/continuation-chain.test-support.js.map +0 -1
- package/dist/inrun-continuity.test-support.d.ts +0 -504
- package/dist/inrun-continuity.test-support.d.ts.map +0 -1
- package/dist/inrun-continuity.test-support.js +0 -212
- package/dist/inrun-continuity.test-support.js.map +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One candidate lane's raw patch custody across its tries (#147, #551): the packet
|
|
3
|
+
* each dispatch sizes, the envelope its answer carries and the refusal that ends a
|
|
4
|
+
* try. Each dispatch describes the exact tree the candidate holds at that moment,
|
|
5
|
+
* while the envelope's `base_sha` stays the run's delivery base, so a later round
|
|
6
|
+
* revises the earlier one and the captured result from that base holds them all.
|
|
7
|
+
*/
|
|
8
|
+
import { type RawContextOptions } from "@claudexor/context";
|
|
9
|
+
import type { RawRequestCapacity } from "@claudexor/core";
|
|
10
|
+
import { RawPatchRefusalCode, type HarnessEvent, type ImplementationTransport, type RawContextPacket, type WorkspaceEnvelope } from "@claudexor/schema";
|
|
11
|
+
import { RawPatchRefusalError } from "@claudexor/workspace";
|
|
12
|
+
import type { CandidateRun } from "./candidateEvidence.js";
|
|
13
|
+
export declare class RawPatchLane {
|
|
14
|
+
private readonly envelope;
|
|
15
|
+
private readonly producesPatches;
|
|
16
|
+
private packet;
|
|
17
|
+
private patch;
|
|
18
|
+
/** This try's typed refusal: the attempt's declared failure, and no retry. */
|
|
19
|
+
refusal: RawPatchRefusalError | null;
|
|
20
|
+
/** What the per-spawn gate needs to size this lane's packet from its catalog read. */
|
|
21
|
+
readonly dispatch: {
|
|
22
|
+
rawContext?: (capacity: RawRequestCapacity | null) => Promise<RawContextPacket>;
|
|
23
|
+
};
|
|
24
|
+
constructor(transport: ImplementationTransport, envelope: WorkspaceEnvelope, context: RawContextOptions);
|
|
25
|
+
/** A patch binds only the packet its own try sent. */
|
|
26
|
+
beginTry(): void;
|
|
27
|
+
observe(event: HarnessEvent): void;
|
|
28
|
+
/** Materialize the answer of a try that ended without a harness error. */
|
|
29
|
+
settle(harnessErrored: boolean): Promise<void>;
|
|
30
|
+
/** Keep a thrown refusal as this try's failure; false for any other throw. */
|
|
31
|
+
refused(err: unknown): boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One run's Raw membership between a persistent worktree and its isolated candidates
|
|
35
|
+
* (#594). Membership is scoped to a Git worktree: a thread's persistent worktree is the
|
|
36
|
+
* source of the next turn, but a raw transport still executes in a disposable candidate.
|
|
37
|
+
* What a candidate would bring back stays apart from the worktree until adoption, and
|
|
38
|
+
* only the winner's is published; its envelope is gone by then, so the record travels
|
|
39
|
+
* with the attempt. An ordinary directory has no Git worktree and so no membership.
|
|
40
|
+
*/
|
|
41
|
+
export declare class RawAdoption {
|
|
42
|
+
private readonly execRoot;
|
|
43
|
+
private readonly records;
|
|
44
|
+
private readonly inPlace;
|
|
45
|
+
constructor(execRoot: string, run: {
|
|
46
|
+
inPlace?: boolean;
|
|
47
|
+
workspaceKind?: string;
|
|
48
|
+
});
|
|
49
|
+
/** Give a candidate the worktree's private record before RawPatchLane sizes its packet. */
|
|
50
|
+
seed(worktree: string): Promise<void>;
|
|
51
|
+
/** Hold a finished candidate's record for adoption, its objects copied, no ref moved. */
|
|
52
|
+
keep(attemptId: string, worktree: string): Promise<void>;
|
|
53
|
+
/** The adoption already stands: a record that cannot follow it is reported, never a
|
|
54
|
+
* reason to call the delivered work undelivered. */
|
|
55
|
+
publish(attemptId: string): Promise<{
|
|
56
|
+
raw_records_error?: string;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
59
|
+
/** The typed code of a round whose patch the engine refused for a reason the model
|
|
60
|
+
* can correct, else null. That patch was not applied, so the round has no result of
|
|
61
|
+
* its own: the candidate still holds an earlier round's result, and this round's
|
|
62
|
+
* failure is the refusal, never a repeat of that result (INV-047). */
|
|
63
|
+
export declare function correctableRefusal(run: CandidateRun): RawPatchRefusalCode | null;
|
|
64
|
+
/** Failures another convergence round cannot repair: a refused request, a rejected
|
|
65
|
+
* effort, and a raw refusal the model's next patch cannot correct. Every other
|
|
66
|
+
* failure, a correctable refusal included, goes back through the revise prompt. */
|
|
67
|
+
export declare function endsConvergence(run: CandidateRun): boolean;
|
|
68
|
+
//# sourceMappingURL=rawPatchLane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawPatchLane.d.ts","sourceRoot":"","sources":["../src/rawPatchLane.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EASrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,qBAAa,YAAY;IAarB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAZ3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAoC;IACjD,8EAA8E;IAC9E,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC5C,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE;QACjB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACjF,CAAC;IAEF,YACE,SAAS,EAAE,uBAAuB,EACjB,QAAQ,EAAE,iBAAiB,EAC5C,OAAO,EAAE,iBAAiB,EAU3B;IAED,sDAAsD;IACtD,QAAQ,IAAI,IAAI,CAEf;IAED,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAUjC;IAED,0EAA0E;IACpE,MAAM,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CASnD;IAED,8EAA8E;IAC9E,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI7B;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAElC,YACmB,QAAQ,EAAE,MAAM,EACjC,GAAG,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAGnD;IAED,2FAA2F;IACrF,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1C;IAED,yFAAyF;IACnF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D;IAED;wDACoD;IAC9C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAOxE;CACF;AAED;;;sEAGsE;AACtE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,mBAAmB,GAAG,IAAI,CAGhF;AAED;;mFAEmF;AACnF,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAO1D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One candidate lane's raw patch custody across its tries (#147, #551): the packet
|
|
3
|
+
* each dispatch sizes, the envelope its answer carries and the refusal that ends a
|
|
4
|
+
* try. Each dispatch describes the exact tree the candidate holds at that moment,
|
|
5
|
+
* while the envelope's `base_sha` stays the run's delivery base, so a later round
|
|
6
|
+
* revises the earlier one and the captured result from that base holds them all.
|
|
7
|
+
*/
|
|
8
|
+
import { rawContextSizer } from "@claudexor/context";
|
|
9
|
+
import { RawPatchRefusalCode, } from "@claudexor/schema";
|
|
10
|
+
import { RawPatchRefusalError, captureRawPatchEnvelope, consumeRawPatchEnvelope, exportRawRecords, publishRawRecords, rawCandidateTree, rawPatchRefusalIsModelCorrectable, transferRawRecords, } from "@claudexor/workspace";
|
|
11
|
+
import { safeErrorMessage } from "./runSupport.js";
|
|
12
|
+
export class RawPatchLane {
|
|
13
|
+
envelope;
|
|
14
|
+
producesPatches;
|
|
15
|
+
packet = null;
|
|
16
|
+
patch = null;
|
|
17
|
+
/** This try's typed refusal: the attempt's declared failure, and no retry. */
|
|
18
|
+
refusal = null;
|
|
19
|
+
/** What the per-spawn gate needs to size this lane's packet from its catalog read. */
|
|
20
|
+
dispatch;
|
|
21
|
+
constructor(transport, envelope, context) {
|
|
22
|
+
this.envelope = envelope;
|
|
23
|
+
const sizer = rawContextSizer(transport, envelope, context);
|
|
24
|
+
this.producesPatches = sizer !== null;
|
|
25
|
+
this.dispatch = sizer
|
|
26
|
+
? {
|
|
27
|
+
rawContext: async (capacity) => (this.packet = await sizer(capacity, await rawCandidateTree(envelope.worktree_path))),
|
|
28
|
+
}
|
|
29
|
+
: {};
|
|
30
|
+
}
|
|
31
|
+
/** A patch binds only the packet its own try sent. */
|
|
32
|
+
beginTry() {
|
|
33
|
+
this.packet = this.patch = this.refusal = null;
|
|
34
|
+
}
|
|
35
|
+
observe(event) {
|
|
36
|
+
this.patch = captureRawPatchEnvelope(this.producesPatches, this.patch, event);
|
|
37
|
+
// The adapter's own typed refusal is the same kind of failure: before any request
|
|
38
|
+
// (no packet, or over a known window) or after one (the answer was no patch). It
|
|
39
|
+
// is kept without a throw, so a usage event after it is still read.
|
|
40
|
+
if (event.type === "error" && event.refusal_code)
|
|
41
|
+
this.refusal ??= new RawPatchRefusalError(event.refusal_code, event.error ?? event.refusal_code);
|
|
42
|
+
}
|
|
43
|
+
/** Materialize the answer of a try that ended without a harness error. */
|
|
44
|
+
async settle(harnessErrored) {
|
|
45
|
+
if (!this.producesPatches || harnessErrored)
|
|
46
|
+
return;
|
|
47
|
+
await consumeRawPatchEnvelope({
|
|
48
|
+
repoRoot: this.envelope.repo_root,
|
|
49
|
+
worktreePath: this.envelope.worktree_path,
|
|
50
|
+
baseCommitSha: this.envelope.base_sha ?? "HEAD",
|
|
51
|
+
context: this.packet,
|
|
52
|
+
envelope: this.patch,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/** Keep a thrown refusal as this try's failure; false for any other throw. */
|
|
56
|
+
refused(err) {
|
|
57
|
+
if (!(err instanceof RawPatchRefusalError))
|
|
58
|
+
return false;
|
|
59
|
+
this.refusal = err;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* One run's Raw membership between a persistent worktree and its isolated candidates
|
|
65
|
+
* (#594). Membership is scoped to a Git worktree: a thread's persistent worktree is the
|
|
66
|
+
* source of the next turn, but a raw transport still executes in a disposable candidate.
|
|
67
|
+
* What a candidate would bring back stays apart from the worktree until adoption, and
|
|
68
|
+
* only the winner's is published; its envelope is gone by then, so the record travels
|
|
69
|
+
* with the attempt. An ordinary directory has no Git worktree and so no membership.
|
|
70
|
+
*/
|
|
71
|
+
export class RawAdoption {
|
|
72
|
+
execRoot;
|
|
73
|
+
records = new Map();
|
|
74
|
+
inPlace;
|
|
75
|
+
constructor(execRoot, run) {
|
|
76
|
+
this.execRoot = execRoot;
|
|
77
|
+
this.inPlace = run.inPlace === true && run.workspaceKind !== "directory";
|
|
78
|
+
}
|
|
79
|
+
/** Give a candidate the worktree's private record before RawPatchLane sizes its packet. */
|
|
80
|
+
async seed(worktree) {
|
|
81
|
+
if (this.inPlace)
|
|
82
|
+
await transferRawRecords(this.execRoot, worktree);
|
|
83
|
+
}
|
|
84
|
+
/** Hold a finished candidate's record for adoption, its objects copied, no ref moved. */
|
|
85
|
+
async keep(attemptId, worktree) {
|
|
86
|
+
if (!this.inPlace || worktree === this.execRoot)
|
|
87
|
+
return;
|
|
88
|
+
this.records.set(attemptId, await exportRawRecords(worktree, this.execRoot));
|
|
89
|
+
}
|
|
90
|
+
/** The adoption already stands: a record that cannot follow it is reported, never a
|
|
91
|
+
* reason to call the delivered work undelivered. */
|
|
92
|
+
async publish(attemptId) {
|
|
93
|
+
const records = this.records.get(attemptId);
|
|
94
|
+
if (!records)
|
|
95
|
+
return {};
|
|
96
|
+
return publishRawRecords(this.execRoot, records).then(() => ({}), (error) => ({ raw_records_error: safeErrorMessage(error) }));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** The typed code of a round whose patch the engine refused for a reason the model
|
|
100
|
+
* can correct, else null. That patch was not applied, so the round has no result of
|
|
101
|
+
* its own: the candidate still holds an earlier round's result, and this round's
|
|
102
|
+
* failure is the refusal, never a repeat of that result (INV-047). */
|
|
103
|
+
export function correctableRefusal(run) {
|
|
104
|
+
const code = RawPatchRefusalCode.safeParse(run.declaredFailure?.code);
|
|
105
|
+
return code.success && rawPatchRefusalIsModelCorrectable(code.data) ? code.data : null;
|
|
106
|
+
}
|
|
107
|
+
/** Failures another convergence round cannot repair: a refused request, a rejected
|
|
108
|
+
* effort, and a raw refusal the model's next patch cannot correct. Every other
|
|
109
|
+
* failure, a correctable refusal included, goes back through the revise prompt. */
|
|
110
|
+
export function endsConvergence(run) {
|
|
111
|
+
const rawRefusal = RawPatchRefusalCode.safeParse(run.declaredFailure?.code);
|
|
112
|
+
return (Boolean(run.telemetry.requestRefusal) ||
|
|
113
|
+
run.telemetry.effortResolution?.resolution === "rejected" ||
|
|
114
|
+
(rawRefusal.success && !rawPatchRefusalIsModelCorrectable(rawRefusal.data)));
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=rawPatchLane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawPatchLane.js","sourceRoot":"","sources":["../src/rawPatchLane.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,9 +19,6 @@ export interface ReadonlyAttempt extends ContinuityTerminalFacts {
|
|
|
19
19
|
* belongs in the denominator/omissions but never ran the harness, so the
|
|
20
20
|
* all-denied terminal still routes through the QA-050 budget classifier. */
|
|
21
21
|
budgetDenied?: boolean;
|
|
22
|
-
/** D-16 r8: scout ran out of context — a failed omission, never reducer
|
|
23
|
-
* input; ALL-interrupted terminalizes interrupted. */
|
|
24
|
-
interrupted?: boolean;
|
|
25
22
|
/** A5: the typed refusal (exhausted credential pool / spent window) this
|
|
26
23
|
* attempt died on, so the chain terminal can speak it machine-readably. */
|
|
27
24
|
declaredFailure?: ReturnType<typeof declaredFailure>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readonlyTerminals.d.ts","sourceRoot":"","sources":["../src/readonlyTerminals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"readonlyTerminals.d.ts","sourceRoot":"","sources":["../src/readonlyTerminals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,OAAO,EAA8C,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7E,yFAAyF;AACzF,MAAM,WAAW,eAAgB,SAAQ,uBAAuB;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;IAC5B;;gFAE4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;+EAC2E;IAC3E,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;CACtD;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,kBAAkB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,EAAE,CAAC;IAC5F,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,cAAc,IAAI,IAAI,CAAC;CACxB;AAED,uEAAuE;AACvE,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,GAAG;IAAE,YAAY,EAAE,OAAO,CAAA;CAAE,GACzD,kBAAkB,CAmIpB;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CA0FxF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import { makeOutcomeFacts } from "@claudexor/schema";
|
|
3
|
-
import { readOnlyNoSuccessTerminal } from "./attemptFinalize.js";
|
|
3
|
+
import { attemptInterruption, readOnlyNoSuccessTerminal, } from "./attemptFinalize.js";
|
|
4
4
|
import { budgetFailureRecord, classifyBudgetFailure } from "./budgetFailure.js";
|
|
5
5
|
import { unanimousDeclaredFailure } from "./candidateEvidence.js";
|
|
6
6
|
import { carryingAttempts, resumableTerminal, } from "./continuity-terminal.js";
|
|
7
|
-
import { attemptVendorFailure, dominantHarnessFailureCategory, harnessFailureNextActions, } from "./harnessFailure.js";
|
|
7
|
+
import { attemptCauseLines, attemptVendorFailure, dominantHarnessFailureCategory, harnessFailureNextActions, withVendorCause, } from "./harnessFailure.js";
|
|
8
8
|
import { poolFailure } from "./pool-attempt-evidence.js";
|
|
9
9
|
import { writeFailure } from "./runTerminalResults.js";
|
|
10
10
|
/** A read-only chain with no successful attempt (QA-036/QA-050/A5). */
|
|
@@ -19,8 +19,12 @@ export function readOnlyChainFailureResult(input) {
|
|
|
19
19
|
const budgetMapping = budgetStopped && !webBlocked
|
|
20
20
|
? classifyBudgetFailure({ denial: budgetDenial, terminal: ledger.terminal() })
|
|
21
21
|
: null;
|
|
22
|
+
// A typed limit that ended the last attempt is its outcome (#299), below budget and web.
|
|
23
|
+
const interruption = budgetMapping || webBlocked ? null : attemptInterruption(last?.telemetry);
|
|
24
|
+
// The last attempt speaks, with the vendor's own failure for its last try (#633).
|
|
25
|
+
const vendor = attemptVendorFailure(attemptTelemetries, last?.attemptId);
|
|
22
26
|
const { message: singleError, poolAttempts } = poolFailure(budgetMapping?.safeMessage ??
|
|
23
|
-
last?.error ??
|
|
27
|
+
(last?.error != null ? withVendorCause(last.error, vendor) : null) ??
|
|
24
28
|
(budgetStopped ? "budget exhausted before any attempt" : "harness failed"), attempts);
|
|
25
29
|
if (input.fallbackOpen || webBlocked) {
|
|
26
30
|
log.emit("route.fallback.exhausted", {
|
|
@@ -32,7 +36,7 @@ export function readOnlyChainFailureResult(input) {
|
|
|
32
36
|
}
|
|
33
37
|
const partialReport = [...attempts].reverse().find((a) => a.report)?.report ?? "";
|
|
34
38
|
input.writeTelemetry();
|
|
35
|
-
store.writeText(join(paths.contextDir, "context_error.md"), `# ${budgetMapping ? "Budget Denied" : "Harness Error"}\n\n${singleError}\n`);
|
|
39
|
+
store.writeText(join(paths.contextDir, "context_error.md"), `# ${budgetMapping ? "Budget Denied" : interruption ? "Interrupted" : "Harness Error"}\n\n${singleError}\n`);
|
|
36
40
|
const roEventRefs = attempts.map((a) => `attempts/${a.attemptId}/events.jsonl`);
|
|
37
41
|
if (budgetMapping) {
|
|
38
42
|
writeFailure(store, paths, {
|
|
@@ -60,9 +64,11 @@ export function readOnlyChainFailureResult(input) {
|
|
|
60
64
|
resetsAt: roDeclared?.resetsAt ?? null,
|
|
61
65
|
requestRefusal: roDeclared?.requestRefusal,
|
|
62
66
|
quotaRefusal: roDeclared?.quotaRefusal,
|
|
63
|
-
vendorFailure:
|
|
67
|
+
vendorFailure: vendor,
|
|
64
68
|
poolAttempts,
|
|
65
|
-
nextActions:
|
|
69
|
+
nextActions: interruption
|
|
70
|
+
? interruptionNextActions(interruption)
|
|
71
|
+
: harnessFailureNextActions(roCategory),
|
|
66
72
|
});
|
|
67
73
|
}
|
|
68
74
|
// QA-036: re-check the DELIVERABLE through the shared finalizer helper —
|
|
@@ -74,10 +80,12 @@ export function readOnlyChainFailureResult(input) {
|
|
|
74
80
|
budgetStopped,
|
|
75
81
|
attemptsCount: attempts.length,
|
|
76
82
|
});
|
|
77
|
-
const terminalFacts =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
const terminalFacts = interruption
|
|
84
|
+
? makeOutcomeFacts("interrupted", { reason: interruption })
|
|
85
|
+
: makeOutcomeFacts(roTerminal.lifecycle, {
|
|
86
|
+
...(roTerminal.review ? { review: roTerminal.review } : {}),
|
|
87
|
+
reason: budgetMapping?.reason ?? roTerminal.reason,
|
|
88
|
+
});
|
|
81
89
|
const terminalHarnessId = budgetMapping?.harnessId ?? last?.harnessId;
|
|
82
90
|
store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (${mode})\n\n- Harness: ${terminalHarnessId ?? "none"}\n- Lifecycle: ${terminalFacts.lifecycle}${terminalFacts.reason ? ` (${terminalFacts.reason})` : ""}\n\n${singleError}\n`);
|
|
83
91
|
log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
|
|
@@ -131,16 +139,18 @@ export function deepScanFailureResult(input) {
|
|
|
131
139
|
const scanBudgetMapping = budgetStopped && !blocked && attempts.every((a) => a.budgetDenied === true)
|
|
132
140
|
? classifyBudgetFailure({ denial: budgetDenial, terminal: ledger.terminal() })
|
|
133
141
|
: null;
|
|
134
|
-
// D-16 r8: ALL scouts
|
|
135
|
-
|
|
142
|
+
// D-16 r8: ALL scouts stopped by a typed limit (context or the max-turns cap,
|
|
143
|
+
// also when the vendor then exited non-zero) → the aggregate is interrupted.
|
|
144
|
+
const limits = attempts.map((a) => attemptInterruption(a.telemetry));
|
|
145
|
+
const allInterrupted = attempts.length > 0 && limits.every((limit) => limit !== null);
|
|
136
146
|
const scanFailFacts = allInterrupted
|
|
137
|
-
? makeOutcomeFacts("interrupted", { reason:
|
|
147
|
+
? makeOutcomeFacts("interrupted", { reason: limits[0] })
|
|
138
148
|
: makeOutcomeFacts("failed", {
|
|
139
149
|
reason: scanBudgetMapping ? scanBudgetMapping.reason : "harness_failed",
|
|
140
150
|
});
|
|
141
151
|
const { message, poolAttempts } = poolFailure(scanBudgetMapping
|
|
142
152
|
? scanBudgetMapping.safeMessage
|
|
143
|
-
: attempts
|
|
153
|
+
: attemptCauseLines(attempts, attemptTelemetries).join("\n"), attempts);
|
|
144
154
|
input.writeTelemetry();
|
|
145
155
|
if (scanBudgetMapping) {
|
|
146
156
|
writeFailure(store, paths, {
|
|
@@ -204,4 +214,16 @@ export function deepScanFailureResult(input) {
|
|
|
204
214
|
})),
|
|
205
215
|
};
|
|
206
216
|
}
|
|
217
|
+
/** Remediation of a run a typed limit stopped: its partial output is evidence, never an answer. */
|
|
218
|
+
function interruptionNextActions(interruption) {
|
|
219
|
+
return interruption === "turn_limit_reached"
|
|
220
|
+
? [
|
|
221
|
+
"Inspect the retained partial output (final/retained-output.md)",
|
|
222
|
+
"Continue this run (continueFrom) for more turns, or re-run without a max-turns limit",
|
|
223
|
+
]
|
|
224
|
+
: [
|
|
225
|
+
"Inspect the retained partial output (final/retained-output.md)",
|
|
226
|
+
"Re-run with a narrower scope",
|
|
227
|
+
];
|
|
228
|
+
}
|
|
207
229
|
//# sourceMappingURL=readonlyTerminals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readonlyTerminals.js","sourceRoot":"","sources":["../src/readonlyTerminals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,gBAAgB,EAAiB,MAAM,mBAAmB,CAAC;AAGpE,OAAO,
|
|
1
|
+
{"version":3,"file":"readonlyTerminals.js","sourceRoot":"","sources":["../src/readonlyTerminals.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,10 +47,11 @@ export declare class RequestRequirementsError extends HarnessUnavailableError {
|
|
|
47
47
|
export declare class RequestRequirementsResolver {
|
|
48
48
|
/** Patch producers only read; the engine owns materialization and delivery. */
|
|
49
49
|
adapterAccess(intent: Intent, implementationTransport: ImplementationTransport, requestedAccess: AccessProfile): AccessProfile;
|
|
50
|
-
/** Project-scoped Ask
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* a
|
|
50
|
+
/** Project-scoped Ask and Plan are answered by the harness reading the project
|
|
51
|
+
* itself: their prompt carries a path atlas, never file contents (#133, #137). A
|
|
52
|
+
* lane that may play them but cannot read files is refused before dispatch, which
|
|
53
|
+
* holds a Council's drafts and its merge too; work without a project needs no
|
|
54
|
+
* file access. Null = admitted, or another check speaks. */
|
|
54
55
|
projectReadRefusal(intent: Intent, input: {
|
|
55
56
|
repoRoot: string;
|
|
56
57
|
}, status: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestRequirements.d.ts","sourceRoot":"","sources":["../src/requestRequirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,MAAM,EACN,4BAA4B,EAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAK1D,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,qBAAqB,CAAC;IACjC,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,yBAAyB,GACnC,UAAU,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAEjF,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAE3D;AAED,qBAAa,wBAAyB,SAAQ,uBAAuB;IAKjE,QAAQ,CAAC,WAAW,EAAE,4BAA4B,EAAE;IAJtD,QAAQ,CAAC,IAAI,yBAAyB;IAEtC,YACE,OAAO,EAAE,MAAM,EACN,WAAW,EAAE,4BAA4B,EAAE,EAGrD;CACF;AAED,4EAA4E;AAC5E,qBAAa,2BAA2B;IACtC,+EAA+E;IAC/E,aAAa,CACX,MAAM,EAAE,MAAM,EACd,uBAAuB,EAAE,uBAAuB,EAChD,eAAe,EAAE,aAAa,GAC7B,aAAa,CAKf;IAED
|
|
1
|
+
{"version":3,"file":"requestRequirements.d.ts","sourceRoot":"","sources":["../src/requestRequirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,12 +22,13 @@ export class RequestRequirementsResolver {
|
|
|
22
22
|
? "readonly"
|
|
23
23
|
: requestedAccess;
|
|
24
24
|
}
|
|
25
|
-
/** Project-scoped Ask
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* a
|
|
25
|
+
/** Project-scoped Ask and Plan are answered by the harness reading the project
|
|
26
|
+
* itself: their prompt carries a path atlas, never file contents (#133, #137). A
|
|
27
|
+
* lane that may play them but cannot read files is refused before dispatch, which
|
|
28
|
+
* holds a Council's drafts and its merge too; work without a project needs no
|
|
29
|
+
* file access. Null = admitted, or another check speaks. */
|
|
29
30
|
projectReadRefusal(intent, input, status) {
|
|
30
|
-
return intent === "explain" &&
|
|
31
|
+
return (intent === "explain" || intent === "plan" || intent === "spec") &&
|
|
31
32
|
input.repoRoot !== NO_PROJECT_ROOT &&
|
|
32
33
|
status.enabledIntents.includes(intent) &&
|
|
33
34
|
status.manifest?.capabilities.read_files === false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestRequirements.js","sourceRoot":"","sources":["../src/requestRequirements.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;AA8C5C,2EAA2E;AAC3E,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,OAAO,MAAM,KAAK,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,uBAAuB;IAKxD,WAAW;IAJb,IAAI,GAAG,qBAAqB,CAAC;IAEtC,YACE,OAAe,EACN,WAA2C;QAEpD,KAAK,CAAC,OAAO,CAAC,CAAC;2BAFN,WAAW;IAGtB,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,OAAO,2BAA2B;IACtC,+EAA+E;IAC/E,aAAa,CACX,MAAc,EACd,uBAAgD,EAChD,eAA8B;QAE9B,OAAO,uBAAuB,KAAK,oBAAoB;YACrD,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,YAAY,CAAC;YACnD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,eAAe,CAAC;IACtB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"requestRequirements.js","sourceRoot":"","sources":["../src/requestRequirements.ts"],"names":[],"mappings":"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"}
|
package/dist/retainedOutput.d.ts
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import type { AnnouncedRunContext } from "./runTerminalContext.js";
|
|
2
|
-
/** A readable projection is independent of acceptance and never masks the original
|
|
3
|
-
|
|
2
|
+
/** A readable projection is independent of acceptance and never masks the original
|
|
3
|
+
* terminal. Returns the path it announced (`output.ready`), else null. A failed
|
|
4
|
+
* terminal's record then names it (a cancellation keeps its own): an optional
|
|
5
|
+
* step after the announcement, whose own failure cannot undo it. */
|
|
6
|
+
export declare function publishRetainedOutput(context: AnnouncedRunContext, succeeded: boolean, failed?: boolean): string | null;
|
|
7
|
+
/** A failure record's message and references once they name the retained
|
|
8
|
+
* output at `path`. The notice that the file holds retained text, not an
|
|
9
|
+
* accepted final answer, follows the message's first line (the cause route
|
|
10
|
+
* health groups by) and precedes the rest of the original message, such as its
|
|
11
|
+
* account attempts, so a reader that bounds the message after a cause line of
|
|
12
|
+
* ordinary length still meets it; a very long cause line can still push it past
|
|
13
|
+
* such a bound. The original text is otherwise unchanged around it, and
|
|
14
|
+
* `logRefs` (run-relative, beside `runDir`) is the address. Only the failure
|
|
15
|
+
* record carries it: the terminal's event error and summaries keep their own
|
|
16
|
+
* text. */
|
|
17
|
+
export declare function namingRetainedOutput(safeMessage: string, logRefs: readonly string[], path: string): {
|
|
18
|
+
safeMessage: string;
|
|
19
|
+
logRefs: string[];
|
|
20
|
+
};
|
|
4
21
|
//# sourceMappingURL=retainedOutput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retainedOutput.d.ts","sourceRoot":"","sources":["../src/retainedOutput.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retainedOutput.d.ts","sourceRoot":"","sources":["../src/retainedOutput.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;oEAGoE;AACpE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,OAAO,EAClB,MAAM,UAAQ,GACb,MAAM,GAAG,IAAI,CAmCf;AAED;;;;;;;;;WASW;AACX,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,IAAI,EAAE,MAAM,GACX;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAS5C"}
|
package/dist/retainedOutput.js
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { renameSync, rmSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
1
4
|
import { writeRetainedOutput } from "@claudexor/event-log";
|
|
2
5
|
import { redactSecrets } from "@claudexor/util";
|
|
3
|
-
/** A readable projection is independent of acceptance and never masks the original
|
|
4
|
-
|
|
6
|
+
/** A readable projection is independent of acceptance and never masks the original
|
|
7
|
+
* terminal. Returns the path it announced (`output.ready`), else null. A failed
|
|
8
|
+
* terminal's record then names it (a cancellation keeps its own): an optional
|
|
9
|
+
* step after the announcement, whose own failure cannot undo it. */
|
|
10
|
+
export function publishRetainedOutput(context, succeeded, failed = false) {
|
|
11
|
+
let path;
|
|
5
12
|
try {
|
|
6
13
|
const source = context.log.readAll();
|
|
7
|
-
|
|
14
|
+
path = writeRetainedOutput(context.paths.root, source, succeeded);
|
|
8
15
|
if (!path)
|
|
9
|
-
return;
|
|
16
|
+
return null;
|
|
10
17
|
const lastOutput = source.events.findLast((event) => event.type === "output.ready");
|
|
11
18
|
context.log.emit("output.ready", {
|
|
12
19
|
kind: "report",
|
|
@@ -15,17 +22,81 @@ export function publishRetainedOutput(context, succeeded) {
|
|
|
15
22
|
});
|
|
16
23
|
}
|
|
17
24
|
catch (error) {
|
|
25
|
+
status(context, "Retained output could not be saved", `Retained output could not be saved: ${String(error)}`, {
|
|
26
|
+
retained_output_failed: true,
|
|
27
|
+
});
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
if (failed) {
|
|
18
31
|
try {
|
|
19
|
-
context
|
|
20
|
-
type: "status",
|
|
21
|
-
title: "Retained output could not be saved",
|
|
22
|
-
text: redactSecrets(`Retained output could not be saved: ${String(error)}`),
|
|
23
|
-
payload: { retained_output_failed: true },
|
|
24
|
-
});
|
|
32
|
+
referenceFromFailure(context, path);
|
|
25
33
|
}
|
|
26
|
-
catch {
|
|
27
|
-
|
|
34
|
+
catch (error) {
|
|
35
|
+
status(context, "Failure record not updated", `The failure record could not name ${path}: ${String(error)}; the original record is unchanged.`);
|
|
28
36
|
}
|
|
29
37
|
}
|
|
38
|
+
return path;
|
|
39
|
+
}
|
|
40
|
+
/** A failure record's message and references once they name the retained
|
|
41
|
+
* output at `path`. The notice that the file holds retained text, not an
|
|
42
|
+
* accepted final answer, follows the message's first line (the cause route
|
|
43
|
+
* health groups by) and precedes the rest of the original message, such as its
|
|
44
|
+
* account attempts, so a reader that bounds the message after a cause line of
|
|
45
|
+
* ordinary length still meets it; a very long cause line can still push it past
|
|
46
|
+
* such a bound. The original text is otherwise unchanged around it, and
|
|
47
|
+
* `logRefs` (run-relative, beside `runDir`) is the address. Only the failure
|
|
48
|
+
* record carries it: the terminal's event error and summaries keep their own
|
|
49
|
+
* text. */
|
|
50
|
+
export function namingRetainedOutput(safeMessage, logRefs, path) {
|
|
51
|
+
const notice = `The assistant text this run retained (not an accepted final answer) is in ${path}.`;
|
|
52
|
+
const lineEnd = safeMessage.search(/\r?\n/);
|
|
53
|
+
const cause = lineEnd < 0 ? safeMessage : safeMessage.slice(0, lineEnd);
|
|
54
|
+
const rest = lineEnd < 0 ? "" : safeMessage.slice(lineEnd);
|
|
55
|
+
return {
|
|
56
|
+
safeMessage: safeMessage ? `${cause}\n\n${notice}${rest}` : notice,
|
|
57
|
+
logRefs: logRefs.includes(path) ? [...logRefs] : [...logRefs, path],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The failure record the terminal wrote before this publication names the
|
|
62
|
+
* written projection (`namingRetainedOutput`), once. The record is replaced
|
|
63
|
+
* atomically, through a temporary file and a rename as the projection itself is
|
|
64
|
+
* published, so a failed write or rename leaves the original record whole.
|
|
65
|
+
*/
|
|
66
|
+
function referenceFromFailure(context, path) {
|
|
67
|
+
const file = join(context.paths.finalDir, "failure.yaml");
|
|
68
|
+
const failure = context.store.readYaml(file);
|
|
69
|
+
if (!failure || typeof failure !== "object" || Array.isArray(failure))
|
|
70
|
+
return;
|
|
71
|
+
const logRefs = Array.isArray(failure["logRefs"])
|
|
72
|
+
? failure["logRefs"].filter((ref) => typeof ref === "string")
|
|
73
|
+
: [];
|
|
74
|
+
if (logRefs.includes(path))
|
|
75
|
+
return;
|
|
76
|
+
const message = typeof failure["safeMessage"] === "string" ? failure["safeMessage"] : "";
|
|
77
|
+
const temporary = join(context.paths.finalDir, `.failure-${randomUUID()}.tmp`);
|
|
78
|
+
try {
|
|
79
|
+
context.store.writeYaml(temporary, {
|
|
80
|
+
...failure,
|
|
81
|
+
...namingRetainedOutput(message, logRefs, path),
|
|
82
|
+
});
|
|
83
|
+
renameSync(temporary, file);
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
rmSync(temporary, { force: true });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function status(context, title, text, payload) {
|
|
90
|
+
try {
|
|
91
|
+
context.log.emit("harness.event", {
|
|
92
|
+
type: "status",
|
|
93
|
+
title,
|
|
94
|
+
text: redactSecrets(text),
|
|
95
|
+
...(payload ? { payload } : {}),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
/* Preserve the original terminal even when its log is unwritable. */
|
|
100
|
+
}
|
|
30
101
|
}
|
|
31
102
|
//# sourceMappingURL=retainedOutput.js.map
|