codex-orchestrator 2.0.2 → 2.0.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 (211) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +12 -9
  3. package/dist/src/index.d.ts +10 -0
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +5 -0
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/v2/acceptance-proof.d.ts +3 -0
  8. package/dist/src/v2/acceptance-proof.d.ts.map +1 -1
  9. package/dist/src/v2/acceptance-proof.js +2 -8
  10. package/dist/src/v2/acceptance-proof.js.map +1 -1
  11. package/dist/src/v2/adapters/gh-issue-adapter.d.ts +5 -3
  12. package/dist/src/v2/adapters/gh-issue-adapter.d.ts.map +1 -1
  13. package/dist/src/v2/adapters/gh-issue-adapter.js +63 -7
  14. package/dist/src/v2/adapters/gh-issue-adapter.js.map +1 -1
  15. package/dist/src/v2/adapters/issues.d.ts +16 -2
  16. package/dist/src/v2/adapters/issues.d.ts.map +1 -1
  17. package/dist/src/v2/adapters/issues.js +15 -5
  18. package/dist/src/v2/adapters/issues.js.map +1 -1
  19. package/dist/src/v2/adapters/mission-coordinator-lock.d.ts +1 -0
  20. package/dist/src/v2/adapters/mission-coordinator-lock.d.ts.map +1 -1
  21. package/dist/src/v2/adapters/mission-coordinator-lock.js +5 -1
  22. package/dist/src/v2/adapters/mission-coordinator-lock.js.map +1 -1
  23. package/dist/src/v2/candidate-cli.d.ts +4 -0
  24. package/dist/src/v2/candidate-cli.d.ts.map +1 -1
  25. package/dist/src/v2/candidate-cli.js +26 -11
  26. package/dist/src/v2/candidate-cli.js.map +1 -1
  27. package/dist/src/v2/cli-contract.d.ts +1 -1
  28. package/dist/src/v2/cli-contract.d.ts.map +1 -1
  29. package/dist/src/v2/cli-contract.js +10 -0
  30. package/dist/src/v2/cli-contract.js.map +1 -1
  31. package/dist/src/v2/code-review-report.d.ts +66 -0
  32. package/dist/src/v2/code-review-report.d.ts.map +1 -0
  33. package/dist/src/v2/code-review-report.js +259 -0
  34. package/dist/src/v2/code-review-report.js.map +1 -0
  35. package/dist/src/v2/codex-process.d.ts +8 -1
  36. package/dist/src/v2/codex-process.d.ts.map +1 -1
  37. package/dist/src/v2/codex-process.js +11 -0
  38. package/dist/src/v2/codex-process.js.map +1 -1
  39. package/dist/src/v2/config.d.ts +2 -1
  40. package/dist/src/v2/config.d.ts.map +1 -1
  41. package/dist/src/v2/config.js +8 -3
  42. package/dist/src/v2/config.js.map +1 -1
  43. package/dist/src/v2/contained-report-operation.d.ts +100 -0
  44. package/dist/src/v2/contained-report-operation.d.ts.map +1 -0
  45. package/dist/src/v2/contained-report-operation.js +200 -0
  46. package/dist/src/v2/contained-report-operation.js.map +1 -0
  47. package/dist/src/v2/containment.d.ts +6 -0
  48. package/dist/src/v2/containment.d.ts.map +1 -1
  49. package/dist/src/v2/containment.js +40 -1
  50. package/dist/src/v2/containment.js.map +1 -1
  51. package/dist/src/v2/direct-delivery.d.ts +101 -0
  52. package/dist/src/v2/direct-delivery.d.ts.map +1 -0
  53. package/dist/src/v2/direct-delivery.js +547 -0
  54. package/dist/src/v2/direct-delivery.js.map +1 -0
  55. package/dist/src/v2/immutable-workflow-publisher.d.ts +40 -0
  56. package/dist/src/v2/immutable-workflow-publisher.d.ts.map +1 -0
  57. package/dist/src/v2/immutable-workflow-publisher.js +218 -0
  58. package/dist/src/v2/immutable-workflow-publisher.js.map +1 -0
  59. package/dist/src/v2/implementation-reviewer.d.ts +81 -0
  60. package/dist/src/v2/implementation-reviewer.d.ts.map +1 -0
  61. package/dist/src/v2/implementation-reviewer.js +157 -0
  62. package/dist/src/v2/implementation-reviewer.js.map +1 -0
  63. package/dist/src/v2/owner-control-lock.d.ts +41 -0
  64. package/dist/src/v2/owner-control-lock.d.ts.map +1 -0
  65. package/dist/src/v2/owner-control-lock.js +174 -0
  66. package/dist/src/v2/owner-control-lock.js.map +1 -0
  67. package/dist/src/v2/route-continuations.d.ts +32 -0
  68. package/dist/src/v2/route-continuations.d.ts.map +1 -0
  69. package/dist/src/v2/route-continuations.js +2 -0
  70. package/dist/src/v2/route-continuations.js.map +1 -0
  71. package/dist/src/v2/route-coordinator.d.ts +77 -0
  72. package/dist/src/v2/route-coordinator.d.ts.map +1 -0
  73. package/dist/src/v2/route-coordinator.js +370 -0
  74. package/dist/src/v2/route-coordinator.js.map +1 -0
  75. package/dist/src/v2/route-decision.d.ts +129 -0
  76. package/dist/src/v2/route-decision.d.ts.map +1 -0
  77. package/dist/src/v2/route-decision.js +400 -0
  78. package/dist/src/v2/route-decision.js.map +1 -0
  79. package/dist/src/v2/run-issue.d.ts +63 -2
  80. package/dist/src/v2/run-issue.d.ts.map +1 -1
  81. package/dist/src/v2/run-issue.js +906 -91
  82. package/dist/src/v2/run-issue.js.map +1 -1
  83. package/dist/src/v2/run-store.d.ts +25 -1
  84. package/dist/src/v2/run-store.d.ts.map +1 -1
  85. package/dist/src/v2/run-store.js +143 -3
  86. package/dist/src/v2/run-store.js.map +1 -1
  87. package/dist/src/v2/runtime-assets.d.ts +15 -13
  88. package/dist/src/v2/runtime-assets.d.ts.map +1 -1
  89. package/dist/src/v2/runtime-assets.js +263 -416
  90. package/dist/src/v2/runtime-assets.js.map +1 -1
  91. package/dist/src/v2/runtime.d.ts +14 -6
  92. package/dist/src/v2/runtime.d.ts.map +1 -1
  93. package/dist/src/v2/runtime.js +478 -56
  94. package/dist/src/v2/runtime.js.map +1 -1
  95. package/dist/src/v2/setup-cli.d.ts.map +1 -1
  96. package/dist/src/v2/setup-cli.js +1 -0
  97. package/dist/src/v2/setup-cli.js.map +1 -1
  98. package/dist/src/v2/setup-runtime.d.ts.map +1 -1
  99. package/dist/src/v2/setup-runtime.js +20 -72
  100. package/dist/src/v2/setup-runtime.js.map +1 -1
  101. package/dist/src/v2/setup.d.ts +4 -1
  102. package/dist/src/v2/setup.d.ts.map +1 -1
  103. package/dist/src/v2/setup.js +104 -1
  104. package/dist/src/v2/setup.js.map +1 -1
  105. package/dist/src/v2/spec-coordinator.d.ts +85 -0
  106. package/dist/src/v2/spec-coordinator.d.ts.map +1 -0
  107. package/dist/src/v2/spec-coordinator.js +88 -0
  108. package/dist/src/v2/spec-coordinator.js.map +1 -0
  109. package/dist/src/v2/spec-delivery.d.ts +143 -0
  110. package/dist/src/v2/spec-delivery.d.ts.map +1 -0
  111. package/dist/src/v2/spec-delivery.js +401 -0
  112. package/dist/src/v2/spec-delivery.js.map +1 -0
  113. package/dist/src/v2/triage-route.d.ts +68 -0
  114. package/dist/src/v2/triage-route.d.ts.map +1 -0
  115. package/dist/src/v2/triage-route.js +223 -0
  116. package/dist/src/v2/triage-route.js.map +1 -0
  117. package/dist/src/v2/waiting-human-coordinator.d.ts +49 -0
  118. package/dist/src/v2/waiting-human-coordinator.d.ts.map +1 -0
  119. package/dist/src/v2/waiting-human-coordinator.js +509 -0
  120. package/dist/src/v2/waiting-human-coordinator.js.map +1 -0
  121. package/dist/src/v2/waiting-human.d.ts +143 -0
  122. package/dist/src/v2/waiting-human.d.ts.map +1 -0
  123. package/dist/src/v2/waiting-human.js +408 -0
  124. package/dist/src/v2/waiting-human.js.map +1 -0
  125. package/dist/src/v2/workflow-assets.d.ts +90 -0
  126. package/dist/src/v2/workflow-assets.d.ts.map +1 -0
  127. package/dist/src/v2/workflow-assets.js +554 -0
  128. package/dist/src/v2/workflow-assets.js.map +1 -0
  129. package/docs/deep-dive.md +15 -8
  130. package/internal-workflow/docs/agents/artifact-review-loop.md +267 -0
  131. package/internal-workflow/docs/agents/bug-workflow-routing.md +24 -0
  132. package/internal-workflow/docs/agents/coding-skill-routing.md +203 -0
  133. package/internal-workflow/docs/agents/confidence-rubric.md +65 -0
  134. package/internal-workflow/docs/agents/contract-test-ledger.md +60 -0
  135. package/internal-workflow/docs/agents/implementation-review-loop.md +302 -0
  136. package/internal-workflow/docs/agents/review-gates.md +49 -0
  137. package/internal-workflow/docs/agents/review-protocol.md +170 -0
  138. package/internal-workflow/docs/agents/tool-usage.md +88 -0
  139. package/internal-workflow/manifest.json +1 -0
  140. package/internal-workflow/operations/acceptance-proof/SKILL.md +3 -0
  141. package/internal-workflow/operations/ambiguity-review/SKILL.md +3 -0
  142. package/internal-workflow/operations/cleanup-review/SKILL.md +3 -0
  143. package/internal-workflow/operations/code-review/SKILL.md +3 -0
  144. package/internal-workflow/operations/implementation/SKILL.md +3 -0
  145. package/internal-workflow/operations/spec-author/SKILL.md +3 -0
  146. package/internal-workflow/operations/spec-implementation/SKILL.md +3 -0
  147. package/internal-workflow/operations/spec-review/SKILL.md +3 -0
  148. package/internal-workflow/operations/triage/SKILL.md +3 -0
  149. package/internal-workflow/profiles/analyst_deep.toml +9 -0
  150. package/internal-workflow/profiles/implementer_deep.toml +9 -0
  151. package/internal-workflow/profiles/implementer_standard.toml +9 -0
  152. package/internal-workflow/profiles/proof_agent.toml +8 -0
  153. package/internal-workflow/profiles/researcher_standard.toml +9 -0
  154. package/internal-workflow/profiles/reviewer_deep.toml +9 -0
  155. package/internal-workflow/profiles/reviewer_fast.toml +9 -0
  156. package/internal-workflow/profiles/reviewer_standard.toml +9 -0
  157. package/internal-workflow/schemas/ambiguity-review-v1.json +1 -0
  158. package/internal-workflow/schemas/code-review-v1.json +1 -0
  159. package/internal-workflow/schemas/implementation-report-v1.json +1 -0
  160. package/internal-workflow/schemas/proof-report-v1.json +1 -0
  161. package/internal-workflow/schemas/spec-author-v1.json +1 -0
  162. package/internal-workflow/schemas/spec-review-v1.json +30 -0
  163. package/internal-workflow/schemas/triage-route-v1.json +1 -0
  164. package/internal-workflow/skills/acceptance-proof/agents/openai.yaml +6 -0
  165. package/internal-workflow/skills/agent-auto/agents/openai.yaml +6 -0
  166. package/internal-workflow/skills/cleanup-review/SKILL.md +84 -0
  167. package/internal-workflow/skills/cleanup-review/agents/openai.yaml +6 -0
  168. package/internal-workflow/skills/code-review/SKILL.md +257 -0
  169. package/internal-workflow/skills/code-review/agents/openai.yaml +4 -0
  170. package/internal-workflow/skills/code-review/references/bug-classes.md +56 -0
  171. package/internal-workflow/skills/code-review/references/framework-lenses.md +34 -0
  172. package/internal-workflow/skills/code-review/references/targeted-recipes.md +49 -0
  173. package/internal-workflow/skills/codebase-design/DEEPENING.md +35 -0
  174. package/internal-workflow/skills/codebase-design/DESIGN-IT-TWICE.md +50 -0
  175. package/internal-workflow/skills/codebase-design/SKILL.md +82 -0
  176. package/internal-workflow/skills/codebase-design/agents/openai.yaml +6 -0
  177. package/internal-workflow/skills/diagnosing-bugs/SKILL.md +138 -0
  178. package/internal-workflow/skills/diagnosing-bugs/agents/openai.yaml +6 -0
  179. package/internal-workflow/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  180. package/internal-workflow/skills/implementation-spec-maker/SKILL.md +93 -0
  181. package/internal-workflow/skills/implementation-spec-maker/agents/openai.yaml +6 -0
  182. package/internal-workflow/skills/implementation-spec-maker/references/source-modes.md +31 -0
  183. package/internal-workflow/skills/implementation-spec-maker/references/spec-template.md +146 -0
  184. package/internal-workflow/skills/implementation-spec-review/SKILL.md +211 -0
  185. package/internal-workflow/skills/implementation-spec-review/agents/openai.yaml +6 -0
  186. package/internal-workflow/skills/research/SKILL.md +107 -0
  187. package/internal-workflow/skills/research/agents/openai.yaml +6 -0
  188. package/internal-workflow/skills/small-task-implementer/SKILL.md +97 -0
  189. package/internal-workflow/skills/small-task-implementer/agents/openai.yaml +6 -0
  190. package/internal-workflow/skills/spec-implementer/SKILL.md +197 -0
  191. package/internal-workflow/skills/spec-implementer/agents/openai.yaml +6 -0
  192. package/internal-workflow/skills/tdd/SKILL.md +59 -0
  193. package/internal-workflow/skills/tdd/agents/openai.yaml +6 -0
  194. package/internal-workflow/skills/tdd/interface-design.md +31 -0
  195. package/internal-workflow/skills/tdd/mocking.md +59 -0
  196. package/internal-workflow/skills/tdd/refactoring.md +10 -0
  197. package/internal-workflow/skills/tdd/tests.md +77 -0
  198. package/internal-workflow/skills/triage/AGENT-BRIEF.md +192 -0
  199. package/internal-workflow/skills/triage/OUT-OF-SCOPE.md +101 -0
  200. package/internal-workflow/skills/triage/SKILL.md +134 -0
  201. package/internal-workflow/skills/triage/agents/openai.yaml +6 -0
  202. package/internal-workflow/skills/ui-evidence-proof/SKILL.md +123 -0
  203. package/internal-workflow/skills/ui-evidence-proof/agents/openai.yaml +6 -0
  204. package/package.json +6 -3
  205. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/SKILL.md +0 -0
  206. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/android.md +0 -0
  207. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/browser.md +0 -0
  208. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/ios.md +0 -0
  209. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/android-lease.mjs +0 -0
  210. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/ios-lease.mjs +0 -0
  211. /package/{internal-skills → internal-workflow/skills}/agent-auto/SKILL.md +0 -0
