@claudexor/orchestrator 2.1.2 → 3.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/attemptTelemetry.d.ts +9 -0
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +25 -0
- 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 +40 -0
- package/dist/candidateEvidence.js.map +1 -0
- package/dist/candidateOutputs.d.ts +56 -0
- package/dist/candidateOutputs.d.ts.map +1 -0
- package/dist/candidateOutputs.js +209 -0
- package/dist/candidateOutputs.js.map +1 -0
- package/dist/continuity-facts.d.ts +37 -0
- package/dist/continuity-facts.d.ts.map +1 -0
- package/dist/continuity-facts.js +100 -0
- package/dist/continuity-facts.js.map +1 -0
- package/dist/continuity-summary.d.ts +45 -0
- package/dist/continuity-summary.d.ts.map +1 -0
- package/dist/continuity-summary.js +113 -0
- package/dist/continuity-summary.js.map +1 -0
- package/dist/continuity.d.ts +119 -0
- package/dist/continuity.d.ts.map +1 -0
- package/dist/continuity.js +220 -0
- package/dist/continuity.js.map +1 -0
- package/dist/contract-gates.d.ts +2 -3
- package/dist/contract-gates.d.ts.map +1 -1
- package/dist/contract-gates.js +2 -3
- package/dist/contract-gates.js.map +1 -1
- package/dist/council.d.ts +57 -0
- package/dist/council.d.ts.map +1 -0
- package/dist/council.js +98 -0
- package/dist/council.js.map +1 -0
- package/dist/credential-profiles.d.ts +37 -1
- package/dist/credential-profiles.d.ts.map +1 -1
- package/dist/credential-profiles.js +111 -3
- package/dist/credential-profiles.js.map +1 -1
- package/dist/diffReview.d.ts +3 -0
- package/dist/diffReview.d.ts.map +1 -1
- package/dist/diffReview.js +3 -0
- 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/orchestrator.d.ts +218 -62
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +1078 -1236
- package/dist/orchestrator.js.map +1 -1
- package/dist/planQuestions.d.ts +11 -0
- package/dist/planQuestions.d.ts.map +1 -0
- package/dist/planQuestions.js +119 -0
- package/dist/planQuestions.js.map +1 -0
- package/dist/planRun.d.ts +114 -0
- package/dist/planRun.d.ts.map +1 -0
- package/dist/planRun.js +346 -0
- package/dist/planRun.js.map +1 -0
- package/dist/runSupport.d.ts +31 -80
- package/dist/runSupport.d.ts.map +1 -1
- package/dist/runSupport.js +33 -106
- package/dist/runSupport.js.map +1 -1
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +18 -7
- package/dist/runTerminals.js.map +1 -1
- package/package.json +18 -19
- package/dist/orchestrateExecutor.d.ts +0 -43
- package/dist/orchestrateExecutor.d.ts.map +0 -1
- package/dist/orchestrateExecutor.js +0 -207
- package/dist/orchestrateExecutor.js.map +0 -1
- package/dist/orchestratePlanner.d.ts +0 -12
- package/dist/orchestratePlanner.d.ts.map +0 -1
- package/dist/orchestratePlanner.js +0 -91
- package/dist/orchestratePlanner.js.map +0 -1
- package/dist/outcomeReducer.d.ts +0 -25
- package/dist/outcomeReducer.d.ts.map +0 -1
- package/dist/outcomeReducer.js +0 -121
- package/dist/outcomeReducer.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrateExecutor.d.ts","sourceRoot":"","sources":["../src/orchestrateExecutor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAO3B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,cAAc,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC;AAED,UAAU,2BAA2B;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,GAAG,EAAE,QAAQ,CAAC;IACd,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC/E,gBAAgB,CACd,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,GACpD,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,uFAAuF;AACvF,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CAuMrC"}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { toolRisk, } from "@claudexor/schema";
|
|
3
|
-
import { deliveryReceiptMutated, isSuccessfulOrchestrateTerminal, reduceOrchestrateOutcome, } from "./outcomeReducer.js";
|
|
4
|
-
/** Ordered executor; terminal truth is delegated to the exhaustive outcome reducer. */
|
|
5
|
-
export async function executeOrchestratePlan(input) {
|
|
6
|
-
const steps = input.plan.tool_calls.map((call, index) => ({
|
|
7
|
-
index,
|
|
8
|
-
tool: call.tool,
|
|
9
|
-
risk: toolRisk(call.tool),
|
|
10
|
-
status: "pending",
|
|
11
|
-
required: call.required,
|
|
12
|
-
terminal_status: null,
|
|
13
|
-
terminal_source: null,
|
|
14
|
-
evidence_refs: [],
|
|
15
|
-
run_id: null,
|
|
16
|
-
detail: null,
|
|
17
|
-
}));
|
|
18
|
-
let stoppedReason = null;
|
|
19
|
-
let forcedTerminal = null;
|
|
20
|
-
let readOnly = true;
|
|
21
|
-
const receiptRefs = [];
|
|
22
|
-
const persist = () => {
|
|
23
|
-
input.store.writeYaml(join(input.paths.finalDir, "orchestration_progress.yaml"), {
|
|
24
|
-
steps,
|
|
25
|
-
autonomy: input.autonomy,
|
|
26
|
-
stopped_reason: stoppedReason,
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
persist();
|
|
30
|
-
input.log.emit("output.ready", { kind: "report", path: "final/orchestration_progress.yaml" });
|
|
31
|
-
let executed = 0;
|
|
32
|
-
for (let i = 0; i < input.plan.tool_calls.length; i++) {
|
|
33
|
-
const call = input.plan.tool_calls[i];
|
|
34
|
-
const step = steps[i];
|
|
35
|
-
if (input.signal?.aborted) {
|
|
36
|
-
Object.assign(step, {
|
|
37
|
-
status: "skipped",
|
|
38
|
-
terminal_status: "cancelled",
|
|
39
|
-
terminal_source: "executor",
|
|
40
|
-
detail: "run cancelled before this step",
|
|
41
|
-
});
|
|
42
|
-
stoppedReason = "cancelled";
|
|
43
|
-
forcedTerminal = "cancelled";
|
|
44
|
-
persist();
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
const budgetTerminal = input.ledger.terminal();
|
|
48
|
-
if (budgetTerminal) {
|
|
49
|
-
Object.assign(step, {
|
|
50
|
-
status: "skipped",
|
|
51
|
-
terminal_status: budgetTerminal,
|
|
52
|
-
terminal_source: "budget",
|
|
53
|
-
detail: `root paid budget stopped execution (${budgetTerminal})`,
|
|
54
|
-
});
|
|
55
|
-
stoppedReason = `root paid budget stopped after ${executed} step(s)`;
|
|
56
|
-
forcedTerminal = budgetTerminal;
|
|
57
|
-
persist();
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
if (input.maxToolCalls !== null && executed >= input.maxToolCalls) {
|
|
61
|
-
Object.assign(step, {
|
|
62
|
-
status: "skipped",
|
|
63
|
-
terminal_status: "exhausted",
|
|
64
|
-
terminal_source: "budget",
|
|
65
|
-
detail: `budget max_tool_calls=${input.maxToolCalls} reached`,
|
|
66
|
-
});
|
|
67
|
-
stoppedReason = `budget max_tool_calls=${input.maxToolCalls} reached after ${executed} step(s)`;
|
|
68
|
-
forcedTerminal = "exhausted";
|
|
69
|
-
persist();
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
if (toolRisk(call.tool) === "risky") {
|
|
73
|
-
if (input.autonomy === "auto_safe") {
|
|
74
|
-
step.status = step.required ? "blocked" : "skipped";
|
|
75
|
-
step.terminal_status = step.required ? "blocked" : null;
|
|
76
|
-
step.terminal_source = "policy";
|
|
77
|
-
step.detail = "risky step requires human approval (auto_safe)";
|
|
78
|
-
if (step.required)
|
|
79
|
-
stoppedReason = `blocked at risky step #${i} (${call.tool}) under auto_safe`;
|
|
80
|
-
input.log.emit("orchestrate.step.blocked", {
|
|
81
|
-
index: i,
|
|
82
|
-
tool: call.tool,
|
|
83
|
-
autonomy: input.autonomy,
|
|
84
|
-
});
|
|
85
|
-
persist();
|
|
86
|
-
if (step.required)
|
|
87
|
-
break;
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
step.status = "running";
|
|
91
|
-
persist();
|
|
92
|
-
executed++;
|
|
93
|
-
try {
|
|
94
|
-
const result = await input.executeApplyStep(call);
|
|
95
|
-
step.status = result.ok ? "done" : "failed";
|
|
96
|
-
step.terminal_status = result.ok ? "success" : "failed";
|
|
97
|
-
step.terminal_source = "delivery";
|
|
98
|
-
step.run_id = result.runId;
|
|
99
|
-
step.detail = result.detail;
|
|
100
|
-
if (result.receipt) {
|
|
101
|
-
const receiptRef = `final/orchestration_delivery_receipt_${i}.yaml`;
|
|
102
|
-
input.store.writeYaml(join(input.paths.root, receiptRef), result.receipt);
|
|
103
|
-
step.evidence_refs = [receiptRef];
|
|
104
|
-
receiptRefs.push(receiptRef);
|
|
105
|
-
readOnly = readOnly && !deliveryReceiptMutated(result.receipt);
|
|
106
|
-
}
|
|
107
|
-
input.log.emit("orchestrate.step.done", {
|
|
108
|
-
index: i,
|
|
109
|
-
tool: call.tool,
|
|
110
|
-
ok: result.ok,
|
|
111
|
-
run_id: result.runId,
|
|
112
|
-
});
|
|
113
|
-
if (!result.ok) {
|
|
114
|
-
if (step.required)
|
|
115
|
-
stoppedReason = `apply step #${i} failed: ${result.detail}`;
|
|
116
|
-
persist();
|
|
117
|
-
if (step.required)
|
|
118
|
-
break;
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
step.status = "failed";
|
|
124
|
-
step.terminal_status = "failed";
|
|
125
|
-
step.terminal_source = "delivery";
|
|
126
|
-
step.detail = error instanceof Error ? error.message : String(error);
|
|
127
|
-
if (step.required)
|
|
128
|
-
stoppedReason = `apply step #${i} threw: ${step.detail}`;
|
|
129
|
-
persist();
|
|
130
|
-
if (step.required)
|
|
131
|
-
break;
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
persist();
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
step.status = "running";
|
|
138
|
-
persist();
|
|
139
|
-
executed++;
|
|
140
|
-
try {
|
|
141
|
-
const result = await input.executeSafeStep(call);
|
|
142
|
-
step.status = result.status;
|
|
143
|
-
step.terminal_status = result.terminalStatus;
|
|
144
|
-
step.terminal_source = result.terminalSource;
|
|
145
|
-
step.evidence_refs = result.evidenceRefs;
|
|
146
|
-
step.run_id = result.runId;
|
|
147
|
-
step.detail = result.detail;
|
|
148
|
-
input.log.emit("orchestrate.step.done", {
|
|
149
|
-
index: i,
|
|
150
|
-
tool: call.tool,
|
|
151
|
-
status: result.status,
|
|
152
|
-
run_id: result.runId,
|
|
153
|
-
});
|
|
154
|
-
if (step.required &&
|
|
155
|
-
(result.status !== "done" || !isSuccessfulOrchestrateTerminal(result.terminalStatus))) {
|
|
156
|
-
stoppedReason = `required safe step #${i} (${call.tool}) did not succeed: ${result.detail}`;
|
|
157
|
-
persist();
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
step.status = "failed";
|
|
163
|
-
step.terminal_status = "failed";
|
|
164
|
-
step.terminal_source = "executor";
|
|
165
|
-
step.detail = error instanceof Error ? error.message : String(error);
|
|
166
|
-
if (step.required)
|
|
167
|
-
stoppedReason = `safe step #${i} (${call.tool}) threw: ${step.detail}`;
|
|
168
|
-
persist();
|
|
169
|
-
if (step.required)
|
|
170
|
-
break;
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
persist();
|
|
174
|
-
}
|
|
175
|
-
const finalBudgetTerminal = input.ledger.terminal();
|
|
176
|
-
if (!forcedTerminal && finalBudgetTerminal) {
|
|
177
|
-
forcedTerminal = finalBudgetTerminal;
|
|
178
|
-
for (const step of steps) {
|
|
179
|
-
if (step.status !== "pending")
|
|
180
|
-
continue;
|
|
181
|
-
Object.assign(step, {
|
|
182
|
-
status: "skipped",
|
|
183
|
-
terminal_status: finalBudgetTerminal,
|
|
184
|
-
terminal_source: "budget",
|
|
185
|
-
detail: `root paid budget stopped execution (${finalBudgetTerminal})`,
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
stoppedReason = `root paid budget stopped after ${executed} step(s)`;
|
|
189
|
-
}
|
|
190
|
-
persist();
|
|
191
|
-
const terminal = reduceOrchestrateOutcome([
|
|
192
|
-
...steps
|
|
193
|
-
.filter((step) => !forcedTerminal || step.status !== "pending")
|
|
194
|
-
.map((step) => ({
|
|
195
|
-
required: step.required,
|
|
196
|
-
executionStatus: step.status,
|
|
197
|
-
terminalStatus: step.terminal_status,
|
|
198
|
-
})),
|
|
199
|
-
...(forcedTerminal
|
|
200
|
-
? [{ required: true, executionStatus: "done", terminalStatus: forcedTerminal }]
|
|
201
|
-
: []),
|
|
202
|
-
]);
|
|
203
|
-
const done = steps.filter((step) => step.status === "done").length;
|
|
204
|
-
const note = `${terminal} (${done}/${steps.length} steps done${stoppedReason ? `; ${stoppedReason}` : ""})`;
|
|
205
|
-
return { terminal, note, readOnly, receiptRefs };
|
|
206
|
-
}
|
|
207
|
-
//# sourceMappingURL=orchestrateExecutor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrateExecutor.js","sourceRoot":"","sources":["../src/orchestrateExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt framing for the orchestrate PLANNER (plan-only). The tool belt comes
|
|
3
|
-
* from the typed OrchestrateContract — the prompt never invents actions the
|
|
4
|
-
* executor will not honor.
|
|
5
|
-
*/
|
|
6
|
-
import type { OrchestrateContract as OrchestrateContractT, OrchestratePlan as OrchestratePlanT } from "@claudexor/schema";
|
|
7
|
-
export declare function buildOrchestratePlannerPrompt(goal: string, pool: string[], crossFamily: boolean, contract: OrchestrateContractT): string;
|
|
8
|
-
export declare function extractOrchestratePlan(report: string): {
|
|
9
|
-
plan: OrchestratePlanT | null;
|
|
10
|
-
error: string;
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=orchestratePlanner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestratePlanner.d.ts","sourceRoot":"","sources":["../src/orchestratePlanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,mBAAmB,IAAI,oBAAoB,EAC3C,eAAe,IAAI,gBAAgB,EACpC,MAAM,mBAAmB,CAAC;AAQ3B,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,oBAAoB,GAC7B,MAAM,CA4BR;AAuBD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG;IACtD,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CA2BA"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { OrchestratePlan as OrchestratePlanSchema } from "@claudexor/schema";
|
|
2
|
-
import { redactSecrets } from "@claudexor/util";
|
|
3
|
-
function safeErrorMessage(err) {
|
|
4
|
-
return redactSecrets(err instanceof Error ? err.message : String(err));
|
|
5
|
-
}
|
|
6
|
-
export function buildOrchestratePlannerPrompt(goal, pool, crossFamily, contract) {
|
|
7
|
-
return [
|
|
8
|
-
`You are the Claudexor orchestration planner. Plan — do not implement.`,
|
|
9
|
-
``,
|
|
10
|
-
`## Goal`,
|
|
11
|
-
goal,
|
|
12
|
-
``,
|
|
13
|
-
`## Available harness pool (doctor-verified)`,
|
|
14
|
-
pool.length > 0
|
|
15
|
-
? pool.map((id) => `- ${id}`).join("\n")
|
|
16
|
-
: "- (none verified; plan must say what setup is needed)",
|
|
17
|
-
crossFamily
|
|
18
|
-
? `Cross-family race and cross-family review ARE available (2+ harnesses).`
|
|
19
|
-
: `Only single-route execution is available (fewer than 2 verified harnesses).`,
|
|
20
|
-
``,
|
|
21
|
-
`## Tool belt (the ONLY actions your plan may use)`,
|
|
22
|
-
...contract.tool_belt.map((t) => `- ${t}`),
|
|
23
|
-
``,
|
|
24
|
-
`## Required output`,
|
|
25
|
-
`1. A concise markdown orchestration plan (numbered steps; each step names ONE tool and its arguments).`,
|
|
26
|
-
'2. A fenced ```json block: {"tool_calls": [ … ]}. Each call puts the tool name AND its arguments at the TOP LEVEL — there is NO nested "args" object. Per-tool shapes (use only belt tools):',
|
|
27
|
-
' - start_run: {"tool":"start_run","prompt":"…","mode":"agent","harness":"<optional id>","why":"…"}',
|
|
28
|
-
' - race: {"tool":"race","prompt":"…","n":2,"why":"…"}',
|
|
29
|
-
' - review: {"tool":"review","run_id":"<id>","why":"…"}',
|
|
30
|
-
' - status: {"tool":"status","run_id":"<id>","why":"…"}',
|
|
31
|
-
' - apply: {"tool":"apply","run_id":"<id>","mode":"apply","why":"…"}',
|
|
32
|
-
`Keep the plan minimal and budget-aware. Do not propose tools outside the belt.`,
|
|
33
|
-
].join("\n");
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Extract + validate the planner's typed plan from its markdown report (the
|
|
37
|
-
* fenced ```json block the orchestrate prompt requires). Structured-output
|
|
38
|
-
* parsing, not governance: validity is decided by the OrchestratePlan schema.
|
|
39
|
-
*/
|
|
40
|
-
/** Schema-constrained routes emit explicit `null` for OPTIONAL FIELDS (the
|
|
41
|
-
* strict-mode nullable recipe); Zod `.optional()` rejects null, so those are
|
|
42
|
-
* stripped before parsing — translational, never inventing values. Null
|
|
43
|
-
* ARRAY ELEMENTS are NOT part of that recipe: they are a malformed plan and
|
|
44
|
-
* must FAIL the Zod parse loudly (no silent truncation). */
|
|
45
|
-
function stripNulls(value) {
|
|
46
|
-
if (Array.isArray(value))
|
|
47
|
-
return value.map(stripNulls);
|
|
48
|
-
if (!value || typeof value !== "object")
|
|
49
|
-
return value;
|
|
50
|
-
const out = {};
|
|
51
|
-
for (const [k, v] of Object.entries(value)) {
|
|
52
|
-
if (v === null)
|
|
53
|
-
continue;
|
|
54
|
-
out[k] = stripNulls(v);
|
|
55
|
-
}
|
|
56
|
-
return out;
|
|
57
|
-
}
|
|
58
|
-
export function extractOrchestratePlan(report) {
|
|
59
|
-
// STRUCTURED-FIRST: a schema-constrained route emits the plan as the
|
|
60
|
-
// bare final message — try the whole report as JSON before fence-hunting.
|
|
61
|
-
const bare = report.trim();
|
|
62
|
-
if (bare.startsWith("{") && bare.endsWith("}")) {
|
|
63
|
-
try {
|
|
64
|
-
const parsed = OrchestratePlanSchema.safeParse(stripNulls(JSON.parse(bare)));
|
|
65
|
-
if (parsed.success)
|
|
66
|
-
return { plan: parsed.data, error: "" };
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
/* not bare JSON — fall through to fenced parsing */
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const fence = /```json\s*\n([\s\S]*?)\n```/g;
|
|
73
|
-
let lastBlock = null;
|
|
74
|
-
for (const match of report.matchAll(fence))
|
|
75
|
-
lastBlock = match[1] ?? null;
|
|
76
|
-
if (!lastBlock)
|
|
77
|
-
return { plan: null, error: "no fenced json block found in the planner report" };
|
|
78
|
-
try {
|
|
79
|
-
const parsed = OrchestratePlanSchema.safeParse(stripNulls(JSON.parse(lastBlock)));
|
|
80
|
-
if (!parsed.success)
|
|
81
|
-
return {
|
|
82
|
-
plan: null,
|
|
83
|
-
error: `plan block failed schema validation: ${parsed.error.issues[0]?.message ?? "invalid"}`,
|
|
84
|
-
};
|
|
85
|
-
return { plan: parsed.data, error: "" };
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
return { plan: null, error: `plan block is not valid JSON: ${safeErrorMessage(err)}` };
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=orchestratePlanner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestratePlanner.js","sourceRoot":"","sources":["../src/orchestratePlanner.ts"],"names":[],"mappings":"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"}
|
package/dist/outcomeReducer.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { type DeliveryReceipt, type RunStatus } from "@claudexor/schema";
|
|
2
|
-
export interface OrchestrateStepOutcome {
|
|
3
|
-
required: boolean;
|
|
4
|
-
executionStatus: "pending" | "running" | "done" | "skipped" | "blocked" | "failed";
|
|
5
|
-
terminalStatus: RunStatus | null;
|
|
6
|
-
}
|
|
7
|
-
export declare function isSuccessfulOrchestrateTerminal(status: RunStatus | null): boolean;
|
|
8
|
-
/** Parent success is legal only when every required step has a successful terminal. */
|
|
9
|
-
export declare function reduceOrchestrateOutcome(steps: readonly OrchestrateStepOutcome[]): RunStatus;
|
|
10
|
-
/** Delivery receipts, not the requested autonomy, determine whether execution mutated state. */
|
|
11
|
-
export declare function deliveryReceiptMutated(receipt: DeliveryReceipt): boolean;
|
|
12
|
-
export interface ReferencedRunStatus {
|
|
13
|
-
status: RunStatus | null;
|
|
14
|
-
detail: string;
|
|
15
|
-
evidenceRefs: string[];
|
|
16
|
-
}
|
|
17
|
-
export declare function readRunStatus(repoRoot: string, runId: string): ReferencedRunStatus | null;
|
|
18
|
-
export interface OrchestrateFailureDescriptor {
|
|
19
|
-
phase: "plan" | "executor";
|
|
20
|
-
category: "policy" | "internal" | "harness_error" | "budget";
|
|
21
|
-
safeMessage: string;
|
|
22
|
-
nextActions: string[];
|
|
23
|
-
}
|
|
24
|
-
export declare function orchestrateFailureFor(status: RunStatus): OrchestrateFailureDescriptor | null;
|
|
25
|
-
//# sourceMappingURL=outcomeReducer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"outcomeReducer.d.ts","sourceRoot":"","sources":["../src/outcomeReducer.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnF,cAAc,EAAE,SAAS,GAAG,IAAI,CAAC;CAClC;AAqCD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAEjF;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,CAG5F;AAED,gGAAgG;AAChG,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAExE;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CA0BzF;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAC3B,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,eAAe,GAAG,QAAQ,CAAC;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,4BAA4B,GAAG,IAAI,CA4C5F"}
|
package/dist/outcomeReducer.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { ArtifactStore } from "@claudexor/artifact-store";
|
|
3
|
-
import { RunStatus as RunStatusSchema, } from "@claudexor/schema";
|
|
4
|
-
const PRECEDENCE = [
|
|
5
|
-
"failed",
|
|
6
|
-
"interrupted_unknown",
|
|
7
|
-
"blocked",
|
|
8
|
-
"cost_unverifiable",
|
|
9
|
-
"exhausted_overshoot",
|
|
10
|
-
"exhausted",
|
|
11
|
-
"not_converged",
|
|
12
|
-
"stuck_no_progress",
|
|
13
|
-
"cancelled",
|
|
14
|
-
"success",
|
|
15
|
-
];
|
|
16
|
-
function normalizedTerminal(step) {
|
|
17
|
-
if (!step.required)
|
|
18
|
-
return null;
|
|
19
|
-
if (step.executionStatus === "failed")
|
|
20
|
-
return "failed";
|
|
21
|
-
if (step.executionStatus === "blocked")
|
|
22
|
-
return "blocked";
|
|
23
|
-
if (step.executionStatus === "skipped") {
|
|
24
|
-
if (step.terminalStatus === "cancelled" ||
|
|
25
|
-
step.terminalStatus === "interrupted_unknown" ||
|
|
26
|
-
step.terminalStatus === "cost_unverifiable" ||
|
|
27
|
-
step.terminalStatus === "exhausted_overshoot" ||
|
|
28
|
-
step.terminalStatus === "exhausted")
|
|
29
|
-
return step.terminalStatus;
|
|
30
|
-
return "blocked";
|
|
31
|
-
}
|
|
32
|
-
if (step.executionStatus === "pending" || step.executionStatus === "running")
|
|
33
|
-
return "blocked";
|
|
34
|
-
if (step.terminalStatus === "no_op")
|
|
35
|
-
return "success";
|
|
36
|
-
if (step.terminalStatus === "ungated" || step.terminalStatus === "review_not_run")
|
|
37
|
-
return "blocked";
|
|
38
|
-
return step.terminalStatus ?? "blocked";
|
|
39
|
-
}
|
|
40
|
-
export function isSuccessfulOrchestrateTerminal(status) {
|
|
41
|
-
return status === "success" || status === "no_op";
|
|
42
|
-
}
|
|
43
|
-
/** Parent success is legal only when every required step has a successful terminal. */
|
|
44
|
-
export function reduceOrchestrateOutcome(steps) {
|
|
45
|
-
const actual = steps.map(normalizedTerminal).filter((status) => !!status);
|
|
46
|
-
return PRECEDENCE.find((status) => actual.includes(status)) ?? "success";
|
|
47
|
-
}
|
|
48
|
-
/** Delivery receipts, not the requested autonomy, determine whether execution mutated state. */
|
|
49
|
-
export function deliveryReceiptMutated(receipt) {
|
|
50
|
-
return receipt.treeMutated ?? (receipt.applied && receipt.mode !== "artifact_only");
|
|
51
|
-
}
|
|
52
|
-
export function readRunStatus(repoRoot, runId) {
|
|
53
|
-
const store = new ArtifactStore(repoRoot);
|
|
54
|
-
const paths = store.runPaths(runId);
|
|
55
|
-
const decision = store.readYaml(join(paths.arbitrationDir, "decision.yaml"));
|
|
56
|
-
const workProduct = store.readYaml(join(paths.finalDir, "work_product.yaml"));
|
|
57
|
-
if (!decision && !workProduct)
|
|
58
|
-
return null;
|
|
59
|
-
const status = RunStatusSchema.safeParse(decision?.status);
|
|
60
|
-
const details = [
|
|
61
|
-
decision?.status ? `decision=${decision.status}` : null,
|
|
62
|
-
workProduct?.meta?.["result_kind"]
|
|
63
|
-
? `result_kind=${String(workProduct.meta["result_kind"])}`
|
|
64
|
-
: null,
|
|
65
|
-
workProduct?.meta?.["apply_state"]
|
|
66
|
-
? `apply_state=${String(workProduct.meta["apply_state"])}`
|
|
67
|
-
: null,
|
|
68
|
-
].filter((value) => !!value);
|
|
69
|
-
return {
|
|
70
|
-
status: status.success ? status.data : null,
|
|
71
|
-
detail: details.join(", ") || `run ${runId}: artifacts present`,
|
|
72
|
-
evidenceRefs: [
|
|
73
|
-
...(decision ? [`run:${runId}/arbitration/decision.yaml`] : []),
|
|
74
|
-
...(workProduct ? [`run:${runId}/final/work_product.yaml`] : []),
|
|
75
|
-
],
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
export function orchestrateFailureFor(status) {
|
|
79
|
-
switch (status) {
|
|
80
|
-
case "blocked":
|
|
81
|
-
return {
|
|
82
|
-
phase: "executor",
|
|
83
|
-
category: "policy",
|
|
84
|
-
safeMessage: "orchestrate has required work that did not succeed (including skipped, ungated, missing-review, or risky steps); inspect the typed progress record",
|
|
85
|
-
nextActions: [
|
|
86
|
-
"Inspect final/orchestration_progress.yaml",
|
|
87
|
-
"Resolve or retry the blocked step",
|
|
88
|
-
],
|
|
89
|
-
};
|
|
90
|
-
case "failed":
|
|
91
|
-
case "interrupted_unknown":
|
|
92
|
-
return {
|
|
93
|
-
phase: "executor",
|
|
94
|
-
category: "internal",
|
|
95
|
-
safeMessage: `orchestrate ended ${status}; inspect the typed progress record`,
|
|
96
|
-
nextActions: ["Inspect final/orchestration_progress.yaml", "Retry the failed step"],
|
|
97
|
-
};
|
|
98
|
-
case "not_converged":
|
|
99
|
-
case "stuck_no_progress":
|
|
100
|
-
return {
|
|
101
|
-
phase: "plan",
|
|
102
|
-
category: "harness_error",
|
|
103
|
-
safeMessage: status === "not_converged"
|
|
104
|
-
? "orchestrate produced no valid typed plan or a required child did not converge"
|
|
105
|
-
: "orchestrate made no progress on a required step",
|
|
106
|
-
nextActions: ["Inspect orchestration artifacts", "Re-run orchestrate"],
|
|
107
|
-
};
|
|
108
|
-
case "cost_unverifiable":
|
|
109
|
-
case "exhausted_overshoot":
|
|
110
|
-
case "exhausted":
|
|
111
|
-
return {
|
|
112
|
-
phase: "executor",
|
|
113
|
-
category: "budget",
|
|
114
|
-
safeMessage: `orchestrate ended ${status}; inspect its budget and progress evidence`,
|
|
115
|
-
nextActions: ["Inspect final/orchestration_progress.yaml", "Adjust the budget and retry"],
|
|
116
|
-
};
|
|
117
|
-
default:
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=outcomeReducer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"outcomeReducer.js","sourceRoot":"","sources":["../src/outcomeReducer.ts"],"names":[],"mappings":"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"}
|