@claudexor/orchestrator 4.8.2 → 5.0.1

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 (223) hide show
  1. package/dist/account-pool.d.ts +4 -1
  2. package/dist/account-pool.d.ts.map +1 -1
  3. package/dist/account-pool.js +25 -19
  4. package/dist/account-pool.js.map +1 -1
  5. package/dist/account-resolution.d.ts +1 -4
  6. package/dist/account-resolution.d.ts.map +1 -1
  7. package/dist/account-resolution.js +19 -42
  8. package/dist/account-resolution.js.map +1 -1
  9. package/dist/attemptOutputMarkers.d.ts +7 -0
  10. package/dist/attemptOutputMarkers.d.ts.map +1 -1
  11. package/dist/attemptOutputMarkers.js +1 -1
  12. package/dist/attemptOutputMarkers.js.map +1 -1
  13. package/dist/attemptTelemetry.d.ts +4 -1
  14. package/dist/attemptTelemetry.d.ts.map +1 -1
  15. package/dist/attemptTelemetry.js +9 -26
  16. package/dist/attemptTelemetry.js.map +1 -1
  17. package/dist/candidateEvidence.d.ts +12 -9
  18. package/dist/candidateEvidence.d.ts.map +1 -1
  19. package/dist/candidateEvidence.js +38 -13
  20. package/dist/candidateEvidence.js.map +1 -1
  21. package/dist/candidateOutputs.d.ts +44 -22
  22. package/dist/candidateOutputs.d.ts.map +1 -1
  23. package/dist/candidateOutputs.js +116 -72
  24. package/dist/candidateOutputs.js.map +1 -1
  25. package/dist/candidateReview.d.ts.map +1 -1
  26. package/dist/candidateReview.js +44 -8
  27. package/dist/candidateReview.js.map +1 -1
  28. package/dist/candidateTerminals.d.ts +1 -0
  29. package/dist/candidateTerminals.d.ts.map +1 -1
  30. package/dist/candidateTerminals.js +11 -6
  31. package/dist/candidateTerminals.js.map +1 -1
  32. package/dist/candidateWorkProduct.d.ts +2 -1
  33. package/dist/candidateWorkProduct.d.ts.map +1 -1
  34. package/dist/candidateWorkProduct.js +6 -3
  35. package/dist/candidateWorkProduct.js.map +1 -1
  36. package/dist/captureRefusal.d.ts +29 -1
  37. package/dist/captureRefusal.d.ts.map +1 -1
  38. package/dist/captureRefusal.js +114 -8
  39. package/dist/captureRefusal.js.map +1 -1
  40. package/dist/continuation-chain.test-support.d.ts +473 -0
  41. package/dist/continuation-chain.test-support.d.ts.map +1 -0
  42. package/dist/continuation-chain.test-support.js +206 -0
  43. package/dist/continuation-chain.test-support.js.map +1 -0
  44. package/dist/continuation-custody.d.ts +4 -1
  45. package/dist/continuation-custody.d.ts.map +1 -1
  46. package/dist/continuation-custody.js +68 -28
  47. package/dist/continuation-custody.js.map +1 -1
  48. package/dist/continuation-evidence-io.d.ts +30 -4
  49. package/dist/continuation-evidence-io.d.ts.map +1 -1
  50. package/dist/continuation-evidence-io.js +162 -46
  51. package/dist/continuation-evidence-io.js.map +1 -1
  52. package/dist/continuation-evidence.d.ts +40 -3
  53. package/dist/continuation-evidence.d.ts.map +1 -1
  54. package/dist/continuation-evidence.js +85 -11
  55. package/dist/continuation-evidence.js.map +1 -1
  56. package/dist/continuation-input.d.ts +10 -1
  57. package/dist/continuation-input.d.ts.map +1 -1
  58. package/dist/continuation-input.js +21 -20
  59. package/dist/continuation-input.js.map +1 -1
  60. package/dist/continuation-later.d.ts +30 -0
  61. package/dist/continuation-later.d.ts.map +1 -0
  62. package/dist/continuation-later.js +108 -0
  63. package/dist/continuation-later.js.map +1 -0
  64. package/dist/continue-from.d.ts +4 -3
  65. package/dist/continue-from.d.ts.map +1 -1
  66. package/dist/continue-from.js +62 -26
  67. package/dist/continue-from.js.map +1 -1
  68. package/dist/continuity-notice.d.ts +3 -1
  69. package/dist/continuity-notice.d.ts.map +1 -1
  70. package/dist/continuity-notice.js +3 -1
  71. package/dist/continuity-notice.js.map +1 -1
  72. package/dist/continuity-terminal.d.ts +16 -0
  73. package/dist/continuity-terminal.d.ts.map +1 -1
  74. package/dist/continuity-terminal.js +21 -0
  75. package/dist/continuity-terminal.js.map +1 -1
  76. package/dist/continuity.d.ts +1 -1
  77. package/dist/continuity.d.ts.map +1 -1
  78. package/dist/contract-gates.d.ts.map +1 -1
  79. package/dist/contract-gates.js +11 -6
  80. package/dist/contract-gates.js.map +1 -1
  81. package/dist/credential-cooldown.d.ts +2 -1
  82. package/dist/credential-cooldown.d.ts.map +1 -1
  83. package/dist/credential-cooldown.js +16 -7
  84. package/dist/credential-cooldown.js.map +1 -1
  85. package/dist/credential-preflight.d.ts.map +1 -1
  86. package/dist/credential-preflight.js +10 -7
  87. package/dist/credential-preflight.js.map +1 -1
  88. package/dist/credential-profile-rotation.d.ts +10 -3
  89. package/dist/credential-profile-rotation.d.ts.map +1 -1
  90. package/dist/credential-profile-rotation.js +28 -26
  91. package/dist/credential-profile-rotation.js.map +1 -1
  92. package/dist/deepScanReducer.d.ts +0 -3
  93. package/dist/deepScanReducer.d.ts.map +1 -1
  94. package/dist/deepScanReducer.js +22 -26
  95. package/dist/deepScanReducer.js.map +1 -1
  96. package/dist/delegationFailure.d.ts +34 -5
  97. package/dist/delegationFailure.d.ts.map +1 -1
  98. package/dist/delegationFailure.js +6 -4
  99. package/dist/delegationFailure.js.map +1 -1
  100. package/dist/delegationToolEvidence.d.ts +2 -0
  101. package/dist/delegationToolEvidence.d.ts.map +1 -1
  102. package/dist/delegationToolEvidence.js +21 -0
  103. package/dist/delegationToolEvidence.js.map +1 -1
  104. package/dist/diffReview.d.ts +1 -8
  105. package/dist/diffReview.d.ts.map +1 -1
  106. package/dist/diffReview.js +3 -18
  107. package/dist/diffReview.js.map +1 -1
  108. package/dist/directoryCandidate.d.ts +1 -1
  109. package/dist/directoryCandidate.d.ts.map +1 -1
  110. package/dist/directoryCandidate.js +13 -13
  111. package/dist/directoryCandidate.js.map +1 -1
  112. package/dist/inrun-continuity-carrier.d.ts +11 -1
  113. package/dist/inrun-continuity-carrier.d.ts.map +1 -1
  114. package/dist/inrun-continuity-carrier.js +32 -10
  115. package/dist/inrun-continuity-carrier.js.map +1 -1
  116. package/dist/inrun-continuity-types.d.ts +17 -4
  117. package/dist/inrun-continuity-types.d.ts.map +1 -1
  118. package/dist/inrun-continuity.d.ts +8 -3
  119. package/dist/inrun-continuity.d.ts.map +1 -1
  120. package/dist/inrun-continuity.js +41 -37
  121. package/dist/inrun-continuity.js.map +1 -1
  122. package/dist/inrun-continuity.test-support.d.ts +61 -4
  123. package/dist/inrun-continuity.test-support.d.ts.map +1 -1
  124. package/dist/inrun-continuity.test-support.js +12 -2
  125. package/dist/inrun-continuity.test-support.js.map +1 -1
  126. package/dist/modelGovernance.d.ts +87 -9
  127. package/dist/modelGovernance.d.ts.map +1 -1
  128. package/dist/modelGovernance.js +110 -15
  129. package/dist/modelGovernance.js.map +1 -1
  130. package/dist/orchestrator-credentials.d.ts +9 -4
  131. package/dist/orchestrator-credentials.d.ts.map +1 -1
  132. package/dist/orchestrator-credentials.js +14 -6
  133. package/dist/orchestrator-credentials.js.map +1 -1
  134. package/dist/orchestrator.d.ts +0 -1
  135. package/dist/orchestrator.d.ts.map +1 -1
  136. package/dist/orchestrator.js +247 -223
  137. package/dist/orchestrator.js.map +1 -1
  138. package/dist/planFinalize.d.ts.map +1 -1
  139. package/dist/planFinalize.js +3 -7
  140. package/dist/planFinalize.js.map +1 -1
  141. package/dist/planRun.js +2 -2
  142. package/dist/planRun.js.map +1 -1
  143. package/dist/plannerAttempt.d.ts +0 -2
  144. package/dist/plannerAttempt.d.ts.map +1 -1
  145. package/dist/plannerAttempt.js +64 -30
  146. package/dist/plannerAttempt.js.map +1 -1
  147. package/dist/policyFindings.d.ts +3 -0
  148. package/dist/policyFindings.d.ts.map +1 -1
  149. package/dist/policyFindings.js +11 -1
  150. package/dist/policyFindings.js.map +1 -1
  151. package/dist/pool-attempt-evidence.d.ts +1 -1
  152. package/dist/pool-attempt-evidence.d.ts.map +1 -1
  153. package/dist/pool-attempt-evidence.js +1 -1
  154. package/dist/pool-attempt-evidence.js.map +1 -1
  155. package/dist/primary-divergence.d.ts +7 -2
  156. package/dist/primary-divergence.d.ts.map +1 -1
  157. package/dist/primary-divergence.js +13 -5
  158. package/dist/primary-divergence.js.map +1 -1
  159. package/dist/quota-refusal-scope.d.ts +39 -1
  160. package/dist/quota-refusal-scope.d.ts.map +1 -1
  161. package/dist/quota-refusal-scope.js +95 -1
  162. package/dist/quota-refusal-scope.js.map +1 -1
  163. package/dist/readonlyTerminals.d.ts +0 -1
  164. package/dist/readonlyTerminals.d.ts.map +1 -1
  165. package/dist/readonlyTerminals.js +5 -3
  166. package/dist/readonlyTerminals.js.map +1 -1
  167. package/dist/requestRequirements.d.ts +23 -0
  168. package/dist/requestRequirements.d.ts.map +1 -1
  169. package/dist/requestRequirements.js +22 -0
  170. package/dist/requestRequirements.js.map +1 -1
  171. package/dist/resultNotice.d.ts +14 -0
  172. package/dist/resultNotice.d.ts.map +1 -0
  173. package/dist/resultNotice.js +21 -0
  174. package/dist/resultNotice.js.map +1 -0
  175. package/dist/reviewerInventory.d.ts +47 -0
  176. package/dist/reviewerInventory.d.ts.map +1 -0
  177. package/dist/reviewerInventory.js +74 -0
  178. package/dist/reviewerInventory.js.map +1 -0
  179. package/dist/reviewerPanel.d.ts.map +1 -1
  180. package/dist/reviewerPanel.js +37 -60
  181. package/dist/reviewerPanel.js.map +1 -1
  182. package/dist/routing-failure.d.ts +2 -1
  183. package/dist/routing-failure.d.ts.map +1 -1
  184. package/dist/routing-failure.js +2 -0
  185. package/dist/routing-failure.js.map +1 -1
  186. package/dist/runAdmission.d.ts.map +1 -1
  187. package/dist/runAdmission.js +1 -14
  188. package/dist/runAdmission.js.map +1 -1
  189. package/dist/runEventLog.js +2 -2
  190. package/dist/runEventLog.js.map +1 -1
  191. package/dist/runFactsBuilder.d.ts.map +1 -1
  192. package/dist/runFactsBuilder.js +18 -10
  193. package/dist/runFactsBuilder.js.map +1 -1
  194. package/dist/runFactsDeliverable.d.ts.map +1 -1
  195. package/dist/runFactsDeliverable.js +7 -1
  196. package/dist/runFactsDeliverable.js.map +1 -1
  197. package/dist/runSupport.d.ts +5 -10
  198. package/dist/runSupport.d.ts.map +1 -1
  199. package/dist/runSupport.js +38 -40
  200. package/dist/runSupport.js.map +1 -1
  201. package/dist/runTerminalResults.d.ts +9 -1
  202. package/dist/runTerminalResults.d.ts.map +1 -1
  203. package/dist/runTerminalResults.js +27 -5
  204. package/dist/runTerminalResults.js.map +1 -1
  205. package/dist/savedCandidate.d.ts +43 -0
  206. package/dist/savedCandidate.d.ts.map +1 -0
  207. package/dist/savedCandidate.js +88 -0
  208. package/dist/savedCandidate.js.map +1 -0
  209. package/dist/secretDiff.d.ts +85 -46
  210. package/dist/secretDiff.d.ts.map +1 -1
  211. package/dist/secretDiff.js +123 -126
  212. package/dist/secretDiff.js.map +1 -1
  213. package/dist/task-contract-builder.d.ts.map +1 -1
  214. package/dist/task-contract-builder.js +5 -7
  215. package/dist/task-contract-builder.js.map +1 -1
  216. package/dist/workReportEnvelope.d.ts.map +1 -1
  217. package/dist/workReportEnvelope.js +4 -16
  218. package/dist/workReportEnvelope.js.map +1 -1
  219. package/package.json +17 -17
  220. package/dist/persistedPatch.d.ts +0 -55
  221. package/dist/persistedPatch.d.ts.map +0 -1
  222. package/dist/persistedPatch.js +0 -132
  223. package/dist/persistedPatch.js.map +0 -1
