@claudexor/orchestrator 1.0.1 → 2.1.3
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/attemptTelemetry.d.ts +47 -2
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +100 -2
- package/dist/attemptTelemetry.js.map +1 -1
- package/dist/attemptUsage.d.ts +19 -0
- package/dist/attemptUsage.d.ts.map +1 -0
- package/dist/attemptUsage.js +29 -0
- package/dist/attemptUsage.js.map +1 -0
- package/dist/candidateEvidence.d.ts +22 -0
- package/dist/candidateEvidence.d.ts.map +1 -0
- package/dist/candidateEvidence.js +42 -0
- package/dist/candidateEvidence.js.map +1 -0
- package/dist/candidateOutputs.d.ts +43 -0
- package/dist/candidateOutputs.d.ts.map +1 -0
- package/dist/candidateOutputs.js +146 -0
- package/dist/candidateOutputs.js.map +1 -0
- package/dist/contract-gates.d.ts +21 -0
- package/dist/contract-gates.d.ts.map +1 -0
- package/dist/contract-gates.js +93 -0
- package/dist/contract-gates.js.map +1 -0
- package/dist/credential-profiles.d.ts +162 -0
- package/dist/credential-profiles.d.ts.map +1 -0
- package/dist/credential-profiles.js +357 -0
- package/dist/credential-profiles.js.map +1 -0
- package/dist/diffReview.d.ts +12 -1
- package/dist/diffReview.d.ts.map +1 -1
- package/dist/diffReview.js +117 -18
- package/dist/diffReview.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modelGovernance.d.ts +6 -1
- package/dist/modelGovernance.d.ts.map +1 -1
- package/dist/modelGovernance.js +8 -2
- package/dist/modelGovernance.js.map +1 -1
- package/dist/orchestrateExecutor.d.ts +43 -0
- package/dist/orchestrateExecutor.d.ts.map +1 -0
- package/dist/orchestrateExecutor.js +207 -0
- package/dist/orchestrateExecutor.js.map +1 -0
- package/dist/orchestratePlanner.d.ts.map +1 -1
- package/dist/orchestratePlanner.js.map +1 -1
- package/dist/orchestrator.d.ts +97 -85
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +1056 -1090
- package/dist/orchestrator.js.map +1 -1
- package/dist/outcomeReducer.d.ts +25 -0
- package/dist/outcomeReducer.d.ts.map +1 -0
- package/dist/outcomeReducer.js +121 -0
- package/dist/outcomeReducer.js.map +1 -0
- package/dist/policyFindings.d.ts +18 -0
- package/dist/policyFindings.d.ts.map +1 -0
- package/dist/policyFindings.js +166 -0
- package/dist/policyFindings.js.map +1 -0
- package/dist/requestRequirements.d.ts +38 -0
- package/dist/requestRequirements.d.ts.map +1 -0
- package/dist/requestRequirements.js +127 -0
- package/dist/requestRequirements.js.map +1 -0
- package/dist/reviewerPanel.d.ts +15 -1
- package/dist/reviewerPanel.d.ts.map +1 -1
- package/dist/reviewerPanel.js +85 -2
- package/dist/reviewerPanel.js.map +1 -1
- package/dist/routeContext.d.ts +37 -0
- package/dist/routeContext.d.ts.map +1 -0
- package/dist/routeContext.js +38 -0
- package/dist/routeContext.js.map +1 -0
- package/dist/runSupport.d.ts +37 -21
- package/dist/runSupport.d.ts.map +1 -1
- package/dist/runSupport.js +102 -78
- package/dist/runSupport.js.map +1 -1
- package/dist/runTelemetryWriter.d.ts +20 -0
- package/dist/runTelemetryWriter.d.ts.map +1 -0
- package/dist/runTelemetryWriter.js +68 -0
- package/dist/runTelemetryWriter.js.map +1 -0
- package/dist/runTerminals.d.ts +7 -1
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +42 -4
- package/dist/runTerminals.js.map +1 -1
- package/dist/structuredOutput.d.ts +33 -0
- package/dist/structuredOutput.d.ts.map +1 -0
- package/dist/structuredOutput.js +106 -0
- package/dist/structuredOutput.js.map +1 -0
- package/package.json +19 -18
- package/dist/finalVerifier.d.ts +0 -25
- package/dist/finalVerifier.d.ts.map +0 -1
- package/dist/finalVerifier.js +0 -110
- package/dist/finalVerifier.js.map +0 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* no regex over prose, and a tool error is "recovered" only when the SAME
|
|
6
6
|
* tool later succeeds against the SAME target.
|
|
7
7
|
*/
|
|
8
|
-
import type { AttemptTelemetryRecord, ExternalContextPolicy, HarnessEvent, TaskContract, ToolKind } from "@claudexor/schema";
|
|
8
|
+
import type { AttemptTelemetryRecord, AuthSourceKind, ExternalContextPolicy, HarnessEvent, RequestRequirementResolution, TaskContract, ToolKind } from "@claudexor/schema";
|
|
9
9
|
export interface ToolErrorRecord {
|
|
10
10
|
tool: string;
|
|
11
11
|
kind: ToolKind;
|
|
@@ -36,6 +36,7 @@ export interface WebEvidenceState {
|
|
|
36
36
|
errorSummary: string | null;
|
|
37
37
|
}
|
|
38
38
|
export interface AttemptTelemetry {
|
|
39
|
+
requestRequirements: RequestRequirementResolution[];
|
|
39
40
|
toolErrors: ToolErrorRecord[];
|
|
40
41
|
/** tool_result events without a status field: never silently treated as ok. */
|
|
41
42
|
statuslessResults: number;
|
|
@@ -44,15 +45,51 @@ export interface AttemptTelemetry {
|
|
|
44
45
|
web: WebEvidenceState;
|
|
45
46
|
/** Model identity the harness stream actually reported (route evidence). */
|
|
46
47
|
observedModel: string | null;
|
|
48
|
+
/** Auth route the adapter disclosed for this attempt (route evidence; null = undisclosed). */
|
|
49
|
+
authMode: "local_session" | "api_key" | null;
|
|
50
|
+
/** Last typed route in the stream, used only for per-usage cost allocation. */
|
|
51
|
+
currentAuthMode: "local_session" | "api_key" | null;
|
|
52
|
+
/** Concrete credential source disclosed alongside the route (never guessed). */
|
|
53
|
+
authSource: AuthSourceKind | null;
|
|
54
|
+
/** Credential profile the attempt ACTUALLY ran under (INV-135), first-wins
|
|
55
|
+
* from the adapter's per-event stamp — rotation makes this differ from the
|
|
56
|
+
* contract's requested id, and the receipt must carry the effective truth. */
|
|
57
|
+
profileId: string | null;
|
|
58
|
+
/** Model hint the engine SENT this attempt (requested side; observedModel is
|
|
59
|
+
* the disclosed side of the model x route truth). */
|
|
60
|
+
requestedModel: string | null;
|
|
47
61
|
/** Adapter-declared transient failures seen during this attempt. */
|
|
48
62
|
transientFailures: {
|
|
49
63
|
kind: NonNullable<HarnessEvent["transient"]>["kind"];
|
|
50
64
|
retryDelayMs: number | null;
|
|
51
65
|
}[];
|
|
66
|
+
/** TYPED vendor rate-limit signals seen during this attempt (W5.4): the
|
|
67
|
+
* rotation predicate reads these, never prose or plain transients. */
|
|
68
|
+
rateLimits: {
|
|
69
|
+
retryDelayMs: number | null;
|
|
70
|
+
resetsAt: string | null;
|
|
71
|
+
}[];
|
|
52
72
|
/** Contract/outcome truth for this attempt, produced by the orchestrator. */
|
|
53
73
|
outcome: AttemptOutcomeState | null;
|
|
74
|
+
/** Token usage summed across this attempt's usage events (money stays in the
|
|
75
|
+
* ledger, not here). Each field is null until at least one usage event
|
|
76
|
+
* reports it — cursor reports cost only (all null), raw-api has no cached —
|
|
77
|
+
* so "not reported" is never conflated with a real 0. Cross-harness caution:
|
|
78
|
+
* codex `cached ⊆ input`, claude `cached ∩ input = ∅` — never derive a total. */
|
|
79
|
+
usage: {
|
|
80
|
+
inputTokens: number | null;
|
|
81
|
+
outputTokens: number | null;
|
|
82
|
+
cachedInputTokens: number | null;
|
|
83
|
+
};
|
|
84
|
+
/** Per-usage-event billing split. Route can change across native retries,
|
|
85
|
+
* so this is deliberately not derived from the attempt's first route. */
|
|
86
|
+
usageCost: {
|
|
87
|
+
cashUsd: number;
|
|
88
|
+
valuationUsd: number;
|
|
89
|
+
unknownUsd: number;
|
|
90
|
+
};
|
|
54
91
|
}
|
|
55
|
-
export declare function createAttemptTelemetry(policy: ExternalContextPolicy, webRequired: boolean, effectiveMode?: ExternalContextPolicy): AttemptTelemetry;
|
|
92
|
+
export declare function createAttemptTelemetry(policy: ExternalContextPolicy, webRequired: boolean, effectiveMode?: ExternalContextPolicy, requestRequirements?: RequestRequirementResolution[], requestedModel?: string | null): AttemptTelemetry;
|
|
56
93
|
/**
|
|
57
94
|
* Observe a normalized harness event into the attempt telemetry. Governance is
|
|
58
95
|
* fully typed: only the `tool` ToolRef on tool_call/tool_result/file_change
|
|
@@ -71,6 +108,14 @@ export declare function setAttemptOutcome(t: AttemptTelemetry, opts: {
|
|
|
71
108
|
/** Bounded telemetry summary for events/artifacts (full detail lives in telemetry.yaml). */
|
|
72
109
|
export declare function telemetrySummary(t: AttemptTelemetry): Record<string, unknown>;
|
|
73
110
|
export declare function attemptTelemetryRecord(attemptId: string, harnessId: string, t: AttemptTelemetry): AttemptTelemetryRecord;
|
|
111
|
+
/** Sum token usage across attempt records (candidates + synthesis), the same
|
|
112
|
+
* scope as the ledger's spend. A field stays null unless some attempt reported
|
|
113
|
+
* it, so "no harness reported tokens" never reads as a real 0. */
|
|
114
|
+
export declare function aggregateRunTokenUsage(records: AttemptTelemetryRecord[]): {
|
|
115
|
+
input_tokens: number | null;
|
|
116
|
+
output_tokens: number | null;
|
|
117
|
+
cached_input_tokens: number | null;
|
|
118
|
+
};
|
|
74
119
|
export declare function aggregateRunWebEvidence(records: AttemptTelemetryRecord[], contract: TaskContract): AttemptTelemetryRecord["web"];
|
|
75
120
|
/**
|
|
76
121
|
* Web evidence gating (locked v0.7 semantics):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attemptTelemetry.d.ts","sourceRoot":"","sources":["../src/attemptTelemetry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"attemptTelemetry.d.ts","sourceRoot":"","sources":["../src/attemptTelemetry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,4BAA4B,EAC5B,YAAY,EACZ,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qHAAqH;IACrH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,uBAAuB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9F,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,aAAa,EAAE,qBAAqB,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE,4BAA4B,EAAE,CAAC;IACpD,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,+EAA+E;IAC/E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,gBAAgB,CAAC;IACtB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8FAA8F;IAC9F,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,+EAA+E;IAC/E,eAAe,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,gFAAgF;IAChF,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC;;kFAE8E;IAC9E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;yDACqD;IACrD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oEAAoE;IACpE,iBAAiB,EAAE;QACjB,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,EAAE,CAAC;IACJ;0EACsE;IACtE,UAAU,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IACvE,6EAA6E;IAC7E,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpC;;;;qFAIiF;IACjF,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC;IACF;6EACyE;IACzE,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,OAAO,EACpB,aAAa,GAAE,qBAA8B,EAC7C,mBAAmB,GAAE,4BAA4B,EAAO,EACxD,cAAc,GAAE,MAAM,GAAG,IAAW,GACnC,gBAAgB,CA6BlB;AAQD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,CAmJnF;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,gBAAgB,GAAG,eAAe,EAAE,CAE5E;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,gBAAgB,GAAG,eAAe,EAAE,CAQnE;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE;IACJ,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;CACjC,GACA,IAAI,CAkBN;AAWD,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuC7E;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,gBAAgB,GAClB,sBAAsB,CAoDxB;AAED;;mEAEmE;AACnE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAcA;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,sBAAsB,EAAE,EACjC,QAAQ,EAAE,YAAY,GACrB,sBAAsB,CAAC,KAAK,CAAC,CAoB/B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAI3D"}
|
package/dist/attemptTelemetry.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { redactSecrets } from "@claudexor/util";
|
|
2
|
-
export function createAttemptTelemetry(policy, webRequired, effectiveMode = policy) {
|
|
2
|
+
export function createAttemptTelemetry(policy, webRequired, effectiveMode = policy, requestRequirements = [], requestedModel = null) {
|
|
3
3
|
return {
|
|
4
|
+
requestRequirements,
|
|
4
5
|
toolErrors: [],
|
|
5
6
|
statuslessResults: 0,
|
|
6
7
|
droppedEvents: 0,
|
|
@@ -16,10 +17,23 @@ export function createAttemptTelemetry(policy, webRequired, effectiveMode = poli
|
|
|
16
17
|
errorSummary: null,
|
|
17
18
|
},
|
|
18
19
|
observedModel: null,
|
|
20
|
+
authMode: null,
|
|
21
|
+
currentAuthMode: null,
|
|
22
|
+
authSource: null,
|
|
23
|
+
profileId: null,
|
|
24
|
+
requestedModel,
|
|
19
25
|
transientFailures: [],
|
|
26
|
+
rateLimits: [],
|
|
20
27
|
outcome: null,
|
|
28
|
+
usage: { inputTokens: null, outputTokens: null, cachedInputTokens: null },
|
|
29
|
+
usageCost: { cashUsd: 0, valuationUsd: 0, unknownUsd: 0 },
|
|
21
30
|
};
|
|
22
31
|
}
|
|
32
|
+
/** Add one present token field to a null-aware accumulator (null stays null
|
|
33
|
+
* until a value actually arrives, so "unreported" never reads as 0). */
|
|
34
|
+
function addToken(acc, value) {
|
|
35
|
+
return value === undefined ? acc : (acc ?? 0) + value;
|
|
36
|
+
}
|
|
23
37
|
/**
|
|
24
38
|
* Observe a normalized harness event into the attempt telemetry. Governance is
|
|
25
39
|
* fully typed: only the `tool` ToolRef on tool_call/tool_result/file_change
|
|
@@ -30,12 +44,64 @@ export function observeAttemptTelemetry(t, ev) {
|
|
|
30
44
|
// Route evidence: remember the model identity the stream itself disclosed.
|
|
31
45
|
if (ev.observed_model && !t.observedModel)
|
|
32
46
|
t.observedModel = ev.observed_model;
|
|
47
|
+
// Route evidence: the adapter's first-class credential-route disclosure
|
|
48
|
+
// (first-wins; the route is decided once before spawn).
|
|
49
|
+
if (!t.authMode) {
|
|
50
|
+
if (ev.credential_route === "vendor_native")
|
|
51
|
+
t.authMode = "local_session";
|
|
52
|
+
else if (ev.credential_route === "managed_api_key")
|
|
53
|
+
t.authMode = "api_key";
|
|
54
|
+
}
|
|
55
|
+
if (ev.credential_route === "vendor_native")
|
|
56
|
+
t.currentAuthMode = "local_session";
|
|
57
|
+
else if (ev.credential_route === "managed_api_key")
|
|
58
|
+
t.currentAuthMode = "api_key";
|
|
59
|
+
if (ev.type === "message" && ev.payload?.["auth_switched"] === true) {
|
|
60
|
+
if (ev.payload["to_auth_mode"] === "subscription")
|
|
61
|
+
t.currentAuthMode = "local_session";
|
|
62
|
+
if (ev.payload["to_auth_mode"] === "api_key")
|
|
63
|
+
t.currentAuthMode = "api_key";
|
|
64
|
+
}
|
|
65
|
+
if (ev.usage?.cost_usd) {
|
|
66
|
+
const usageMode = ev.credential_route === "vendor_native"
|
|
67
|
+
? "local_session"
|
|
68
|
+
: ev.credential_route === "managed_api_key"
|
|
69
|
+
? "api_key"
|
|
70
|
+
: t.currentAuthMode;
|
|
71
|
+
if (usageMode === "local_session")
|
|
72
|
+
t.usageCost.valuationUsd += ev.usage.cost_usd;
|
|
73
|
+
else if (usageMode === "api_key")
|
|
74
|
+
t.usageCost.cashUsd += ev.usage.cost_usd;
|
|
75
|
+
else
|
|
76
|
+
t.usageCost.unknownUsd += ev.usage.cost_usd;
|
|
77
|
+
}
|
|
78
|
+
// First-wins like the route: the source is decided once before spawn.
|
|
79
|
+
if (!t.authSource && ev.credential_source)
|
|
80
|
+
t.authSource = ev.credential_source;
|
|
81
|
+
// LAST-wins (unlike the route): W5.4 failover rotates the profile between
|
|
82
|
+
// native tries of ONE attempt, and the receipt must name the try that
|
|
83
|
+
// produced the deliverable.
|
|
84
|
+
if (ev.credential_profile_id)
|
|
85
|
+
t.profileId = ev.credential_profile_id;
|
|
33
86
|
if (ev.transient) {
|
|
34
87
|
t.transientFailures.push({
|
|
35
88
|
kind: ev.transient.kind,
|
|
36
89
|
retryDelayMs: ev.transient.retry_delay_ms ?? null,
|
|
37
90
|
});
|
|
38
91
|
}
|
|
92
|
+
if (ev.rate_limit) {
|
|
93
|
+
t.rateLimits.push({
|
|
94
|
+
retryDelayMs: ev.rate_limit.retry_delay_ms ?? null,
|
|
95
|
+
resetsAt: ev.rate_limit.resets_at ?? null,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// Token usage: SUM across the attempt's usage events (single-event adapters
|
|
99
|
+
// sum == last-wins; codex per-turn needs the sum). Money is the ledger's job.
|
|
100
|
+
if (ev.type === "usage" && ev.usage) {
|
|
101
|
+
t.usage.inputTokens = addToken(t.usage.inputTokens, ev.usage.input_tokens);
|
|
102
|
+
t.usage.outputTokens = addToken(t.usage.outputTokens, ev.usage.output_tokens);
|
|
103
|
+
t.usage.cachedInputTokens = addToken(t.usage.cachedInputTokens, ev.usage.cached_input_tokens);
|
|
104
|
+
}
|
|
39
105
|
if (ev.type === "completed") {
|
|
40
106
|
const dropped = Number(ev.payload?.["dropped_unparsed_lines"] ?? 0) +
|
|
41
107
|
Number(ev.payload?.["dropped_unrecognized_events"] ?? 0);
|
|
@@ -95,7 +161,10 @@ export function observeAttemptTelemetry(t, ev) {
|
|
|
95
161
|
// INV-043: recovery must be attributable to the failed operation — same
|
|
96
162
|
// tool, same KIND, same target (a non-web tool sharing a name with a web
|
|
97
163
|
// tool must not clear its web error).
|
|
98
|
-
if (!err.recovered &&
|
|
164
|
+
if (!err.recovered &&
|
|
165
|
+
err.tool === tool.name &&
|
|
166
|
+
err.kind === tool.kind &&
|
|
167
|
+
err.target === (tool.target ?? null)) {
|
|
99
168
|
err.recovered = true;
|
|
100
169
|
}
|
|
101
170
|
}
|
|
@@ -213,6 +282,11 @@ export function attemptTelemetryRecord(attemptId, harnessId, t) {
|
|
|
213
282
|
attempt_id: attemptId,
|
|
214
283
|
harness_id: harnessId,
|
|
215
284
|
observed_model: t.observedModel,
|
|
285
|
+
auth_mode: t.authMode,
|
|
286
|
+
auth_source: t.authSource,
|
|
287
|
+
profile_id: t.profileId,
|
|
288
|
+
requested_model: t.requestedModel,
|
|
289
|
+
request_requirements: t.requestRequirements,
|
|
216
290
|
web: {
|
|
217
291
|
required: t.web.required,
|
|
218
292
|
policy: t.web.mode,
|
|
@@ -247,6 +321,30 @@ export function attemptTelemetryRecord(attemptId, harnessId, t) {
|
|
|
247
321
|
tool_warnings_count: t.outcome?.toolWarningsCount ?? warnings.length,
|
|
248
322
|
status: t.outcome?.status ?? (warnings.length > 0 ? "success_with_warnings" : "success"),
|
|
249
323
|
},
|
|
324
|
+
usage: {
|
|
325
|
+
input_tokens: t.usage.inputTokens,
|
|
326
|
+
output_tokens: t.usage.outputTokens,
|
|
327
|
+
cached_input_tokens: t.usage.cachedInputTokens,
|
|
328
|
+
},
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
/** Sum token usage across attempt records (candidates + synthesis), the same
|
|
332
|
+
* scope as the ledger's spend. A field stays null unless some attempt reported
|
|
333
|
+
* it, so "no harness reported tokens" never reads as a real 0. */
|
|
334
|
+
export function aggregateRunTokenUsage(records) {
|
|
335
|
+
const sum = (pick) => {
|
|
336
|
+
let total = null;
|
|
337
|
+
for (const r of records) {
|
|
338
|
+
const v = pick(r.usage);
|
|
339
|
+
if (v !== null)
|
|
340
|
+
total = (total ?? 0) + v;
|
|
341
|
+
}
|
|
342
|
+
return total;
|
|
343
|
+
};
|
|
344
|
+
return {
|
|
345
|
+
input_tokens: sum((u) => u.input_tokens),
|
|
346
|
+
output_tokens: sum((u) => u.output_tokens),
|
|
347
|
+
cached_input_tokens: sum((u) => u.cached_input_tokens),
|
|
250
348
|
};
|
|
251
349
|
}
|
|
252
350
|
export function aggregateRunWebEvidence(records, contract) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attemptTelemetry.js","sourceRoot":"","sources":["../src/attemptTelemetry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attemptTelemetry.js","sourceRoot":"","sources":["../src/attemptTelemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HarnessEvent } from "@claudexor/schema";
|
|
2
|
+
import type { AttemptTelemetry } from "./attemptTelemetry.js";
|
|
3
|
+
/** One owner for streamed usage accumulation + mid-flight cash-cap behavior. */
|
|
4
|
+
export declare function processAttemptUsage(input: {
|
|
5
|
+
event: HarnessEvent;
|
|
6
|
+
telemetry: Pick<AttemptTelemetry, "usageCost">;
|
|
7
|
+
harnessId: string;
|
|
8
|
+
attemptId: string;
|
|
9
|
+
cost: number;
|
|
10
|
+
costEstimated: boolean;
|
|
11
|
+
emit?: (type: "budget.observation", payload: Record<string, unknown>) => void;
|
|
12
|
+
budgetGuard?: (streamedUsd: number) => boolean;
|
|
13
|
+
cancel: () => void;
|
|
14
|
+
}): {
|
|
15
|
+
cost: number;
|
|
16
|
+
costEstimated: boolean;
|
|
17
|
+
hardCapReached: boolean;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=attemptUsage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attemptUsage.d.ts","sourceRoot":"","sources":["../src/attemptUsage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9E,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CA0BpE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** One owner for streamed usage accumulation + mid-flight cash-cap behavior. */
|
|
2
|
+
export function processAttemptUsage(input) {
|
|
3
|
+
const usage = input.event.usage;
|
|
4
|
+
if (!usage?.cost_usd) {
|
|
5
|
+
return { cost: input.cost, costEstimated: input.costEstimated, hardCapReached: false };
|
|
6
|
+
}
|
|
7
|
+
const cost = input.cost + usage.cost_usd;
|
|
8
|
+
const costEstimated = input.costEstimated || usage.estimated === true;
|
|
9
|
+
input.emit?.("budget.observation", {
|
|
10
|
+
harness_id: input.harnessId,
|
|
11
|
+
attempt_id: input.attemptId,
|
|
12
|
+
kind: "spend",
|
|
13
|
+
usd: usage.cost_usd,
|
|
14
|
+
estimated: usage.estimated === true,
|
|
15
|
+
});
|
|
16
|
+
const paidOrUnknown = input.telemetry.usageCost.cashUsd + input.telemetry.usageCost.unknownUsd;
|
|
17
|
+
if (paidOrUnknown > 0 && input.budgetGuard?.(paidOrUnknown)) {
|
|
18
|
+
input.emit?.("budget.observation", {
|
|
19
|
+
harness_id: input.harnessId,
|
|
20
|
+
attempt_id: input.attemptId,
|
|
21
|
+
kind: "cooldown",
|
|
22
|
+
detail: "hard cap mid-flight abort",
|
|
23
|
+
});
|
|
24
|
+
input.cancel();
|
|
25
|
+
return { cost, costEstimated, hardCapReached: true };
|
|
26
|
+
}
|
|
27
|
+
return { cost, costEstimated, hardCapReached: false };
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=attemptUsage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attemptUsage.js","sourceRoot":"","sources":["../src/attemptUsage.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CAAC,KAUnC;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IACzC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACtE,KAAK,CAAC,IAAI,EAAE,CAAC,oBAAoB,EAAE;QACjC,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,KAAK,CAAC,QAAQ;QACnB,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;KACpC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;IAC/F,IAAI,aAAa,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,EAAE,CAAC,oBAAoB,EAAE;YACjC,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,2BAA2B;SACpC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GateResult, ReviewFinding, TaskContract } from "@claudexor/schema";
|
|
2
|
+
import type { CandidateEvidence } from "@claudexor/arbitration";
|
|
3
|
+
import type { AttemptTelemetry } from "./attemptTelemetry.js";
|
|
4
|
+
export interface CandidateRun {
|
|
5
|
+
attemptId: string;
|
|
6
|
+
harnessId: string;
|
|
7
|
+
label: string;
|
|
8
|
+
diff: string;
|
|
9
|
+
answerText?: string;
|
|
10
|
+
reviewCwd?: string;
|
|
11
|
+
baseSha?: string;
|
|
12
|
+
producedFiles?: string[];
|
|
13
|
+
gates: GateResult[];
|
|
14
|
+
cost: number;
|
|
15
|
+
errored: boolean;
|
|
16
|
+
costEstimated: boolean;
|
|
17
|
+
errors: string[];
|
|
18
|
+
telemetry: AttemptTelemetry;
|
|
19
|
+
infraPhase?: "workspace" | "harness";
|
|
20
|
+
}
|
|
21
|
+
export declare function toCandidateEvidence(run: CandidateRun, contract: TaskContract, findings: ReviewFinding[], finalReviewClean: boolean, reviewVerified?: boolean): CandidateEvidence;
|
|
22
|
+
//# sourceMappingURL=candidateEvidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidateEvidence.d.ts","sourceRoot":"","sources":["../src/candidateEvidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,aAAa,EAAE,EACzB,gBAAgB,EAAE,OAAO,EACzB,cAAc,UAAQ,GACrB,iBAAiB,CAwCnB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { gatesPassed } from "@claudexor/review";
|
|
2
|
+
import { toolWarnings } from "./attemptTelemetry.js";
|
|
3
|
+
export function toCandidateEvidence(run, contract, findings, finalReviewClean, reviewVerified = false) {
|
|
4
|
+
const passed = gatesPassed(run.gates) && !run.errored;
|
|
5
|
+
const acceptanceCovered = passed && contract.success_criteria.length > 0
|
|
6
|
+
? contract.success_criteria.map((criterion) => criterion.id)
|
|
7
|
+
: [];
|
|
8
|
+
// A harness error is an explicit failed required gate — never vacuous 0/0.
|
|
9
|
+
const gates = run.errored
|
|
10
|
+
? [
|
|
11
|
+
...run.gates,
|
|
12
|
+
{
|
|
13
|
+
id: "harness",
|
|
14
|
+
command: "harness",
|
|
15
|
+
exit_code: 1,
|
|
16
|
+
status: "failed",
|
|
17
|
+
duration_ms: 0,
|
|
18
|
+
required: true,
|
|
19
|
+
stdout_tail: null,
|
|
20
|
+
stderr_tail: null,
|
|
21
|
+
output_truncated: false,
|
|
22
|
+
},
|
|
23
|
+
]
|
|
24
|
+
: run.gates;
|
|
25
|
+
return {
|
|
26
|
+
attemptId: run.attemptId,
|
|
27
|
+
label: run.label,
|
|
28
|
+
gates,
|
|
29
|
+
acceptanceCovered,
|
|
30
|
+
acceptanceTotal: contract.success_criteria.length,
|
|
31
|
+
findings,
|
|
32
|
+
testsPassed: gates.filter((gate) => gate.status === "passed").length,
|
|
33
|
+
testsTotal: gates.length,
|
|
34
|
+
finalReviewClean,
|
|
35
|
+
reviewVerified,
|
|
36
|
+
toolWarningsCount: run.telemetry.outcome?.toolWarningsCount ?? toolWarnings(run.telemetry).length,
|
|
37
|
+
diffSize: run.diff.split("\n").length,
|
|
38
|
+
diffBytes: Buffer.byteLength(run.diff, "utf8"),
|
|
39
|
+
costUsd: run.cost,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=candidateEvidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidateEvidence.js","sourceRoot":"","sources":["../src/candidateEvidence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAoBrD,MAAM,UAAU,mBAAmB,CACjC,GAAiB,EACjB,QAAsB,EACtB,QAAyB,EACzB,gBAAyB,EACzB,cAAc,GAAG,KAAK;IAEtB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IACtD,MAAM,iBAAiB,GACrB,MAAM,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAC5C,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,CAAC,CAAC,EAAE,CAAC;IACT,2EAA2E;IAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO;QACvB,CAAC,CAAC;YACE,GAAG,GAAG,CAAC,KAAK;YACZ;gBACE,EAAE,EAAE,SAAS;gBACb,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,QAAiB;gBACzB,WAAW,EAAE,CAAC;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;gBACjB,gBAAgB,EAAE,KAAK;aACxB;SACF;QACH,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACd,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK;QACL,iBAAiB;QACjB,eAAe,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM;QACjD,QAAQ;QACR,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;QACpE,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,gBAAgB;QAChB,cAAc;QACd,iBAAiB,EACf,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,iBAAiB,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM;QAChF,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;QACrC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;QAC9C,OAAO,EAAE,GAAG,CAAC,IAAI;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ArtifactStore } from "@claudexor/artifact-store";
|
|
2
|
+
/** Stage large synthesis evidence in the envelope, returning an idempotent
|
|
3
|
+
* cleanup that callers run before any diff/gate/review. */
|
|
4
|
+
export declare function stageFileBackedContext(worktreePath: string, content?: string): () => void;
|
|
5
|
+
export declare function buildFileBackedSynthesisInput(input: {
|
|
6
|
+
instructions: string;
|
|
7
|
+
findings: readonly string[];
|
|
8
|
+
candidates: readonly {
|
|
9
|
+
label: string;
|
|
10
|
+
attemptId: string;
|
|
11
|
+
diff: string;
|
|
12
|
+
}[];
|
|
13
|
+
}): {
|
|
14
|
+
prompt: string;
|
|
15
|
+
content: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Preserve candidate-generated raster outputs before its disposable envelope
|
|
19
|
+
* is removed. Text/source truth remains in patch.diff; this is specifically
|
|
20
|
+
* the produced-output plane needed by chat markdown screenshots.
|
|
21
|
+
*/
|
|
22
|
+
export declare function persistCandidateOutputs(input: {
|
|
23
|
+
worktreePath: string;
|
|
24
|
+
attemptDir: string;
|
|
25
|
+
changedPaths: readonly string[];
|
|
26
|
+
}): string[];
|
|
27
|
+
export declare function rasterLinksInMarkdown(markdown: string): string[];
|
|
28
|
+
export declare function writeCandidateAttemptArtifacts(input: {
|
|
29
|
+
store: ArtifactStore;
|
|
30
|
+
attemptDir: string;
|
|
31
|
+
worktreePath: string;
|
|
32
|
+
diff: string;
|
|
33
|
+
answerText?: string;
|
|
34
|
+
record: Record<string, unknown>;
|
|
35
|
+
}): string[];
|
|
36
|
+
/** Copy preserved winner outputs into the run root so relative markdown links
|
|
37
|
+
* resolve under the UI's runDir scope after the envelope is gone. */
|
|
38
|
+
export declare function materializeWinnerOutputs(input: {
|
|
39
|
+
attemptDir: string;
|
|
40
|
+
runRoot: string;
|
|
41
|
+
paths: readonly string[];
|
|
42
|
+
}): string[];
|
|
43
|
+
//# sourceMappingURL=candidateOutputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidateOutputs.d.ts","sourceRoot":"","sources":["../src/candidateOutputs.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA8B/D;2DAC2D;AAC3D,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAoBzF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3E,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAatC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,GAAG,MAAM,EAAE,CAuBX;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAYhE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,GAAG,MAAM,EAAE,CAkBX;AAED;qEACqE;AACrE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B,GAAG,MAAM,EAAE,CAWX"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { chmodSync, closeSync, constants, copyFileSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { dirname, extname, join, resolve, sep } from "node:path";
|
|
3
|
+
import { summarizeDiffPaths } from "@claudexor/core";
|
|
4
|
+
const RASTER_OUTPUT_EXTENSIONS = new Set([".png", ".jpg", ".jpeg", ".webp", ".gif"]);
|
|
5
|
+
const MAX_OUTPUT_BYTES = 16 * 1024 * 1024;
|
|
6
|
+
const MAX_TOTAL_BYTES = 32 * 1024 * 1024;
|
|
7
|
+
function lstatIfPresent(path) {
|
|
8
|
+
try {
|
|
9
|
+
return lstatSync(path);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
if (error.code === "ENOENT")
|
|
13
|
+
return null;
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function writeNoFollow(path, data, mode, replace) {
|
|
18
|
+
const flags = constants.O_WRONLY |
|
|
19
|
+
constants.O_CREAT |
|
|
20
|
+
constants.O_NOFOLLOW |
|
|
21
|
+
(replace ? constants.O_TRUNC : constants.O_EXCL);
|
|
22
|
+
const fd = openSync(path, flags, mode);
|
|
23
|
+
try {
|
|
24
|
+
writeFileSync(fd, data);
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
closeSync(fd);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Stage large synthesis evidence in the envelope, returning an idempotent
|
|
31
|
+
* cleanup that callers run before any diff/gate/review. */
|
|
32
|
+
export function stageFileBackedContext(worktreePath, content) {
|
|
33
|
+
if (content === undefined)
|
|
34
|
+
return () => { };
|
|
35
|
+
const path = join(worktreePath, ".claudexor-synthesis-input.md");
|
|
36
|
+
let original = null;
|
|
37
|
+
const existing = lstatIfPresent(path);
|
|
38
|
+
if (existing) {
|
|
39
|
+
const stat = existing;
|
|
40
|
+
if (!stat.isFile() || stat.isSymbolicLink()) {
|
|
41
|
+
throw new Error("synthesis input path already exists and is not a regular file");
|
|
42
|
+
}
|
|
43
|
+
original = { bytes: readFileSync(path), mode: stat.mode & 0o777 };
|
|
44
|
+
}
|
|
45
|
+
writeNoFollow(path, content, 0o600, existing !== null);
|
|
46
|
+
return () => {
|
|
47
|
+
rmSync(path, { recursive: true, force: true });
|
|
48
|
+
if (original) {
|
|
49
|
+
writeNoFollow(path, original.bytes, original.mode, false);
|
|
50
|
+
chmodSync(path, original.mode);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function buildFileBackedSynthesisInput(input) {
|
|
55
|
+
const diffs = input.candidates
|
|
56
|
+
.map((candidate) => `### ${candidate.label} (${candidate.attemptId})\n${candidate.diff}`)
|
|
57
|
+
.join("\n\n");
|
|
58
|
+
return {
|
|
59
|
+
prompt: `${input.instructions}\n\n` +
|
|
60
|
+
"Read `.claudexor-synthesis-input.md` completely before editing. " +
|
|
61
|
+
"It contains the findings and candidate diffs. Do not modify that temporary file.",
|
|
62
|
+
content: `# Findings to fix\n\n${input.findings.map((finding) => `- ${finding}`).join("\n") || "(none)"}` +
|
|
63
|
+
`\n\n# Candidate diffs\n\n${diffs}`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Preserve candidate-generated raster outputs before its disposable envelope
|
|
68
|
+
* is removed. Text/source truth remains in patch.diff; this is specifically
|
|
69
|
+
* the produced-output plane needed by chat markdown screenshots.
|
|
70
|
+
*/
|
|
71
|
+
export function persistCandidateOutputs(input) {
|
|
72
|
+
const root = resolve(input.worktreePath);
|
|
73
|
+
let total = 0;
|
|
74
|
+
const preserved = [];
|
|
75
|
+
for (const raw of input.changedPaths) {
|
|
76
|
+
const relative = raw.split("\\").join("/");
|
|
77
|
+
if (!RASTER_OUTPUT_EXTENSIONS.has(extname(relative).toLowerCase()))
|
|
78
|
+
continue;
|
|
79
|
+
const source = resolve(root, relative);
|
|
80
|
+
if (source !== root && !source.startsWith(root + sep))
|
|
81
|
+
continue;
|
|
82
|
+
if (!existsSync(source))
|
|
83
|
+
continue;
|
|
84
|
+
// lstat (not stat): a candidate-created symlink must never make output
|
|
85
|
+
// preservation copy a host file outside the envelope.
|
|
86
|
+
const stat = lstatSync(source);
|
|
87
|
+
if (!stat.isFile() || stat.size > MAX_OUTPUT_BYTES || total + stat.size > MAX_TOTAL_BYTES)
|
|
88
|
+
continue;
|
|
89
|
+
const target = join(input.attemptDir, "produced", relative);
|
|
90
|
+
mkdirSync(dirname(target), { recursive: true, mode: 0o700 });
|
|
91
|
+
copyFileSync(source, target);
|
|
92
|
+
total += stat.size;
|
|
93
|
+
preserved.push(relative);
|
|
94
|
+
}
|
|
95
|
+
return preserved;
|
|
96
|
+
}
|
|
97
|
+
export function rasterLinksInMarkdown(markdown) {
|
|
98
|
+
const paths = [];
|
|
99
|
+
for (const match of markdown.matchAll(/!?\[[^\]]*\]\(\s*<?([^)\s>]+)>?(?:\s+"[^"]*")?\s*\)/g)) {
|
|
100
|
+
const raw = match[1];
|
|
101
|
+
if (!raw || /^[a-z][a-z0-9+.-]*:/i.test(raw) || raw.startsWith("#"))
|
|
102
|
+
continue;
|
|
103
|
+
try {
|
|
104
|
+
paths.push(decodeURIComponent(raw).replace(/^\.\//, ""));
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Invalid URL escapes are not a usable file target.
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return [...new Set(paths)];
|
|
111
|
+
}
|
|
112
|
+
export function writeCandidateAttemptArtifacts(input) {
|
|
113
|
+
input.store.writeText(join(input.attemptDir, "patch.diff"), input.diff);
|
|
114
|
+
const stats = summarizeDiffPaths(input.diff);
|
|
115
|
+
const produced = persistCandidateOutputs({
|
|
116
|
+
worktreePath: input.worktreePath,
|
|
117
|
+
attemptDir: input.attemptDir,
|
|
118
|
+
changedPaths: [...new Set([...stats.paths, ...rasterLinksInMarkdown(input.answerText ?? "")])],
|
|
119
|
+
});
|
|
120
|
+
input.store.writeYaml(join(input.attemptDir, "attempt.yaml"), {
|
|
121
|
+
...input.record,
|
|
122
|
+
diffstat: {
|
|
123
|
+
files: stats.paths.length,
|
|
124
|
+
additions: stats.additions,
|
|
125
|
+
deletions: stats.deletions,
|
|
126
|
+
},
|
|
127
|
+
produced_files: produced,
|
|
128
|
+
});
|
|
129
|
+
return produced;
|
|
130
|
+
}
|
|
131
|
+
/** Copy preserved winner outputs into the run root so relative markdown links
|
|
132
|
+
* resolve under the UI's runDir scope after the envelope is gone. */
|
|
133
|
+
export function materializeWinnerOutputs(input) {
|
|
134
|
+
const copied = [];
|
|
135
|
+
for (const relative of input.paths) {
|
|
136
|
+
const source = join(input.attemptDir, "produced", relative);
|
|
137
|
+
if (!existsSync(source))
|
|
138
|
+
continue;
|
|
139
|
+
const target = join(input.runRoot, relative);
|
|
140
|
+
mkdirSync(dirname(target), { recursive: true, mode: 0o700 });
|
|
141
|
+
copyFileSync(source, target);
|
|
142
|
+
copied.push(relative);
|
|
143
|
+
}
|
|
144
|
+
return copied;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=candidateOutputs.js.map
|