codex-orchestrator 2.0.11 → 2.0.13

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 (262) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +25 -51
  3. package/dist/src/index.d.ts +2 -8
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +1 -4
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/v2/acceptance-proof.d.ts +46 -31
  8. package/dist/src/v2/acceptance-proof.d.ts.map +1 -1
  9. package/dist/src/v2/acceptance-proof.js +157 -195
  10. package/dist/src/v2/acceptance-proof.js.map +1 -1
  11. package/dist/src/v2/active-attempt.d.ts +94 -0
  12. package/dist/src/v2/active-attempt.d.ts.map +1 -0
  13. package/dist/src/v2/active-attempt.js +200 -0
  14. package/dist/src/v2/active-attempt.js.map +1 -0
  15. package/dist/src/v2/adapters/command.d.ts +6 -0
  16. package/dist/src/v2/adapters/command.d.ts.map +1 -1
  17. package/dist/src/v2/adapters/command.js +43 -2
  18. package/dist/src/v2/adapters/command.js.map +1 -1
  19. package/dist/src/v2/candidate.d.ts +15 -31
  20. package/dist/src/v2/candidate.d.ts.map +1 -1
  21. package/dist/src/v2/candidate.js +7 -29
  22. package/dist/src/v2/candidate.js.map +1 -1
  23. package/dist/src/v2/checked-change.d.ts +3 -2
  24. package/dist/src/v2/checked-change.d.ts.map +1 -1
  25. package/dist/src/v2/checked-change.js +4 -3
  26. package/dist/src/v2/checked-change.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 +4 -6
  30. package/dist/src/v2/cli-contract.js.map +1 -1
  31. package/dist/src/v2/cli.d.ts +8 -0
  32. package/dist/src/v2/cli.d.ts.map +1 -1
  33. package/dist/src/v2/cli.js +13 -0
  34. package/dist/src/v2/cli.js.map +1 -1
  35. package/dist/src/v2/code-review-report.d.ts +10 -18
  36. package/dist/src/v2/code-review-report.d.ts.map +1 -1
  37. package/dist/src/v2/code-review-report.js +63 -60
  38. package/dist/src/v2/code-review-report.js.map +1 -1
  39. package/dist/src/v2/codex-process.d.ts +6 -2
  40. package/dist/src/v2/codex-process.d.ts.map +1 -1
  41. package/dist/src/v2/codex-process.js +25 -9
  42. package/dist/src/v2/codex-process.js.map +1 -1
  43. package/dist/src/v2/config.d.ts +0 -2
  44. package/dist/src/v2/config.d.ts.map +1 -1
  45. package/dist/src/v2/config.js +3 -6
  46. package/dist/src/v2/config.js.map +1 -1
  47. package/dist/src/v2/contained-report-operation.d.ts +41 -196
  48. package/dist/src/v2/contained-report-operation.d.ts.map +1 -1
  49. package/dist/src/v2/contained-report-operation.js +139 -466
  50. package/dist/src/v2/contained-report-operation.js.map +1 -1
  51. package/dist/src/v2/containment.d.ts +1 -0
  52. package/dist/src/v2/containment.d.ts.map +1 -1
  53. package/dist/src/v2/containment.js +12 -2
  54. package/dist/src/v2/containment.js.map +1 -1
  55. package/dist/src/v2/delivery-authority.d.ts +26 -0
  56. package/dist/src/v2/delivery-authority.d.ts.map +1 -0
  57. package/dist/src/v2/delivery-authority.js +44 -0
  58. package/dist/src/v2/delivery-authority.js.map +1 -0
  59. package/dist/src/v2/direct-delivery.d.ts +16 -36
  60. package/dist/src/v2/direct-delivery.d.ts.map +1 -1
  61. package/dist/src/v2/direct-delivery.js +135 -122
  62. package/dist/src/v2/direct-delivery.js.map +1 -1
  63. package/dist/src/v2/immutable-workflow-publisher.d.ts.map +1 -1
  64. package/dist/src/v2/immutable-workflow-publisher.js +3 -1
  65. package/dist/src/v2/immutable-workflow-publisher.js.map +1 -1
  66. package/dist/src/v2/implementation-report.d.ts +3 -1
  67. package/dist/src/v2/implementation-report.d.ts.map +1 -1
  68. package/dist/src/v2/implementation-report.js +28 -10
  69. package/dist/src/v2/implementation-report.js.map +1 -1
  70. package/dist/src/v2/implementation-reviewer.d.ts +41 -12
  71. package/dist/src/v2/implementation-reviewer.d.ts.map +1 -1
  72. package/dist/src/v2/implementation-reviewer.js +114 -42
  73. package/dist/src/v2/implementation-reviewer.js.map +1 -1
  74. package/dist/src/v2/pending-effect-settlement.d.ts +44 -0
  75. package/dist/src/v2/pending-effect-settlement.d.ts.map +1 -0
  76. package/dist/src/v2/pending-effect-settlement.js +69 -0
  77. package/dist/src/v2/pending-effect-settlement.js.map +1 -0
  78. package/dist/src/v2/process-identity.d.ts +45 -0
  79. package/dist/src/v2/process-identity.d.ts.map +1 -0
  80. package/dist/src/v2/process-identity.js +118 -0
  81. package/dist/src/v2/process-identity.js.map +1 -0
  82. package/dist/src/v2/proof-report.d.ts +2 -1
  83. package/dist/src/v2/proof-report.d.ts.map +1 -1
  84. package/dist/src/v2/proof-report.js +10 -4
  85. package/dist/src/v2/proof-report.js.map +1 -1
  86. package/dist/src/v2/review-feedback-coordinator.d.ts +1 -1
  87. package/dist/src/v2/review-feedback-coordinator.d.ts.map +1 -1
  88. package/dist/src/v2/review-feedback-coordinator.js +1 -1
  89. package/dist/src/v2/review-feedback-coordinator.js.map +1 -1
  90. package/dist/src/v2/review-feedback.d.ts +14 -20
  91. package/dist/src/v2/review-feedback.d.ts.map +1 -1
  92. package/dist/src/v2/review-feedback.js +45 -87
  93. package/dist/src/v2/review-feedback.js.map +1 -1
  94. package/dist/src/v2/run-issue.d.ts +129 -88
  95. package/dist/src/v2/run-issue.d.ts.map +1 -1
  96. package/dist/src/v2/run-issue.js +1965 -2381
  97. package/dist/src/v2/run-issue.js.map +1 -1
  98. package/dist/src/v2/run-state-projections.d.ts +84 -0
  99. package/dist/src/v2/run-state-projections.d.ts.map +1 -0
  100. package/dist/src/v2/run-state-projections.js +142 -0
  101. package/dist/src/v2/run-state-projections.js.map +1 -0
  102. package/dist/src/v2/run-store.d.ts +99 -81
  103. package/dist/src/v2/run-store.d.ts.map +1 -1
  104. package/dist/src/v2/run-store.js +245 -542
  105. package/dist/src/v2/run-store.js.map +1 -1
  106. package/dist/src/v2/runtime-assets.d.ts +3 -0
  107. package/dist/src/v2/runtime-assets.d.ts.map +1 -1
  108. package/dist/src/v2/runtime-assets.js +104 -0
  109. package/dist/src/v2/runtime-assets.js.map +1 -1
  110. package/dist/src/v2/runtime.d.ts +56 -44
  111. package/dist/src/v2/runtime.d.ts.map +1 -1
  112. package/dist/src/v2/runtime.js +383 -503
  113. package/dist/src/v2/runtime.js.map +1 -1
  114. package/dist/src/v2/setup.js +0 -2
  115. package/dist/src/v2/setup.js.map +1 -1
  116. package/dist/src/v2/validation-progression.d.ts +70 -0
  117. package/dist/src/v2/validation-progression.d.ts.map +1 -0
  118. package/dist/src/v2/validation-progression.js +247 -0
  119. package/dist/src/v2/validation-progression.js.map +1 -0
  120. package/dist/src/v2/workflow-assets.d.ts +9 -3
  121. package/dist/src/v2/workflow-assets.d.ts.map +1 -1
  122. package/dist/src/v2/workflow-assets.js +256 -43
  123. package/dist/src/v2/workflow-assets.js.map +1 -1
  124. package/internal-workflow/docs/agents/bug-workflow-routing.md +9 -7
  125. package/internal-workflow/docs/agents/coding-skill-routing.md +170 -120
  126. package/internal-workflow/docs/agents/tool-usage.md +23 -12
  127. package/internal-workflow/manifest.json +1 -1
  128. package/internal-workflow/operations/code-review/SKILL.md +34 -15
  129. package/internal-workflow/operations/implementation/SKILL.md +21 -16
  130. package/internal-workflow/profiles/implementer.toml +9 -0
  131. package/internal-workflow/profiles/review_coordinator.toml +9 -0
  132. package/internal-workflow/profiles/spec_reviewer.toml +9 -0
  133. package/internal-workflow/profiles/standards_reviewer.toml +9 -0
  134. package/internal-workflow/schemas/code-review-v1.json +1 -1
  135. package/internal-workflow/schemas/implementation-report-v1.json +1 -1
  136. package/internal-workflow/schemas/proof-report-v1.json +1 -1
  137. package/internal-workflow/skills/bug-root-cause-explainer/SKILL.md +114 -0
  138. package/internal-workflow/skills/bug-root-cause-explainer/agents/openai.yaml +7 -0
  139. package/internal-workflow/skills/bug-root-cause-explainer/evals/evals.json +18 -0
  140. package/internal-workflow/skills/code-review/SKILL.md +84 -306
  141. package/internal-workflow/skills/code-review/agents/openai.yaml +5 -3
  142. package/internal-workflow/skills/code-review/evals/evals.json +83 -0
  143. package/internal-workflow/skills/code-review/references/standards-smells.md +41 -0
  144. package/internal-workflow/skills/diagnosing-bugs/SKILL.md +69 -32
  145. package/internal-workflow/skills/diagnosing-bugs/agents/openai.yaml +2 -2
  146. package/internal-workflow/skills/diagnosing-bugs/evals/evals.json +63 -0
  147. package/internal-workflow/skills/grilling/SKILL.md +51 -0
  148. package/internal-workflow/skills/grilling/agents/openai.yaml +6 -0
  149. package/internal-workflow/skills/grilling/evals/evals.json +47 -0
  150. package/internal-workflow/skills/implement/SKILL.md +135 -0
  151. package/internal-workflow/skills/implement/agents/openai.yaml +6 -0
  152. package/internal-workflow/skills/implement/evals/evals.json +150 -0
  153. package/internal-workflow/skills/plan/SKILL.md +59 -0
  154. package/internal-workflow/skills/plan/agents/openai.yaml +6 -0
  155. package/internal-workflow/skills/plan/evals/evals.json +36 -0
  156. package/internal-workflow/skills/prototype/LOGIC.md +130 -0
  157. package/internal-workflow/skills/prototype/SKILL.md +69 -0
  158. package/internal-workflow/skills/prototype/UI.md +157 -0
  159. package/internal-workflow/skills/prototype/agents/openai.yaml +6 -0
  160. package/internal-workflow/skills/prototype/evals/evals.json +67 -0
  161. package/internal-workflow/skills/research/SKILL.md +110 -0
  162. package/internal-workflow/skills/research/agents/openai.yaml +6 -0
  163. package/internal-workflow/skills/research/evals/evals.json +49 -0
  164. package/internal-workflow/skills/tdd/SKILL.md +72 -67
  165. package/internal-workflow/skills/tdd/agents/openai.yaml +2 -2
  166. package/internal-workflow/skills/tdd/evals/evals.json +12 -0
  167. package/internal-workflow/skills/tdd/mocking.md +48 -1
  168. package/internal-workflow/skills/tdd/refactoring.md +3 -3
  169. package/internal-workflow/skills/tickets-orchestrator/SKILL.md +199 -0
  170. package/internal-workflow/skills/tickets-orchestrator/agents/openai.yaml +6 -0
  171. package/internal-workflow/skills/tickets-orchestrator/evals/evals.json +126 -0
  172. package/internal-workflow/skills/tickets-orchestrator/references/delegate-integrate.md +83 -0
  173. package/internal-workflow/skills/tickets-orchestrator/references/finish-delivery.md +69 -0
  174. package/internal-workflow/skills/tickets-orchestrator/references/stop-completion.md +63 -0
  175. package/internal-workflow/skills/to-spec/SKILL.md +133 -0
  176. package/internal-workflow/skills/to-spec/agents/openai.yaml +6 -0
  177. package/internal-workflow/skills/to-spec/evals/evals.json +24 -0
  178. package/internal-workflow/skills/to-tickets/SKILL.md +189 -0
  179. package/internal-workflow/skills/to-tickets/agents/openai.yaml +6 -0
  180. package/internal-workflow/skills/to-tickets/evals/evals.json +79 -0
  181. package/internal-workflow/skills/to-tickets/references/publishing-details.md +117 -0
  182. package/package.json +1 -1
  183. package/dist/src/v2/proof-store.d.ts +0 -54
  184. package/dist/src/v2/proof-store.d.ts.map +0 -1
  185. package/dist/src/v2/proof-store.js +0 -301
  186. package/dist/src/v2/proof-store.js.map +0 -1
  187. package/dist/src/v2/route-continuations.d.ts +0 -32
  188. package/dist/src/v2/route-continuations.d.ts.map +0 -1
  189. package/dist/src/v2/route-continuations.js +0 -2
  190. package/dist/src/v2/route-continuations.js.map +0 -1
  191. package/dist/src/v2/route-coordinator.d.ts +0 -72
  192. package/dist/src/v2/route-coordinator.d.ts.map +0 -1
  193. package/dist/src/v2/route-coordinator.js +0 -275
  194. package/dist/src/v2/route-coordinator.js.map +0 -1
  195. package/dist/src/v2/route-decision.d.ts +0 -120
  196. package/dist/src/v2/route-decision.d.ts.map +0 -1
  197. package/dist/src/v2/route-decision.js +0 -380
  198. package/dist/src/v2/route-decision.js.map +0 -1
  199. package/dist/src/v2/spec-coordinator.d.ts +0 -73
  200. package/dist/src/v2/spec-coordinator.d.ts.map +0 -1
  201. package/dist/src/v2/spec-coordinator.js +0 -126
  202. package/dist/src/v2/spec-coordinator.js.map +0 -1
  203. package/dist/src/v2/spec-delivery.d.ts +0 -112
  204. package/dist/src/v2/spec-delivery.d.ts.map +0 -1
  205. package/dist/src/v2/spec-delivery.js +0 -336
  206. package/dist/src/v2/spec-delivery.js.map +0 -1
  207. package/dist/src/v2/triage-route.d.ts +0 -68
  208. package/dist/src/v2/triage-route.d.ts.map +0 -1
  209. package/dist/src/v2/triage-route.js +0 -223
  210. package/dist/src/v2/triage-route.js.map +0 -1
  211. package/dist/src/v2/waiting-human-coordinator.d.ts +0 -49
  212. package/dist/src/v2/waiting-human-coordinator.d.ts.map +0 -1
  213. package/dist/src/v2/waiting-human-coordinator.js +0 -509
  214. package/dist/src/v2/waiting-human-coordinator.js.map +0 -1
  215. package/dist/src/v2/waiting-human.d.ts +0 -143
  216. package/dist/src/v2/waiting-human.d.ts.map +0 -1
  217. package/dist/src/v2/waiting-human.js +0 -408
  218. package/dist/src/v2/waiting-human.js.map +0 -1
  219. package/internal-workflow/docs/agents/contract-test-ledger.md +0 -71
  220. package/internal-workflow/docs/agents/review-gates.md +0 -42
  221. package/internal-workflow/docs/agents/review-protocol.md +0 -98
  222. package/internal-workflow/evals/coding-skill-evals.json +0 -373
  223. package/internal-workflow/operations/ambiguity-review/SKILL.md +0 -5
  224. package/internal-workflow/operations/qualification-repair/SKILL.md +0 -17
  225. package/internal-workflow/operations/spec-author/SKILL.md +0 -12
  226. package/internal-workflow/operations/spec-review/SKILL.md +0 -12
  227. package/internal-workflow/operations/triage/SKILL.md +0 -12
  228. package/internal-workflow/profiles/analyst_deep.toml +0 -9
  229. package/internal-workflow/profiles/implementer_standard.toml +0 -9
  230. package/internal-workflow/profiles/proof_agent.toml +0 -8
  231. package/internal-workflow/profiles/reviewer_deep.toml +0 -9
  232. package/internal-workflow/profiles/reviewer_standard.toml +0 -9
  233. package/internal-workflow/schemas/ambiguity-review-v1.json +0 -1
  234. package/internal-workflow/schemas/spec-author-v1.json +0 -1
  235. package/internal-workflow/schemas/spec-review-v1.json +0 -30
  236. package/internal-workflow/schemas/triage-route-v1.json +0 -1
  237. package/internal-workflow/skills/agent-auto/SKILL.md +0 -19
  238. package/internal-workflow/skills/agent-auto/agents/openai.yaml +0 -6
  239. package/internal-workflow/skills/code-debugger/SKILL.md +0 -122
  240. package/internal-workflow/skills/code-debugger/agents/openai.yaml +0 -7
  241. package/internal-workflow/skills/code-review/references/bug-classes.md +0 -56
  242. package/internal-workflow/skills/code-review/references/cleanup-lens.md +0 -52
  243. package/internal-workflow/skills/code-review/references/framework-lenses.md +0 -34
  244. package/internal-workflow/skills/code-review/references/targeted-recipes.md +0 -49
  245. package/internal-workflow/skills/implementation-spec-maker/SKILL.md +0 -107
  246. package/internal-workflow/skills/implementation-spec-maker/agents/openai.yaml +0 -6
  247. package/internal-workflow/skills/implementation-spec-maker/references/source-modes.md +0 -32
  248. package/internal-workflow/skills/implementation-spec-maker/references/spec-template.md +0 -146
  249. package/internal-workflow/skills/implementation-spec-review/SKILL.md +0 -131
  250. package/internal-workflow/skills/implementation-spec-review/agents/openai.yaml +0 -6
  251. package/internal-workflow/skills/implementation-spec-review/evals/evals.json +0 -78
  252. package/internal-workflow/skills/implementation-spec-review/references/review-loop.md +0 -121
  253. package/internal-workflow/skills/small-task-implementer/SKILL.md +0 -112
  254. package/internal-workflow/skills/small-task-implementer/agents/openai.yaml +0 -6
  255. package/internal-workflow/skills/spec-implementer/SKILL.md +0 -133
  256. package/internal-workflow/skills/spec-implementer/agents/openai.yaml +0 -6
  257. package/internal-workflow/skills/spec-implementer/evals/evals.json +0 -30
  258. package/internal-workflow/skills/spec-implementer/references/review-loop.md +0 -100
  259. package/internal-workflow/skills/triage/AGENT-BRIEF.md +0 -192
  260. package/internal-workflow/skills/triage/OUT-OF-SCOPE.md +0 -101
  261. package/internal-workflow/skills/triage/SKILL.md +0 -134
  262. package/internal-workflow/skills/triage/agents/openai.yaml +0 -6