@@ -1,132 +0,0 @@
1
- import { parseUnifiedDiff } from "@claudexor/core";
2
- import { containsSecretLikeToken, redactSecrets, sensitiveResourcePolicy } from "@claudexor/util";
3
- /**
4
- * Persistence classifier for candidate patches (INV-062, owner decision 05.10
5
- * "3. C"): agent bytes are never rolled back, discarded or failed for
6
- * containing secret-like text. The EXACT diff stays in memory, in the changed
7
- * files and in the private exact patch object; every SAVED copy goes through
8
- * `persistedPatchCopy`, and the run discloses paths and counts — never a match.
9
- */
10
- /** First line of a saved patch copy whose content differs from the exact
11
- * patch. Git and the diff parsers skip any preamble before the first file
12
- * record, so the notice travels with the copy without changing its structure. */
13
- export const PERSISTED_PATCH_NOTICE = "# Claudexor: secret-like strings are replaced with [redacted] in this saved copy. " +
14
- "The real bytes stay in the candidate's changed files and in Claudexor's private exact patch object; " +
15
- "a reviewer workspace copy omits files with secret-like content. Apply through Claudexor, never from this copy.";
16
- const BINARY_PAYLOAD_WITHHELD = "# Claudexor: binary payload withheld from this saved copy (secret-like or uninspectable bytes)";
17
- const FILE_RECORD_START = /^(?:diff .+|Binary files .+ differ)$/gm;
18
- /** Lines that carry diff structure, never file content. Inside a multi-line
19
- * match they stay verbatim, so every file record and hunk of the copy survives. */
20
- const DIFF_STRUCTURE_LINE = /^(?:diff --git |@@ |\|index [0-9a-f]+\.\.[0-9a-f]+|--- (?:a\/|\/dev\/null)|\+\+\+ (?:b\/|\/dev\/null)|(?:new|deleted) file mode |similarity index |rename (?:from|to) |(?:old|new) mode |Binary files )/;
21
- /** A match starts inside a line, but subsequent lines include their diff
22
- * prefix. Keep those prefixes, line endings and structure lines so hunk counts
23
- * and file records remain valid. */
24
- function redactPatchMatch(match) {
25
- return match
26
- .split("\n")
27
- .map((line, index) => index > 0 && DIFF_STRUCTURE_LINE.test(line)
28
- ? line
29
- : `${index > 0 && /^[ +\-]/.test(line) ? line[0] : ""}[redacted]${line.endsWith("\r") ? "\r" : ""}`)
30
- .join("\n");
31
- }
32
- /**
33
- * Build the saved copy of an exact candidate diff: withhold the payload of the
34
- * named binary files, replace every secret-like string, and count per file in
35
- * the same pass. A copy with nothing to hide is the exact diff itself (no
36
- * notice, no new fields), so ordinary runs are unchanged. Idempotent.
37
- */
38
- export function persistedPatchCopy(diff, withheldBinaries) {
39
- if (diff.startsWith(PERSISTED_PATCH_NOTICE) && !containsSecretLikeToken(diff)) {
40
- return { text: diff, files: [], unattributedMatches: 0 };
41
- }
42
- const withheld = new Set(withheldBinaries);
43
- const starts = [...diff.matchAll(FILE_RECORD_START)].map((match) => match.index);
44
- const files = new Map();
45
- let unattributedMatches = 0;
46
- const hide = (text, path) => {
47
- const decision = sensitiveResourcePolicy.inspectContent(text, "redact", redactPatchMatch);
48
- if (decision.matches === 0)
49
- return text;
50
- if (path === null) {
51
- unattributedMatches += decision.matches;
52
- return decision.text;
53
- }
54
- const safePath = redactSecrets(path);
55
- const entry = files.get(safePath) ?? { path: safePath, matches: 0, kinds: [] };
56
- entry.matches += decision.matches;
57
- entry.kinds = [...new Set([...entry.kinds, ...decision.signatures])].sort();
58
- files.set(safePath, entry);
59
- return decision.text;
60
- };
61
- let body = hide(diff.slice(0, starts[0] ?? diff.length), null);
62
- for (let index = 0; index < starts.length; index += 1) {
63
- let record = diff.slice(starts[index], starts[index + 1] ?? diff.length);
64
- const parsed = parseUnifiedDiff(record).files[0];
65
- const path = parsed?.newPath ?? parsed?.oldPath ?? null;
66
- if (path !== null && withheld.has(path)) {
67
- const payload = record.search(/^GIT binary patch$/m);
68
- if (payload >= 0) {
69
- record = `${record.slice(0, payload)}GIT binary patch\n${BINARY_PAYLOAD_WITHHELD}\n`;
70
- }
71
- }
72
- body += hide(record, path);
73
- }
74
- // A match may straddle two file records (a key block opened in one file and
75
- // closed in the next). The whole-text pass is the authority on what a saved
76
- // copy may contain; per-file passes only attribute counts.
77
- body = hide(body, null);
78
- return {
79
- text: body === diff ? diff : `${PERSISTED_PATCH_NOTICE}\n${body}`,
80
- files: [...files.values()],
81
- unattributedMatches,
82
- };
83
- }
84
- /** Fence on the text that is about to be written. It can only fire on a
85
- * redaction bug — agent bytes reach a saved file through `persistedPatchCopy`. */
86
- export function assertPersistableText(label, text) {
87
- if (containsSecretLikeToken(text)) {
88
- throw new Error(`${label} still matches the secret-like policy after redaction; not written`);
89
- }
90
- }
91
- export function buildSecretLikeFinding(input) {
92
- const clean = (paths) => [...new Set(paths.map((path) => redactSecrets(path)))].sort();
93
- const finding = {
94
- files: input.copy.files,
95
- binary_paths: clean(input.binaryPaths),
96
- media_withheld: clean(input.mediaWithheld),
97
- answer_matches: input.answerMatches,
98
- total_matches: input.copy.files.reduce((sum, file) => sum + file.matches, 0) +
99
- input.copy.unattributedMatches +
100
- input.answerMatches,
101
- };
102
- return finding.total_matches > 0 ||
103
- finding.binary_paths.length > 0 ||
104
- finding.media_withheld.length > 0
105
- ? finding
106
- : undefined;
107
- }
108
- function named(paths) {
109
- const shown = paths.slice(0, 5).join(", ");
110
- return paths.length > 5 ? `${shown}, +${paths.length - 5} more` : shown;
111
- }
112
- /** One human line for `final/summary.md`; null when there is nothing to say. */
113
- export function secretLikeSummaryLine(finding) {
114
- if (!finding)
115
- return null;
116
- const parts = [];
117
- const inPatch = finding.total_matches - finding.answer_matches;
118
- if (inPatch > 0) {
119
- const paths = finding.files.map((file) => file.path);
120
- parts.push(`${inPatch} in ${paths.length} changed file(s)${paths.length > 0 ? ` (${named(paths)})` : ""} — kept in the changed files, hidden in saved copies`);
121
- }
122
- if (finding.binary_paths.length > 0) {
123
- parts.push(`${finding.binary_paths.length} secret-like or uninspectable binary payload(s) withheld from the saved patch (${named(finding.binary_paths)})`);
124
- }
125
- if (finding.answer_matches > 0)
126
- parts.push(`${finding.answer_matches} hidden in the answer`);
127
- if (finding.media_withheld.length > 0) {
128
- parts.push(`${finding.media_withheld.length} image(s) not saved (${named(finding.media_withheld)})`);
129
- }
130
- return parts.length > 0 ? `- Secret-like strings: ${parts.join("; ")}` : null;
131
- }
132
- //# sourceMappingURL=persistedPatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistedPatch.js","sourceRoot":"","sources":["../src/persistedPatch.ts"],"names":[],"mappings":"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"}