@fitlab-ai/agent-infra 0.12.0 → 0.12.2

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 (331) hide show
  1. package/README.md +0 -2
  2. package/README.zh-CN.md +0 -2
  3. package/dist/bin/internal-cli.js +2 -17
  4. package/dist/lib/agent-clients/adapter.js +0 -13
  5. package/dist/lib/agent-clients/adapters/antigravity-cli.js +0 -5
  6. package/dist/lib/agent-clients/adapters/claude-code-credentials.js +0 -17
  7. package/dist/lib/agent-clients/adapters/claude-code.js +0 -9
  8. package/dist/lib/agent-clients/adapters/codex.js +0 -52
  9. package/dist/lib/agent-clients/adapters/opencode.js +0 -5
  10. package/dist/lib/agent-clients/adapters/traecli.js +0 -5
  11. package/dist/lib/agent-clients/config.js +19 -54
  12. package/dist/lib/agent-clients/registry.js +1 -12
  13. package/dist/lib/agent-clients/schema.js +0 -18
  14. package/dist/lib/agent-clients/tokens.js +1 -2
  15. package/dist/lib/agent-clients/types.js +0 -1
  16. package/dist/lib/decide.js +2 -0
  17. package/dist/lib/git/worktree-identity.js +1 -9
  18. package/dist/lib/internal/agent-client.js +2 -62
  19. package/dist/lib/internal/cli-route-inventory.js +1 -5
  20. package/dist/lib/internal/manual-validation.js +29 -27
  21. package/dist/lib/internal/platform-comment.js +56 -7
  22. package/dist/lib/internal/task-create.js +1 -1
  23. package/dist/lib/internal/task-event.js +1 -8
  24. package/dist/lib/internal/task-finalization.js +0 -1
  25. package/dist/lib/internal/task-lifecycle.js +2 -2
  26. package/dist/lib/internal/task-operation-registry.js +4 -20
  27. package/dist/lib/internal/task-review.js +4 -4
  28. package/dist/lib/platform/comment-safety.js +1 -7
  29. package/dist/lib/platform/in-label-sync.js +1 -14
  30. package/dist/lib/platform/issue-comments.js +373 -282
  31. package/dist/lib/platform/issue-summary-content.js +112 -0
  32. package/dist/lib/platform/issues.js +1 -1
  33. package/dist/lib/platform/operation-coordinator.js +4 -2
  34. package/dist/lib/platform/pr-change-report.js +176 -30
  35. package/dist/lib/platform/pr-checks.js +2 -8
  36. package/dist/lib/platform/pr-summary-content.js +54 -0
  37. package/dist/lib/platform/pr-summary.js +318 -284
  38. package/dist/lib/platform/provider-validation.js +0 -20
  39. package/dist/lib/platform/pull-requests.js +73 -84
  40. package/dist/lib/platform/releases.js +1 -43
  41. package/dist/lib/platform/summary-content-pipeline.js +18 -0
  42. package/dist/lib/platform/verification-required.js +0 -2
  43. package/dist/lib/platform/verification-sync.js +1 -79
  44. package/dist/lib/process-data/normalize.js +1 -185
  45. package/dist/lib/process-data/privacy.js +1 -16
  46. package/dist/lib/process-data/sources.js +2 -279
  47. package/dist/lib/render.js +0 -12
  48. package/dist/lib/run/index.js +15 -10
  49. package/dist/lib/run/skills.js +0 -3
  50. package/dist/lib/sandbox/commands/create.js +40 -53
  51. package/dist/lib/sandbox/commands/list-running.js +0 -18
  52. package/dist/lib/sandbox/commands/start.js +7 -8
  53. package/dist/lib/sandbox/constants.js +0 -6
  54. package/dist/lib/sandbox/control/client.js +0 -1
  55. package/dist/lib/sandbox/control/container-identity.js +1 -16
  56. package/dist/lib/sandbox/control/executor.js +0 -4
  57. package/dist/lib/sandbox/control/identity-sentinel.js +0 -7
  58. package/dist/lib/sandbox/control/lifecycle.js +21 -37
  59. package/dist/lib/sandbox/control/native-file-lock.js +0 -3
  60. package/dist/lib/sandbox/control/server.js +18 -38
  61. package/dist/lib/sandbox/control/state.js +1 -9
  62. package/dist/lib/sandbox/dockerfile.js +0 -6
  63. package/dist/lib/sandbox/engine.js +0 -14
  64. package/dist/lib/sandbox/engines/docker-exact-discovery.js +1 -4
  65. package/dist/lib/sandbox/engines/wsl2-paths.js +0 -3
  66. package/dist/lib/sandbox/recovery.js +24 -26
  67. package/dist/lib/sandbox/removal.js +67 -518
  68. package/dist/lib/sandbox/task-resolver.js +0 -41
  69. package/dist/lib/sandbox/tools.js +1 -4
  70. package/dist/lib/sandbox/workspace-view.js +1 -2
  71. package/dist/lib/server/display.js +0 -6
  72. package/dist/lib/task/activity-intent.js +45 -40
  73. package/dist/lib/task/activity-log.js +9 -16
  74. package/dist/lib/task/artifact-command.js +1 -1
  75. package/dist/lib/task/artifact-lifecycle.js +61 -63
  76. package/dist/lib/task/artifact-name.js +0 -6
  77. package/dist/lib/task/artifact-operations.js +3 -3
  78. package/dist/lib/task/capabilities.js +4 -5
  79. package/dist/lib/task/commands/log.js +0 -6
  80. package/dist/lib/task/commands/status.js +17 -60
  81. package/dist/lib/task/commit-operation.js +28 -39
  82. package/dist/lib/task/completion-facts.js +56 -43
  83. package/dist/lib/task/control-authority.js +23 -256
  84. package/dist/lib/task/control-recovery.js +3 -5
  85. package/dist/lib/task/create.js +2 -4
  86. package/dist/lib/task/decision-intents.js +8 -9
  87. package/dist/lib/task/delivery-target.js +1 -40
  88. package/dist/lib/task/events.js +84 -107
  89. package/dist/lib/task/finalization.js +60 -15
  90. package/dist/lib/task/ledger-intents.js +1 -1
  91. package/dist/lib/task/lifecycle-execution.js +38 -33
  92. package/dist/lib/task/lifecycle.js +49 -41
  93. package/dist/lib/task/local-artifact-finalization.js +1 -4
  94. package/dist/lib/task/manual-validation-evidence.js +1 -37
  95. package/dist/lib/task/platform-operation-recovery.js +151 -108
  96. package/dist/lib/task/pr-delivery-fact.js +2 -5
  97. package/dist/lib/task/qualification-confirmation.js +5 -7
  98. package/dist/lib/task/resolve-ref.js +1 -25
  99. package/dist/lib/task/review-command.js +2 -2
  100. package/dist/lib/task/review-finalization.js +1 -21
  101. package/dist/lib/task/review-fingerprint.js +0 -4
  102. package/dist/lib/task/secure-fs.js +0 -56
  103. package/dist/lib/task/short-id.js +1 -39
  104. package/dist/lib/task/skill-scope.js +0 -1
  105. package/dist/lib/task/verification-engine.js +58 -282
  106. package/dist/lib/task/verification.js +6 -3
  107. package/dist/lib/task/write.js +11 -1
  108. package/lib/agent-clients/adapter.ts +0 -76
  109. package/lib/agent-clients/adapters/antigravity-cli.ts +0 -5
  110. package/lib/agent-clients/adapters/claude-code-credentials.ts +0 -19
  111. package/lib/agent-clients/adapters/claude-code.ts +0 -9
  112. package/lib/agent-clients/adapters/codex.ts +0 -56
  113. package/lib/agent-clients/adapters/opencode.ts +0 -5
  114. package/lib/agent-clients/adapters/traecli.ts +0 -5
  115. package/lib/agent-clients/config.ts +20 -61
  116. package/lib/agent-clients/registry.ts +1 -34
  117. package/lib/agent-clients/schema.ts +0 -18
  118. package/lib/agent-clients/tokens.ts +1 -2
  119. package/lib/agent-clients/types.ts +0 -15
  120. package/lib/decide.ts +1 -0
  121. package/lib/git/worktree-identity.ts +0 -10
  122. package/lib/internal/agent-client.ts +2 -70
  123. package/lib/internal/cli-route-inventory.ts +1 -4
  124. package/lib/internal/manual-validation.ts +28 -27
  125. package/lib/internal/platform-comment.ts +46 -4
  126. package/lib/internal/task-create.ts +0 -1
  127. package/lib/internal/task-event.ts +1 -5
  128. package/lib/internal/task-finalization.ts +0 -1
  129. package/lib/internal/task-lifecycle.ts +3 -5
  130. package/lib/internal/task-operation-registry.ts +3 -19
  131. package/lib/internal/task-review.ts +4 -4
  132. package/lib/platform/comment-safety.ts +0 -10
  133. package/lib/platform/github-provider.ts +0 -2
  134. package/lib/platform/in-label-sync.ts +0 -16
  135. package/lib/platform/issue-comments.ts +478 -301
  136. package/lib/platform/issue-summary-content.ts +132 -0
  137. package/lib/platform/issues.ts +0 -2
  138. package/lib/platform/operation-coordinator.ts +4 -2
  139. package/lib/platform/pr-change-report.ts +165 -25
  140. package/lib/platform/pr-checks.ts +1 -10
  141. package/lib/platform/pr-review.ts +1 -1
  142. package/lib/platform/pr-summary-content.ts +60 -0
  143. package/lib/platform/pr-summary.ts +364 -257
  144. package/lib/platform/provider-bridge.ts +0 -1
  145. package/lib/platform/provider-loader.ts +1 -5
  146. package/lib/platform/provider-validation.ts +1 -49
  147. package/lib/platform/pull-requests.ts +64 -99
  148. package/lib/platform/releases.ts +1 -40
  149. package/lib/platform/summary-content-pipeline.ts +23 -0
  150. package/lib/platform/verification-required.ts +0 -2
  151. package/lib/platform/verification-sync.ts +0 -94
  152. package/lib/process-data/normalize.ts +1 -186
  153. package/lib/process-data/privacy.ts +2 -19
  154. package/lib/process-data/sources.ts +3 -283
  155. package/lib/render.ts +0 -15
  156. package/lib/run/index.ts +13 -7
  157. package/lib/run/skills.ts +0 -4
  158. package/lib/sandbox/commands/create.ts +37 -74
  159. package/lib/sandbox/commands/list-running.ts +0 -19
  160. package/lib/sandbox/commands/start.ts +7 -10
  161. package/lib/sandbox/constants.ts +0 -8
  162. package/lib/sandbox/control/client.ts +0 -1
  163. package/lib/sandbox/control/container-identity.ts +1 -16
  164. package/lib/sandbox/control/executor.ts +1 -5
  165. package/lib/sandbox/control/identity-sentinel.ts +0 -8
  166. package/lib/sandbox/control/lifecycle.ts +18 -51
  167. package/lib/sandbox/control/native-file-lock.ts +0 -8
  168. package/lib/sandbox/control/protocol.ts +0 -2
  169. package/lib/sandbox/control/server.ts +13 -39
  170. package/lib/sandbox/control/state.ts +1 -10
  171. package/lib/sandbox/dockerfile.ts +0 -11
  172. package/lib/sandbox/engine.ts +0 -17
  173. package/lib/sandbox/engines/docker-exact-discovery.ts +1 -5
  174. package/lib/sandbox/engines/wsl2-paths.ts +0 -4
  175. package/lib/sandbox/recovery.ts +24 -26
  176. package/lib/sandbox/removal.ts +58 -687
  177. package/lib/sandbox/shell.ts +1 -1
  178. package/lib/sandbox/task-resolver.ts +0 -48
  179. package/lib/sandbox/tools.ts +1 -5
  180. package/lib/sandbox/workspace-view.ts +2 -4
  181. package/lib/server/display.ts +0 -14
  182. package/lib/server/process-control.ts +1 -1
  183. package/lib/task/activity-intent.ts +36 -44
  184. package/lib/task/activity-log.ts +9 -22
  185. package/lib/task/artifact-command.ts +1 -1
  186. package/lib/task/artifact-lifecycle.ts +58 -67
  187. package/lib/task/artifact-name.ts +0 -7
  188. package/lib/task/artifact-operations.ts +3 -3
  189. package/lib/task/capabilities.ts +5 -6
  190. package/lib/task/commands/log.ts +0 -7
  191. package/lib/task/commands/status.ts +14 -79
  192. package/lib/task/commit-operation.ts +29 -51
  193. package/lib/task/completion-facts.ts +45 -42
  194. package/lib/task/control-authority.ts +27 -317
  195. package/lib/task/control-recovery.ts +2 -5
  196. package/lib/task/create.ts +2 -5
  197. package/lib/task/decision-intents.ts +5 -5
  198. package/lib/task/delivery-target.ts +0 -40
  199. package/lib/task/events.ts +89 -123
  200. package/lib/task/finalization.ts +52 -15
  201. package/lib/task/ledger-intents.ts +1 -1
  202. package/lib/task/lifecycle-execution.ts +37 -89
  203. package/lib/task/lifecycle.ts +48 -44
  204. package/lib/task/local-artifact-finalization.ts +0 -7
  205. package/lib/task/manual-validation-evidence.ts +1 -47
  206. package/lib/task/platform-operation-recovery.ts +117 -104
  207. package/lib/task/pr-delivery-fact.ts +2 -11
  208. package/lib/task/qualification-confirmation.ts +6 -6
  209. package/lib/task/resolve-ref.ts +0 -23
  210. package/lib/task/review-command.ts +2 -2
  211. package/lib/task/review-finalization.ts +1 -27
  212. package/lib/task/review-fingerprint.ts +0 -8
  213. package/lib/task/secure-fs.ts +0 -42
  214. package/lib/task/short-id.ts +0 -43
  215. package/lib/task/skill-scope.ts +0 -1
  216. package/lib/task/verification-engine.ts +56 -287
  217. package/lib/task/verification.ts +5 -5
  218. package/lib/task/write.ts +12 -1
  219. package/package.json +2 -2
  220. package/templates/.agents/README.en.md +1 -3
  221. package/templates/.agents/README.zh-CN.md +0 -2
  222. package/templates/.agents/rules/README.en.md +0 -1
  223. package/templates/.agents/rules/README.zh-CN.md +0 -1
  224. package/templates/.agents/rules/commit-and-pr.en.md +1 -1
  225. package/templates/.agents/rules/commit-and-pr.zh-CN.md +1 -1
  226. package/templates/.agents/rules/no-mid-flow-questions.en.md +0 -10
  227. package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +0 -10
  228. package/templates/.agents/rules/pr-sync.en.md +4 -2
  229. package/templates/.agents/rules/pr-sync.zh-CN.md +6 -9
  230. package/templates/.agents/rules/task-management.en.md +3 -3
  231. package/templates/.agents/rules/task-management.zh-CN.md +3 -3
  232. package/templates/.agents/skills/analyze-task/SKILL.en.md +3 -3
  233. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +3 -3
  234. package/templates/.agents/skills/cancel-task/SKILL.en.md +2 -2
  235. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +2 -2
  236. package/templates/.agents/skills/code-task/SKILL.en.md +2 -2
  237. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +4 -4
  238. package/templates/.agents/skills/commit/SKILL.en.md +2 -2
  239. package/templates/.agents/skills/commit/SKILL.zh-CN.md +2 -2
  240. package/templates/.agents/skills/commit/reference/commit-orchestration.en.md +6 -6
  241. package/templates/.agents/skills/commit/reference/commit-orchestration.zh-CN.md +6 -6
  242. package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +1 -1
  243. package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +1 -1
  244. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +2 -2
  245. package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +2 -2
  246. package/templates/.agents/skills/complete-task/SKILL.en.md +10 -25
  247. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +11 -26
  248. package/templates/.agents/skills/create-pr/SKILL.en.md +1 -1
  249. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +1 -1
  250. package/templates/.agents/skills/create-pr/reference/change-report.en.md +9 -2
  251. package/templates/.agents/skills/create-pr/reference/change-report.zh-CN.md +9 -2
  252. package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +2 -2
  253. package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +2 -2
  254. package/templates/.agents/skills/create-task/SKILL.en.md +0 -18
  255. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +0 -18
  256. package/templates/.agents/skills/plan-task/SKILL.en.md +2 -2
  257. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +2 -2
  258. package/templates/.agents/skills/review-analysis/SKILL.en.md +3 -3
  259. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +3 -3
  260. package/templates/.agents/skills/review-code/SKILL.en.md +5 -5
  261. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +5 -5
  262. package/templates/.agents/skills/review-plan/SKILL.en.md +3 -3
  263. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +3 -3
  264. package/templates/.agents/skills/review-pr/SKILL.en.md +4 -4
  265. package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +4 -4
  266. package/templates/.agents/skills/run-manual-validation/SKILL.en.md +1 -1
  267. package/templates/.agents/skills/run-manual-validation/SKILL.zh-CN.md +1 -1
  268. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +3 -75
  269. package/templates/.agents/skills/watch-pr/SKILL.en.md +1 -1
  270. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +1 -1
  271. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +3 -3
  272. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +3 -3
  273. package/templates/.agents/templates/task.en.md +1 -0
  274. package/templates/.agents/templates/task.zh-CN.md +1 -0
  275. package/templates/.claude/settings.json +0 -24
  276. package/templates/.codex/hooks.json +0 -50
  277. package/dist/lib/agent-clients/adapters/codex-lifecycle/app-server.js +0 -582
  278. package/dist/lib/agent-clients/adapters/codex-lifecycle/binding.js +0 -114
  279. package/dist/lib/agent-clients/adapters/codex-lifecycle/build-identity.js +0 -237
  280. package/dist/lib/agent-clients/adapters/codex-lifecycle/cli.js +0 -443
  281. package/dist/lib/agent-clients/adapters/codex-lifecycle/evidence.js +0 -236
  282. package/dist/lib/agent-clients/adapters/codex-lifecycle/recovery.js +0 -292
  283. package/dist/lib/agent-clients/adapters/codex-lifecycle/store.js +0 -267
  284. package/dist/lib/agent-clients/adapters/codex-orchestration.js +0 -466
  285. package/dist/lib/internal/task-orchestration.js +0 -71
  286. package/dist/lib/platform/verification.js +0 -6
  287. package/dist/lib/run/prompt.js +0 -2
  288. package/dist/lib/sandbox/engines/authority.js +0 -289
  289. package/dist/lib/task/delegation-receipts.js +0 -410
  290. package/dist/lib/task/orchestration.js +0 -1233
  291. package/dist/lib/task/verification-checks.js +0 -9
  292. package/dist/lib/task/workspace-snapshot.js +0 -121
  293. package/dist/lifecycle-build-manifest.json +0 -6
  294. package/lib/agent-clients/adapters/codex-lifecycle/app-server.ts +0 -688
  295. package/lib/agent-clients/adapters/codex-lifecycle/binding.ts +0 -147
  296. package/lib/agent-clients/adapters/codex-lifecycle/build-identity.ts +0 -349
  297. package/lib/agent-clients/adapters/codex-lifecycle/cli.ts +0 -506
  298. package/lib/agent-clients/adapters/codex-lifecycle/evidence.ts +0 -385
  299. package/lib/agent-clients/adapters/codex-lifecycle/manifest-files.json +0 -41
  300. package/lib/agent-clients/adapters/codex-lifecycle/recovery.ts +0 -418
  301. package/lib/agent-clients/adapters/codex-lifecycle/store.ts +0 -354
  302. package/lib/agent-clients/adapters/codex-orchestration.ts +0 -630
  303. package/lib/internal/task-orchestration.ts +0 -74
  304. package/lib/platform/verification.ts +0 -11
  305. package/lib/run/prompt.ts +0 -1
  306. package/lib/sandbox/engines/authority.ts +0 -365
  307. package/lib/task/delegation-receipts.ts +0 -547
  308. package/lib/task/orchestration.ts +0 -1651
  309. package/lib/task/verification-checks.ts +0 -10
  310. package/lib/task/workspace-snapshot.ts +0 -144
  311. package/templates/.agents/hooks/lifecycle-delegation.js +0 -140
  312. package/templates/.agents/rules/lifecycle-orchestration.en.md +0 -44
  313. package/templates/.agents/rules/lifecycle-orchestration.zh-CN.md +0 -44
  314. package/templates/.agents/skills/run-task/SKILL.en.md +0 -29
  315. package/templates/.agents/skills/run-task/SKILL.zh-CN.md +0 -29
  316. package/templates/.agents/skills/run-task/config/verify.en.json +0 -10
  317. package/templates/.agents/skills/run-task/config/verify.zh-CN.json +0 -10
  318. package/templates/.agents/skills/run-task/reference/host-validation.en.md +0 -24
  319. package/templates/.agents/skills/run-task/reference/host-validation.zh-CN.md +0 -24
  320. package/templates/.claude/agents/agent-infra-lifecycle-executor.en.md +0 -6
  321. package/templates/.claude/agents/agent-infra-lifecycle-executor.zh-CN.md +0 -6
  322. package/templates/.claude/agents/agent-infra-lifecycle-reviewer.en.md +0 -6
  323. package/templates/.claude/agents/agent-infra-lifecycle-reviewer.zh-CN.md +0 -6
  324. package/templates/.claude/commands/run-task.en.md +0 -8
  325. package/templates/.claude/commands/run-task.zh-CN.md +0 -8
  326. package/templates/.codex/agents/agent-infra-lifecycle-executor.en.toml +0 -3
  327. package/templates/.codex/agents/agent-infra-lifecycle-executor.zh-CN.toml +0 -3
  328. package/templates/.codex/agents/agent-infra-lifecycle-reviewer.en.toml +0 -3
  329. package/templates/.codex/agents/agent-infra-lifecycle-reviewer.zh-CN.toml +0 -3
  330. package/templates/.opencode/commands/run-task.en.md +0 -11
  331. package/templates/.opencode/commands/run-task.zh-CN.md +0 -11
