@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.
Files changed (87) hide show
  1. package/dist/attemptTelemetry.d.ts +47 -2
  2. package/dist/attemptTelemetry.d.ts.map +1 -1
  3. package/dist/attemptTelemetry.js +100 -2
  4. package/dist/attemptTelemetry.js.map +1 -1
  5. package/dist/attemptUsage.d.ts +19 -0
  6. package/dist/attemptUsage.d.ts.map +1 -0
  7. package/dist/attemptUsage.js +29 -0
  8. package/dist/attemptUsage.js.map +1 -0
  9. package/dist/candidateEvidence.d.ts +22 -0
  10. package/dist/candidateEvidence.d.ts.map +1 -0
  11. package/dist/candidateEvidence.js +42 -0
  12. package/dist/candidateEvidence.js.map +1 -0
  13. package/dist/candidateOutputs.d.ts +43 -0
  14. package/dist/candidateOutputs.d.ts.map +1 -0
  15. package/dist/candidateOutputs.js +146 -0
  16. package/dist/candidateOutputs.js.map +1 -0
  17. package/dist/contract-gates.d.ts +21 -0
  18. package/dist/contract-gates.d.ts.map +1 -0
  19. package/dist/contract-gates.js +93 -0
  20. package/dist/contract-gates.js.map +1 -0
  21. package/dist/credential-profiles.d.ts +162 -0
  22. package/dist/credential-profiles.d.ts.map +1 -0
  23. package/dist/credential-profiles.js +357 -0
  24. package/dist/credential-profiles.js.map +1 -0
  25. package/dist/diffReview.d.ts +12 -1
  26. package/dist/diffReview.d.ts.map +1 -1
  27. package/dist/diffReview.js +117 -18
  28. package/dist/diffReview.js.map +1 -1
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/modelGovernance.d.ts +6 -1
  34. package/dist/modelGovernance.d.ts.map +1 -1
  35. package/dist/modelGovernance.js +8 -2
  36. package/dist/modelGovernance.js.map +1 -1
  37. package/dist/orchestrateExecutor.d.ts +43 -0
  38. package/dist/orchestrateExecutor.d.ts.map +1 -0
  39. package/dist/orchestrateExecutor.js +207 -0
  40. package/dist/orchestrateExecutor.js.map +1 -0
  41. package/dist/orchestratePlanner.d.ts.map +1 -1
  42. package/dist/orchestratePlanner.js.map +1 -1
  43. package/dist/orchestrator.d.ts +97 -85
  44. package/dist/orchestrator.d.ts.map +1 -1
  45. package/dist/orchestrator.js +1056 -1090
  46. package/dist/orchestrator.js.map +1 -1
  47. package/dist/outcomeReducer.d.ts +25 -0
  48. package/dist/outcomeReducer.d.ts.map +1 -0
  49. package/dist/outcomeReducer.js +121 -0
  50. package/dist/outcomeReducer.js.map +1 -0
  51. package/dist/policyFindings.d.ts +18 -0
  52. package/dist/policyFindings.d.ts.map +1 -0
  53. package/dist/policyFindings.js +166 -0
  54. package/dist/policyFindings.js.map +1 -0
  55. package/dist/requestRequirements.d.ts +38 -0
  56. package/dist/requestRequirements.d.ts.map +1 -0
  57. package/dist/requestRequirements.js +127 -0
  58. package/dist/requestRequirements.js.map +1 -0
  59. package/dist/reviewerPanel.d.ts +15 -1
  60. package/dist/reviewerPanel.d.ts.map +1 -1
  61. package/dist/reviewerPanel.js +85 -2
  62. package/dist/reviewerPanel.js.map +1 -1
  63. package/dist/routeContext.d.ts +37 -0
  64. package/dist/routeContext.d.ts.map +1 -0
  65. package/dist/routeContext.js +38 -0
  66. package/dist/routeContext.js.map +1 -0
  67. package/dist/runSupport.d.ts +37 -21
  68. package/dist/runSupport.d.ts.map +1 -1
  69. package/dist/runSupport.js +102 -78
  70. package/dist/runSupport.js.map +1 -1
  71. package/dist/runTelemetryWriter.d.ts +20 -0
  72. package/dist/runTelemetryWriter.d.ts.map +1 -0
  73. package/dist/runTelemetryWriter.js +68 -0
  74. package/dist/runTelemetryWriter.js.map +1 -0
  75. package/dist/runTerminals.d.ts +7 -1
  76. package/dist/runTerminals.d.ts.map +1 -1
  77. package/dist/runTerminals.js +42 -4
  78. package/dist/runTerminals.js.map +1 -1
  79. package/dist/structuredOutput.d.ts +33 -0
  80. package/dist/structuredOutput.d.ts.map +1 -0
  81. package/dist/structuredOutput.js +106 -0
  82. package/dist/structuredOutput.js.map +1 -0
  83. package/package.json +19 -18
  84. package/dist/finalVerifier.d.ts +0 -25
  85. package/dist/finalVerifier.d.ts.map +0 -1
  86. package/dist/finalVerifier.js +0 -110
  87. 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":"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"}
1
+ {"version":3,"file":"attemptTelemetry.d.ts","sourceRoot":"","sources":["../src/attemptTelemetry.ts"],"names":[],"mappings":"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"}
@@ -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 && err.tool === tool.name && err.kind === tool.kind && err.target === (tool.target ?? null)) {
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