@@ -1,143 +0,0 @@
1
- import { type RouteReceiptV1 } from './route-decision.js';
2
- export interface WaitingQuestionV1 {
3
- version: 1;
4
- generation: 1 | 2;
5
- questionId: string;
6
- questionSha256: string;
7
- routeDecisionSha256: string;
8
- workflowGenerationHash: string;
9
- priorQuestionSha256: string | null;
10
- conflictHashes: string[];
11
- marker: string;
12
- answerPrefix: string;
13
- bodySha256: string;
14
- recommendation: string;
15
- question: string;
16
- }
17
- export interface CreateWaitingQuestionInput {
18
- runId: string;
19
- generation: 1 | 2;
20
- routeDecisionSha256: string;
21
- workflowGenerationHash: string;
22
- priorQuestionSha256: string | null;
23
- conflictHashes: string[];
24
- recommendation: string;
25
- question: string;
26
- }
27
- export type RepositoryPermission = 'none' | 'read' | 'write' | 'admin';
28
- export interface WaitingQuestionReceiptV1 {
29
- question: WaitingQuestionV1;
30
- commentId: string;
31
- commentUrl: string;
32
- authorId: string;
33
- author: string;
34
- createdAt: string;
35
- observedAt: string;
36
- }
37
- export interface TrustedAnswerReceiptV1 {
38
- version: 1;
39
- questionId: string;
40
- questionSha256: string;
41
- commentId: string;
42
- commentUrl: string;
43
- authorId: string;
44
- author: string;
45
- permission: 'write' | 'admin';
46
- permissionCheckedAt: string;
47
- commentCreatedAt: string;
48
- commentUpdatedAt: string;
49
- observedAt: string;
50
- normalizedAnswer: string;
51
- normalizedSha256: string;
52
- duplicateCommentIds: string[];
53
- }
54
- export interface WaitingHistoryEntryV1 {
55
- routeReceipt: RouteReceiptV1;
56
- question: WaitingQuestionV1;
57
- questionReceipt: WaitingQuestionReceiptV1 | null;
58
- answerReceipt: TrustedAnswerReceiptV1 | null;
59
- conflictHashes: string[];
60
- }
61
- interface WaitingBudgetsV1 {
62
- version: 1;
63
- clarificationAttempts: 0 | 1;
64
- permissionRetries: 0 | 1;
65
- effectRetries: {
66
- questionComment: 0 | 1;
67
- waitLabels: 0 | 1;
68
- resumeLabels: 0 | 1;
69
- revokeLabels: 0 | 1;
70
- };
71
- history: WaitingHistoryEntryV1[];
72
- }
73
- export type WaitingHumanExecutionV1 = WaitingBudgetsV1 & ({
74
- phase: 'question-ready';
75
- question: WaitingQuestionV1;
76
- } | {
77
- phase: 'question-comment-intent';
78
- question: WaitingQuestionV1;
79
- } | {
80
- phase: 'question-published';
81
- questionReceipt: WaitingQuestionReceiptV1;
82
- } | {
83
- phase: 'wait-labels-intent';
84
- questionReceipt: WaitingQuestionReceiptV1;
85
- } | {
86
- phase: 'awaiting-answer';
87
- questionReceipt: WaitingQuestionReceiptV1;
88
- } | {
89
- phase: 'answer-frozen';
90
- questionReceipt: WaitingQuestionReceiptV1;
91
- answerReceipt: TrustedAnswerReceiptV1;
92
- } | {
93
- phase: 'resume-labels-intent';
94
- questionReceipt: WaitingQuestionReceiptV1;
95
- answerReceipt: TrustedAnswerReceiptV1;
96
- } | {
97
- phase: 'resume-ready';
98
- questionReceipt: WaitingQuestionReceiptV1;
99
- answerReceipt: TrustedAnswerReceiptV1;
100
- } | {
101
- phase: 'revoke-labels-intent';
102
- questionReceipt: WaitingQuestionReceiptV1;
103
- answerReceipt: TrustedAnswerReceiptV1;
104
- reason: 'permission-revoked';
105
- } | {
106
- phase: 'resumed';
107
- trustedAnswer: TrustedAnswerReceiptV1;
108
- } | {
109
- phase: 'history-only';
110
- terminalOutcome: {
111
- status: 'blocked';
112
- kind: 'external' | 'safety' | 'exhausted';
113
- } | {
114
- status: 'cancelled' | 'review-ready' | 'transport-failed' | 'internal-error';
115
- };
116
- });
117
- export interface WaitingExecutionContext {
118
- runId: string;
119
- lifecycle: string;
120
- workflowGenerationHash: string;
121
- routeReceipt?: RouteReceiptV1;
122
- terminalOutcome?: {
123
- status: string;
124
- kind?: string;
125
- };
126
- }
127
- export declare function createWaitingQuestion(input: CreateWaitingQuestionInput): WaitingQuestionV1;
128
- export declare function createConflictQuestion(input: {
129
- runId: string;
130
- routeDecisionSha256: string;
131
- workflowGenerationHash: string;
132
- priorQuestionSha256: string;
133
- conflictHashes: string[];
134
- }): WaitingQuestionV1;
135
- export declare function validateWaitingQuestion(value: unknown): WaitingQuestionV1;
136
- export declare function renderWaitingQuestionBody(question: WaitingQuestionV1): string;
137
- export declare function normalizeAnswer(value: string): string;
138
- export declare function hashNormalizedAnswer(value: string): string;
139
- export declare function validateWaitingQuestionReceipt(value: unknown): WaitingQuestionReceiptV1;
140
- export declare function validateTrustedAnswerReceipt(value: unknown, question?: WaitingQuestionV1): TrustedAnswerReceiptV1;
141
- export declare function validateWaitingHumanExecution(value: unknown, context: WaitingExecutionContext): WaitingHumanExecutionV1;
142
- export {};
143
- //# sourceMappingURL=waiting-human.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"waiting-human.d.ts","sourceRoot":"","sources":["../../../src/v2/waiting-human.ts"],"names":[],"mappings":"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"}
@@ -1,408 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { canonicalJson } from './containment.js';
3
- import { validateRouteReceipt } from './route-decision.js';
4
- const SHA256_PATTERN = /^[0-9a-f]{64}$/u;
5
- const QUESTION_ID_PATTERN = /^q-[0-9a-f]{20}$/u;
6
- export function createWaitingQuestion(input) {
7
- assertNonEmpty(input.runId, 'runId');
8
- assertSha256(input.routeDecisionSha256, 'routeDecisionSha256');
9
- assertSha256(input.workflowGenerationHash, 'workflowGenerationHash');
10
- if (input.generation !== 1 && input.generation !== 2)
11
- throw new Error('question generation is invalid');
12
- if (input.priorQuestionSha256 !== null)
13
- assertSha256(input.priorQuestionSha256, 'priorQuestionSha256');
14
- const conflictHashes = sortedUniqueHashes(input.conflictHashes);
15
- assertNonEmpty(input.recommendation, 'recommendation');
16
- assertNonEmpty(input.question, 'question');
17
- if (input.generation === 1 && (input.priorQuestionSha256 !== null || conflictHashes.length !== 0)) {
18
- throw new Error('generation one cannot have prior question evidence');
19
- }
20
- if (input.generation === 2 && input.priorQuestionSha256 === null)
21
- throw new Error('generation two requires prior question hash');
22
- const questionId = `q-${domainHash('codex-orchestrator-question-id-v1', canonicalJson({
23
- runId: input.runId,
24
- generation: input.generation,
25
- routeDecisionSha256: input.routeDecisionSha256,
26
- workflowGenerationHash: input.workflowGenerationHash,
27
- })).slice(0, 20)}`;
28
- const semantic = {
29
- version: 1,
30
- generation: input.generation,
31
- questionId,
32
- routeDecisionSha256: input.routeDecisionSha256,
33
- workflowGenerationHash: input.workflowGenerationHash,
34
- priorQuestionSha256: input.priorQuestionSha256,
35
- conflictHashes,
36
- recommendation: input.recommendation,
37
- question: input.question,
38
- };
39
- const questionSha256 = domainHash('codex-orchestrator-question-v1', canonicalJson(semantic));
40
- const marker = `<!-- codex-orchestrator:waiting-question:${questionId}:${questionSha256} -->`;
41
- const answerPrefix = `Answer ${questionId}:`;
42
- const body = renderBody(marker, input.question, input.recommendation, answerPrefix);
43
- return {
44
- ...semantic,
45
- questionSha256,
46
- marker,
47
- answerPrefix,
48
- bodySha256: sha256(body),
49
- };
50
- }
51
- export function createConflictQuestion(input) {
52
- return createWaitingQuestion({
53
- ...input,
54
- generation: 2,
55
- recommendation: 'Resolve the conflict with one authoritative answer.',
56
- question: 'Conflicting authorized answers were received. What single product outcome should this run implement?',
57
- });
58
- }
59
- export function validateWaitingQuestion(value) {
60
- if (typeof value !== 'object' || value === null || Array.isArray(value))
61
- throw new Error('waiting question must be an object');
62
- const record = value;
63
- const expected = [
64
- 'version', 'generation', 'questionId', 'questionSha256', 'routeDecisionSha256', 'workflowGenerationHash',
65
- 'priorQuestionSha256', 'conflictHashes', 'marker', 'answerPrefix', 'bodySha256', 'recommendation', 'question',
66
- ].sort();
67
- const keys = Object.keys(record).sort();
68
- if (keys.length !== expected.length || keys.some((key, index) => key !== expected[index]))
69
- throw new Error('waiting question keys are invalid');
70
- if (record.version !== 1 || (record.generation !== 1 && record.generation !== 2))
71
- throw new Error('question generation is invalid');
72
- if (typeof record.questionId !== 'string' || !QUESTION_ID_PATTERN.test(record.questionId))
73
- throw new Error('question ID is invalid');
74
- for (const key of ['questionSha256', 'routeDecisionSha256', 'workflowGenerationHash', 'bodySha256'])
75
- assertSha256(record[key], key);
76
- if (record.priorQuestionSha256 !== null)
77
- assertSha256(record.priorQuestionSha256, 'priorQuestionSha256');
78
- if (!Array.isArray(record.conflictHashes))
79
- throw new Error('conflict hashes are invalid');
80
- for (const hash of record.conflictHashes)
81
- assertSha256(hash, 'conflict hash');
82
- const conflictHashes = sortedUniqueHashes(record.conflictHashes);
83
- if (!deepEqual(conflictHashes, record.conflictHashes))
84
- throw new Error('conflict hashes must be sorted and unique');
85
- if (record.generation === 1 && (record.priorQuestionSha256 !== null || conflictHashes.length !== 0)) {
86
- throw new Error('generation one cannot have prior question evidence');
87
- }
88
- if (record.generation === 2 && record.priorQuestionSha256 === null)
89
- throw new Error('generation two requires prior question hash');
90
- if (conflictHashes.length !== 0 && (conflictHashes.length < 2
91
- || record.recommendation !== 'Resolve the conflict with one authoritative answer.'
92
- || record.question !== 'Conflicting authorized answers were received. What single product outcome should this run implement?')) {
93
- throw new Error('conflict question copy or evidence is invalid');
94
- }
95
- for (const key of ['marker', 'answerPrefix', 'recommendation', 'question'])
96
- assertNonEmpty(record[key], key);
97
- // questionId cannot reveal runId, so validate every derived field except the ID hash here.
98
- const semantic = {
99
- version: 1,
100
- generation: record.generation,
101
- questionId: record.questionId,
102
- routeDecisionSha256: record.routeDecisionSha256,
103
- workflowGenerationHash: record.workflowGenerationHash,
104
- priorQuestionSha256: record.priorQuestionSha256,
105
- conflictHashes,
106
- recommendation: record.recommendation,
107
- question: record.question,
108
- };
109
- const questionSha256 = domainHash('codex-orchestrator-question-v1', canonicalJson(semantic));
110
- const marker = `<!-- codex-orchestrator:waiting-question:${record.questionId}:${questionSha256} -->`;
111
- const answerPrefix = `Answer ${record.questionId}:`;
112
- const body = renderBody(marker, record.question, record.recommendation, answerPrefix);
113
- if (record.questionSha256 !== questionSha256)
114
- throw new Error('question hash mismatch');
115
- if (record.marker !== marker || record.answerPrefix !== answerPrefix)
116
- throw new Error('question rendering mismatch');
117
- if (record.bodySha256 !== sha256(body))
118
- throw new Error('question body hash mismatch');
119
- return structuredClone(value);
120
- }
121
- export function renderWaitingQuestionBody(question) {
122
- const validated = validateWaitingQuestion(question);
123
- return renderBody(validated.marker, validated.question, validated.recommendation, validated.answerPrefix);
124
- }
125
- function renderBody(marker, question, recommendation, answerPrefix) {
126
- return `${marker}\n\n${question}\n\nRecommendation: ${recommendation}\n\nReply with exactly this prefix:\n${answerPrefix}\n`;
127
- }
128
- export function normalizeAnswer(value) {
129
- if (typeof value !== 'string')
130
- throw new Error('answer must be text');
131
- const normalized = value.replace(/\r\n?/gu, '\n').normalize('NFC')
132
- .split('\n').map((line) => line.trim()).join('\n')
133
- .replace(/^\n+|\n+$/gu, '');
134
- if (!normalized)
135
- throw new Error('normalized answer is empty');
136
- return normalized;
137
- }
138
- export function hashNormalizedAnswer(value) {
139
- const normalized = normalizeAnswer(value);
140
- if (normalized !== value)
141
- throw new Error('answer must already be normalized');
142
- return domainHash('codex-orchestrator-answer-v1', normalized);
143
- }
144
- export function validateWaitingQuestionReceipt(value) {
145
- assertExactObject(value, ['question', 'commentId', 'commentUrl', 'authorId', 'author', 'createdAt', 'observedAt'], 'waiting question receipt');
146
- const question = validateWaitingQuestion(value.question);
147
- assertDecimalId(value.commentId, 'waiting question receipt.commentId');
148
- assertNonEmpty(value.commentUrl, 'waiting question receipt.commentUrl');
149
- assertDecimalId(value.authorId, 'waiting question receipt.authorId');
150
- assertNonEmpty(value.author, 'waiting question receipt.author');
151
- assertTimestamp(value.createdAt, 'waiting question receipt.createdAt');
152
- assertTimestamp(value.observedAt, 'waiting question receipt.observedAt');
153
- if (Date.parse(value.observedAt) < Date.parse(value.createdAt))
154
- throw new Error('waiting question receipt observation predates comment');
155
- return { ...structuredClone(value), question };
156
- }
157
- export function validateTrustedAnswerReceipt(value, question) {
158
- assertExactObject(value, [
159
- 'version', 'questionId', 'questionSha256', 'commentId', 'commentUrl', 'authorId', 'author', 'permission',
160
- 'permissionCheckedAt', 'commentCreatedAt', 'commentUpdatedAt', 'observedAt', 'normalizedAnswer',
161
- 'normalizedSha256', 'duplicateCommentIds',
162
- ], 'trusted answer receipt');
163
- if (value.version !== 1)
164
- throw new Error('trusted answer receipt.version is invalid');
165
- if (typeof value.questionId !== 'string' || !QUESTION_ID_PATTERN.test(value.questionId))
166
- throw new Error('trusted answer receipt.questionId is invalid');
167
- assertSha256(value.questionSha256, 'trusted answer receipt.questionSha256');
168
- assertDecimalId(value.commentId, 'trusted answer receipt.commentId');
169
- assertNonEmpty(value.commentUrl, 'trusted answer receipt.commentUrl');
170
- assertDecimalId(value.authorId, 'trusted answer receipt.authorId');
171
- assertNonEmpty(value.author, 'trusted answer receipt.author');
172
- if (value.permission !== 'write' && value.permission !== 'admin')
173
- throw new Error('trusted answer receipt.permission is invalid');
174
- for (const field of ['permissionCheckedAt', 'commentCreatedAt', 'commentUpdatedAt', 'observedAt'])
175
- assertTimestamp(value[field], `trusted answer receipt.${field}`);
176
- const commentCreatedAt = value.commentCreatedAt;
177
- const commentUpdatedAt = value.commentUpdatedAt;
178
- const observedAt = value.observedAt;
179
- const permissionCheckedAt = value.permissionCheckedAt;
180
- if (commentUpdatedAt !== commentCreatedAt)
181
- throw new Error('trusted answer receipt comment must be unedited');
182
- if (Date.parse(observedAt) < Date.parse(commentUpdatedAt) || Date.parse(permissionCheckedAt) < Date.parse(observedAt)) {
183
- throw new Error('trusted answer receipt observation or permission predates comment');
184
- }
185
- assertNonEmpty(value.normalizedAnswer, 'trusted answer receipt.normalizedAnswer');
186
- if (normalizeAnswer(value.normalizedAnswer) !== value.normalizedAnswer)
187
- throw new Error('trusted answer receipt answer is not normalized');
188
- assertSha256(value.normalizedSha256, 'trusted answer receipt.normalizedSha256');
189
- if (value.normalizedSha256 !== hashNormalizedAnswer(value.normalizedAnswer))
190
- throw new Error('trusted answer receipt normalized hash mismatch');
191
- validateDecimalIdList(value.duplicateCommentIds, 'trusted answer receipt.duplicateCommentIds');
192
- if (value.duplicateCommentIds.includes(value.commentId))
193
- throw new Error('trusted answer receipt duplicate IDs include canonical comment');
194
- if (question && (value.questionId !== question.questionId || value.questionSha256 !== question.questionSha256)) {
195
- throw new Error('trusted answer receipt question binding mismatch');
196
- }
197
- return structuredClone(value);
198
- }
199
- export function validateWaitingHumanExecution(value, context) {
200
- assertRecord(value, 'waiting execution');
201
- const common = ['version', 'clarificationAttempts', 'permissionRetries', 'effectRetries', 'history', 'phase'];
202
- const phaseKeys = {
203
- 'question-ready': ['question'],
204
- 'question-comment-intent': ['question'],
205
- 'question-published': ['questionReceipt'],
206
- 'wait-labels-intent': ['questionReceipt'],
207
- 'awaiting-answer': ['questionReceipt'],
208
- 'answer-frozen': ['questionReceipt', 'answerReceipt'],
209
- 'resume-labels-intent': ['questionReceipt', 'answerReceipt'],
210
- 'resume-ready': ['questionReceipt', 'answerReceipt'],
211
- 'revoke-labels-intent': ['questionReceipt', 'answerReceipt', 'reason'],
212
- resumed: ['trustedAnswer'],
213
- 'history-only': ['terminalOutcome'],
214
- };
215
- if (typeof value.phase !== 'string' || !phaseKeys[value.phase])
216
- throw new Error('waiting execution phase is invalid');
217
- assertExactObject(value, [...common, ...phaseKeys[value.phase]], 'waiting execution');
218
- if (value.version !== 1 || !isBit(value.clarificationAttempts) || !isBit(value.permissionRetries))
219
- throw new Error('waiting execution budgets are invalid');
220
- assertExactObject(value.effectRetries, ['questionComment', 'waitLabels', 'resumeLabels', 'revokeLabels'], 'waiting execution.effectRetries');
221
- for (const name of ['questionComment', 'waitLabels', 'resumeLabels', 'revokeLabels']) {
222
- if (!isBit(value.effectRetries[name]))
223
- throw new Error(`waiting execution.effectRetries.${name} is invalid`);
224
- }
225
- if (!Array.isArray(value.history) || value.history.length > 2)
226
- throw new Error('waiting execution history is invalid');
227
- const history = value.history.map((entry, index) => validateHistoryEntry(entry, context, index));
228
- for (let index = 1; index < history.length; index += 1) {
229
- if (history[index].question.generation !== history[index - 1].question.generation + 1)
230
- throw new Error('waiting execution history generations are invalid');
231
- if (history[index].question.priorQuestionSha256 !== history[index - 1].question.questionSha256)
232
- throw new Error('waiting execution history chain is invalid');
233
- }
234
- if (history.length > 0 && history[0].question.generation !== 1)
235
- throw new Error('waiting execution history must begin at generation one');
236
- const active = !['resumed', 'history-only'].includes(value.phase);
237
- if (active) {
238
- if (context.lifecycle !== 'waiting-human')
239
- throw new Error('active waiting execution requires waiting-human lifecycle');
240
- if (!context.routeReceipt || context.routeReceipt.route !== 'awaiting-user')
241
- throw new Error('active waiting execution requires awaiting-user route');
242
- const route = validateRouteReceipt(context.routeReceipt, context.workflowGenerationHash);
243
- const question = 'question' in value
244
- ? validateWaitingQuestion(value.question)
245
- : validateWaitingQuestionReceipt(value.questionReceipt).question;
246
- validateActiveQuestion(question, history, route, context);
247
- if ('questionReceipt' in value)
248
- validateWaitingQuestionReceipt(value.questionReceipt);
249
- if ('answerReceipt' in value) {
250
- const questionReceipt = validateWaitingQuestionReceipt(value.questionReceipt);
251
- const answerReceipt = validateTrustedAnswerReceipt(value.answerReceipt, question);
252
- validateAnswerAfterQuestion(questionReceipt, answerReceipt);
253
- }
254
- if (value.phase === 'revoke-labels-intent' && value.reason !== 'permission-revoked')
255
- throw new Error('waiting execution revocation reason is invalid');
256
- }
257
- else if (value.phase === 'resumed') {
258
- if (!['triaging', 'routed', 'implementing', 'spec-authoring', 'reworking', 'checking', 'proving', 'publishing', 'safe-halt'].includes(context.lifecycle)) {
259
- throw new Error('resumed waiting execution lifecycle is invalid');
260
- }
261
- if (history.length === 0 || history.at(-1).answerReceipt === null)
262
- throw new Error('resumed waiting execution requires answer history');
263
- const trusted = validateTrustedAnswerReceipt(value.trustedAnswer, history.at(-1).question);
264
- if (!deepEqual(trusted, history.at(-1).answerReceipt))
265
- throw new Error('resumed trusted answer does not match history');
266
- }
267
- else {
268
- if (!['blocked', 'cancelled', 'review-ready', 'transport-failed', 'internal-error'].includes(context.lifecycle)) {
269
- throw new Error('history-only waiting execution lifecycle is invalid');
270
- }
271
- if (history.length === 0)
272
- throw new Error('history-only waiting execution requires history');
273
- validateTerminalProjection(value.terminalOutcome, context);
274
- }
275
- return structuredClone(value);
276
- }
277
- function validateHistoryEntry(value, context, index) {
278
- assertExactObject(value, ['routeReceipt', 'question', 'questionReceipt', 'answerReceipt', 'conflictHashes'], `waiting history[${index}]`);
279
- const routeReceipt = validateRouteReceipt(value.routeReceipt, context.workflowGenerationHash);
280
- if (routeReceipt.route !== 'awaiting-user')
281
- throw new Error(`waiting history[${index}] route is not awaiting-user`);
282
- const question = validateWaitingQuestion(value.question);
283
- validateQuestionIdentity(question, routeReceipt, context);
284
- const conflicts = sortedUniqueHashes(value.conflictHashes);
285
- if (!deepEqual(conflicts, value.conflictHashes))
286
- throw new Error(`waiting history[${index}] conflict hashes mismatch`);
287
- const questionReceipt = value.questionReceipt === null ? null : validateWaitingQuestionReceipt(value.questionReceipt);
288
- if (questionReceipt && !deepEqual(questionReceipt.question, question))
289
- throw new Error(`waiting history[${index}] question receipt mismatch`);
290
- const answerReceipt = value.answerReceipt === null ? null : validateTrustedAnswerReceipt(value.answerReceipt, question);
291
- if (answerReceipt && questionReceipt === null)
292
- throw new Error(`waiting history[${index}] answer requires publication receipt`);
293
- if (answerReceipt && questionReceipt)
294
- validateAnswerAfterQuestion(questionReceipt, answerReceipt);
295
- return { routeReceipt, question, questionReceipt, answerReceipt, conflictHashes: conflicts };
296
- }
297
- function validateAnswerAfterQuestion(question, answer) {
298
- if (Date.parse(answer.commentCreatedAt) <= Date.parse(question.createdAt)) {
299
- throw new Error('trusted answer receipt must be posted after the waiting question');
300
- }
301
- }
302
- function validateActiveQuestion(question, history, route, context) {
303
- validateQuestionIdentity(question, route, context);
304
- if (question.generation === 1) {
305
- if (history.length !== 0)
306
- throw new Error('generation one active question requires empty history');
307
- }
308
- else {
309
- if (history.length !== 1 || question.priorQuestionSha256 !== history[0].question.questionSha256)
310
- throw new Error('generation two active question requires prior history');
311
- if (!deepEqual(question.conflictHashes, history[0].conflictHashes))
312
- throw new Error('generation two conflict evidence does not match history');
313
- }
314
- }
315
- function validateQuestionIdentity(question, route, context) {
316
- if (question.routeDecisionSha256 !== route.decisionSha256 || question.workflowGenerationHash !== context.workflowGenerationHash) {
317
- throw new Error('waiting question route or workflow generation mismatch');
318
- }
319
- const rebuilt = createWaitingQuestion({
320
- runId: context.runId,
321
- generation: question.generation,
322
- routeDecisionSha256: question.routeDecisionSha256,
323
- workflowGenerationHash: question.workflowGenerationHash,
324
- priorQuestionSha256: question.priorQuestionSha256,
325
- conflictHashes: question.conflictHashes,
326
- recommendation: question.recommendation,
327
- question: question.question,
328
- });
329
- if (!deepEqual(rebuilt, question))
330
- throw new Error('waiting question run identity mismatch');
331
- }
332
- function validateTerminalProjection(value, context) {
333
- assertRecord(value, 'waiting execution terminalOutcome');
334
- if (context.lifecycle !== 'blocked') {
335
- assertExactObject(value, ['status'], 'waiting execution terminalOutcome');
336
- if (value.status !== context.lifecycle || context.terminalOutcome?.status !== context.lifecycle)
337
- throw new Error('waiting terminal outcome mismatch');
338
- }
339
- else {
340
- assertExactObject(value, ['status', 'kind'], 'waiting execution terminalOutcome');
341
- if (value.status !== 'blocked' || !['external', 'safety', 'exhausted'].includes(value.kind)
342
- || context.terminalOutcome?.status !== 'blocked' || context.terminalOutcome.kind !== value.kind) {
343
- throw new Error('waiting terminal outcome mismatch');
344
- }
345
- }
346
- }
347
- function domainHash(domain, value) {
348
- return createHash('sha256').update(domain).update(Buffer.from([0])).update(value, 'utf8').digest('hex');
349
- }
350
- function sha256(value) {
351
- return createHash('sha256').update(value, 'utf8').digest('hex');
352
- }
353
- function sortedUniqueHashes(values) {
354
- if (!Array.isArray(values))
355
- throw new Error('conflict hashes are invalid');
356
- for (const value of values)
357
- assertSha256(value, 'conflict hash');
358
- return Array.from(new Set(values)).sort();
359
- }
360
- function assertSha256(value, field) {
361
- if (typeof value !== 'string' || !SHA256_PATTERN.test(value))
362
- throw new Error(`${field} is invalid`);
363
- }
364
- function assertNonEmpty(value, field) {
365
- if (typeof value !== 'string' || !value.trim())
366
- throw new Error(`${field} is empty`);
367
- }
368
- function assertRecord(value, field) {
369
- if (typeof value !== 'object' || value === null || Array.isArray(value))
370
- throw new Error(`${field} must be an object`);
371
- }
372
- function assertExactObject(value, keys, field) {
373
- assertRecord(value, field);
374
- const actual = Object.keys(value).sort();
375
- const expected = [...keys].sort();
376
- if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index])) {
377
- throw new Error(`${field} has unknown or missing keys`);
378
- }
379
- }
380
- function assertTimestamp(value, field) {
381
- if (typeof value !== 'string' || Number.isNaN(Date.parse(value)) || new Date(value).toISOString() !== value)
382
- throw new Error(`${field} is invalid`);
383
- }
384
- function assertDecimalId(value, field) {
385
- if (typeof value !== 'string' || !/^[1-9][0-9]*$/u.test(value))
386
- throw new Error(`${field} must be a positive decimal string`);
387
- }
388
- function validateDecimalIdList(value, field) {
389
- if (!Array.isArray(value) || value.length > 256)
390
- throw new Error(`${field} is invalid`);
391
- for (const id of value)
392
- assertDecimalId(id, field);
393
- const sorted = [...value].sort(compareDecimalIds);
394
- if (new Set(value).size !== value.length || !deepEqual(sorted, value))
395
- throw new Error(`${field} must be sorted and unique`);
396
- }
397
- function compareDecimalIds(left, right) {
398
- if (left.length !== right.length)
399
- return left.length - right.length;
400
- return left.localeCompare(right);
401
- }
402
- function isBit(value) {
403
- return value === 0 || value === 1;
404
- }
405
- function deepEqual(left, right) {
406
- return canonicalJson(left) === canonicalJson(right);
407
- }
408
- //# sourceMappingURL=waiting-human.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"waiting-human.js","sourceRoot":"","sources":["../../../src/v2/waiting-human.ts"],"names":[],"mappings":"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"}