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,509 +0,0 @@
1
- import { GitHubPermissionSafetyError, } from './adapters/issues.js';
2
- import { createWaitingQuestion, createConflictQuestion, hashNormalizedAnswer, normalizeAnswer, renderWaitingQuestionBody, } from './waiting-human.js';
3
- export class WaitingHumanCoordinator {
4
- dependencies;
5
- now;
6
- constructor(dependencies) {
7
- this.dependencies = dependencies;
8
- this.now = dependencies.now ?? (() => new Date().toISOString());
9
- }
10
- async run(input, state, signal) {
11
- let current = await state.read();
12
- let enteredCommentIntent = false;
13
- let enteredLabelIntent = false;
14
- for (let step = 0; step < 24; step += 1) {
15
- if (signal.aborted)
16
- return { status: 'cancelled' };
17
- if (!current) {
18
- const awaiting = input.receipt.artifact.awaitingUser;
19
- if (input.receipt.route !== 'awaiting-user' || !awaiting)
20
- return safety('waiting-route-mismatch');
21
- const question = createWaitingQuestion({
22
- runId: input.runId,
23
- generation: 1,
24
- routeDecisionSha256: input.receipt.decisionSha256,
25
- workflowGenerationHash: input.workflowGeneration.generationHash,
26
- priorQuestionSha256: null,
27
- conflictHashes: [],
28
- recommendation: awaiting.recommendation,
29
- question: awaiting.question,
30
- });
31
- const next = {
32
- ...emptyExecution(), phase: 'question-ready', question,
33
- };
34
- if (!await state.compareAndSwap(undefined, next)) {
35
- current = await state.read();
36
- continue;
37
- }
38
- current = next;
39
- continue;
40
- }
41
- if (current.phase === 'awaiting-answer') {
42
- const frozen = await this.freezeAnswer(current, input.issue.number);
43
- if (frozen.status === 'retryable') {
44
- if (current.permissionRetries === 1) {
45
- return { status: 'blocked', kind: 'external', resumable: true, code: 'permission-retries-exhausted', evidence: [] };
46
- }
47
- const retry = { ...current, permissionRetries: 1 };
48
- if (!await state.compareAndSwap(current, retry)) {
49
- current = await state.read();
50
- continue;
51
- }
52
- return frozen.result;
53
- }
54
- if (frozen.status === 'safety')
55
- return safety(frozen.code);
56
- if (frozen.status === 'none')
57
- return awaitingResult(current.questionReceipt);
58
- if (frozen.status === 'conflict') {
59
- if (current.clarificationAttempts === 1 || current.questionReceipt.question.generation === 2) {
60
- return { status: 'blocked', kind: 'exhausted', resumable: false, code: 'answer-conflict', evidence: frozen.hashes };
61
- }
62
- const question = current.questionReceipt.question;
63
- const nextQuestion = createConflictQuestion({
64
- runId: input.runId,
65
- routeDecisionSha256: input.receipt.decisionSha256,
66
- workflowGenerationHash: input.workflowGeneration.generationHash,
67
- priorQuestionSha256: question.questionSha256,
68
- conflictHashes: frozen.hashes,
69
- });
70
- const next = {
71
- ...current,
72
- clarificationAttempts: 1,
73
- history: [...current.history, {
74
- routeReceipt: structuredClone(input.receipt), question: structuredClone(question),
75
- questionReceipt: structuredClone(current.questionReceipt), answerReceipt: null, conflictHashes: [...frozen.hashes],
76
- }],
77
- phase: 'question-ready',
78
- question: nextQuestion,
79
- };
80
- delete next.questionReceipt;
81
- if (!await state.compareAndSwap(current, next)) {
82
- current = await state.read();
83
- continue;
84
- }
85
- current = next;
86
- enteredLabelIntent = true;
87
- continue;
88
- }
89
- const next = { ...current, phase: 'answer-frozen', answerReceipt: frozen.answer };
90
- if (!await state.compareAndSwap(current, next)) {
91
- current = await state.read();
92
- continue;
93
- }
94
- current = next;
95
- continue;
96
- }
97
- if (current.phase === 'resume-ready')
98
- return { status: 'resume-ready', answer: structuredClone(current.answerReceipt) };
99
- if (current.phase === 'resumed') {
100
- const awaiting = input.receipt.artifact.awaitingUser;
101
- if (input.receipt.route !== 'awaiting-user' || !awaiting)
102
- return safety('waiting-route-mismatch');
103
- if (current.clarificationAttempts === 1 || current.history.length !== 1) {
104
- return { status: 'blocked', kind: 'exhausted', resumable: false, code: 'waiting-question-budget-exhausted', evidence: [] };
105
- }
106
- const prior = current.history[0].question;
107
- const question = createWaitingQuestion({
108
- runId: input.runId,
109
- generation: 2,
110
- routeDecisionSha256: input.receipt.decisionSha256,
111
- workflowGenerationHash: input.workflowGeneration.generationHash,
112
- priorQuestionSha256: prior.questionSha256,
113
- conflictHashes: [],
114
- recommendation: awaiting.recommendation,
115
- question: awaiting.question,
116
- });
117
- const next = {
118
- ...current, clarificationAttempts: 1, phase: 'question-ready', question,
119
- };
120
- delete next.trustedAnswer;
121
- if (!await state.compareAndSwap(current, next)) {
122
- current = await state.read();
123
- continue;
124
- }
125
- current = next;
126
- continue;
127
- }
128
- if (current.phase === 'history-only')
129
- return safety('waiting-state-not-active');
130
- if (current.phase === 'answer-frozen') {
131
- const authority = await this.revalidateAnswer(input.issue.number, current.answerReceipt);
132
- if (authority === 'retryable') {
133
- if (current.permissionRetries === 1) {
134
- return { status: 'blocked', kind: 'external', resumable: true, code: 'permission-retries-exhausted', evidence: [] };
135
- }
136
- const retry = { ...current, permissionRetries: 1 };
137
- if (!await state.compareAndSwap(current, retry)) {
138
- current = await state.read();
139
- continue;
140
- }
141
- return { status: 'retryable', owner: 'permission', code: 'answer-revalidation-failed' };
142
- }
143
- if (authority === 'revoked') {
144
- const next = { ...current, phase: 'revoke-labels-intent', reason: 'permission-revoked' };
145
- if (!await state.compareAndSwap(current, next)) {
146
- current = await state.read();
147
- continue;
148
- }
149
- current = next;
150
- enteredLabelIntent = true;
151
- continue;
152
- }
153
- const next = { ...current, phase: 'resume-labels-intent' };
154
- if (!await state.compareAndSwap(current, next)) {
155
- current = await state.read();
156
- continue;
157
- }
158
- current = next;
159
- enteredLabelIntent = true;
160
- continue;
161
- }
162
- if (current.phase === 'question-ready') {
163
- const next = { ...current, phase: 'question-comment-intent' };
164
- if (!await state.compareAndSwap(current, next)) {
165
- current = await state.read();
166
- continue;
167
- }
168
- current = next;
169
- enteredCommentIntent = true;
170
- continue;
171
- }
172
- if (current.phase === 'question-comment-intent') {
173
- let observation;
174
- const questionBody = renderWaitingQuestionBody(current.question);
175
- try {
176
- observation = await this.observeQuestion(input.issue.number, current.question.marker, questionBody);
177
- }
178
- catch {
179
- return { status: 'retryable', owner: 'github-effect', code: 'question-comment-observation-failed' };
180
- }
181
- if (observation.status === 'conflict')
182
- return safety('question-comment-conflict', observation.evidence);
183
- if (observation.status === 'found') {
184
- const next = {
185
- ...current,
186
- phase: 'question-published',
187
- questionReceipt: receiptFor(current.question, observation.comment, this.now()),
188
- };
189
- delete next.question;
190
- if (!await state.compareAndSwap(current, next)) {
191
- current = await state.read();
192
- continue;
193
- }
194
- current = next;
195
- continue;
196
- }
197
- if (!enteredCommentIntent) {
198
- if (current.effectRetries.questionComment === 1) {
199
- return { status: 'blocked', kind: 'external', resumable: true, code: 'question-comment-exhausted', evidence: [] };
200
- }
201
- const retry = {
202
- ...current, effectRetries: { ...current.effectRetries, questionComment: 1 },
203
- };
204
- if (!await state.compareAndSwap(current, retry)) {
205
- current = await state.read();
206
- continue;
207
- }
208
- current = retry;
209
- }
210
- enteredCommentIntent = false;
211
- try {
212
- await this.dependencies.issues.postComment(input.issue.number, questionBody);
213
- continue;
214
- }
215
- catch {
216
- return { status: 'retryable', owner: 'github-effect', code: 'question-comment-unknown' };
217
- }
218
- }
219
- if (current.phase === 'question-published') {
220
- const next = { ...current, phase: 'wait-labels-intent' };
221
- if (!await state.compareAndSwap(current, next)) {
222
- current = await state.read();
223
- continue;
224
- }
225
- current = next;
226
- enteredLabelIntent = true;
227
- continue;
228
- }
229
- if (current.phase === 'wait-labels-intent') {
230
- let issue;
231
- try {
232
- issue = await this.dependencies.issues.getIssue(input.issue.number);
233
- }
234
- catch {
235
- return { status: 'retryable', owner: 'github-effect', code: 'wait-label-observation-failed' };
236
- }
237
- if (!issue || issue.state !== 'OPEN')
238
- return { status: 'cancelled' };
239
- const labels = new Set(issue.labels.map((label) => label.name));
240
- if (!labels.has(this.dependencies.labels.auto))
241
- return { status: 'cancelled' };
242
- if (labels.has(this.dependencies.labels.review) || labels.has(this.dependencies.labels.blocked)
243
- || labels.has(this.dependencies.labels.manual ?? 'agent:manual'))
244
- return { status: 'cancelled' };
245
- if (isWaitingPostcondition(labels, this.dependencies.labels)) {
246
- const next = { ...current, phase: 'awaiting-answer' };
247
- if (!await state.compareAndSwap(current, next)) {
248
- current = await state.read();
249
- continue;
250
- }
251
- current = next;
252
- continue;
253
- }
254
- if (!enteredLabelIntent) {
255
- if (current.effectRetries.waitLabels === 1) {
256
- return { status: 'blocked', kind: 'external', resumable: true, code: 'wait-labels-exhausted', evidence: [] };
257
- }
258
- const retry = { ...current, effectRetries: { ...current.effectRetries, waitLabels: 1 } };
259
- if (!await state.compareAndSwap(current, retry)) {
260
- current = await state.read();
261
- continue;
262
- }
263
- current = retry;
264
- }
265
- enteredLabelIntent = false;
266
- try {
267
- await this.dependencies.issues.updateIssue(input.issue.number, {
268
- addLabels: [this.dependencies.labels.auto, this.dependencies.labels.waitingHuman],
269
- removeLabels: [this.dependencies.labels.running, this.dependencies.labels.blocked, this.dependencies.labels.review],
270
- });
271
- }
272
- catch {
273
- return { status: 'retryable', owner: 'github-effect', code: 'wait-labels-unknown' };
274
- }
275
- continue;
276
- }
277
- if (current.phase === 'resume-labels-intent') {
278
- let issue;
279
- try {
280
- issue = await this.dependencies.issues.getIssue(input.issue.number);
281
- }
282
- catch {
283
- return { status: 'retryable', owner: 'github-effect', code: 'resume-label-observation-failed' };
284
- }
285
- if (!issue || issue.state !== 'OPEN')
286
- return safety('resume-issue-revoked');
287
- const labels = new Set(issue.labels.map((label) => label.name));
288
- if (!labels.has(this.dependencies.labels.auto) || labels.has(this.dependencies.labels.review) || labels.has(this.dependencies.labels.blocked)
289
- || labels.has(this.dependencies.labels.manual ?? 'agent:manual')) {
290
- return safety('resume-label-authority-revoked');
291
- }
292
- if (isResumePostcondition(labels, this.dependencies.labels)) {
293
- const authority = await this.revalidateAnswer(input.issue.number, current.answerReceipt);
294
- if (authority === 'retryable') {
295
- if (current.permissionRetries === 1) {
296
- return { status: 'blocked', kind: 'external', resumable: true, code: 'permission-retries-exhausted', evidence: [] };
297
- }
298
- const retry = { ...current, permissionRetries: 1 };
299
- if (!await state.compareAndSwap(current, retry)) {
300
- current = await state.read();
301
- continue;
302
- }
303
- return { status: 'retryable', owner: 'permission', code: 'answer-final-revalidation-failed' };
304
- }
305
- if (authority === 'revoked') {
306
- const next = { ...current, phase: 'revoke-labels-intent', reason: 'permission-revoked' };
307
- if (!await state.compareAndSwap(current, next)) {
308
- current = await state.read();
309
- continue;
310
- }
311
- current = next;
312
- enteredLabelIntent = true;
313
- continue;
314
- }
315
- const next = { ...current, phase: 'resume-ready' };
316
- if (!await state.compareAndSwap(current, next)) {
317
- current = await state.read();
318
- continue;
319
- }
320
- current = next;
321
- continue;
322
- }
323
- if (!enteredLabelIntent) {
324
- if (current.effectRetries.resumeLabels === 1) {
325
- return { status: 'blocked', kind: 'external', resumable: true, code: 'resume-labels-exhausted', evidence: [] };
326
- }
327
- const retry = { ...current, effectRetries: { ...current.effectRetries, resumeLabels: 1 } };
328
- if (!await state.compareAndSwap(current, retry)) {
329
- current = await state.read();
330
- continue;
331
- }
332
- current = retry;
333
- }
334
- enteredLabelIntent = false;
335
- try {
336
- await this.dependencies.issues.updateIssue(input.issue.number, {
337
- addLabels: [this.dependencies.labels.auto, this.dependencies.labels.running],
338
- removeLabels: [this.dependencies.labels.waitingHuman, this.dependencies.labels.blocked, this.dependencies.labels.review],
339
- });
340
- }
341
- catch {
342
- return { status: 'retryable', owner: 'github-effect', code: 'resume-labels-unknown' };
343
- }
344
- continue;
345
- }
346
- if (current.phase === 'revoke-labels-intent') {
347
- let issue;
348
- try {
349
- issue = await this.dependencies.issues.getIssue(input.issue.number);
350
- }
351
- catch {
352
- return { status: 'retryable', owner: 'github-effect', code: 'revoke-label-observation-failed' };
353
- }
354
- if (!issue || issue.state !== 'OPEN')
355
- return { status: 'cancelled' };
356
- const labels = new Set(issue.labels.map((label) => label.name));
357
- if (labels.has(this.dependencies.labels.auto) && labels.has(this.dependencies.labels.blocked)
358
- && !labels.has(this.dependencies.labels.running) && !labels.has(this.dependencies.labels.waitingHuman)
359
- && !labels.has(this.dependencies.labels.review)) {
360
- return safety('answer-permission-revoked', [current.answerReceipt.commentId]);
361
- }
362
- if (!labels.has(this.dependencies.labels.auto) || labels.has(this.dependencies.labels.blocked)
363
- || labels.has(this.dependencies.labels.review) || labels.has(this.dependencies.labels.manual ?? 'agent:manual')) {
364
- return { status: 'cancelled' };
365
- }
366
- if (!enteredLabelIntent) {
367
- if (current.effectRetries.revokeLabels === 1) {
368
- return { status: 'blocked', kind: 'external', resumable: true, code: 'revoke-labels-exhausted', evidence: [] };
369
- }
370
- const retry = { ...current, effectRetries: { ...current.effectRetries, revokeLabels: 1 } };
371
- if (!await state.compareAndSwap(current, retry)) {
372
- current = await state.read();
373
- continue;
374
- }
375
- current = retry;
376
- }
377
- enteredLabelIntent = false;
378
- try {
379
- await this.dependencies.issues.updateIssue(input.issue.number, {
380
- addLabels: [this.dependencies.labels.auto, this.dependencies.labels.blocked],
381
- removeLabels: [this.dependencies.labels.running, this.dependencies.labels.waitingHuman],
382
- });
383
- }
384
- catch {
385
- return { status: 'retryable', owner: 'github-effect', code: 'revoke-labels-unknown' };
386
- }
387
- continue;
388
- }
389
- return safety('waiting-phase-not-implemented');
390
- }
391
- return safety('waiting-coordinator-step-bound');
392
- }
393
- async observeQuestion(issueNumber, marker, body) {
394
- const comments = await this.dependencies.issues.listAllComments(issueNumber);
395
- const marked = comments.filter((comment) => comment.body.includes(marker));
396
- if (marked.length === 0)
397
- return { status: 'absent' };
398
- if (marked.length !== 1 || marked[0].body !== body || marked[0].createdAt !== marked[0].updatedAt) {
399
- return { status: 'conflict', evidence: marked.map((comment) => comment.id) };
400
- }
401
- return { status: 'found', comment: marked[0] };
402
- }
403
- async freezeAnswer(current, issueNumber) {
404
- let comments;
405
- try {
406
- comments = await this.dependencies.issues.listAllComments(issueNumber);
407
- }
408
- catch {
409
- return { status: 'retryable', result: { status: 'retryable', owner: 'permission', code: 'answer-comments-read-failed' } };
410
- }
411
- const observedAt = this.now();
412
- const question = current.questionReceipt.question;
413
- const candidates = comments.filter((comment) => comment.body.startsWith(question.answerPrefix)
414
- && comment.createdAt === comment.updatedAt
415
- && Date.parse(comment.createdAt) > Date.parse(current.questionReceipt.createdAt))
416
- .sort((left, right) => compareDecimal(left.id, right.id));
417
- const trusted = [];
418
- for (const comment of candidates) {
419
- let normalized;
420
- try {
421
- normalized = normalizeAnswer(comment.body.slice(question.answerPrefix.length));
422
- }
423
- catch {
424
- continue;
425
- }
426
- try {
427
- const permission = await this.dependencies.issues.getRepositoryPermission(comment.author.login, comment.author.id);
428
- if (Date.parse(permission.checkedAt) < Date.parse(observedAt) || permission.userId !== comment.author.id) {
429
- return { status: 'retryable', result: { status: 'retryable', owner: 'permission', code: 'permission-observation-stale' } };
430
- }
431
- if (permission.permission !== 'write' && permission.permission !== 'admin')
432
- continue;
433
- trusted.push({ comment, permission: permission.permission, checkedAt: permission.checkedAt, normalized, hash: hashNormalizedAnswer(normalized) });
434
- }
435
- catch (error) {
436
- if (error instanceof GitHubPermissionSafetyError)
437
- return { status: 'safety', code: 'permission-response-invalid' };
438
- return { status: 'retryable', result: { status: 'retryable', owner: 'permission', code: 'permission-read-failed' } };
439
- }
440
- }
441
- if (trusted.length === 0)
442
- return { status: 'none' };
443
- const hashes = Array.from(new Set(trusted.map((candidate) => candidate.hash))).sort();
444
- if (hashes.length > 1)
445
- return { status: 'conflict', hashes };
446
- const canonical = trusted[0];
447
- return {
448
- status: 'trusted',
449
- answer: {
450
- version: 1, questionId: question.questionId, questionSha256: question.questionSha256,
451
- commentId: canonical.comment.id, commentUrl: canonical.comment.url,
452
- authorId: canonical.comment.author.id, author: canonical.comment.author.login,
453
- permission: canonical.permission, permissionCheckedAt: canonical.checkedAt,
454
- commentCreatedAt: canonical.comment.createdAt, commentUpdatedAt: canonical.comment.updatedAt,
455
- observedAt, normalizedAnswer: canonical.normalized, normalizedSha256: canonical.hash,
456
- duplicateCommentIds: trusted.slice(1).map((candidate) => candidate.comment.id),
457
- },
458
- };
459
- }
460
- async revalidateAnswer(issueNumber, answer) {
461
- try {
462
- const comments = await this.dependencies.issues.listAllComments(issueNumber);
463
- const comment = comments.find((candidate) => candidate.id === answer.commentId);
464
- if (!comment || comment.author.id !== answer.authorId || comment.createdAt !== comment.updatedAt
465
- || hashNormalizedAnswer(normalizeAnswer(comment.body.slice(`Answer ${answer.questionId}:`.length))) !== answer.normalizedSha256)
466
- return 'revoked';
467
- const permission = await this.dependencies.issues.getRepositoryPermission(comment.author.login, answer.authorId);
468
- return permission.userId === answer.authorId && (permission.permission === 'write' || permission.permission === 'admin') ? 'trusted' : 'revoked';
469
- }
470
- catch {
471
- return 'retryable';
472
- }
473
- }
474
- }
475
- function emptyExecution() {
476
- return {
477
- version: 1,
478
- clarificationAttempts: 0,
479
- permissionRetries: 0,
480
- effectRetries: { questionComment: 0, waitLabels: 0, resumeLabels: 0, revokeLabels: 0 },
481
- history: [],
482
- };
483
- }
484
- function receiptFor(question, comment, observedAt) {
485
- return {
486
- question: structuredClone(question), commentId: comment.id, commentUrl: comment.url,
487
- authorId: comment.author.id, author: comment.author.login, createdAt: comment.createdAt, observedAt,
488
- };
489
- }
490
- function isWaitingPostcondition(labels, policy) {
491
- return labels.has(policy.auto) && labels.has(policy.waitingHuman)
492
- && !labels.has(policy.running) && !labels.has(policy.blocked) && !labels.has(policy.review);
493
- }
494
- function isResumePostcondition(labels, policy) {
495
- return labels.has(policy.auto) && labels.has(policy.running)
496
- && !labels.has(policy.waitingHuman) && !labels.has(policy.blocked) && !labels.has(policy.review);
497
- }
498
- function awaitingResult(receipt) {
499
- return { status: 'awaiting-answer', questionId: receipt.question.questionId, answerPrefix: receipt.question.answerPrefix };
500
- }
501
- function compareDecimal(left, right) {
502
- const normalizedLeft = left.replace(/^0+(?=\d)/u, '');
503
- const normalizedRight = right.replace(/^0+(?=\d)/u, '');
504
- return normalizedLeft.length - normalizedRight.length || normalizedLeft.localeCompare(normalizedRight);
505
- }
506
- function safety(code, evidence = []) {
507
- return { status: 'blocked', kind: 'safety', resumable: false, code, evidence };
508
- }
509
- //# sourceMappingURL=waiting-human-coordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"waiting-human-coordinator.js","sourceRoot":"","sources":["../../../src/v2/waiting-human-coordinator.ts"],"names":[],"mappings":"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"}