@claudexor/orchestrator 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attemptFinalize.d.ts +14 -11
- package/dist/attemptFinalize.d.ts.map +1 -1
- package/dist/attemptFinalize.js +41 -14
- package/dist/attemptFinalize.js.map +1 -1
- package/dist/attemptTelemetry.d.ts +16 -20
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +38 -70
- package/dist/attemptTelemetry.js.map +1 -1
- package/dist/attemptUsageCost.d.ts +47 -0
- package/dist/attemptUsageCost.d.ts.map +1 -0
- package/dist/attemptUsageCost.js +191 -0
- package/dist/attemptUsageCost.js.map +1 -0
- package/dist/budgetFailure.d.ts +3 -1
- package/dist/budgetFailure.d.ts.map +1 -1
- package/dist/budgetFailure.js.map +1 -1
- package/dist/candidateEvidence.d.ts +5 -0
- package/dist/candidateEvidence.d.ts.map +1 -1
- package/dist/candidateEvidence.js +3 -1
- package/dist/candidateEvidence.js.map +1 -1
- package/dist/candidateOutputs.d.ts +19 -0
- package/dist/candidateOutputs.d.ts.map +1 -1
- package/dist/candidateOutputs.js +201 -67
- package/dist/candidateOutputs.js.map +1 -1
- package/dist/credential-profile-rotation.d.ts +145 -0
- package/dist/credential-profile-rotation.d.ts.map +1 -0
- package/dist/credential-profile-rotation.js +315 -0
- package/dist/credential-profile-rotation.js.map +1 -0
- package/dist/credential-profiles.d.ts +35 -134
- package/dist/credential-profiles.d.ts.map +1 -1
- package/dist/credential-profiles.js +73 -295
- package/dist/credential-profiles.js.map +1 -1
- package/dist/decisionBudget.d.ts +43 -0
- package/dist/decisionBudget.d.ts.map +1 -0
- package/dist/decisionBudget.js +84 -0
- package/dist/decisionBudget.js.map +1 -0
- package/dist/decisionTerminalReconciliation.d.ts +18 -0
- package/dist/decisionTerminalReconciliation.d.ts.map +1 -0
- package/dist/decisionTerminalReconciliation.js +26 -0
- package/dist/decisionTerminalReconciliation.js.map +1 -0
- package/dist/deepScanReducer.d.ts +14 -44
- package/dist/deepScanReducer.d.ts.map +1 -1
- package/dist/deepScanReducer.js +240 -128
- package/dist/deepScanReducer.js.map +1 -1
- package/dist/delegation-parent-activation.d.ts +6 -0
- package/dist/delegation-parent-activation.d.ts.map +1 -0
- package/dist/delegation-parent-activation.js +13 -0
- package/dist/delegation-parent-activation.js.map +1 -0
- package/dist/delegationBudgetAuthority.d.ts +30 -0
- package/dist/delegationBudgetAuthority.d.ts.map +1 -0
- package/dist/delegationBudgetAuthority.js +157 -0
- package/dist/delegationBudgetAuthority.js.map +1 -0
- package/dist/delegationFailure.d.ts +58 -0
- package/dist/delegationFailure.d.ts.map +1 -0
- package/dist/delegationFailure.js +184 -0
- package/dist/delegationFailure.js.map +1 -0
- package/dist/delegationToolEvidence.d.ts +20 -0
- package/dist/delegationToolEvidence.d.ts.map +1 -0
- package/dist/delegationToolEvidence.js +46 -0
- package/dist/delegationToolEvidence.js.map +1 -0
- package/dist/git-precondition.d.ts +11 -0
- package/dist/git-precondition.d.ts.map +1 -0
- package/dist/git-precondition.js +69 -0
- package/dist/git-precondition.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +14 -6
- package/dist/interaction.d.ts.map +1 -1
- package/dist/interaction.js +106 -19
- package/dist/interaction.js.map +1 -1
- package/dist/orchestrator.d.ts +62 -115
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +671 -965
- package/dist/orchestrator.js.map +1 -1
- package/dist/plan-prompt.d.ts +3 -0
- package/dist/plan-prompt.d.ts.map +1 -0
- package/dist/plan-prompt.js +28 -0
- package/dist/plan-prompt.js.map +1 -0
- package/dist/planBrief.d.ts +27 -0
- package/dist/planBrief.d.ts.map +1 -0
- package/dist/planBrief.js +42 -0
- package/dist/planBrief.js.map +1 -0
- package/dist/planRun.d.ts +4 -3
- package/dist/planRun.d.ts.map +1 -1
- package/dist/planRun.js +33 -33
- package/dist/planRun.js.map +1 -1
- package/dist/plannerAttempt.d.ts +64 -0
- package/dist/plannerAttempt.d.ts.map +1 -0
- package/dist/plannerAttempt.js +235 -0
- package/dist/plannerAttempt.js.map +1 -0
- package/dist/policyFindings.js.map +1 -1
- package/dist/requestRequirements.d.ts +45 -1
- package/dist/requestRequirements.d.ts.map +1 -1
- package/dist/requestRequirements.js +158 -11
- package/dist/requestRequirements.js.map +1 -1
- package/dist/reviewerPanel.js.map +1 -1
- package/dist/root-ledger.d.ts +13 -0
- package/dist/root-ledger.d.ts.map +1 -0
- package/dist/root-ledger.js +21 -0
- package/dist/root-ledger.js.map +1 -0
- package/dist/routing-failure.d.ts +6 -0
- package/dist/routing-failure.d.ts.map +1 -0
- package/dist/routing-failure.js +12 -0
- package/dist/routing-failure.js.map +1 -0
- package/dist/run-bounded.d.ts +3 -0
- package/dist/run-bounded.d.ts.map +1 -0
- package/dist/run-bounded.js +23 -0
- package/dist/run-bounded.js.map +1 -0
- package/dist/run-input-resolution.d.ts +10 -0
- package/dist/run-input-resolution.d.ts.map +1 -0
- package/dist/run-input-resolution.js +88 -0
- package/dist/run-input-resolution.js.map +1 -0
- package/dist/runEventLog.d.ts +48 -0
- package/dist/runEventLog.d.ts.map +1 -0
- package/dist/runEventLog.js +63 -0
- package/dist/runEventLog.js.map +1 -0
- package/dist/runFacts.d.ts +23 -0
- package/dist/runFacts.d.ts.map +1 -0
- package/dist/runFacts.js +179 -0
- package/dist/runFacts.js.map +1 -0
- package/dist/runFactsBuilder.d.ts +5 -0
- package/dist/runFactsBuilder.d.ts.map +1 -0
- package/dist/runFactsBuilder.js +412 -0
- package/dist/runFactsBuilder.js.map +1 -0
- package/dist/runFactsDeliverable.d.ts +13 -0
- package/dist/runFactsDeliverable.d.ts.map +1 -0
- package/dist/runFactsDeliverable.js +94 -0
- package/dist/runFactsDeliverable.js.map +1 -0
- package/dist/runFactsPresentation.d.ts +7 -0
- package/dist/runFactsPresentation.d.ts.map +1 -0
- package/dist/runFactsPresentation.js +113 -0
- package/dist/runFactsPresentation.js.map +1 -0
- package/dist/runFactsReview.d.ts +7 -0
- package/dist/runFactsReview.d.ts.map +1 -0
- package/dist/runFactsReview.js +63 -0
- package/dist/runFactsReview.js.map +1 -0
- package/dist/runSupport.d.ts +17 -15
- package/dist/runSupport.d.ts.map +1 -1
- package/dist/runSupport.js +16 -0
- package/dist/runSupport.js.map +1 -1
- package/dist/runTelemetryWriter.d.ts +5 -2
- package/dist/runTelemetryWriter.d.ts.map +1 -1
- package/dist/runTelemetryWriter.js +72 -1
- package/dist/runTelemetryWriter.js.map +1 -1
- package/dist/runTerminalContext.d.ts +31 -0
- package/dist/runTerminalContext.d.ts.map +1 -0
- package/dist/runTerminalContext.js +12 -0
- package/dist/runTerminalContext.js.map +1 -0
- package/dist/runTerminalResults.d.ts +55 -0
- package/dist/runTerminalResults.d.ts.map +1 -0
- package/dist/runTerminalResults.js +134 -0
- package/dist/runTerminalResults.js.map +1 -0
- package/dist/runTerminals.d.ts +8 -57
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +423 -135
- package/dist/runTerminals.js.map +1 -1
- package/dist/secretDiff.d.ts +32 -0
- package/dist/secretDiff.d.ts.map +1 -0
- package/dist/secretDiff.js +140 -0
- package/dist/secretDiff.js.map +1 -0
- package/dist/structuredOutput.d.ts.map +1 -1
- package/dist/structuredOutput.js.map +1 -1
- package/dist/task-contract-builder.d.ts +35 -0
- package/dist/task-contract-builder.d.ts.map +1 -0
- package/dist/task-contract-builder.js +114 -0
- package/dist/task-contract-builder.js.map +1 -0
- package/dist/terminalOutcome.d.ts +22 -0
- package/dist/terminalOutcome.d.ts.map +1 -0
- package/dist/terminalOutcome.js +39 -0
- package/dist/terminalOutcome.js.map +1 -0
- package/dist/transientClassify.js.map +1 -1
- package/package.json +17 -17
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { WorkspaceEnvelope } from "@claudexor/schema";
|
|
2
|
+
import { revertWorkingTreePatch, type WorkspaceManager } from "@claudexor/workspace";
|
|
3
|
+
export interface SecretDiffRefusal {
|
|
4
|
+
disposition: "discarded" | "reverted" | "manual_cleanup";
|
|
5
|
+
detail: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function recordSecretDiffRefusal(refusal: SecretDiffRefusal | undefined, errors: string[], existingError: boolean): boolean;
|
|
8
|
+
export declare function secretDiffNextActions(refusal: SecretDiffRefusal): string[];
|
|
9
|
+
/** Keep a secret-bearing patch memory-only. Isolated bytes die with their
|
|
10
|
+
* envelope; in-place bytes are removed only through the existing exact
|
|
11
|
+
* postimage check, so a concurrent edit turns into manual cleanup rather than
|
|
12
|
+
* a destructive rollback. */
|
|
13
|
+
export declare function quarantineSecretDiff(input: {
|
|
14
|
+
diff: string;
|
|
15
|
+
inPlace: boolean;
|
|
16
|
+
repo: string;
|
|
17
|
+
binarySecretLike: boolean;
|
|
18
|
+
/** Secret-risk media that is not represented by `diff` cannot be removed by
|
|
19
|
+
* a successful text rollback and therefore requires truthful manual cleanup. */
|
|
20
|
+
secretOutsidePatch?: boolean;
|
|
21
|
+
gitBacked: boolean;
|
|
22
|
+
/** Test seam for the typed workspace rollback contract. */
|
|
23
|
+
revertPatch?: typeof revertWorkingTreePatch;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
diff: string;
|
|
26
|
+
refusal?: SecretDiffRefusal;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function quarantineCandidateWorkspace(wsm: WorkspaceManager, envelope: WorkspaceEnvelope, inPlace: boolean, answerText?: string): ReturnType<typeof quarantineSecretDiff>;
|
|
29
|
+
/** Fail-loud persistence fence for a final artifact: a secret-like token in
|
|
30
|
+
* the winner's bytes must throw before anything is written (INV-062). */
|
|
31
|
+
export declare function assertNoSecretLikeTokens(label: string, text: string): void;
|
|
32
|
+
//# sourceMappingURL=secretDiff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretDiff.d.ts","sourceRoot":"","sources":["../src/secretDiff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIrF,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,OAAO,GACrB,OAAO,CAIT;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAI1E;AAED;;;6BAG6B;AAC7B,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,OAAO,CAAC;IAC1B;oFACgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,sBAAsB,CAAC;CAC7C,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAkEzD;AAED,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,UAAU,CAAC,OAAO,oBAAoB,CAAC,CA0CzC;AAYD;yEACyE;AACzE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAI1E"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
import { resolve, sep } from "node:path";
|
|
3
|
+
import { summarizeDiffPaths } from "@claudexor/core";
|
|
4
|
+
import { revertWorkingTreePatch } from "@claudexor/workspace";
|
|
5
|
+
import { containsSecretLikeToken, redactSecrets } from "@claudexor/util";
|
|
6
|
+
import { candidateOutputSecretRisk, rasterLinksInMarkdown } from "./candidateOutputs.js";
|
|
7
|
+
export function recordSecretDiffRefusal(refusal, errors, existingError) {
|
|
8
|
+
if (!refusal)
|
|
9
|
+
return existingError;
|
|
10
|
+
errors.push("candidate output could not be proven secret-safe; refusing artifact persistence");
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
export function secretDiffNextActions(refusal) {
|
|
14
|
+
return refusal.disposition === "manual_cleanup"
|
|
15
|
+
? ["Inspect and clean the state named in the recovery receipt", "Retry the run"]
|
|
16
|
+
: ["Retry the run without writing secret material"];
|
|
17
|
+
}
|
|
18
|
+
/** Keep a secret-bearing patch memory-only. Isolated bytes die with their
|
|
19
|
+
* envelope; in-place bytes are removed only through the existing exact
|
|
20
|
+
* postimage check, so a concurrent edit turns into manual cleanup rather than
|
|
21
|
+
* a destructive rollback. */
|
|
22
|
+
export async function quarantineSecretDiff(input) {
|
|
23
|
+
if (!containsSecretLikeToken(input.diff) && !input.binarySecretLike) {
|
|
24
|
+
return { diff: input.diff };
|
|
25
|
+
}
|
|
26
|
+
if (!input.inPlace) {
|
|
27
|
+
return {
|
|
28
|
+
diff: "",
|
|
29
|
+
refusal: {
|
|
30
|
+
disposition: "discarded",
|
|
31
|
+
detail: "isolated candidate bytes that could not be proven secret-safe were discarded with the candidate envelope",
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (input.binarySecretLike && !input.diff.trim()) {
|
|
36
|
+
return {
|
|
37
|
+
diff: "",
|
|
38
|
+
refusal: {
|
|
39
|
+
disposition: "manual_cleanup",
|
|
40
|
+
detail: "candidate output could not be proven secret-safe or captured as an exact reversible patch; manual cleanup required",
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
let rollback;
|
|
45
|
+
try {
|
|
46
|
+
rollback = await (input.revertPatch ?? revertWorkingTreePatch)(input.repo, input.diff, {
|
|
47
|
+
isolateObjectWrites: input.gitBacked,
|
|
48
|
+
noIndex: !input.gitBacked,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
const rollbackCompleted = error instanceof Error &&
|
|
53
|
+
Object.prototype.hasOwnProperty.call(error, "cleanupError") &&
|
|
54
|
+
error.rollbackReverted === true;
|
|
55
|
+
return {
|
|
56
|
+
diff: "",
|
|
57
|
+
refusal: {
|
|
58
|
+
disposition: "manual_cleanup",
|
|
59
|
+
detail: rollbackCompleted
|
|
60
|
+
? "in-place bytes were rolled back, but Claudexor scratch cleanup could not be proven; manual cleanup of Claudexor temporary state is required"
|
|
61
|
+
: "in-place output that could not be proven secret-safe could not be rolled back; manual cleanup required",
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const manuallyClean = !rollback.reverted || input.gitBacked || input.secretOutsidePatch === true;
|
|
66
|
+
return {
|
|
67
|
+
diff: "",
|
|
68
|
+
refusal: !manuallyClean
|
|
69
|
+
? {
|
|
70
|
+
disposition: "reverted",
|
|
71
|
+
detail: "in-place bytes that could not be proven secret-safe were removed by an exact checked rollback",
|
|
72
|
+
}
|
|
73
|
+
: {
|
|
74
|
+
disposition: "manual_cleanup",
|
|
75
|
+
detail: redactSecrets(rollback.reverted && input.secretOutsidePatch
|
|
76
|
+
? `the exact reversible patch was removed, but candidate media outside that patch could not be proven removed; manual cleanup required${input.gitBacked ? "; inspect Git index, refs, and objects too" : ""}`
|
|
77
|
+
: rollback.reverted && input.gitBacked
|
|
78
|
+
? "worktree bytes were removed; inspect Git index, refs, and objects for harness-written secret state"
|
|
79
|
+
: (rollback.reason ??
|
|
80
|
+
"candidate output could not be proven removed; manual cleanup required")),
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export async function quarantineCandidateWorkspace(wsm, envelope, inPlace, answerText) {
|
|
85
|
+
let captured;
|
|
86
|
+
try {
|
|
87
|
+
captured = await wsm.captureDiff(envelope);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const scratchCleanupUnproven = error instanceof Error && Object.prototype.hasOwnProperty.call(error, "cleanupError");
|
|
91
|
+
return {
|
|
92
|
+
diff: "",
|
|
93
|
+
refusal: {
|
|
94
|
+
disposition: inPlace || scratchCleanupUnproven ? "manual_cleanup" : "discarded",
|
|
95
|
+
detail: scratchCleanupUnproven
|
|
96
|
+
? "candidate output capture failed and private scratch cleanup could not be proven; manual cleanup of Claudexor temporary state is required"
|
|
97
|
+
: inPlace
|
|
98
|
+
? "candidate output could not be captured safely; manual cleanup required"
|
|
99
|
+
: "uncaptured isolated candidate output was discarded with the candidate envelope",
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const diffPaths = summarizeDiffPaths(captured.diff).paths;
|
|
104
|
+
const linkedPaths = rasterLinksInMarkdown(answerText ?? "");
|
|
105
|
+
const mediaRisk = candidateOutputSecretRisk({
|
|
106
|
+
worktreePath: envelope.worktree_path,
|
|
107
|
+
changedPaths: [...diffPaths, ...linkedPaths],
|
|
108
|
+
});
|
|
109
|
+
const diffIdentities = new Set(diffPaths.map((path) => candidatePathIdentity(envelope.worktree_path, path)));
|
|
110
|
+
const secretOutsidePatch = mediaRisk.artifactDirectoryUnsafe ||
|
|
111
|
+
mediaRisk.nonReversiblePaths.length > 0 ||
|
|
112
|
+
mediaRisk.riskyPaths.some((path) => !diffIdentities.has(candidatePathIdentity(envelope.worktree_path, path)));
|
|
113
|
+
return quarantineSecretDiff({
|
|
114
|
+
diff: captured.diff,
|
|
115
|
+
binarySecretLike: captured.binarySecretLike || mediaRisk.risky,
|
|
116
|
+
secretOutsidePatch,
|
|
117
|
+
repo: envelope.worktree_path,
|
|
118
|
+
inPlace,
|
|
119
|
+
gitBacked: Boolean(envelope.base_sha),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function candidatePathIdentity(root, raw) {
|
|
123
|
+
const absolute = resolve(root, raw);
|
|
124
|
+
if (absolute !== resolve(root) && !absolute.startsWith(resolve(root) + sep))
|
|
125
|
+
return absolute;
|
|
126
|
+
try {
|
|
127
|
+
return realpathSync.native(absolute);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return absolute;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Fail-loud persistence fence for a final artifact: a secret-like token in
|
|
134
|
+
* the winner's bytes must throw before anything is written (INV-062). */
|
|
135
|
+
export function assertNoSecretLikeTokens(label, text) {
|
|
136
|
+
if (containsSecretLikeToken(text)) {
|
|
137
|
+
throw new Error(`${label} contains secret-like token; refusing to persist artifact`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=secretDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretDiff.js","sourceRoot":"","sources":["../src/secretDiff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredOutput.d.ts","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAWrD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,+EAA+E;AAC/E,qBAAa,mCAAoC,SAAQ,KAAK;IAUhD,QAAQ,CAAC,OAAO,EAAE,OAAO;IATrC,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,iBAAiB;;;QAAwE;IAClG,QAAQ,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"structuredOutput.d.ts","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAWrD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,+EAA+E;AAC/E,qBAAa,mCAAoC,SAAQ,KAAK;IAUhD,QAAQ,CAAC,OAAO,EAAE,OAAO;IATrC,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,iBAAiB;;;QAAwE;IAClG,QAAQ,CAAC,OAAO;QAAK,iBAAiB;;;;MAA2B;IACjE,QAAQ,CAAC,eAAe,WAEtB;IAEF,YAAqB,OAAO,EAAE,OAAO,EAKpC;CACF;AAED,oFAAoF;AACpF,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,eAAe,WAA+C;IAEvE,YAAY,KAAK,EAAE,OAAO,EAMzB;CACF;AA8BD;;2EAE2E;AAC3E,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAOhF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACvC,GAAG,uBAAuB,CAsE1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredOutput.js","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,SAAS,MAAM,KAAK,CAAC;AAC5B,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAG7C,0EAA0E;AAC1E,+EAA+E;AAC/E,qEAAqE;AACrE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,IAAK,SAAiD,CAAC;AACpF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAK,aAAyD,CAAC;AAGpG,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,EACd,2BAA2B,GAE5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAOnD,+EAA+E;AAC/E,MAAM,OAAO,mCAAoC,SAAQ,KAAK;IAUvC;
|
|
1
|
+
{"version":3,"file":"structuredOutput.js","sourceRoot":"","sources":["../src/structuredOutput.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AccessProfile, AuthPreference, EffortHint, ExternalContextPolicy, ModeKind, PaidBudget, ProtectedPathApproval, RoutingGoal, TaskContract, TestCommandInvocation } from "@claudexor/schema";
|
|
2
|
+
interface TaskContractBuildInput {
|
|
3
|
+
repoRoot: string;
|
|
4
|
+
prompt: string;
|
|
5
|
+
instructions?: string;
|
|
6
|
+
baseRef?: string;
|
|
7
|
+
delegate?: boolean;
|
|
8
|
+
parentRunId?: string | null;
|
|
9
|
+
delegatedFromRunId?: string | null;
|
|
10
|
+
tests?: TestCommandInvocation[];
|
|
11
|
+
protectedPathApprovals?: ProtectedPathApproval[];
|
|
12
|
+
denyPaths?: string[];
|
|
13
|
+
paidBudget?: PaidBudget;
|
|
14
|
+
routingGoal?: RoutingGoal;
|
|
15
|
+
access?: AccessProfile;
|
|
16
|
+
web?: ExternalContextPolicy;
|
|
17
|
+
externalContextPolicy?: ExternalContextPolicy;
|
|
18
|
+
outputSchema?: Record<string, unknown> | null;
|
|
19
|
+
authPreference?: AuthPreference;
|
|
20
|
+
credentialProfileId?: string | null;
|
|
21
|
+
maxTurns?: number | null;
|
|
22
|
+
models?: Record<string, string>;
|
|
23
|
+
efforts?: Record<string, EffortHint>;
|
|
24
|
+
}
|
|
25
|
+
export interface TaskContractDefaults {
|
|
26
|
+
paidBudget?: PaidBudget;
|
|
27
|
+
routingGoal?: RoutingGoal;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build and validate the immutable task contract from one resolved run input.
|
|
31
|
+
* This is the single owner for trust, gate, access, and frozen route facts.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildTaskContract(input: TaskContractBuildInput, taskId: string, mode: ModeKind, defaults: TaskContractDefaults): TaskContract;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=task-contract-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-contract-builder.d.ts","sourceRoot":"","sources":["../src/task-contract-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,qBAAqB,EACrB,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAU3B,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAChC,sBAAsB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,GAAG,CAAC,EAAE,qBAAqB,CAAC;IAC5B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,oBAAoB,GAC7B,YAAY,CAiHd"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { FrozenTaskContractArtifact as TaskContractSchema, SCHEMA_VERSION, TRUST_FULL_ACCESS_CODE, } from "@claudexor/schema";
|
|
2
|
+
import { loadConfig, trustConfigPath } from "@claudexor/config";
|
|
3
|
+
import { nowIso, redactSecrets } from "@claudexor/util";
|
|
4
|
+
import { resolveContractGates } from "./contract-gates.js";
|
|
5
|
+
/**
|
|
6
|
+
* Build and validate the immutable task contract from one resolved run input.
|
|
7
|
+
* This is the single owner for trust, gate, access, and frozen route facts.
|
|
8
|
+
*/
|
|
9
|
+
export function buildTaskContract(input, taskId, mode, defaults) {
|
|
10
|
+
const resolvedCfg = loadConfig(input.repoRoot);
|
|
11
|
+
const cfg = resolvedCfg.project;
|
|
12
|
+
const readOnlyMode = mode === "ask" || mode === "plan";
|
|
13
|
+
const requestedAccess = input.access ?? (readOnlyMode ? "readonly" : resolvedCfg.trust.access_default);
|
|
14
|
+
// Effective access is COMPUTED by the engine, never echoed from a client:
|
|
15
|
+
// read-only modes clamp to readonly regardless of the request.
|
|
16
|
+
const effectiveAccess = readOnlyMode ? "readonly" : requestedAccess;
|
|
17
|
+
// TrustConfig is USER-LEVEL only (versioned repo config must never
|
|
18
|
+
// self-grant sensitive powers): unsandboxed full access requires an
|
|
19
|
+
// explicit allow in ~/.claudexor trust settings — loud error, no downgrade.
|
|
20
|
+
// The gate applies to the EFFECTIVE profile: a read-only run clamped to
|
|
21
|
+
// readonly never runs unsandboxed and needs no trust allow.
|
|
22
|
+
if (effectiveAccess === "full" && !resolvedCfg.trust.allow_full_access) {
|
|
23
|
+
// Typed refusal: the `code` rides the daemon job record onto the thread
|
|
24
|
+
// turn (TurnEnqueueError.code), so surfaces key remedies on the CODE —
|
|
25
|
+
// never on substring-matching this human message.
|
|
26
|
+
throw Object.assign(new Error(`access profile 'full' requires allow_full_access: true in the user-level trust file for this repo ` +
|
|
27
|
+
`(${trustConfigPath(input.repoRoot)}); enable it with \`claudexor trust --allow-full-access\` — refusing to run unsandboxed`),
|
|
28
|
+
// Refusal semantics are born at the throw (W24): the one-time grant is
|
|
29
|
+
// a 403, and the daemon persists this status onto the job record.
|
|
30
|
+
{ code: TRUST_FULL_ACCESS_CODE, status: 403 });
|
|
31
|
+
}
|
|
32
|
+
const externalContextPolicy = input.web ?? input.externalContextPolicy ?? "auto";
|
|
33
|
+
// Deterministic gate commands come from explicit run input, then versioned
|
|
34
|
+
// project config. Without these, gateSpecs is empty and convergence is
|
|
35
|
+
// review-only; with them, convergence is test-driven.
|
|
36
|
+
const resolvedGates = resolveContractGates({
|
|
37
|
+
repoRoot: input.repoRoot,
|
|
38
|
+
effectiveAccess,
|
|
39
|
+
config: cfg,
|
|
40
|
+
trustGrants: resolvedCfg.trust.test_command_grants,
|
|
41
|
+
operatorCommands: input.tests ?? [],
|
|
42
|
+
projectCommands: cfg.tests?.commands ?? [],
|
|
43
|
+
});
|
|
44
|
+
const commands = resolvedGates.commands;
|
|
45
|
+
const protectedPaths = [...new Set(cfg.constraints.protected_paths)];
|
|
46
|
+
const autoProtectedPaths = resolvedGates.autoProtectedPaths;
|
|
47
|
+
const protectedPathApprovals = [
|
|
48
|
+
...new Map([...(input.protectedPathApprovals ?? [])].map((approval) => [approval.path, approval])).values(),
|
|
49
|
+
];
|
|
50
|
+
return TaskContractSchema.parse({
|
|
51
|
+
schema_version: SCHEMA_VERSION,
|
|
52
|
+
task_id: taskId,
|
|
53
|
+
created_at: nowIso(),
|
|
54
|
+
repo: { root: input.repoRoot, base_ref: input.baseRef ?? "HEAD", dirty_policy: "snapshot" },
|
|
55
|
+
mode: { kind: mode },
|
|
56
|
+
delegation_requested: input.delegate === true,
|
|
57
|
+
run_lineage: {
|
|
58
|
+
parent_run_id: input.parentRunId ?? null,
|
|
59
|
+
delegated_from_run_id: input.delegatedFromRunId ?? null,
|
|
60
|
+
},
|
|
61
|
+
user_intent: { raw: redactSecrets(input.prompt) },
|
|
62
|
+
// Redacted for symmetry with user_intent.raw — a no-op on fenced input
|
|
63
|
+
// (the inline-secret fence already blocked any secret-like value at every
|
|
64
|
+
// ingress incl. this engine boundary), so task-producing lanes read back
|
|
65
|
+
// the real instructions via harnessSpecKnobs().
|
|
66
|
+
instructions: input.instructions === undefined ? undefined : redactSecrets(input.instructions),
|
|
67
|
+
// Already normalized/strictified at the engine boundary (run() refuses
|
|
68
|
+
// unsupported shapes before any run dir exists).
|
|
69
|
+
output_schema: input.outputSchema ?? null,
|
|
70
|
+
auth_preference: input.authPreference ?? "auto",
|
|
71
|
+
credential_profile_id: input.credentialProfileId ?? null,
|
|
72
|
+
max_turns: input.maxTurns ?? null,
|
|
73
|
+
constraints: {
|
|
74
|
+
protected_paths: protectedPaths,
|
|
75
|
+
deny_paths: [...new Set(input.denyPaths ?? [])],
|
|
76
|
+
auto_protected_paths: autoProtectedPaths,
|
|
77
|
+
protected_path_approvals: protectedPathApprovals,
|
|
78
|
+
},
|
|
79
|
+
tests: { commands },
|
|
80
|
+
access: {
|
|
81
|
+
requested_profile: requestedAccess,
|
|
82
|
+
effective_profile: effectiveAccess,
|
|
83
|
+
},
|
|
84
|
+
external_context: {
|
|
85
|
+
policy: externalContextPolicy,
|
|
86
|
+
web_required: externalContextPolicy === "cached" || externalContextPolicy === "live",
|
|
87
|
+
// Per-route upgrades (e.g. claude cached->live) are disclosed in events
|
|
88
|
+
// and telemetry.yaml; the immutable contract records the requested policy.
|
|
89
|
+
effective_mode: externalContextPolicy,
|
|
90
|
+
},
|
|
91
|
+
// Harness-native tool names are adapter knowledge; the neutral contract
|
|
92
|
+
// carries only the policy plus user-configured allow/deny lists (wired
|
|
93
|
+
// from per-harness settings).
|
|
94
|
+
tool_permission_policy: {
|
|
95
|
+
web: externalContextPolicy,
|
|
96
|
+
allow: [],
|
|
97
|
+
deny: [],
|
|
98
|
+
},
|
|
99
|
+
budget: {
|
|
100
|
+
routing_goal: input.routingGoal ?? defaults.routingGoal ?? cfg?.budget?.routing_goal ?? "auto",
|
|
101
|
+
paid_budget: input.paidBudget ?? defaults.paidBudget ?? resolvedCfg.global.budget.paid_budget_per_run,
|
|
102
|
+
},
|
|
103
|
+
// The resolved harness-scoped model map (scalar already expanded to the
|
|
104
|
+
// primary by resolveRunInput). The contract is what route spec building
|
|
105
|
+
// reads — there is no run-global model (INV-103).
|
|
106
|
+
routing_models: input.models ?? {},
|
|
107
|
+
// QA-035: resolveRunInputDefaults has already expanded explicit, scalar,
|
|
108
|
+
// and Settings-derived effort into a frozen per-lane map. Persist that map
|
|
109
|
+
// verbatim so TaskContract construction cannot re-read a later Settings
|
|
110
|
+
// state or leave pure Auto routing as a drift seam.
|
|
111
|
+
routing_efforts: input.efforts ?? {},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=task-contract-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-contract-builder.js","sourceRoot":"","sources":["../src/task-contract-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RunOutcomeFacts } from "@claudexor/schema";
|
|
2
|
+
import type { ArtifactStore } from "@claudexor/artifact-store";
|
|
3
|
+
/** Strategy success may already have materialized a WorkProduct before a
|
|
4
|
+
* terminal barrier settles. Reconcile only its terminal projection: produced
|
|
5
|
+
* bytes, review evidence, and apply/revert state remain historical facts. */
|
|
6
|
+
export declare function reconcileWorkProductTerminal(context: {
|
|
7
|
+
store: ArtifactStore;
|
|
8
|
+
paths: {
|
|
9
|
+
finalDir: string;
|
|
10
|
+
};
|
|
11
|
+
}, facts: RunOutcomeFacts): void;
|
|
12
|
+
/** Cancellation has no RunFailure payload. A prepared failed result may have
|
|
13
|
+
* written one before the deferred terminal barrier lets cancellation win. */
|
|
14
|
+
export declare function clearFailureArtifact(context: {
|
|
15
|
+
paths: {
|
|
16
|
+
finalDir: string;
|
|
17
|
+
};
|
|
18
|
+
}): void;
|
|
19
|
+
/** Replace only the process terminal axes while retaining independent
|
|
20
|
+
* checks/review/no-change/work-state evidence from an already prepared run. */
|
|
21
|
+
export declare function terminalOutcomeFacts(prior: RunOutcomeFacts | undefined, lifecycle: RunOutcomeFacts["lifecycle"], reason: RunOutcomeFacts["reason"]): RunOutcomeFacts;
|
|
22
|
+
//# sourceMappingURL=terminalOutcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminalOutcome.d.ts","sourceRoot":"","sources":["../src/terminalOutcome.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,eAAe,EAAe,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;6EAE6E;AAC7E,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC9D,KAAK,EAAE,eAAe,GACrB,IAAI,CAmBN;AAED;6EAC6E;AAC7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,CAEnF;AAED;+EAC+E;AAC/E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,EACvC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAChC,eAAe,CAIjB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { rmSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { makeOutcomeFacts, RunOutcomeFacts, WorkProduct } from "@claudexor/schema";
|
|
4
|
+
/** Strategy success may already have materialized a WorkProduct before a
|
|
5
|
+
* terminal barrier settles. Reconcile only its terminal projection: produced
|
|
6
|
+
* bytes, review evidence, and apply/revert state remain historical facts. */
|
|
7
|
+
export function reconcileWorkProductTerminal(context, facts) {
|
|
8
|
+
const path = join(context.paths.finalDir, "work_product.yaml");
|
|
9
|
+
const current = context.store.readYaml(path);
|
|
10
|
+
if (!current || typeof current !== "object" || Array.isArray(current))
|
|
11
|
+
return;
|
|
12
|
+
const record = current;
|
|
13
|
+
const priorMeta = record["meta"] && typeof record["meta"] === "object" && !Array.isArray(record["meta"])
|
|
14
|
+
? record["meta"]
|
|
15
|
+
: {};
|
|
16
|
+
const reconciled = {
|
|
17
|
+
...record,
|
|
18
|
+
meta: {
|
|
19
|
+
...priorMeta,
|
|
20
|
+
lifecycle: facts.lifecycle,
|
|
21
|
+
outcome_facts: facts,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
WorkProduct.parse(reconciled);
|
|
25
|
+
context.store.writeYaml(path, reconciled);
|
|
26
|
+
}
|
|
27
|
+
/** Cancellation has no RunFailure payload. A prepared failed result may have
|
|
28
|
+
* written one before the deferred terminal barrier lets cancellation win. */
|
|
29
|
+
export function clearFailureArtifact(context) {
|
|
30
|
+
rmSync(join(context.paths.finalDir, "failure.yaml"), { force: true });
|
|
31
|
+
}
|
|
32
|
+
/** Replace only the process terminal axes while retaining independent
|
|
33
|
+
* checks/review/no-change/work-state evidence from an already prepared run. */
|
|
34
|
+
export function terminalOutcomeFacts(prior, lifecycle, reason) {
|
|
35
|
+
return prior
|
|
36
|
+
? RunOutcomeFacts.parse({ ...prior, lifecycle, reason })
|
|
37
|
+
: makeOutcomeFacts(lifecycle, { reason });
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=terminalOutcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminalOutcome.js","sourceRoot":"","sources":["../src/terminalOutcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnF;;6EAE6E;AAC7E,MAAM,UAAU,4BAA4B,CAC1C,OAA8D,EAC9D,KAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAU,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO;IAC9E,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpF,CAAC,CAAE,MAAM,CAAC,MAAM,CAA6B;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,UAAU,GAAG;QACjB,GAAG,MAAM;QACT,IAAI,EAAE;YACJ,GAAG,SAAS;YACZ,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa,EAAE,KAAK;SACrB;KACF,CAAC;IACF,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED;6EAC6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,OAAwC;IAC3E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,oBAAoB,CAClC,KAAkC,EAClC,SAAuC,EACvC,MAAiC;IAEjC,OAAO,KAAK;QACV,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACxD,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transientClassify.js","sourceRoot":"","sources":["../src/transientClassify.ts"],"names":[],"mappings":"AA4BA;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAA4C;IAClE,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;IAClB,kBAAkB,EAAE,KAAK;IACzB,YAAY,EAAE,KAAK;CACpB,CAAC;AAEF,SAAS,WAAW,CAClB,QAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"transientClassify.js","sourceRoot":"","sources":["../src/transientClassify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/orchestrator",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Hub that composes all subsystems and implements the three canonical intents (ask, plan, agent) with their strategy flags (ask deep-scan, plan solo/council, agent best-of-N race, attempt caps, until-clean, create, delegate).",
|
|
6
6
|
"type": "module",
|
|
@@ -17,24 +17,24 @@
|
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"ajv": "^8.20.0",
|
|
20
|
-
"@claudexor/artifact-store": "3.
|
|
21
|
-
"@claudexor/arbitration": "3.
|
|
22
|
-
"@claudexor/budget": "3.
|
|
23
|
-
"@claudexor/
|
|
24
|
-
"@claudexor/
|
|
25
|
-
"@claudexor/
|
|
26
|
-
"@claudexor/
|
|
27
|
-
"@claudexor/event-log": "3.
|
|
28
|
-
"@claudexor/gateway": "3.
|
|
29
|
-
"@claudexor/policy": "3.
|
|
30
|
-
"@claudexor/review": "3.
|
|
31
|
-
"@claudexor/schema": "3.
|
|
32
|
-
"@claudexor/synthesis": "3.
|
|
33
|
-
"@claudexor/util": "3.
|
|
34
|
-
"@claudexor/workspace": "3.
|
|
20
|
+
"@claudexor/artifact-store": "3.2.0",
|
|
21
|
+
"@claudexor/arbitration": "3.2.0",
|
|
22
|
+
"@claudexor/budget": "3.2.0",
|
|
23
|
+
"@claudexor/core": "3.2.0",
|
|
24
|
+
"@claudexor/delivery": "3.2.0",
|
|
25
|
+
"@claudexor/config": "3.2.0",
|
|
26
|
+
"@claudexor/context": "3.2.0",
|
|
27
|
+
"@claudexor/event-log": "3.2.0",
|
|
28
|
+
"@claudexor/gateway": "3.2.0",
|
|
29
|
+
"@claudexor/policy": "3.2.0",
|
|
30
|
+
"@claudexor/review": "3.2.0",
|
|
31
|
+
"@claudexor/schema": "3.2.0",
|
|
32
|
+
"@claudexor/synthesis": "3.2.0",
|
|
33
|
+
"@claudexor/util": "3.2.0",
|
|
34
|
+
"@claudexor/workspace": "3.2.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@claudexor/harness-fake": "3.
|
|
37
|
+
"@claudexor/harness-fake": "3.2.0"
|
|
38
38
|
},
|
|
39
39
|
"repository": {
|
|
40
40
|
"type": "git",
|