@@ -1,466 +0,0 @@
1
- import { preflightCodexLifecycleEvidence, resolveCodexSpawnedChild, resolveCodexTerminal, resolveCodexThread } from './codex-lifecycle/app-server.js';
2
- import { createCodexLifecycleStore } from './codex-lifecycle/store.js';
3
- import { computeLifecycleBuildIdentity, } from './codex-lifecycle/build-identity.js';
4
- import { resolveTaskRef } from '../../task/resolve-ref.js';
5
- import { activateMatchingOrchestrationDelegation, hasActivatableOrchestrationDelegation, hasSealableOrchestrationDelegation, OrchestrationStateError, pauseMatchingOrchestrationDelegation, prepareOrchestrationDelegation, reconcileMatchingOrchestrationDelegation, readDelegationAdapterEvidence, readRun, sealMatchingOrchestrationDelegation } from '../../task/orchestration.js';
6
- import { managedDelegationRole } from '../../task/delegation-receipts.js';
7
- import { encodeCodexLifecycleBinding, parseCodexLifecycleBinding, verifyCodexLifecycleTaskBinding } from './codex-lifecycle/binding.js';
8
- import { reduceCodexLifecycleEvent } from './codex-lifecycle/evidence.js';
9
- function coreOptions(options) {
10
- return {
11
- ...options.orchestrationOptions,
12
- repoRoot: options.repoRoot ?? options.orchestrationOptions?.repoRoot,
13
- taskId: options.orchestrationOptions?.taskId ?? options.store?.taskId ?? undefined
14
- };
15
- }
16
- function taskRunMatchesReceipt(run, binding, nativeAgent) {
17
- const receipt = run?.pendingDelegation;
18
- const role = nativeAgent.endsWith('reviewer') ? 'reviewer' : 'executor';
19
- return run?.status === 'running'
20
- && receipt?.runId === binding.runId
21
- && receipt.id === binding.receiptId
22
- && receipt.client === 'codex'
23
- && receipt.role === role;
24
- }
25
- function recordMatchesTaskReceipt(childThreadId, options) {
26
- const store = requiredStore(options);
27
- let record;
28
- try {
29
- record = store.read(childThreadId);
30
- }
31
- catch (error) {
32
- throw new Error(`CODEX_LIFECYCLE_TASK_BINDING_MISMATCH: ${error instanceof Error ? error.message : String(error)}`);
33
- }
34
- const binding = record.taskBinding;
35
- if (!binding)
36
- throw new Error('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH: lifecycle record has no receipt binding');
37
- const repoRoot = options.repoRoot ?? options.orchestrationOptions?.repoRoot ?? process.cwd();
38
- const resolved = resolveTaskRef(binding.taskId, { repoRoot });
39
- if (!resolved.ok)
40
- throw new Error(`${resolved.code}: ${resolved.message}`);
41
- const run = readRun(resolved.taskDir);
42
- const nativeAgent = record.state.startEvidence?.nativeAgent ?? record.state.spawn?.nativeAgent ?? '';
43
- if (!taskRunMatchesReceipt(run, binding, nativeAgent)) {
44
- throw new Error('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH: lifecycle record does not match the current pending task receipt');
45
- }
46
- const receipt = run.pendingDelegation;
47
- return { store, record, binding, resolved, run, receipt };
48
- }
49
- function sameTaskReceipt(left, right) {
50
- return left.runId === right.runId && left.id === right.id;
51
- }
52
- function sameLifecycleRevision(left, right) {
53
- return left.revision === right.revision
54
- && sameTaskBinding(left.taskBinding, right.taskBinding);
55
- }
56
- function sameTaskBinding(left, right) {
57
- return left?.runId === right?.runId
58
- && left?.receiptId === right?.receiptId;
59
- }
60
- function isBindingFailure(message) {
61
- return /CODEX_LIFECYCLE_TASK_BINDING_MISMATCH|CODEX_EVIDENCE_(?:IDENTITY_MISMATCH|PARENT_MISMATCH|REPLAY_CONFLICT)|task binding|identity mismatch|ambiguous active children/iu.test(message);
62
- }
63
- function codexSealFailure(error, options, source) {
64
- if (error instanceof OrchestrationStateError)
65
- return bridgeFailure(error.code, error.message);
66
- const message = error instanceof Error ? error.message : String(error);
67
- if (message === 'CODEX_TURN_NOT_TERMINAL') {
68
- return source === 'parent'
69
- ? bridgeFailure('ORCHESTRATION_DELEGATION_MISSING', 'The matching Codex child has not completed')
70
- : pauseBridge('ORCHESTRATION_CODEX_STOP_FAILED', message, options);
71
- }
72
- if (isBindingFailure(message))
73
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', message);
74
- return pauseBridge('ORCHESTRATION_CODEX_STOP_FAILED', message, options);
75
- }
76
- function sameBoundLifecycleRecord(bound, current) {
77
- return sameTaskReceipt(bound.receipt, current.receipt)
78
- && sameLifecycleRevision(bound.record, current.record);
79
- }
80
- function candidateActivationState(state, events) {
81
- return events.reduce((current, event) => reduceCodexLifecycleEvent(current, event), state);
82
- }
83
- function candidateActivationFailure(state, options) {
84
- if (state.status === 'invalid') {
85
- return bridgeFailure(state.error?.code ?? 'CODEX_EVIDENCE_IDENTITY_MISMATCH', state.error?.message ?? 'Codex lifecycle identity does not match');
86
- }
87
- if (state.status !== 'start-ready' || !state.startEvidence) {
88
- return pauseBridge('ORCHESTRATION_CODEX_START_EVIDENCE_INVALID', 'Codex lifecycle start evidence is not ready', options);
89
- }
90
- return null;
91
- }
92
- async function collectActivationEvidence(childThreadId, options, bound) {
93
- const resolved = await (options.resolveThread ?? resolveCodexThread)(childThreadId);
94
- const current = recordMatchesTaskReceipt(childThreadId, options);
95
- if (!sameBoundLifecycleRecord(bound, current)) {
96
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'task receipt or lifecycle revision changed while resolving Codex child evidence');
97
- }
98
- const candidateEvents = [resolved.resolution.thread, ...resolved.reroutes, resolved.resolution.settings];
99
- const candidateState = candidateActivationState(bound.record.state, candidateEvents);
100
- const candidateFailure = candidateActivationFailure(candidateState, options);
101
- if (candidateFailure)
102
- return candidateFailure;
103
- const evidence = candidateState.startEvidence;
104
- const repoRoot = options.repoRoot ?? process.cwd();
105
- const preflight = await (options.preflight ?? preflightCodexLifecycleEvidence)(repoRoot, {
106
- sessionId: evidence.parentThreadId,
107
- turnId: evidence.parentTurnId,
108
- toolUseId: evidence.spawnToolUseId
109
- });
110
- const afterPreflight = recordMatchesTaskReceipt(childThreadId, options);
111
- if (!sameBoundLifecycleRecord(bound, afterPreflight)) {
112
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'task receipt or lifecycle revision changed while validating Codex host evidence');
113
- }
114
- return { preflight, events: candidateEvents, evidence };
115
- }
116
- function applyCollectedActivationEvidence(childThreadId, options, store, bound, events) {
117
- const current = recordMatchesTaskReceipt(childThreadId, options);
118
- if (!sameBoundLifecycleRecord(bound, current)) {
119
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'task receipt or lifecycle revision changed before Codex activation');
120
- }
121
- for (const event of events)
122
- store.apply(event);
123
- const record = store.read(childThreadId);
124
- return record.state.status === 'start-ready' && record.state.startEvidence
125
- ? record
126
- : bridgeFailure('CODEX_EVIDENCE_IDENTITY_MISMATCH', 'Codex lifecycle identity changed before activation');
127
- }
128
- function bridgeFailure(code, message) {
129
- return {
130
- status: 'failed', changed: false, taskId: null, run: null, next: null,
131
- error: { code, message }
132
- };
133
- }
134
- function pauseBridge(code, message, options) {
135
- const paused = pauseMatchingOrchestrationDelegation('codex', code, message, coreOptions(options));
136
- return paused.error?.code === 'ORCHESTRATION_DELEGATION_MISSING'
137
- ? bridgeFailure(code, message)
138
- : paused;
139
- }
140
- function requiredStore(options) {
141
- if (!options.store)
142
- throw new Error('Codex lifecycle store is required for orchestration bridge events');
143
- return options.store;
144
- }
145
- async function prepareCodexOrchestrationDelegation(taskRef, input, options = {}) {
146
- if (input.client !== 'codex')
147
- return prepareOrchestrationDelegation(taskRef, input, coreOptions(options));
148
- try {
149
- const repoRoot = options.repoRoot ?? process.cwd();
150
- const resolved = resolveTaskRef(taskRef, { repoRoot });
151
- if (!resolved.ok)
152
- return bridgeFailure(resolved.code, resolved.message);
153
- await (options.preflight ?? preflightCodexLifecycleEvidence)(repoRoot, undefined, resolved.taskId);
154
- const prepared = prepareOrchestrationDelegation(taskRef, input, coreOptions(options));
155
- const receipt = prepared.run?.pendingDelegation;
156
- if (prepared.status !== 'running' || !receipt)
157
- return prepared;
158
- return Object.freeze({
159
- ...prepared,
160
- adapterContext: encodeCodexLifecycleBinding({
161
- taskId: receipt.taskId,
162
- runId: receipt.runId,
163
- receiptId: receipt.id
164
- })
165
- });
166
- }
167
- catch (error) {
168
- if (error instanceof OrchestrationStateError)
169
- return bridgeFailure(error.code, error.message);
170
- return bridgeFailure('ORCHESTRATION_CLIENT_PREFLIGHT_FAILED', error instanceof Error ? error.message : String(error));
171
- }
172
- }
173
- async function activateCodexOrchestrationDelegation(childThreadId, options = {}) {
174
- try {
175
- const store = requiredStore(options);
176
- const bound = recordMatchesTaskReceipt(childThreadId, options);
177
- if (!['prepared', 'activated', 'stage-completed'].includes(bound.receipt.status)) {
178
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'lifecycle task receipt is not in an activatable state');
179
- }
180
- if (!hasActivatableOrchestrationDelegation('codex', childThreadId, coreOptions(options))) {
181
- return bridgeFailure('ORCHESTRATION_DELEGATION_MISSING', 'No matching Codex delegation is active');
182
- }
183
- const activationEvidence = await collectActivationEvidence(childThreadId, options, bound);
184
- if ('status' in activationEvidence)
185
- return activationEvidence;
186
- const { evidence, events, preflight } = activationEvidence;
187
- const repoRoot = options.repoRoot ?? process.cwd();
188
- const record = applyCollectedActivationEvidence(childThreadId, options, store, bound, events);
189
- if ('status' in record)
190
- return record;
191
- const buildIdentity = options.buildIdentity ?? computeLifecycleBuildIdentity(repoRoot);
192
- const storedAdapterEvidence = readDelegationAdapterEvidence(bound.receipt.taskId, bound.receipt.id, 'codex', coreOptions(options));
193
- const adapterState = typeof storedAdapterEvidence === 'object' && storedAdapterEvidence !== null && !Array.isArray(storedAdapterEvidence)
194
- ? storedAdapterEvidence
195
- : {};
196
- const activated = activateMatchingOrchestrationDelegation('codex', {
197
- nativeAgent: evidence.nativeAgent,
198
- childId: evidence.childThreadId,
199
- parentId: evidence.parentThreadId,
200
- spawnMode: evidence.spawnMode,
201
- actualModel: evidence.actualModel.value,
202
- actualReasoningEffort: evidence.actualReasoningEffort.value,
203
- ...(evidence.modelFallbackReason ? { modelFallbackReason: evidence.modelFallbackReason } : {}),
204
- ...(evidence.reasoningEffortFallbackReason
205
- ? { reasoningEffortFallbackReason: evidence.reasoningEffortFallbackReason }
206
- : {}),
207
- clientEvidence: {
208
- ...adapterState,
209
- activationEvidence: {
210
- kind: 'codex-lifecycle-v2',
211
- hookDefinitionHash: evidence.hookDefinitionHash,
212
- startRevision: record.revision,
213
- ...buildIdentity,
214
- ...preflight.hookProvenance,
215
- capabilitySessionId: evidence.parentThreadId,
216
- capabilityTurnId: evidence.parentTurnId,
217
- spawnToolUseId: evidence.spawnToolUseId,
218
- spawnObservedAt: record.spawnObservedAt ?? undefined
219
- }
220
- }
221
- }, coreOptions(options));
222
- return activated;
223
- }
224
- catch (error) {
225
- if (error instanceof OrchestrationStateError)
226
- return bridgeFailure(error.code, error.message);
227
- const message = error instanceof Error ? error.message : String(error);
228
- if (isBindingFailure(message)) {
229
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', message);
230
- }
231
- return pauseBridge('ORCHESTRATION_CODEX_START_FAILED', message, options);
232
- }
233
- }
234
- function matchingSpawnRecords(store, binding, spawn) {
235
- return store.findByTaskBinding(binding).filter((record) => record.state.spawn?.sessionId === spawn.sessionId
236
- && record.state.spawn?.turnId === spawn.turnId
237
- && record.state.spawn?.toolUseId === spawn.toolUseId
238
- && record.state.spawn?.nativeAgent === spawn.nativeAgent);
239
- }
240
- function verifySpawnTask(binding, spawn, store, options) {
241
- const resolved = resolveTaskRef(binding.taskId, { repoRoot: options.repoRoot ?? process.cwd() });
242
- if (!resolved.ok)
243
- return bridgeFailure(resolved.code, resolved.message);
244
- const run = readRun(resolved.taskDir);
245
- if (!run)
246
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'Codex task has no current orchestration run');
247
- verifyCodexLifecycleTaskBinding(binding, run, spawn.nativeAgent, {
248
- requestedModel: spawn.requestedModel,
249
- requestedReasoningEffort: spawn.requestedReasoningEffort
250
- });
251
- return { taskDir: resolved.taskDir };
252
- }
253
- async function resolveCurrentSpawnChild(childThreadId, spawn, options) {
254
- const resolved = await (options.resolveThread ?? resolveCodexThread)(childThreadId);
255
- if (resolved.resolution.thread.childThreadId !== childThreadId
256
- || resolved.resolution.thread.parentThreadId !== spawn.sessionId
257
- || resolved.resolution.thread.nativeAgent !== spawn.nativeAgent) {
258
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'resolved Codex child does not match the native spawn identity');
259
- }
260
- return { resolved };
261
- }
262
- async function activateCodexSpawnDelegation(spawn, options = {}) {
263
- try {
264
- const store = requiredStore(options);
265
- const parsed = parseCodexLifecycleBinding(spawn.taskName);
266
- if (!parsed)
267
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISSING', 'Codex spawn task_name has no valid task binding');
268
- const task = verifySpawnTask(parsed.binding, spawn, store, options);
269
- if ('status' in task)
270
- return task;
271
- const candidates = matchingSpawnRecords(store, parsed.binding, spawn);
272
- if (candidates.length !== 1) {
273
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'Codex spawn does not identify one current task lifecycle record');
274
- }
275
- const childThreadId = resolveCodexSpawnedChild(spawn.transcriptPath, spawn);
276
- const current = await resolveCurrentSpawnChild(childThreadId, spawn, options);
277
- if ('status' in current)
278
- return current;
279
- const latestTask = verifySpawnTask(parsed.binding, spawn, store, options);
280
- if ('status' in latestTask)
281
- return latestTask;
282
- const latestCandidates = matchingSpawnRecords(store, parsed.binding, spawn);
283
- if (latestCandidates.length !== 1 || latestCandidates[0].revision !== candidates[0].revision) {
284
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'Codex spawn record changed while resolving its child');
285
- }
286
- store.applyToSpawn({ ...spawn, taskBinding: parsed.binding }, {
287
- type: 'hook-child',
288
- sessionId: spawn.sessionId,
289
- turnId: spawn.turnId,
290
- childThreadId,
291
- parentThreadId: current.resolved.resolution.thread.parentThreadId,
292
- nativeAgent: spawn.nativeAgent,
293
- source: 'parent-rollout'
294
- }, latestCandidates[0].revision);
295
- return activateCodexOrchestrationDelegation(childThreadId, {
296
- ...options,
297
- store,
298
- resolveThread: async () => current.resolved
299
- });
300
- }
301
- catch (error) {
302
- if (error instanceof OrchestrationStateError)
303
- return bridgeFailure(error.code, error.message);
304
- const message = error instanceof Error ? error.message : String(error);
305
- if (/CODEX_LIFECYCLE_TASK_BINDING_MISMATCH|task binding|task_name|identity does not match|does not match the current pending receipt|ambiguous/iu.test(message)) {
306
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', message);
307
- }
308
- return pauseBridge('ORCHESTRATION_CODEX_START_FAILED', message, options);
309
- }
310
- }
311
- async function sealCodexOrchestrationDelegation(childThreadId, options = {}) {
312
- try {
313
- const bound = recordMatchesTaskReceipt(childThreadId, options);
314
- if (!hasSealableOrchestrationDelegation('codex', childThreadId, coreOptions(options))) {
315
- return bridgeFailure('ORCHESTRATION_DELEGATION_MISSING', 'No matching Codex delegation is active');
316
- }
317
- const store = requiredStore(options);
318
- const existing = store.read(childThreadId);
319
- if (!existing.consumer) {
320
- const stopTurnId = existing.state.stop?.turnId;
321
- if (!stopTurnId) {
322
- return pauseBridge('ORCHESTRATION_CODEX_STOP_EVIDENCE_INVALID', 'Codex lifecycle stop hook is not available', options);
323
- }
324
- const terminal = await (options.resolveTerminal ?? resolveCodexTerminal)(childThreadId, stopTurnId);
325
- const current = recordMatchesTaskReceipt(childThreadId, options);
326
- if (!sameTaskReceipt(bound.receipt, current.receipt) || !sameLifecycleRevision(existing, current.record)) {
327
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'task receipt or lifecycle revision changed while resolving Codex terminal evidence');
328
- }
329
- store.apply(terminal);
330
- }
331
- const record = store.read(childThreadId);
332
- const evidence = record.state.stopEvidence;
333
- if (record.state.status !== 'stop-ready' || !evidence || !record.state.startEvidence) {
334
- return pauseBridge('ORCHESTRATION_CODEX_STOP_EVIDENCE_INVALID', 'Codex lifecycle stop evidence is not ready', options);
335
- }
336
- const current = recordMatchesTaskReceipt(childThreadId, options);
337
- const latest = store.read(childThreadId);
338
- if (!sameTaskReceipt(bound.receipt, current.receipt) || !sameLifecycleRevision(record, latest)
339
- || !sameTaskBinding(latest.taskBinding, current.binding)) {
340
- throw new Error('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH: task receipt changed before lifecycle evidence consumption');
341
- }
342
- if (current.receipt.status === 'sealed') {
343
- if (latest.consumer !== current.receipt.id || !latest.consumedAt) {
344
- return pauseBridge('ORCHESTRATION_CODEX_RECONCILIATION_FAILED', 'Codex lifecycle evidence was not consumed by the sealed receipt', options);
345
- }
346
- return reconcileMatchingOrchestrationDelegation('codex', childThreadId, coreOptions(options));
347
- }
348
- return sealMatchingOrchestrationDelegation('codex', { nativeAgent: record.state.startEvidence.nativeAgent, childId: childThreadId }, coreOptions(options), () => {
349
- try {
350
- const consumed = store.consume(childThreadId, current.receipt.id, existing.state.spawn?.hookDefinitionHash, existing.taskBinding ?? undefined);
351
- return consumed.consumer === current.receipt.id && consumed.consumedAt
352
- ? null
353
- : bridgeFailure('ORCHESTRATION_CODEX_RECONCILIATION_FAILED', 'Codex lifecycle evidence was not consumed by the active receipt');
354
- }
355
- catch (error) {
356
- return codexSealFailure(error, options, 'child');
357
- }
358
- });
359
- }
360
- catch (error) {
361
- return codexSealFailure(error, options, 'child');
362
- }
363
- }
364
- function findCurrentParentReceipt(store, repoRoot) {
365
- if (!store.taskId)
366
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISSING', 'parent seal requires a task-scoped lifecycle store');
367
- const resolved = resolveTaskRef(store.taskId, { repoRoot });
368
- if (!resolved.ok)
369
- return bridgeFailure(resolved.code, resolved.message);
370
- const pending = readRun(resolved.taskDir)?.pendingDelegation;
371
- if (!pending || pending.client !== 'codex') {
372
- return bridgeFailure('ORCHESTRATION_DELEGATION_MISSING', 'No matching Codex delegation is active');
373
- }
374
- return { pending };
375
- }
376
- function findParentLifecycleRecord(parentThreadId, store, pending) {
377
- const binding = { taskId: pending.taskId, runId: pending.runId, receiptId: pending.id };
378
- const candidates = store.findByTaskBinding(binding).filter((record) => record.state.startEvidence?.parentThreadId === parentThreadId);
379
- if (!candidates.length)
380
- return bridgeFailure('ORCHESTRATION_DELEGATION_MISSING', 'No matching Codex delegation is active');
381
- if (candidates.length !== 1) {
382
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'parent seal has multiple lifecycle records for the current task receipt');
383
- }
384
- const active = candidates[0];
385
- const start = active.state.startEvidence;
386
- const child = active.state.child;
387
- if (!start || !child || start.childThreadId !== child.childThreadId
388
- || start.parentThreadId !== parentThreadId
389
- || active.state.spawn?.sessionId !== parentThreadId
390
- || active.state.spawn.nativeAgent !== start.nativeAgent
391
- || managedDelegationRole(start.nativeAgent) !== pending.role) {
392
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'parent lifecycle record does not match the current native delegation identity');
393
- }
394
- return { active, start, child };
395
- }
396
- async function collectParentTerminalIfNeeded(active, start, options) {
397
- if (active.state.terminal)
398
- return null;
399
- const resolveTerminal = options.resolveTerminal ?? resolveCodexTerminal;
400
- return active.state.stop
401
- ? resolveTerminal(start.childThreadId, active.state.stop.turnId)
402
- : resolveTerminal(start.childThreadId);
403
- }
404
- function applyParentTerminalCandidate(parentThreadId, repoRoot, store, pending, active, start, child, terminal) {
405
- const latestReceipt = findCurrentParentReceipt(store, repoRoot);
406
- if ('status' in latestReceipt)
407
- return latestReceipt;
408
- if (!sameTaskReceipt(pending, latestReceipt.pending)) {
409
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'task receipt changed while resolving parent terminal evidence');
410
- }
411
- const latestMatch = findParentLifecycleRecord(parentThreadId, store, latestReceipt.pending);
412
- if ('status' in latestMatch)
413
- return latestMatch;
414
- if (!sameLifecycleRevision(active, latestMatch.active)
415
- || !sameTaskBinding(active.taskBinding, latestMatch.active.taskBinding)) {
416
- return bridgeFailure('CODEX_LIFECYCLE_TASK_BINDING_MISMATCH', 'task receipt or lifecycle revision changed while resolving parent terminal evidence');
417
- }
418
- if (terminal)
419
- store.apply(terminal);
420
- if (!store.read(start.childThreadId).state.stop) {
421
- store.apply({
422
- type: 'hook-stop', sessionId: parentThreadId, turnId: child.turnId,
423
- childThreadId: start.childThreadId, nativeAgent: start.nativeAgent, source: 'parent-rollout'
424
- });
425
- }
426
- return null;
427
- }
428
- async function sealCodexParentDelegation(parentThreadId, options = {}) {
429
- try {
430
- const store = requiredStore(options);
431
- const repoRoot = options.repoRoot ?? options.orchestrationOptions?.repoRoot ?? process.cwd();
432
- const current = findCurrentParentReceipt(store, repoRoot);
433
- if ('status' in current)
434
- return current;
435
- const pending = current.pending;
436
- const match = findParentLifecycleRecord(parentThreadId, store, pending);
437
- if ('status' in match)
438
- return match;
439
- const { active, start, child } = match;
440
- if (active.consumer)
441
- return sealCodexOrchestrationDelegation(start.childThreadId, options);
442
- const terminal = await collectParentTerminalIfNeeded(active, start, options);
443
- const failure = applyParentTerminalCandidate(parentThreadId, repoRoot, store, pending, active, start, child, terminal);
444
- if (failure)
445
- return failure;
446
- return sealCodexOrchestrationDelegation(start.childThreadId, options);
447
- }
448
- catch (error) {
449
- return codexSealFailure(error, options, 'parent');
450
- }
451
- }
452
- function reconcileCodexOrchestrationDelegation(childThreadId, options = {}) {
453
- try {
454
- const bound = recordMatchesTaskReceipt(childThreadId, options);
455
- const record = requiredStore(options).read(childThreadId);
456
- if (bound.receipt.status !== 'sealed' || record.consumer !== bound.receipt.id || !record.consumedAt) {
457
- return pauseBridge('ORCHESTRATION_CODEX_RECONCILIATION_FAILED', 'Codex lifecycle evidence was not consumed by the sealed receipt', options);
458
- }
459
- }
460
- catch (error) {
461
- return codexSealFailure(error, options, 'child');
462
- }
463
- return reconcileMatchingOrchestrationDelegation('codex', childThreadId, coreOptions(options));
464
- }
465
- export { activateCodexOrchestrationDelegation, activateCodexSpawnDelegation, prepareCodexOrchestrationDelegation, reconcileCodexOrchestrationDelegation, sealCodexParentDelegation, sealCodexOrchestrationDelegation };
466
- //# sourceMappingURL=codex-orchestration.js.map
@@ -1,71 +0,0 @@
1
- import { createDirectHostExecutionContext, dispatchTaskControlOperation, parseTaskControlOperation } from '../task/control-authority.js';
2
- import { OrchestrationStateError } from '../task/orchestration.js';
3
- import { detectRepoRoot } from '../task/resolve-ref.js';
4
- import { ensureInternalHandlerRoute, internalHandlerRoute } from './cli-route-inventory.js';
5
- const USAGE = 'Usage: agent-infra-internal task-orchestration <task-ref|auto> <begin-or-resume|route|prepare|dispatch|await-activation|recover-prepared|hook-start|hook-stop|advance|pause|status> [options]\n';
6
- function usageFailure(message) {
7
- process.stdout.write(`${JSON.stringify({
8
- status: 'failed', changed: false,
9
- error: { code: 'ORCHESTRATION_PAYLOAD_INVALID', message }
10
- })}\n`);
11
- process.stderr.write(USAGE);
12
- process.exitCode = 2;
13
- }
14
- function parseFailure(error) {
15
- const message = error instanceof Error ? error.message : String(error);
16
- return message.replace(/^TASK_CONTROL_OPERATION_INVALID: /u, '');
17
- }
18
- async function taskOrchestration(args = []) {
19
- if (args[0] === '--help' || args[0] === '-h') {
20
- process.stdout.write(USAGE);
21
- return;
22
- }
23
- if (!ensureInternalHandlerRoute('task-orchestration', args))
24
- return;
25
- const route = internalHandlerRoute('task-orchestration', 'status', args[1] ?? '')
26
- ? 'status'
27
- : internalHandlerRoute('task-orchestration', 'progress', args[1] ? 'progress' : '')
28
- ? 'progress'
29
- : '';
30
- if (!route) {
31
- usageFailure('orchestration operation is required');
32
- return;
33
- }
34
- let operation;
35
- try {
36
- operation = parseTaskControlOperation('task-orchestration', args);
37
- }
38
- catch (error) {
39
- usageFailure(parseFailure(error));
40
- return;
41
- }
42
- if (operation.family !== 'task-orchestration') {
43
- usageFailure('orchestration operation is invalid');
44
- return;
45
- }
46
- let repoRoot = process.cwd();
47
- try {
48
- repoRoot = detectRepoRoot();
49
- }
50
- catch { /* domain resolution reports the repository error */ }
51
- try {
52
- const result = await dispatchTaskControlOperation(createDirectHostExecutionContext({
53
- repoRoot,
54
- ...(process.env.AGENT_INFRA_RUNTIME_DIR ? { runtimeDir: process.env.AGENT_INFRA_RUNTIME_DIR } : {})
55
- }), operation);
56
- process.stdout.write(`${JSON.stringify(result)}\n`);
57
- if (result.status === 'failed')
58
- process.exitCode = 1;
59
- }
60
- catch (error) {
61
- if (!(error instanceof OrchestrationStateError))
62
- throw error;
63
- process.stdout.write(`${JSON.stringify({
64
- status: 'failed', changed: false, taskId: error.taskId, run: null, next: null,
65
- error: { code: error.code, message: error.message }
66
- })}\n`);
67
- process.exitCode = 1;
68
- }
69
- }
70
- export { taskOrchestration };
71
- //# sourceMappingURL=task-orchestration.js.map
@@ -1,6 +0,0 @@
1
- import { inspectRequiredChecks } from './pr-checks.js';
2
- function verificationCheck(type, status, message, failType) {
3
- return { type, status, message, ...(failType ? { fail_type: failType } : {}) };
4
- }
5
- export { inspectRequiredChecks, verificationCheck };
6
- //# sourceMappingURL=verification.js.map
@@ -1,2 +0,0 @@
1
- export { renderPrompt } from './tui.js';
2
- //# sourceMappingURL=prompt.js.map