@@ -0,0 +1,401 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { canonicalJson } from './containment.js';
3
+ import { validateCodeReviewDefects } from './code-review-report.js';
4
+ const SHA256 = /^[0-9a-f]{64}$/u;
5
+ const MANDATORY_COVERAGE = [
6
+ 'approved-product-intent', 'deterministic-executability', 'safety', 'scope', 'validation',
7
+ ];
8
+ export function createInitialSpecDelivery(input) {
9
+ positive(input.issueNumber, 'issue number');
10
+ text(input.runId, 'run ID');
11
+ hash(input.workflowGenerationSha256, 'workflow generation hash');
12
+ return {
13
+ version: 1, ...input, stage: 'authoring', revisions: [], authorSessionId: null,
14
+ review: { reviewer: null, mode: null, coverage: [], defects: [], affectedDefectIds: [], affectedContracts: [], closureRequestSha256: null, acceptedRisks: [], acceptedReportSha256: null },
15
+ budgets: { author: { reportRepairs: 0, transportRetries: 0 }, review: { reportRepairs: 0, transportRetries: 0 }, repairCycles: 0 },
16
+ };
17
+ }
18
+ export function createSpecRevision(input) {
19
+ const base = {
20
+ version: 1, revision: input.revision, path: input.path, content: input.content,
21
+ contentSha256: digest(input.content), evidence: structuredClone(input.evidence), author: structuredClone(input.author),
22
+ previousRevisionSha256: input.previousRevision?.revisionSha256 ?? null,
23
+ };
24
+ return { ...base, revisionSha256: hashSpecRevision(base) };
25
+ }
26
+ export function hashSpecRevision(revision) {
27
+ const { revisionSha256: _ignored, ...payload } = revision;
28
+ return digest(`codex-orchestrator-spec-revision-v1\0${canonicalJson(payload)}`);
29
+ }
30
+ export function validateSpecRevision(value, previous) {
31
+ exact(value, ['version', 'revision', 'path', 'content', 'contentSha256', 'evidence', 'author', 'previousRevisionSha256', 'revisionSha256'], 'spec revision');
32
+ if (value.version !== 1)
33
+ throw new Error('spec revision version is invalid');
34
+ positive(value.revision, 'spec revision number');
35
+ text(value.path, 'spec revision path');
36
+ if (typeof value.content !== 'string' || value.content.length === 0)
37
+ throw new Error('spec revision content is invalid');
38
+ if (value.contentSha256 !== digest(value.content))
39
+ throw new Error('spec revision content hash is invalid');
40
+ actor(value.author, 'spec revision author');
41
+ if (!Array.isArray(value.evidence) || value.evidence.length === 0)
42
+ throw new Error('spec revision evidence is invalid');
43
+ for (const evidence of value.evidence) {
44
+ exact(evidence, ['path', 'sha256', 'description'], 'spec evidence');
45
+ text(evidence.path, 'evidence path');
46
+ hash(evidence.sha256, 'evidence hash');
47
+ text(evidence.description, 'evidence description');
48
+ }
49
+ if (value.previousRevisionSha256 !== (previous?.revisionSha256 ?? null))
50
+ throw new Error('spec revision chain is invalid');
51
+ if (previous && (value.revision !== previous.revision + 1 || value.path !== previous.path))
52
+ throw new Error('spec revision chain is not append-only');
53
+ if (!previous && value.revision !== 1)
54
+ throw new Error('first spec revision number is invalid');
55
+ if (value.revisionSha256 !== hashSpecRevision(value))
56
+ throw new Error('spec revision hash is invalid');
57
+ return structuredClone(value);
58
+ }
59
+ export function prepareSpecInvocation(state, input) {
60
+ validateSpecDelivery(state);
61
+ if (state.invocation)
62
+ throw new Error('spec invocation already exists');
63
+ const expected = stageInvocation(state.stage);
64
+ if (input.purpose !== expected.purpose || input.mode !== expected.mode)
65
+ throw new Error('spec invocation does not match stage');
66
+ actor({ attemptId: input.attemptId, sessionId: input.sessionId }, 'spec invocation actor');
67
+ if (input.purpose === 'review') {
68
+ if (input.sessionId === state.authorSessionId || state.revisions.some((revision) => revision.author.attemptId === input.attemptId))
69
+ throw new Error('spec reviewer is not independent');
70
+ if (state.review.reviewer && state.review.reviewer.sessionId !== input.sessionId)
71
+ throw new Error('Closure reviewer identity changed');
72
+ }
73
+ else if (state.authorSessionId && state.authorSessionId !== input.sessionId)
74
+ throw new Error('spec author session changed');
75
+ const target = state.revisions.at(-1);
76
+ const { reportPath = null, revisionPath = null, ...actorInput } = input;
77
+ const invocation = {
78
+ ...actorInput, targetRevision: target?.revision ?? 1, targetSha256: target?.revisionSha256 ?? null,
79
+ closureRequestSha256: input.mode === 'closure' ? state.review.closureRequestSha256 : null,
80
+ status: 'prepared', pid: null, processGroupId: null, reportPath, revisionPath,
81
+ };
82
+ return { ...structuredClone(state), invocation };
83
+ }
84
+ export function launchSpecInvocation(state, input) {
85
+ if (!state.invocation || state.invocation.status !== 'prepared' || state.invocation.attemptId !== input.attemptId)
86
+ throw new Error('prepared spec invocation mismatch');
87
+ positive(input.pid, 'spec process PID');
88
+ positive(input.processGroupId, 'spec process group ID');
89
+ return { ...structuredClone(state), invocation: { ...state.invocation, status: 'launched', pid: input.pid, processGroupId: input.processGroupId } };
90
+ }
91
+ export function acceptSpecRevision(state, revision) {
92
+ if (!state.invocation || state.invocation.purpose !== 'author' || state.invocation.status !== 'launched')
93
+ throw new Error('spec author invocation is not launched');
94
+ if (revision.author.attemptId !== state.invocation.attemptId || revision.author.sessionId !== state.invocation.sessionId)
95
+ throw new Error('spec revision author correlation mismatch');
96
+ const previous = state.revisions.at(-1) ?? null;
97
+ const validated = validateSpecRevision(revision, previous);
98
+ const defects = state.stage === 'author-repair'
99
+ ? state.review.defects.map((defect) => state.review.affectedDefectIds.includes(defect.id) && ['open', 'reopened'].includes(defect.status)
100
+ ? { ...defect, status: 'fixed', statusTargetRevision: validated.revision } : structuredClone(defect))
101
+ : state.review.defects;
102
+ const next = {
103
+ ...structuredClone(state), stage: state.stage === 'authoring' ? 'review-full' : 'review-closure',
104
+ revisions: [...state.revisions, validated], authorSessionId: state.invocation.sessionId,
105
+ review: { ...structuredClone(state.review), defects },
106
+ };
107
+ delete next.invocation;
108
+ if (next.stage === 'review-closure')
109
+ next.review.closureRequestSha256 = hashSpecClosureRequest(next);
110
+ return validateSpecDelivery(next);
111
+ }
112
+ export function acceptSpecReview(state, report, reportSha256) {
113
+ hash(reportSha256, 'spec review report hash');
114
+ if (!state.invocation || state.invocation.purpose !== 'review' || state.invocation.status !== 'launched')
115
+ throw new Error('spec review invocation is not launched');
116
+ const target = state.revisions.at(-1);
117
+ validateReviewReport(report);
118
+ validateCodeReviewDefects(report.defects, report.targetRevision);
119
+ if (report.acceptedRisks.length !== 0)
120
+ throw new Error('reviewer cannot authorize accepted risks');
121
+ if (report.targetRevision !== target.revision || report.targetSha256 !== target.revisionSha256
122
+ || report.mode !== state.invocation.mode || report.reviewer.attemptId !== state.invocation.attemptId
123
+ || report.reviewer.sessionId !== state.invocation.sessionId
124
+ || report.closureRequestSha256 !== state.invocation.closureRequestSha256)
125
+ throw new Error('spec review correlation mismatch');
126
+ for (const required of MANDATORY_COVERAGE)
127
+ if (!report.coverage.includes(required))
128
+ throw new Error('spec review omitted mandatory coverage');
129
+ if (report.mode === 'closure' && report.coverageInvalidated) {
130
+ const next = structuredClone(state);
131
+ next.stage = 'review-full';
132
+ next.review.mode = 'full';
133
+ next.review.closureRequestSha256 = null;
134
+ next.review.affectedDefectIds = [];
135
+ next.review.affectedContracts = [];
136
+ delete next.invocation;
137
+ return validateSpecDelivery(next);
138
+ }
139
+ const defects = report.mode === 'closure' ? mergeClosureDefects(state, report) : structuredClone(report.defects);
140
+ if (report.mode === 'closure')
141
+ validateClosure(state, report);
142
+ if (report.verdict === 'approved') {
143
+ const accepted = new Set(report.acceptedRisks.map((risk) => risk.defectId));
144
+ const unresolved = defects.filter((defect) => ['blocker', 'execution-risk'].includes(defect.class) && !['verified', 'superseded'].includes(defect.status) && !accepted.has(defect.id));
145
+ if (unresolved.length)
146
+ throw new Error('approved spec review has unresolved mandatory defects');
147
+ }
148
+ const next = {
149
+ ...structuredClone(state),
150
+ stage: report.verdict === 'approved' ? 'approved'
151
+ : report.verdict === 'needs-work' && state.budgets.repairCycles === 0 ? 'author-repair'
152
+ : report.verdict === 'needs-work' ? 'exhausted' : 'rejected',
153
+ review: {
154
+ reviewer: structuredClone(report.reviewer), mode: report.mode, coverage: sorted(report.coverage),
155
+ defects: defects.sort((a, b) => a.id.localeCompare(b.id)),
156
+ affectedDefectIds: report.verdict === 'needs-work' ? sorted(report.defects.filter((defect) => ['open', 'reopened'].includes(defect.status)).map((defect) => defect.id)) : [],
157
+ affectedContracts: report.verdict === 'needs-work' ? sorted(report.affectedContracts) : [],
158
+ closureRequestSha256: null, acceptedRisks: structuredClone(report.acceptedRisks), acceptedReportSha256: reportSha256,
159
+ },
160
+ budgets: {
161
+ ...structuredClone(state.budgets),
162
+ repairCycles: report.verdict === 'needs-work' && state.budgets.repairCycles === 0 ? 1 : state.budgets.repairCycles,
163
+ },
164
+ };
165
+ delete next.invocation;
166
+ return validateSpecDelivery(next);
167
+ }
168
+ export function hashSpecClosureRequest(state) {
169
+ const target = state.revisions.at(-1);
170
+ if (!target)
171
+ throw new Error('Closure target revision is missing');
172
+ return digest(`codex-orchestrator-spec-closure-v1\0${canonicalJson({
173
+ targetRevision: target.revision, targetSha256: target.revisionSha256,
174
+ affectedDefectIds: sorted(state.review.affectedDefectIds), affectedContracts: sorted(state.review.affectedContracts),
175
+ defects: state.review.defects,
176
+ })}`);
177
+ }
178
+ export function consumeSpecReportRepair(state, owner) {
179
+ if (state.budgets[owner].reportRepairs !== 0)
180
+ throw new Error(`${owner} report repair budget exhausted`);
181
+ return { ...structuredClone(state), budgets: { ...structuredClone(state.budgets), [owner]: { ...state.budgets[owner], reportRepairs: 1 } } };
182
+ }
183
+ export function recoverMalformedSpecReport(state, owner) {
184
+ if (!state.invocation || state.invocation.purpose !== owner)
185
+ throw new Error('malformed spec report owner mismatch');
186
+ const next = consumeSpecReportRepair(state, owner);
187
+ delete next.invocation;
188
+ return validateSpecDelivery(next);
189
+ }
190
+ export function recoverSpecInvocation(state, input) {
191
+ if (!state.invocation || state.invocation.attemptId !== input.attemptId)
192
+ throw new Error('spec recovery invocation mismatch');
193
+ if (!input.processGroupAbsent)
194
+ throw new Error('spec process is still active');
195
+ const owner = state.invocation.purpose === 'author' ? 'author' : 'review';
196
+ if (state.budgets[owner].transportRetries !== 0)
197
+ throw new Error(`${owner} transport retry budget exhausted`);
198
+ const next = structuredClone(state);
199
+ next.budgets[owner].transportRetries = 1;
200
+ delete next.invocation;
201
+ return validateSpecDelivery(next);
202
+ }
203
+ export function freezeApprovedSpec(state) {
204
+ validateSpecDelivery(state);
205
+ if (state.stage !== 'approved' || !state.review.reviewer || !state.review.acceptedReportSha256)
206
+ throw new Error('spec is not independently approved');
207
+ const revision = state.revisions.at(-1);
208
+ const payload = {
209
+ version: 1, issueNumber: state.issueNumber, runId: state.runId,
210
+ workflowGenerationSha256: state.workflowGenerationSha256, revision: revision.revision, path: revision.path,
211
+ contentSha256: revision.contentSha256, revisionSha256: revision.revisionSha256,
212
+ reviewReportSha256: state.review.acceptedReportSha256, reviewerSessionId: state.review.reviewer.sessionId,
213
+ };
214
+ const frozen = { ...payload, receiptSha256: frozenDigest(payload) };
215
+ const next = { ...structuredClone(state), stage: 'frozen', frozen };
216
+ return validateSpecDelivery(next);
217
+ }
218
+ export function validateFrozenSpecReceipt(value, state) {
219
+ exact(value, ['version', 'issueNumber', 'runId', 'workflowGenerationSha256', 'revision', 'path', 'contentSha256', 'revisionSha256', 'reviewReportSha256', 'reviewerSessionId', 'receiptSha256'], 'frozen spec receipt');
220
+ const revision = state.revisions.at(-1);
221
+ if (!revision || value.version !== 1 || value.issueNumber !== state.issueNumber || value.runId !== state.runId
222
+ || value.workflowGenerationSha256 !== state.workflowGenerationSha256 || value.revision !== revision.revision
223
+ || value.path !== revision.path || value.contentSha256 !== revision.contentSha256 || value.revisionSha256 !== revision.revisionSha256
224
+ || value.reviewReportSha256 !== state.review.acceptedReportSha256 || value.reviewerSessionId !== state.review.reviewer?.sessionId) {
225
+ throw new Error('frozen spec receipt binding is invalid');
226
+ }
227
+ const { receiptSha256, ...payload } = value;
228
+ if (receiptSha256 !== frozenDigest(payload))
229
+ throw new Error('frozen spec receipt hash is invalid');
230
+ return structuredClone(value);
231
+ }
232
+ export function validateSpecDelivery(value) {
233
+ const optional = ['invocation', 'frozen'].filter((key) => own(value, key));
234
+ exact(value, ['version', 'issueNumber', 'runId', 'workflowGenerationSha256', 'stage', 'revisions', 'authorSessionId', 'review', 'budgets', ...optional], 'spec delivery');
235
+ if (value.version !== 1)
236
+ throw new Error('spec delivery version is invalid');
237
+ positive(value.issueNumber, 'issue number');
238
+ text(value.runId, 'run ID');
239
+ hash(value.workflowGenerationSha256, 'workflow generation hash');
240
+ if (!['authoring', 'review-full', 'author-repair', 'review-closure', 'approved', 'frozen', 'rejected', 'exhausted'].includes(value.stage))
241
+ throw new Error('spec delivery stage is invalid');
242
+ if (!Array.isArray(value.revisions))
243
+ throw new Error('spec revisions are invalid');
244
+ let previous = null;
245
+ for (const revision of value.revisions)
246
+ previous = validateSpecRevision(revision, previous);
247
+ exact(value.budgets, ['author', 'review', 'repairCycles'], 'spec budgets');
248
+ for (const owner of ['author', 'review']) {
249
+ exact(value.budgets[owner], ['reportRepairs', 'transportRetries'], `${owner} budget`);
250
+ for (const key of ['reportRepairs', 'transportRetries'])
251
+ if (![0, 1].includes(value.budgets[owner][key]))
252
+ throw new Error('spec budget is invalid');
253
+ }
254
+ if (![0, 1].includes(value.budgets.repairCycles))
255
+ throw new Error('spec repair cycle budget is invalid');
256
+ validateReviewState(value.review);
257
+ const stage = value.stage;
258
+ if (stage === 'authoring' && value.revisions.length !== 0)
259
+ throw new Error('authoring stage has revisions');
260
+ if (stage !== 'authoring' && value.revisions.length === 0)
261
+ throw new Error('spec stage requires a revision');
262
+ if (stage === 'approved' && (!value.review.reviewer || !value.review.acceptedReportSha256))
263
+ throw new Error('approved spec is missing review authority');
264
+ if (own(value, 'invocation'))
265
+ validateInvocation(value.invocation, value);
266
+ if (stage === 'frozen')
267
+ validateFrozenSpecReceipt(value.frozen, value);
268
+ else if (own(value, 'frozen'))
269
+ throw new Error('non-frozen spec has a frozen receipt');
270
+ return structuredClone(value);
271
+ }
272
+ function validateClosure(state, report) {
273
+ if (canonicalJson(sorted(report.affectedDefectIds)) !== canonicalJson(sorted(state.review.affectedDefectIds)))
274
+ throw new Error('Closure affected defect IDs mismatch');
275
+ const reported = new Map(report.defects.map((defect) => [defect.id, defect]));
276
+ for (const defect of state.review.defects) {
277
+ const next = reported.get(defect.id);
278
+ if (state.review.affectedDefectIds.includes(defect.id) && !next)
279
+ throw new Error('Closure omitted affected defect IDs');
280
+ if (!state.review.affectedDefectIds.includes(defect.id) && next && canonicalJson(next) !== canonicalJson(defect))
281
+ throw new Error('Closure changed unaffected defect');
282
+ }
283
+ }
284
+ function mergeClosureDefects(state, report) {
285
+ const reported = new Map(report.defects.map((defect) => [defect.id, defect]));
286
+ const affected = new Set(state.review.affectedDefectIds);
287
+ const merged = state.review.defects.map((defect) => {
288
+ const next = reported.get(defect.id);
289
+ if (!affected.has(defect.id))
290
+ return structuredClone(defect);
291
+ if (!next)
292
+ throw new Error('Closure omitted affected defect IDs');
293
+ for (const field of ['id', 'class', 'invariant', 'failure', 'introducedTargetRevision']) {
294
+ if (canonicalJson(defect[field]) !== canonicalJson(next[field]))
295
+ throw new Error(`Closure changed immutable defect field: ${field}`);
296
+ }
297
+ reported.delete(defect.id);
298
+ return structuredClone(next);
299
+ });
300
+ for (const defect of reported.values()) {
301
+ if (defect.status !== 'open' && defect.status !== 'reopened')
302
+ throw new Error('Closure introduced invalid defect');
303
+ merged.push(structuredClone(defect));
304
+ }
305
+ return merged;
306
+ }
307
+ function validateReviewReport(value) {
308
+ exact(value, ['version', 'targetRevision', 'targetSha256', 'mode', 'verdict', 'reviewer', 'coverage', 'defects', 'affectedDefectIds', 'affectedContracts', 'closureRequestSha256', 'acceptedRisks', 'coverageInvalidated'], 'spec review report');
309
+ if (value.version !== 1)
310
+ throw new Error('spec review report version is invalid');
311
+ positive(value.targetRevision, 'review target revision');
312
+ hash(value.targetSha256, 'review target hash');
313
+ actor(value.reviewer, 'reviewer');
314
+ if (!['full', 'closure'].includes(value.mode) || !['approved', 'needs-work', 'rejected'].includes(value.verdict))
315
+ throw new Error('spec review mode/verdict is invalid');
316
+ strings(value.coverage, 'review coverage');
317
+ strings(value.affectedDefectIds, 'affected defect IDs');
318
+ strings(value.affectedContracts, 'affected contracts');
319
+ if (!Array.isArray(value.defects) || !Array.isArray(value.acceptedRisks) || typeof value.coverageInvalidated !== 'boolean')
320
+ throw new Error('spec review collections are invalid');
321
+ if ((value.mode === 'full') !== (value.closureRequestSha256 === null))
322
+ throw new Error('spec review Closure hash is invalid');
323
+ if (value.closureRequestSha256 !== null)
324
+ hash(value.closureRequestSha256, 'Closure request hash');
325
+ for (const risk of value.acceptedRisks) {
326
+ exact(risk, ['defectId', 'rationale', 'policy', 'acceptedBy'], 'accepted risk');
327
+ text(risk.defectId, 'risk defect ID');
328
+ text(risk.rationale, 'risk rationale');
329
+ text(risk.policy, 'risk policy');
330
+ text(risk.acceptedBy, 'risk authority');
331
+ }
332
+ }
333
+ function validateReviewState(value) {
334
+ exact(value, ['reviewer', 'mode', 'coverage', 'defects', 'affectedDefectIds', 'affectedContracts', 'closureRequestSha256', 'acceptedRisks', 'acceptedReportSha256'], 'spec review state');
335
+ if (value.reviewer !== null)
336
+ actor(value.reviewer, 'persisted reviewer');
337
+ if (value.mode !== null && !['full', 'closure'].includes(value.mode))
338
+ throw new Error('persisted review mode is invalid');
339
+ strings(value.coverage, 'persisted coverage');
340
+ strings(value.affectedDefectIds, 'persisted affected defect IDs');
341
+ strings(value.affectedContracts, 'persisted affected contracts');
342
+ if (!Array.isArray(value.defects) || !Array.isArray(value.acceptedRisks))
343
+ throw new Error('persisted review collections are invalid');
344
+ if (value.closureRequestSha256 !== null)
345
+ hash(value.closureRequestSha256, 'persisted Closure hash');
346
+ if (value.acceptedReportSha256 !== null)
347
+ hash(value.acceptedReportSha256, 'persisted report hash');
348
+ }
349
+ function validateInvocation(value, state) {
350
+ exact(value, ['purpose', 'mode', 'attemptId', 'sessionId', 'targetRevision', 'targetSha256', 'closureRequestSha256', 'status', 'pid', 'processGroupId', 'reportPath', 'revisionPath'], 'spec invocation');
351
+ const expected = stageInvocation(state.stage);
352
+ if (value.purpose !== expected.purpose || value.mode !== expected.mode)
353
+ throw new Error('spec invocation/stage mismatch');
354
+ actor({ attemptId: value.attemptId, sessionId: value.sessionId }, 'spec invocation actor');
355
+ const target = state.revisions.at(-1);
356
+ if (value.targetRevision !== (target?.revision ?? 1) || value.targetSha256 !== (target?.revisionSha256 ?? null))
357
+ throw new Error('spec invocation target mismatch');
358
+ if (value.closureRequestSha256 !== (value.mode === 'closure' ? state.review.closureRequestSha256 : null))
359
+ throw new Error('spec invocation Closure mismatch');
360
+ if (value.status === 'prepared' && (value.pid !== null || value.processGroupId !== null))
361
+ throw new Error('prepared spec invocation has process identity');
362
+ if (value.status === 'launched') {
363
+ positive(value.pid, 'spec invocation PID');
364
+ positive(value.processGroupId, 'spec invocation process group');
365
+ }
366
+ if (value.reportPath !== null)
367
+ text(value.reportPath, 'spec invocation report path');
368
+ if (value.revisionPath !== null)
369
+ text(value.revisionPath, 'spec invocation revision path');
370
+ if (value.purpose === 'review' && value.revisionPath !== null)
371
+ throw new Error('spec review invocation has revision path');
372
+ }
373
+ function stageInvocation(stage) {
374
+ if (stage === 'authoring')
375
+ return { purpose: 'author', mode: 'author' };
376
+ if (stage === 'author-repair')
377
+ return { purpose: 'author', mode: 'repair' };
378
+ if (stage === 'review-full')
379
+ return { purpose: 'review', mode: 'full' };
380
+ if (stage === 'review-closure')
381
+ return { purpose: 'review', mode: 'closure' };
382
+ throw new Error('spec stage does not accept an invocation');
383
+ }
384
+ function frozenDigest(payload) { return digest(`codex-orchestrator-frozen-spec-v1\0${canonicalJson(payload)}`); }
385
+ function digest(value) { return createHash('sha256').update(value, 'utf8').digest('hex'); }
386
+ function sorted(values) { return [...new Set(values)].sort(); }
387
+ function strings(value, field) { if (!Array.isArray(value) || value.some((item) => typeof item !== 'string' || !item.trim()))
388
+ throw new Error(`${field} is invalid`); }
389
+ function actor(value, field) { exact(value, ['attemptId', 'sessionId'], field); text(value.attemptId, `${field} attempt ID`); text(value.sessionId, `${field} session ID`); }
390
+ function text(value, field) { if (typeof value !== 'string' || !value.trim())
391
+ throw new Error(`${field} is invalid`); }
392
+ function positive(value, field) { if (!Number.isSafeInteger(value) || value < 1)
393
+ throw new Error(`${field} is invalid`); }
394
+ function hash(value, field) { if (typeof value !== 'string' || !SHA256.test(value))
395
+ throw new Error(`${field} is invalid`); }
396
+ function own(value, key) { return typeof value === 'object' && value !== null && Object.prototype.hasOwnProperty.call(value, key); }
397
+ function exact(value, keys, field) {
398
+ if (typeof value !== 'object' || value === null || Array.isArray(value) || canonicalJson(Object.keys(value).sort()) !== canonicalJson([...keys].sort()))
399
+ throw new Error(`${field} has unknown or missing keys`);
400
+ }
401
+ //# sourceMappingURL=spec-delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-delivery.js","sourceRoot":"","sources":["../../../src/v2/spec-delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ declare const evidenceKinds: readonly ["issue", "comment", "code", "caller", "test", "instruction", "context", "domain", "adr", "behavior"];
2
+ interface Evidence {
3
+ kind: typeof evidenceKinds[number];
4
+ location: string;
5
+ summary: string;
6
+ }
7
+ interface DirectRoute {
8
+ summary: string;
9
+ behaviors: string[];
10
+ verification: string[];
11
+ }
12
+ interface SpecRequiredRoute {
13
+ summary: string;
14
+ complexityReasons: string[];
15
+ specMode: 'compact' | 'standard';
16
+ reviewFocus: string[];
17
+ }
18
+ interface AwaitingUserRoute {
19
+ outcomes: Array<{
20
+ id: string;
21
+ title: string;
22
+ behaviorDelta: string;
23
+ evidence: string[];
24
+ }>;
25
+ absenceOfAuthorizedChoiceEvidence: string[];
26
+ recommendation: string;
27
+ question: string;
28
+ }
29
+ interface BlockerRoute {
30
+ kind: 'external' | 'safety' | 'exhausted';
31
+ code: string;
32
+ summary: string;
33
+ evidence: string[];
34
+ }
35
+ interface TriageRouteBase {
36
+ version: 1;
37
+ inspectedEvidence: Evidence[];
38
+ assumptions: string[];
39
+ }
40
+ export type TriageRouteV1 = TriageRouteBase & ({
41
+ status: 'direct';
42
+ direct: DirectRoute;
43
+ specRequired: null;
44
+ awaitingUser: null;
45
+ blocker: null;
46
+ } | {
47
+ status: 'spec-required';
48
+ direct: null;
49
+ specRequired: SpecRequiredRoute;
50
+ awaitingUser: null;
51
+ blocker: null;
52
+ } | {
53
+ status: 'awaiting-user';
54
+ direct: null;
55
+ specRequired: null;
56
+ awaitingUser: AwaitingUserRoute;
57
+ blocker: null;
58
+ } | {
59
+ status: 'blocked';
60
+ direct: null;
61
+ specRequired: null;
62
+ awaitingUser: null;
63
+ blocker: BlockerRoute;
64
+ });
65
+ export declare function validateTriageRoute(value: unknown): TriageRouteV1;
66
+ export declare function triageRouteOutputSchema(): Record<string, unknown>;
67
+ export {};
68
+ //# sourceMappingURL=triage-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-route.d.ts","sourceRoot":"","sources":["../../../src/v2/triage-route.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,aAAa,gHAET,CAAC;AAEX,UAAU,QAAQ;IAChB,IAAI,EAAE,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC1F,iCAAiC,EAAE,MAAM,EAAE,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,CAC1C;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAChG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAC7G;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAC7G;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CACrG,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAkCjE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOjE"}