oh-my-super-agent 0.1.0

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 (461) hide show
  1. package/.agents/agents/advisor.md +15 -0
  2. package/.agents/agents/conductor.md +32 -0
  3. package/.agents/agents/dreamer.md +13 -0
  4. package/.agents/agents/executor.md +17 -0
  5. package/.agents/agents/grader.md +15 -0
  6. package/.agents/config/endurance-policy.json +8 -0
  7. package/.agents/config/oms-config.json +119 -0
  8. package/.agents/config/release-policy.json +12 -0
  9. package/.agents/config/secret-scan-policy.json +7 -0
  10. package/.agents/config/verification-plan.json +33 -0
  11. package/.agents/registry.json +11 -0
  12. package/.agents/rules/constitution.md +7 -0
  13. package/.agents/skills/conductor/SKILL.md +23 -0
  14. package/.agents/skills/dream/SKILL.md +14 -0
  15. package/.agents/skills/executor/SKILL.md +13 -0
  16. package/.agents/skills/oms/SKILL.md +52 -0
  17. package/.agents/skills/quota-aware/SKILL.md +12 -0
  18. package/.agents/skills/schedule/SKILL.md +13 -0
  19. package/.agents/skills/team-protocol/SKILL.md +20 -0
  20. package/LICENSE +21 -0
  21. package/README.md +146 -0
  22. package/dist/src/audit/run-ledger.d.ts +183 -0
  23. package/dist/src/audit/run-ledger.js +1655 -0
  24. package/dist/src/audit/run-ledger.js.map +1 -0
  25. package/dist/src/cli.d.ts +61 -0
  26. package/dist/src/cli.js +2096 -0
  27. package/dist/src/cli.js.map +1 -0
  28. package/dist/src/commands/github-queue-probe.d.ts +26 -0
  29. package/dist/src/commands/github-queue-probe.js +51 -0
  30. package/dist/src/commands/github-queue-probe.js.map +1 -0
  31. package/dist/src/commands/trace-fixture.d.ts +20 -0
  32. package/dist/src/commands/trace-fixture.js +72 -0
  33. package/dist/src/commands/trace-fixture.js.map +1 -0
  34. package/dist/src/conductor/activity.d.ts +46 -0
  35. package/dist/src/conductor/activity.js +224 -0
  36. package/dist/src/conductor/activity.js.map +1 -0
  37. package/dist/src/conductor/bridge.d.ts +53 -0
  38. package/dist/src/conductor/bridge.js +652 -0
  39. package/dist/src/conductor/bridge.js.map +1 -0
  40. package/dist/src/conductor/notifications.d.ts +59 -0
  41. package/dist/src/conductor/notifications.js +381 -0
  42. package/dist/src/conductor/notifications.js.map +1 -0
  43. package/dist/src/conductor/recovery.d.ts +29 -0
  44. package/dist/src/conductor/recovery.js +198 -0
  45. package/dist/src/conductor/recovery.js.map +1 -0
  46. package/dist/src/conductor/start.d.ts +73 -0
  47. package/dist/src/conductor/start.js +519 -0
  48. package/dist/src/conductor/start.js.map +1 -0
  49. package/dist/src/conductor/waiter.d.ts +88 -0
  50. package/dist/src/conductor/waiter.js +427 -0
  51. package/dist/src/conductor/waiter.js.map +1 -0
  52. package/dist/src/config.d.ts +9 -0
  53. package/dist/src/config.js +40 -0
  54. package/dist/src/config.js.map +1 -0
  55. package/dist/src/dispatch/advice-source.d.ts +61 -0
  56. package/dist/src/dispatch/advice-source.js +198 -0
  57. package/dist/src/dispatch/advice-source.js.map +1 -0
  58. package/dist/src/dispatch/advice-store.d.ts +41 -0
  59. package/dist/src/dispatch/advice-store.js +201 -0
  60. package/dist/src/dispatch/advice-store.js.map +1 -0
  61. package/dist/src/dispatch/advice.d.ts +34 -0
  62. package/dist/src/dispatch/advice.js +371 -0
  63. package/dist/src/dispatch/advice.js.map +1 -0
  64. package/dist/src/dispatch/authority.d.ts +124 -0
  65. package/dist/src/dispatch/authority.js +1202 -0
  66. package/dist/src/dispatch/authority.js.map +1 -0
  67. package/dist/src/dispatch/intent.d.ts +66 -0
  68. package/dist/src/dispatch/intent.js +71 -0
  69. package/dist/src/dispatch/intent.js.map +1 -0
  70. package/dist/src/dispatch/runtime-authority.d.ts +42 -0
  71. package/dist/src/dispatch/runtime-authority.js +52 -0
  72. package/dist/src/dispatch/runtime-authority.js.map +1 -0
  73. package/dist/src/doctor.d.ts +20 -0
  74. package/dist/src/doctor.js +85 -0
  75. package/dist/src/doctor.js.map +1 -0
  76. package/dist/src/domain/records.d.ts +44 -0
  77. package/dist/src/domain/records.js +138 -0
  78. package/dist/src/domain/records.js.map +1 -0
  79. package/dist/src/domain/role-policy.d.ts +67 -0
  80. package/dist/src/domain/role-policy.js +547 -0
  81. package/dist/src/domain/role-policy.js.map +1 -0
  82. package/dist/src/events/bus.d.ts +32 -0
  83. package/dist/src/events/bus.js +115 -0
  84. package/dist/src/events/bus.js.map +1 -0
  85. package/dist/src/events/kinds.d.ts +126 -0
  86. package/dist/src/events/kinds.js +14 -0
  87. package/dist/src/events/kinds.js.map +1 -0
  88. package/dist/src/evidence/immutable-file.d.ts +12 -0
  89. package/dist/src/evidence/immutable-file.js +141 -0
  90. package/dist/src/evidence/immutable-file.js.map +1 -0
  91. package/dist/src/evidence/store.d.ts +125 -0
  92. package/dist/src/evidence/store.js +1189 -0
  93. package/dist/src/evidence/store.js.map +1 -0
  94. package/dist/src/evidence/verdict.d.ts +17 -0
  95. package/dist/src/evidence/verdict.js +23 -0
  96. package/dist/src/evidence/verdict.js.map +1 -0
  97. package/dist/src/generation/agent.d.ts +5 -0
  98. package/dist/src/generation/agent.js +34 -0
  99. package/dist/src/generation/agent.js.map +1 -0
  100. package/dist/src/generation/frontmatter.d.ts +7 -0
  101. package/dist/src/generation/frontmatter.js +33 -0
  102. package/dist/src/generation/frontmatter.js.map +1 -0
  103. package/dist/src/github/adapter.d.ts +44 -0
  104. package/dist/src/github/adapter.js +592 -0
  105. package/dist/src/github/adapter.js.map +1 -0
  106. package/dist/src/github/dispatch-eligibility.d.ts +9 -0
  107. package/dist/src/github/dispatch-eligibility.js +94 -0
  108. package/dist/src/github/dispatch-eligibility.js.map +1 -0
  109. package/dist/src/github/projector.d.ts +23 -0
  110. package/dist/src/github/projector.js +181 -0
  111. package/dist/src/github/projector.js.map +1 -0
  112. package/dist/src/github/review.d.ts +39 -0
  113. package/dist/src/github/review.js +1450 -0
  114. package/dist/src/github/review.js.map +1 -0
  115. package/dist/src/github/sync.d.ts +21 -0
  116. package/dist/src/github/sync.js +518 -0
  117. package/dist/src/github/sync.js.map +1 -0
  118. package/dist/src/github/types.d.ts +134 -0
  119. package/dist/src/github/types.js +11 -0
  120. package/dist/src/github/types.js.map +1 -0
  121. package/dist/src/goals/artifact-store.d.ts +31 -0
  122. package/dist/src/goals/artifact-store.js +241 -0
  123. package/dist/src/goals/artifact-store.js.map +1 -0
  124. package/dist/src/goals/authority.d.ts +112 -0
  125. package/dist/src/goals/authority.js +621 -0
  126. package/dist/src/goals/authority.js.map +1 -0
  127. package/dist/src/goals/native-snapshot.d.ts +12 -0
  128. package/dist/src/goals/native-snapshot.js +53 -0
  129. package/dist/src/goals/native-snapshot.js.map +1 -0
  130. package/dist/src/goals/runtime-authority.d.ts +7 -0
  131. package/dist/src/goals/runtime-authority.js +20 -0
  132. package/dist/src/goals/runtime-authority.js.map +1 -0
  133. package/dist/src/health/release-assessment.d.ts +11 -0
  134. package/dist/src/health/release-assessment.js +83 -0
  135. package/dist/src/health/release-assessment.js.map +1 -0
  136. package/dist/src/health/release-policy.d.ts +16 -0
  137. package/dist/src/health/release-policy.js +40 -0
  138. package/dist/src/health/release-policy.js.map +1 -0
  139. package/dist/src/hooks/native.d.ts +30 -0
  140. package/dist/src/hooks/native.js +495 -0
  141. package/dist/src/hooks/native.js.map +1 -0
  142. package/dist/src/hooks/provider-runtime.d.ts +55 -0
  143. package/dist/src/hooks/provider-runtime.js +479 -0
  144. package/dist/src/hooks/provider-runtime.js.map +1 -0
  145. package/dist/src/hooks/provider.d.ts +102 -0
  146. package/dist/src/hooks/provider.js +358 -0
  147. package/dist/src/hooks/provider.js.map +1 -0
  148. package/dist/src/live/contact-journal.d.ts +73 -0
  149. package/dist/src/live/contact-journal.js +439 -0
  150. package/dist/src/live/contact-journal.js.map +1 -0
  151. package/dist/src/live-probes/gh-adapter.d.ts +28 -0
  152. package/dist/src/live-probes/gh-adapter.js +188 -0
  153. package/dist/src/live-probes/gh-adapter.js.map +1 -0
  154. package/dist/src/live-probes/github-queue.d.ts +1 -0
  155. package/dist/src/live-probes/github-queue.js +2 -0
  156. package/dist/src/live-probes/github-queue.js.map +1 -0
  157. package/dist/src/notifications/slack-request.d.ts +13 -0
  158. package/dist/src/notifications/slack-request.js +40 -0
  159. package/dist/src/notifications/slack-request.js.map +1 -0
  160. package/dist/src/outbox/processor.d.ts +27 -0
  161. package/dist/src/outbox/processor.js +63 -0
  162. package/dist/src/outbox/processor.js.map +1 -0
  163. package/dist/src/outbox/store.d.ts +158 -0
  164. package/dist/src/outbox/store.js +834 -0
  165. package/dist/src/outbox/store.js.map +1 -0
  166. package/dist/src/package-root.d.ts +1 -0
  167. package/dist/src/package-root.js +26 -0
  168. package/dist/src/package-root.js.map +1 -0
  169. package/dist/src/project.d.ts +12 -0
  170. package/dist/src/project.js +60 -0
  171. package/dist/src/project.js.map +1 -0
  172. package/dist/src/projection/generated-file.d.ts +15 -0
  173. package/dist/src/projection/generated-file.js +72 -0
  174. package/dist/src/projection/generated-file.js.map +1 -0
  175. package/dist/src/projection/project-workspace.d.ts +11 -0
  176. package/dist/src/projection/project-workspace.js +94 -0
  177. package/dist/src/projection/project-workspace.js.map +1 -0
  178. package/dist/src/projection/registry.d.ts +15 -0
  179. package/dist/src/projection/registry.js +59 -0
  180. package/dist/src/projection/registry.js.map +1 -0
  181. package/dist/src/projection/safe-path.d.ts +4 -0
  182. package/dist/src/projection/safe-path.js +106 -0
  183. package/dist/src/projection/safe-path.js.map +1 -0
  184. package/dist/src/providers/claude-interactive.d.ts +38 -0
  185. package/dist/src/providers/claude-interactive.js +287 -0
  186. package/dist/src/providers/claude-interactive.js.map +1 -0
  187. package/dist/src/providers/claude-structured-bridge.d.ts +32 -0
  188. package/dist/src/providers/claude-structured-bridge.js +215 -0
  189. package/dist/src/providers/claude-structured-bridge.js.map +1 -0
  190. package/dist/src/providers/claude-structured-completion.d.ts +23 -0
  191. package/dist/src/providers/claude-structured-completion.js +229 -0
  192. package/dist/src/providers/claude-structured-completion.js.map +1 -0
  193. package/dist/src/providers/claude-structured-pane.d.ts +23 -0
  194. package/dist/src/providers/claude-structured-pane.js +156 -0
  195. package/dist/src/providers/claude-structured-pane.js.map +1 -0
  196. package/dist/src/providers/claude-structured-store.d.ts +48 -0
  197. package/dist/src/providers/claude-structured-store.js +212 -0
  198. package/dist/src/providers/claude-structured-store.js.map +1 -0
  199. package/dist/src/providers/claude-structured.d.ts +56 -0
  200. package/dist/src/providers/claude-structured.js +250 -0
  201. package/dist/src/providers/claude-structured.js.map +1 -0
  202. package/dist/src/providers/codex-exec.d.ts +29 -0
  203. package/dist/src/providers/codex-exec.js +127 -0
  204. package/dist/src/providers/codex-exec.js.map +1 -0
  205. package/dist/src/providers/grading.d.ts +2 -0
  206. package/dist/src/providers/grading.js +20 -0
  207. package/dist/src/providers/grading.js.map +1 -0
  208. package/dist/src/providers/native-dispatch.d.ts +24 -0
  209. package/dist/src/providers/native-dispatch.js +34 -0
  210. package/dist/src/providers/native-dispatch.js.map +1 -0
  211. package/dist/src/providers/preflight.d.ts +65 -0
  212. package/dist/src/providers/preflight.js +256 -0
  213. package/dist/src/providers/preflight.js.map +1 -0
  214. package/dist/src/providers/process.d.ts +18 -0
  215. package/dist/src/providers/process.js +21 -0
  216. package/dist/src/providers/process.js.map +1 -0
  217. package/dist/src/queue/model.d.ts +37 -0
  218. package/dist/src/queue/model.js +51 -0
  219. package/dist/src/queue/model.js.map +1 -0
  220. package/dist/src/queue/service.d.ts +1 -0
  221. package/dist/src/queue/service.js +2 -0
  222. package/dist/src/queue/service.js.map +1 -0
  223. package/dist/src/reflections/store.d.ts +21 -0
  224. package/dist/src/reflections/store.js +60 -0
  225. package/dist/src/reflections/store.js.map +1 -0
  226. package/dist/src/reports/daily-trust.d.ts +11 -0
  227. package/dist/src/reports/daily-trust.js +98 -0
  228. package/dist/src/reports/daily-trust.js.map +1 -0
  229. package/dist/src/runs/controller.d.ts +187 -0
  230. package/dist/src/runs/controller.js +1182 -0
  231. package/dist/src/runs/controller.js.map +1 -0
  232. package/dist/src/runtime/composition.d.ts +9 -0
  233. package/dist/src/runtime/composition.js +35 -0
  234. package/dist/src/runtime/composition.js.map +1 -0
  235. package/dist/src/runtime/endurance-authorities.d.ts +44 -0
  236. package/dist/src/runtime/endurance-authorities.js +101 -0
  237. package/dist/src/runtime/endurance-authorities.js.map +1 -0
  238. package/dist/src/runtime/endurance-policy.d.ts +12 -0
  239. package/dist/src/runtime/endurance-policy.js +13 -0
  240. package/dist/src/runtime/endurance-policy.js.map +1 -0
  241. package/dist/src/runtime/lock.d.ts +63 -0
  242. package/dist/src/runtime/lock.js +577 -0
  243. package/dist/src/runtime/lock.js.map +1 -0
  244. package/dist/src/runtime/process-identity.d.ts +10 -0
  245. package/dist/src/runtime/process-identity.js +43 -0
  246. package/dist/src/runtime/process-identity.js.map +1 -0
  247. package/dist/src/runtime/quota.d.ts +130 -0
  248. package/dist/src/runtime/quota.js +590 -0
  249. package/dist/src/runtime/quota.js.map +1 -0
  250. package/dist/src/runtime/record-store.d.ts +45 -0
  251. package/dist/src/runtime/record-store.js +272 -0
  252. package/dist/src/runtime/record-store.js.map +1 -0
  253. package/dist/src/runtime/schema.d.ts +28 -0
  254. package/dist/src/runtime/schema.js +194 -0
  255. package/dist/src/runtime/schema.js.map +1 -0
  256. package/dist/src/runtime/stable-id.d.ts +3 -0
  257. package/dist/src/runtime/stable-id.js +27 -0
  258. package/dist/src/runtime/stable-id.js.map +1 -0
  259. package/dist/src/runtime/system-clock.d.ts +8 -0
  260. package/dist/src/runtime/system-clock.js +35 -0
  261. package/dist/src/runtime/system-clock.js.map +1 -0
  262. package/dist/src/schedule/service-plan.d.ts +58 -0
  263. package/dist/src/schedule/service-plan.js +327 -0
  264. package/dist/src/schedule/service-plan.js.map +1 -0
  265. package/dist/src/schedule/user-installation.d.ts +62 -0
  266. package/dist/src/schedule/user-installation.js +701 -0
  267. package/dist/src/schedule/user-installation.js.map +1 -0
  268. package/dist/src/schedule/user-plan.d.ts +47 -0
  269. package/dist/src/schedule/user-plan.js +286 -0
  270. package/dist/src/schedule/user-plan.js.map +1 -0
  271. package/dist/src/scheduler/minute.d.ts +31 -0
  272. package/dist/src/scheduler/minute.js +441 -0
  273. package/dist/src/scheduler/minute.js.map +1 -0
  274. package/dist/src/schemas/registry.d.ts +10 -0
  275. package/dist/src/schemas/registry.js +36 -0
  276. package/dist/src/schemas/registry.js.map +1 -0
  277. package/dist/src/security/secret-scan.d.ts +50 -0
  278. package/dist/src/security/secret-scan.js +384 -0
  279. package/dist/src/security/secret-scan.js.map +1 -0
  280. package/dist/src/sessions/registry.d.ts +89 -0
  281. package/dist/src/sessions/registry.js +443 -0
  282. package/dist/src/sessions/registry.js.map +1 -0
  283. package/dist/src/state.d.ts +27 -0
  284. package/dist/src/state.js +235 -0
  285. package/dist/src/state.js.map +1 -0
  286. package/dist/src/status/hud.d.ts +37 -0
  287. package/dist/src/status/hud.js +88 -0
  288. package/dist/src/status/hud.js.map +1 -0
  289. package/dist/src/team/plan.d.ts +31 -0
  290. package/dist/src/team/plan.js +184 -0
  291. package/dist/src/team/plan.js.map +1 -0
  292. package/dist/src/team/projection.d.ts +24 -0
  293. package/dist/src/team/projection.js +79 -0
  294. package/dist/src/team/projection.js.map +1 -0
  295. package/dist/src/tickets/admission.d.ts +34 -0
  296. package/dist/src/tickets/admission.js +169 -0
  297. package/dist/src/tickets/admission.js.map +1 -0
  298. package/dist/src/tickets/materializer.d.ts +1 -0
  299. package/dist/src/tickets/materializer.js +2 -0
  300. package/dist/src/tickets/materializer.js.map +1 -0
  301. package/dist/src/tickets/runtime-authority.d.ts +32 -0
  302. package/dist/src/tickets/runtime-authority.js +46 -0
  303. package/dist/src/tickets/runtime-authority.js.map +1 -0
  304. package/dist/src/tickets/store.d.ts +221 -0
  305. package/dist/src/tickets/store.js +2025 -0
  306. package/dist/src/tickets/store.js.map +1 -0
  307. package/dist/src/tracer/one-ticket.d.ts +58 -0
  308. package/dist/src/tracer/one-ticket.js +578 -0
  309. package/dist/src/tracer/one-ticket.js.map +1 -0
  310. package/dist/src/trust/assessment.d.ts +24 -0
  311. package/dist/src/trust/assessment.js +124 -0
  312. package/dist/src/trust/assessment.js.map +1 -0
  313. package/dist/src/trust/runs.d.ts +13 -0
  314. package/dist/src/trust/runs.js +46 -0
  315. package/dist/src/trust/runs.js.map +1 -0
  316. package/dist/src/types.d.ts +6 -0
  317. package/dist/src/types.js +2 -0
  318. package/dist/src/types.js.map +1 -0
  319. package/dist/src/utils/fs.d.ts +13 -0
  320. package/dist/src/utils/fs.js +188 -0
  321. package/dist/src/utils/fs.js.map +1 -0
  322. package/dist/src/verification/authority.d.ts +28 -0
  323. package/dist/src/verification/authority.js +153 -0
  324. package/dist/src/verification/authority.js.map +1 -0
  325. package/dist/src/verification/grade-source.d.ts +17 -0
  326. package/dist/src/verification/grade-source.js +30 -0
  327. package/dist/src/verification/grade-source.js.map +1 -0
  328. package/dist/src/verification/plan.d.ts +20 -0
  329. package/dist/src/verification/plan.js +128 -0
  330. package/dist/src/verification/plan.js.map +1 -0
  331. package/dist/src/verification/protected-runner.d.ts +50 -0
  332. package/dist/src/verification/protected-runner.js +171 -0
  333. package/dist/src/verification/protected-runner.js.map +1 -0
  334. package/dist/src/verification/result-gate-store.d.ts +72 -0
  335. package/dist/src/verification/result-gate-store.js +193 -0
  336. package/dist/src/verification/result-gate-store.js.map +1 -0
  337. package/dist/src/verification/result-gate.d.ts +41 -0
  338. package/dist/src/verification/result-gate.js +731 -0
  339. package/dist/src/verification/result-gate.js.map +1 -0
  340. package/dist/src/verification/runner.d.ts +38 -0
  341. package/dist/src/verification/runner.js +143 -0
  342. package/dist/src/verification/runner.js.map +1 -0
  343. package/dist/src/verification/sandbox.d.ts +16 -0
  344. package/dist/src/verification/sandbox.js +199 -0
  345. package/dist/src/verification/sandbox.js.map +1 -0
  346. package/dist/src/verify.d.ts +8 -0
  347. package/dist/src/verify.js +35 -0
  348. package/dist/src/verify.js.map +1 -0
  349. package/dist/src/watchdog/reconcile.d.ts +42 -0
  350. package/dist/src/watchdog/reconcile.js +440 -0
  351. package/dist/src/watchdog/reconcile.js.map +1 -0
  352. package/dist/src/workers/bridge.d.ts +35 -0
  353. package/dist/src/workers/bridge.js +426 -0
  354. package/dist/src/workers/bridge.js.map +1 -0
  355. package/dist/src/workers/delivery.d.ts +31 -0
  356. package/dist/src/workers/delivery.js +876 -0
  357. package/dist/src/workers/delivery.js.map +1 -0
  358. package/dist/src/workers/panes.d.ts +32 -0
  359. package/dist/src/workers/panes.js +212 -0
  360. package/dist/src/workers/panes.js.map +1 -0
  361. package/dist/src/workers/registry.d.ts +80 -0
  362. package/dist/src/workers/registry.js +351 -0
  363. package/dist/src/workers/registry.js.map +1 -0
  364. package/dist/src/workers/runtime.d.ts +44 -0
  365. package/dist/src/workers/runtime.js +21 -0
  366. package/dist/src/workers/runtime.js.map +1 -0
  367. package/dist/src/worktrees/manager.d.ts +35 -0
  368. package/dist/src/worktrees/manager.js +315 -0
  369. package/dist/src/worktrees/manager.js.map +1 -0
  370. package/docs/ARCHITECTURE.md +323 -0
  371. package/docs/PLAN.md +216 -0
  372. package/docs/REFERENCES.md +42 -0
  373. package/docs/ROADMAP.md +327 -0
  374. package/docs/SECURITY.md +242 -0
  375. package/docs/adr/0001-tracer-first-file-backed-certification.md +41 -0
  376. package/docs/adr/0002-conductor-first-typed-dispatch.md +102 -0
  377. package/docs/adr/0003-mandatory-pre-dispatch-advice.md +59 -0
  378. package/docs/compatibility/claude-code-2.1.207.md +25 -0
  379. package/loop/contract.md +102 -0
  380. package/package.json +54 -0
  381. package/schemas/advisor-evidence.schema.json +54 -0
  382. package/schemas/advisor-output.schema.json +31 -0
  383. package/schemas/conductor-activity-payload.schema.json +38 -0
  384. package/schemas/conductor-decision.schema.json +29 -0
  385. package/schemas/conductor-dispatch-intent.schema.json +71 -0
  386. package/schemas/conductor-dispatch-preparation.schema.json +46 -0
  387. package/schemas/conductor-dispatch-proposal.schema.json +82 -0
  388. package/schemas/conductor-goal-proposal.schema.json +30 -0
  389. package/schemas/conductor-manage-worker.schema.json +17 -0
  390. package/schemas/conductor-notification-payload.schema.json +39 -0
  391. package/schemas/conductor-process-result.schema.json +14 -0
  392. package/schemas/conductor-route.schema.json +51 -0
  393. package/schemas/conductor-start-team.schema.json +16 -0
  394. package/schemas/conductor-waiter-payload.schema.json +68 -0
  395. package/schemas/deterministic-check.schema.json +107 -0
  396. package/schemas/dispatch-acknowledgement.schema.json +15 -0
  397. package/schemas/dispatch-advice-payload.schema.json +64 -0
  398. package/schemas/dispatch-payload.schema.json +131 -0
  399. package/schemas/dispatch-result.schema.json +28 -0
  400. package/schemas/endurance-policy.schema.json +16 -0
  401. package/schemas/events/dispatch-delivery-requested.schema.json +17 -0
  402. package/schemas/events/github-observed.schema.json +28 -0
  403. package/schemas/events/native-hook-observed.schema.json +35 -0
  404. package/schemas/events/provider-observed.schema.json +64 -0
  405. package/schemas/events/run-heartbeat-due.schema.json +10 -0
  406. package/schemas/events/slack-notification-requested.schema.json +14 -0
  407. package/schemas/events/structured-role-completed.schema.json +54 -0
  408. package/schemas/events/ticket-resume-due.schema.json +28 -0
  409. package/schemas/events/watchdog-lease-expired.schema.json +14 -0
  410. package/schemas/events/watchdog-outbox-stalled.schema.json +12 -0
  411. package/schemas/events/watchdog-session-stalled.schema.json +11 -0
  412. package/schemas/evidence-record.schema.json +37 -0
  413. package/schemas/executor-result.schema.json +17 -0
  414. package/schemas/github-observation.schema.json +33 -0
  415. package/schemas/github-watermark.schema.json +66 -0
  416. package/schemas/goal-artifact.schema.json +19 -0
  417. package/schemas/goal-create-input.schema.json +14 -0
  418. package/schemas/goal-executor-result.schema.json +18 -0
  419. package/schemas/goal-payload.schema.json +95 -0
  420. package/schemas/grader-output.schema.json +33 -0
  421. package/schemas/lease-expiry.schema.json +19 -0
  422. package/schemas/live-disclosure.schema.json +16 -0
  423. package/schemas/live-outcome.schema.json +52 -0
  424. package/schemas/native-goal-snapshot.schema.json +27 -0
  425. package/schemas/provider-observed.schema.json +64 -0
  426. package/schemas/quota-observation.schema.json +72 -0
  427. package/schemas/reflection-evidence.schema.json +61 -0
  428. package/schemas/reflection.schema.json +13 -0
  429. package/schemas/regression-request.schema.json +54 -0
  430. package/schemas/release-assessment.schema.json +34 -0
  431. package/schemas/release-policy.schema.json +30 -0
  432. package/schemas/result-gate-payload.schema.json +244 -0
  433. package/schemas/review-delivery-payload.schema.json +42 -0
  434. package/schemas/role-policy.schema.json +111 -0
  435. package/schemas/run-abort-input.schema.json +11 -0
  436. package/schemas/run-completion-proof.schema.json +62 -0
  437. package/schemas/run-ledger-entry.schema.json +78 -0
  438. package/schemas/run-manifest.schema.json +74 -0
  439. package/schemas/run-start-intent.schema.json +74 -0
  440. package/schemas/runtime-record.schema.json +111 -0
  441. package/schemas/service-plan.schema.json +35 -0
  442. package/schemas/session-payload.schema.json +80 -0
  443. package/schemas/structured-role-read-request.schema.json +14 -0
  444. package/schemas/structured-role-request.schema.json +44 -0
  445. package/schemas/structured-role-result.schema.json +38 -0
  446. package/schemas/structured-role-submit-result.schema.json +15 -0
  447. package/schemas/team-checkpoint.schema.json +42 -0
  448. package/schemas/team-plan.schema.json +30 -0
  449. package/schemas/ticket-content.schema.json +38 -0
  450. package/schemas/ticket-queue-payload.schema.json +191 -0
  451. package/schemas/trust-report.schema.json +68 -0
  452. package/schemas/trust-run.schema.json +47 -0
  453. package/schemas/ultragoal-checkpoint.schema.json +49 -0
  454. package/schemas/user-schedule-installation-v1.schema.json +32 -0
  455. package/schemas/user-schedule-installation.schema.json +38 -0
  456. package/schemas/user-schedule-plan.schema.json +39 -0
  457. package/schemas/verification-plan-evidence.schema.json +37 -0
  458. package/schemas/worker-acknowledge-dispatch.schema.json +12 -0
  459. package/schemas/worker-payload.schema.json +47 -0
  460. package/schemas/worker-read-dispatch.schema.json +11 -0
  461. package/schemas/worker-record-dispatch-result.schema.json +14 -0
@@ -0,0 +1,479 @@
1
+ import { assertConductorNotificationStore, } from "../conductor/notifications.js";
2
+ import { assertDispatchAuthority, } from "../dispatch/authority.js";
3
+ import { assertRuntimeEventBus, } from "../events/bus.js";
4
+ import { assertOutboxProcessor, } from "../outbox/processor.js";
5
+ import { assertOutboxStore, } from "../outbox/store.js";
6
+ import { canonicalTimestamp } from "../queue/model.js";
7
+ import { loadEndurancePolicy } from "../runtime/endurance-policy.js";
8
+ import { createStableId } from "../runtime/stable-id.js";
9
+ import { assertSessionRegistry, } from "../sessions/registry.js";
10
+ import { assertWorkerRegistry, } from "../workers/registry.js";
11
+ import { parseProviderObservation, projectProviderObservation, publishProviderObservations, reissueProviderObservationOccurrence, } from "./provider.js";
12
+ export const PROVIDER_EVENT_PROJECTOR = "provider-event-projector";
13
+ export function createDurableProviderBindingResolver(options) {
14
+ assertDispatchAuthority(options.dispatch);
15
+ assertWorkerRegistry(options.workers);
16
+ assertSessionRegistry(options.sessions);
17
+ const provider = options.provider;
18
+ if (provider !== "claude" && provider !== "codex")
19
+ throw new Error("invalid provider binding provider");
20
+ const dispatches = options.dispatch;
21
+ const workers = options.workers;
22
+ const sessions = options.sessions;
23
+ const tickets = options.tickets;
24
+ if (typeof tickets?.read !== "function")
25
+ throw new Error("provider binding requires a ticket lifecycle authority");
26
+ return Object.freeze({
27
+ resolve(input) {
28
+ if (input.provider !== provider)
29
+ throw new Error("provider binding resolver was used for another provider");
30
+ const dispatch = dispatches.read(input.dispatch_id);
31
+ const worker = workers.read(input.dispatch_id);
32
+ const session = sessions.read(input.session_id);
33
+ const ticket = tickets.read(dispatch.payload.ticket_id);
34
+ const expectedEngine = provider === "claude" ? "claude" : "codex";
35
+ const expectedMode = provider === "claude" ? "claude_interactive" : "codex_goal";
36
+ const expectedSessionMode = provider === "claude" ? "pane" : "goal";
37
+ if (dispatch.payload.engine !== expectedEngine
38
+ || dispatch.payload.provider_mode !== expectedMode
39
+ || dispatch.payload.session_id !== session.record_id
40
+ || dispatch.payload.session_id !== input.session_id
41
+ || dispatch.payload.role_id !== session.payload.role_id
42
+ || session.payload.mode !== expectedSessionMode
43
+ || dispatch.payload.session_id !== worker.payload.session_id
44
+ || dispatch.payload.worker_record_id !== worker.record_id
45
+ || dispatch.record_id !== worker.payload.dispatch_id
46
+ || dispatch.payload.goal_id !== worker.payload.goal_id
47
+ || dispatch.payload.goal_version !== worker.payload.goal_version
48
+ || dispatch.payload.ticket_id !== worker.payload.ticket_id
49
+ || dispatch.payload.ticket_version !== worker.payload.ticket_version
50
+ || dispatch.payload.ticket_id !== ticket.record_id
51
+ || dispatch.payload.ticket_id !== session.payload.ticket_id
52
+ || dispatch.payload.role_id !== worker.payload.role_id
53
+ || dispatch.payload.model_id !== worker.payload.model_id
54
+ || dispatch.payload.provider_mode !== worker.payload.provider_mode
55
+ || dispatch.payload.worktree_id !== worker.payload.worktree_id
56
+ || dispatch.payload.worktree_path !== worker.payload.worktree_path
57
+ || dispatch.payload.attempt !== worker.attempt
58
+ || dispatch.payload.attempt !== ticket.attempt
59
+ || worker.lease_token === null
60
+ || dispatch.payload.lease_token !== worker.lease_token
61
+ || session.payload.engine !== expectedEngine
62
+ || ticket.payload.session_id !== session.record_id) {
63
+ throw new Error("provider binding does not match durable dispatch, session, worker, and ticket authority");
64
+ }
65
+ return Object.freeze({
66
+ provider,
67
+ dispatch_id: dispatch.record_id,
68
+ dispatch_version: dispatch.version,
69
+ session_id: session.record_id,
70
+ session_version: session.version,
71
+ worker_record_id: worker.record_id,
72
+ worker_version: worker.version,
73
+ ticket_id: ticket.record_id,
74
+ ticket_version: ticket.version,
75
+ ticket_attempt: ticket.attempt,
76
+ native_session_sha256: session.payload.provider_native_session_sha256,
77
+ });
78
+ },
79
+ resolveProjection(observation) {
80
+ const dispatch = dispatches.read(observation.dispatch_id);
81
+ const worker = workers.read(observation.dispatch_id);
82
+ const session = sessions.read(observation.session_id);
83
+ const ticket = tickets.read(dispatch.payload.ticket_id);
84
+ const expectedEngine = provider === "claude" ? "claude" : "codex";
85
+ const expectedMode = provider === "claude" ? "claude_interactive" : "codex_goal";
86
+ const expectedSessionMode = provider === "claude" ? "pane" : "goal";
87
+ if (observation.provider !== provider
88
+ || dispatch.payload.engine !== expectedEngine
89
+ || dispatch.payload.provider_mode !== expectedMode
90
+ || dispatch.payload.session_id !== observation.session_id
91
+ || dispatch.payload.session_id !== session.record_id
92
+ || dispatch.payload.worker_record_id !== observation.worker_record_id
93
+ || dispatch.payload.worker_record_id !== worker.record_id
94
+ || dispatch.payload.ticket_id !== observation.ticket_id
95
+ || dispatch.payload.ticket_id !== worker.payload.ticket_id
96
+ || dispatch.payload.ticket_id !== session.payload.ticket_id
97
+ || dispatch.payload.ticket_id !== ticket.record_id
98
+ || dispatch.payload.attempt !== observation.ticket_attempt
99
+ || dispatch.payload.attempt !== worker.attempt
100
+ || dispatch.payload.role_id !== worker.payload.role_id
101
+ || dispatch.payload.role_id !== session.payload.role_id
102
+ || dispatch.payload.model_id !== worker.payload.model_id
103
+ || dispatch.payload.provider_mode !== worker.payload.provider_mode
104
+ || dispatch.payload.worktree_id !== worker.payload.worktree_id
105
+ || dispatch.payload.worktree_path !== worker.payload.worktree_path
106
+ || session.payload.engine !== expectedEngine
107
+ || session.payload.mode !== expectedSessionMode
108
+ || dispatch.version < observation.dispatch_version
109
+ || session.version < observation.session_version
110
+ || worker.version < observation.worker_version
111
+ || ticket.version < observation.ticket_version)
112
+ throw new Error("provider observation immutable authority changed");
113
+ const binding = Object.freeze({
114
+ provider,
115
+ dispatch_id: dispatch.record_id,
116
+ dispatch_version: dispatch.version,
117
+ session_id: session.record_id,
118
+ session_version: session.version,
119
+ worker_record_id: worker.record_id,
120
+ worker_version: worker.version,
121
+ ticket_id: ticket.record_id,
122
+ ticket_version: ticket.version,
123
+ ticket_attempt: ticket.attempt,
124
+ native_session_sha256: session.payload.provider_native_session_sha256,
125
+ });
126
+ const sameActiveAttempt = (dispatch.payload.attempt === ticket.attempt
127
+ && ticket.lease_token !== null
128
+ && dispatch.payload.lease_token === ticket.lease_token
129
+ && ticket.payload.session_id === session.record_id
130
+ && ((dispatch.state === "accepted" && ticket.state === "leased")
131
+ || (dispatch.state === "acknowledged" && ticket.state === "running")));
132
+ if (!sameActiveAttempt)
133
+ return Object.freeze({ status: "superseded", binding });
134
+ const advanced = dispatch.version !== observation.dispatch_version
135
+ || session.version !== observation.session_version
136
+ || worker.version !== observation.worker_version
137
+ || ticket.version !== observation.ticket_version
138
+ || ticket.attempt !== observation.ticket_attempt;
139
+ return Object.freeze({ status: advanced ? "active-advanced" : "current", binding });
140
+ },
141
+ });
142
+ }
143
+ export async function publishAndProjectProviderObservations(options) {
144
+ assertRuntimeEventBus(options.bus);
145
+ assertOutboxStore(options.outbox);
146
+ const published = publishProviderObservations(options.observations, (request) => {
147
+ const providerEvents = options.outbox.listEvents().filter((event) => (event.event_kind === request.eventKind
148
+ && event.source_id === request.sourceId));
149
+ const equivalent = findReplayableProviderOccurrence({
150
+ incoming: request.payload,
151
+ providerEvents,
152
+ bus: options.bus,
153
+ });
154
+ if (equivalent)
155
+ return Object.freeze({ status: "replayed", event: equivalent });
156
+ const occurrence = providerEvents.some((event) => sameProviderOccurrence(options.bus.read(event.event_id, "provider-observed").payload, request.payload))
157
+ ? occurrenceObservation(request.payload, providerEvents, options.packageRoot)
158
+ : request.payload;
159
+ return options.bus.publish(request.eventKind, {
160
+ sourceId: occurrence.dispatch_id,
161
+ sourceVersion: occurrence.dispatch_version,
162
+ dedupeKey: occurrence.delivery_id,
163
+ occurredAt: occurrence.observed_at,
164
+ }, occurrence);
165
+ });
166
+ return projectProviderEvents({
167
+ ...options,
168
+ eventIds: published.map((item) => item.event.event_id),
169
+ });
170
+ }
171
+ export async function projectProviderEvents(options) {
172
+ assertRuntimeEventBus(options.bus);
173
+ assertOutboxProcessor(options.processor);
174
+ assertOutboxStore(options.outbox);
175
+ assertConductorNotificationStore(options.notifications);
176
+ assertWorkerRegistry(options.workers);
177
+ assertSessionRegistry(options.sessions);
178
+ if (typeof options.bindings?.resolve !== "function")
179
+ throw new Error("provider projection requires a binding resolver");
180
+ const processedAt = canonicalTimestamp(options.processedAt, "provider projection timestamp");
181
+ const heartbeatMs = loadEndurancePolicy({
182
+ packageRoot: options.packageRoot,
183
+ configRoot: options.configRoot,
184
+ }).session_stall_seconds * 1_000;
185
+ const requested = options.eventIds.map((eventId) => options.bus.read(eventId, "provider-observed"));
186
+ const requestedSessions = new Set(requested.map((event) => event.payload.session_id));
187
+ const eventsById = new Map(requested.map((event) => [event.event_id, event]));
188
+ for (const pending of options.bus.pending(PROVIDER_EVENT_PROJECTOR, "provider-observed")) {
189
+ if (requestedSessions.has(pending.payload.session_id))
190
+ eventsById.set(pending.event_id, pending);
191
+ }
192
+ const events = [...eventsById.values()];
193
+ events.sort(compareProviderEvents);
194
+ for (const event of events) {
195
+ if (Date.parse(event.payload.observed_at) > Date.parse(processedAt)) {
196
+ throw new Error("provider observation is future-dated relative to processing time");
197
+ }
198
+ await options.processor.processOne({
199
+ eventId: event.event_id,
200
+ consumerId: PROVIDER_EVENT_PROJECTOR,
201
+ processedAt,
202
+ }, (_stored, context) => {
203
+ assertNoEarlierPendingProviderEvent(options.bus, event);
204
+ const observation = parseProviderObservation(event.payload, options.packageRoot);
205
+ const resolution = options.bindings.resolveProjection(observation);
206
+ if (!shouldProjectObservation(event, observation, resolution, options.sessions, options.workers)) {
207
+ return projectionOutcome(observation, "provider-observation-superseded");
208
+ }
209
+ const binding = resolution.binding;
210
+ return projectProviderObservation(observation, {
211
+ observeSession(item) {
212
+ const session = options.sessions.read(item.session_id);
213
+ if (item.observation_state === "started") {
214
+ if (session.payload.provider_native_session_sha256 === item.native_session_sha256) {
215
+ return projectionOutcome(item, "session-bound", session.version);
216
+ }
217
+ const bound = options.sessions.bindNativeSession({
218
+ sessionId: item.session_id,
219
+ expectedVersion: session.version,
220
+ operationId: context.operationNonce,
221
+ actorId: "native-hook",
222
+ eventId: event.event_id,
223
+ observedAt: item.observed_at,
224
+ nativeSessionSha256: item.native_session_sha256,
225
+ heartbeatDeadlineAt: addMilliseconds(item.observed_at, heartbeatMs),
226
+ }).record;
227
+ return projectionOutcome(item, "session-bound", bound.version);
228
+ }
229
+ if (session.state === "stopped")
230
+ return projectionOutcome(item, "session-stopped", session.version);
231
+ const stopped = options.sessions.stop({
232
+ sessionId: item.session_id,
233
+ expectedVersion: session.version,
234
+ operationId: context.operationNonce,
235
+ actorId: "native-hook",
236
+ eventId: event.event_id,
237
+ observedAt: item.observed_at,
238
+ reason: "provider session ended",
239
+ }).record;
240
+ return projectionOutcome(item, "session-stopped", stopped.version);
241
+ },
242
+ observeActivity(item) {
243
+ let sessionVersion = options.sessions.read(item.session_id).version;
244
+ if (item.hook_event !== "SessionStart") {
245
+ const session = options.sessions.read(item.session_id);
246
+ if (session.state === "running"
247
+ && Date.parse(item.observed_at) > Date.parse(session.payload.last_observed_at)) {
248
+ sessionVersion = options.sessions.heartbeat({
249
+ sessionId: item.session_id,
250
+ expectedVersion: session.version,
251
+ operationId: context.operationNonce,
252
+ actorId: "native-hook",
253
+ eventId: event.event_id,
254
+ observedAt: item.observed_at,
255
+ heartbeatDeadlineAt: addMilliseconds(item.observed_at, heartbeatMs),
256
+ }).record.version;
257
+ }
258
+ }
259
+ const worker = options.workers.read(item.dispatch_id);
260
+ if (worker.state === "blocked" || worker.state === "done" || worker.state === item.observation_state) {
261
+ return projectionOutcome(item, "activity-observed", worker.version, sessionVersion);
262
+ }
263
+ const updated = options.workers.setActivity({
264
+ dispatchId: item.dispatch_id,
265
+ expectedVersion: worker.version,
266
+ operationId: context.operationNonce,
267
+ actorId: "native-hook",
268
+ observedAt: item.observed_at,
269
+ activity: item.observation_state,
270
+ }).record;
271
+ return projectionOutcome(item, "activity-updated", updated.version, sessionVersion);
272
+ },
273
+ observeHealth(item) {
274
+ const worker = options.workers.read(item.dispatch_id);
275
+ if (worker.payload.health === "stopped" || worker.payload.health === item.observation_state) {
276
+ return projectionOutcome(item, "health-observed", worker.version);
277
+ }
278
+ const updated = options.workers.setHealth({
279
+ dispatchId: item.dispatch_id,
280
+ expectedVersion: worker.version,
281
+ operationId: context.operationNonce,
282
+ actorId: "native-hook",
283
+ observedAt: item.observed_at,
284
+ health: item.observation_state,
285
+ }).record;
286
+ return projectionOutcome(item, "health-updated", updated.version);
287
+ },
288
+ observeCompletion(item) {
289
+ return projectionOutcome(item, "completion-observed");
290
+ },
291
+ observeQuota(item) {
292
+ return projectionOutcome(item, "quota-observed");
293
+ },
294
+ });
295
+ });
296
+ }
297
+ const eventIds = Object.freeze(events.map((event) => event.event_id));
298
+ const assigned = options.notifications.assignProjected({
299
+ eventIds,
300
+ projectorId: PROVIDER_EVENT_PROJECTOR,
301
+ createdAt: processedAt,
302
+ });
303
+ return Object.freeze({
304
+ event_ids: eventIds,
305
+ notification_id: assigned.record?.record_id ?? null,
306
+ });
307
+ }
308
+ function shouldProjectObservation(event, observation, resolution, sessions, workers) {
309
+ const binding = resolution.binding;
310
+ if (event.source_id !== observation.dispatch_id
311
+ || event.source_version !== observation.dispatch_version
312
+ || event.dedupe_key !== observation.delivery_id
313
+ || event.occurred_at !== observation.observed_at
314
+ || binding.provider !== observation.provider
315
+ || binding.dispatch_id !== observation.dispatch_id
316
+ || binding.dispatch_version < observation.dispatch_version
317
+ || binding.session_id !== observation.session_id
318
+ || binding.session_version < observation.session_version
319
+ || binding.worker_record_id !== observation.worker_record_id
320
+ || binding.worker_version < observation.worker_version
321
+ || binding.ticket_id !== observation.ticket_id
322
+ || binding.ticket_version < observation.ticket_version)
323
+ throw new Error("provider observation no longer matches durable authority");
324
+ if (binding.native_session_sha256 !== null
325
+ && binding.native_session_sha256 !== observation.native_session_sha256)
326
+ throw new Error("provider observation native session does not match durable authority");
327
+ if (resolution.status === "superseded")
328
+ return false;
329
+ const startsSession = observation.observation_kind === "session" && observation.observation_state === "started";
330
+ if (resolution.status === "active-advanced" && !authorityAdvanceIsSafe(event, observation, binding, sessions, workers))
331
+ return false;
332
+ if (binding.native_session_sha256 === null && !startsSession) {
333
+ throw new Error("provider observation arrived before native session binding");
334
+ }
335
+ return true;
336
+ }
337
+ function authorityAdvanceIsSafe(event, observation, binding, sessions, workers) {
338
+ const dispatchAdvanced = binding.dispatch_version !== observation.dispatch_version;
339
+ const ticketAdvanced = binding.ticket_version !== observation.ticket_version
340
+ || binding.ticket_attempt !== observation.ticket_attempt;
341
+ if (dispatchAdvanced || ticketAdvanced) {
342
+ return observation.observation_kind === "session" && observation.observation_state === "started";
343
+ }
344
+ if (observation.observation_kind === "session") {
345
+ if (observation.observation_state === "started" || binding.session_version === observation.session_version)
346
+ return true;
347
+ const session = sessions.read(observation.session_id);
348
+ return (session.payload.last_event_id === event.event_id && session.state === "stopped")
349
+ || (session.state === "running" && Date.parse(observation.observed_at) > Date.parse(session.payload.last_observed_at));
350
+ }
351
+ if (observation.observation_kind === "activity") {
352
+ const sessionIsRelevant = observation.hook_event !== "SessionStart";
353
+ const session = sessions.read(observation.session_id);
354
+ const worker = workers.read(observation.dispatch_id);
355
+ const sessionSafe = !sessionIsRelevant
356
+ || binding.session_version === observation.session_version
357
+ || session.payload.last_event_id === event.event_id
358
+ || Date.parse(observation.observed_at) > Date.parse(session.payload.last_observed_at);
359
+ const workerSafe = binding.worker_version === observation.worker_version
360
+ || (worker.state === observation.observation_state && worker.payload.updated_at === observation.observed_at)
361
+ || Date.parse(observation.observed_at) > Date.parse(worker.payload.updated_at);
362
+ return sessionSafe && workerSafe;
363
+ }
364
+ if (observation.observation_kind === "health") {
365
+ const worker = workers.read(observation.dispatch_id);
366
+ return binding.worker_version === observation.worker_version
367
+ || (worker.payload.health === observation.observation_state && worker.payload.updated_at === observation.observed_at)
368
+ || Date.parse(observation.observed_at) > Date.parse(worker.payload.updated_at);
369
+ }
370
+ return true;
371
+ }
372
+ function findReplayableProviderOccurrence(options) {
373
+ const typed = options.providerEvents.map((event) => options.bus.read(event.event_id, "provider-observed"));
374
+ const equivalent = typed.filter((event) => sameProviderOccurrence(event.payload, options.incoming));
375
+ const latest = [...equivalent].sort(compareProviderEvents).at(-1);
376
+ if (!latest)
377
+ return undefined;
378
+ const intervened = typed.some((event) => (event.payload.session_id === options.incoming.session_id
379
+ && !sameHookOccurrence(event.payload, latest.payload)
380
+ && providerAuthorityFollows(event.payload, latest.payload)));
381
+ return intervened ? undefined : latest;
382
+ }
383
+ function occurrenceObservation(incoming, providerEvents, packageRoot) {
384
+ const occurrenceId = createStableId("provider-occ", incoming.delivery_id, incoming.observed_at, ...providerEvents.map((event) => event.event_id).sort());
385
+ return reissueProviderObservationOccurrence(incoming, occurrenceId, packageRoot);
386
+ }
387
+ function providerAuthorityFollows(candidate, previous) {
388
+ const candidateVersions = [
389
+ candidate.dispatch_version,
390
+ candidate.session_version,
391
+ candidate.worker_version,
392
+ candidate.ticket_attempt,
393
+ candidate.ticket_version,
394
+ ];
395
+ const previousVersions = [
396
+ previous.dispatch_version,
397
+ previous.session_version,
398
+ previous.worker_version,
399
+ previous.ticket_attempt,
400
+ previous.ticket_version,
401
+ ];
402
+ let advanced = candidate.observed_at > previous.observed_at;
403
+ for (let index = 0; index < candidateVersions.length; index += 1) {
404
+ if (candidateVersions[index] < previousVersions[index])
405
+ return false;
406
+ if (candidateVersions[index] > previousVersions[index])
407
+ advanced = true;
408
+ }
409
+ return advanced;
410
+ }
411
+ function sameProviderOccurrence(stored, incoming) {
412
+ return stored.provider === incoming.provider
413
+ && stored.provider_version === incoming.provider_version
414
+ && stored.hook_event === incoming.hook_event
415
+ && stored.observation_kind === incoming.observation_kind
416
+ && stored.observation_state === incoming.observation_state
417
+ && stored.dispatch_id === incoming.dispatch_id
418
+ && stored.session_id === incoming.session_id
419
+ && stored.worker_record_id === incoming.worker_record_id
420
+ && stored.ticket_id === incoming.ticket_id
421
+ && stored.native_session_sha256 === incoming.native_session_sha256
422
+ && stored.source_sha256 === incoming.source_sha256
423
+ && stored.terminal_authority === incoming.terminal_authority;
424
+ }
425
+ function sameHookOccurrence(left, right) {
426
+ return left.session_id === right.session_id
427
+ && left.hook_event === right.hook_event
428
+ && left.source_sha256 === right.source_sha256
429
+ && left.observed_at === right.observed_at;
430
+ }
431
+ function assertNoEarlierPendingProviderEvent(bus, event) {
432
+ for (const candidate of bus.pending(PROVIDER_EVENT_PROJECTOR, "provider-observed")) {
433
+ if (candidate.event_id === event.event_id || candidate.payload.session_id !== event.payload.session_id)
434
+ continue;
435
+ const order = compareProviderEvents(candidate, event);
436
+ if (order < 0)
437
+ throw new Error(`earlier provider projection is pending: ${candidate.event_id}`);
438
+ }
439
+ }
440
+ function compareProviderEvents(left, right) {
441
+ if (left.payload.session_id !== right.payload.session_id)
442
+ return left.event_id.localeCompare(right.event_id);
443
+ const versionOrder = left.payload.session_version - right.payload.session_version;
444
+ if (versionOrder !== 0)
445
+ return versionOrder;
446
+ const timeOrder = left.payload.observed_at.localeCompare(right.payload.observed_at);
447
+ if (timeOrder !== 0)
448
+ return timeOrder;
449
+ if (left.payload.source_sha256 !== right.payload.source_sha256) {
450
+ throw new Error("provider observation ordering is ambiguous for one session and timestamp");
451
+ }
452
+ const rankOrder = observationRank(left.payload) - observationRank(right.payload);
453
+ if (rankOrder !== 0)
454
+ return rankOrder;
455
+ return left.event_id.localeCompare(right.event_id);
456
+ }
457
+ function observationRank(observation) {
458
+ if (observation.observation_kind === "session")
459
+ return 0;
460
+ if (observation.observation_kind === "completion-observed" || observation.observation_kind === "quota")
461
+ return 1;
462
+ if (observation.observation_kind === "activity")
463
+ return observation.hook_event === "SessionStart" ? 1 : 2;
464
+ return 3;
465
+ }
466
+ function projectionOutcome(observation, action, recordVersion, sessionVersion) {
467
+ return {
468
+ action,
469
+ observation_id: observation.observation_id,
470
+ observation_kind: observation.observation_kind,
471
+ observation_state: observation.observation_state,
472
+ ...(recordVersion === undefined ? {} : { record_version: recordVersion }),
473
+ ...(sessionVersion === undefined ? {} : { session_version: sessionVersion }),
474
+ };
475
+ }
476
+ function addMilliseconds(timestamp, milliseconds) {
477
+ return new Date(Date.parse(timestamp) + milliseconds).toISOString();
478
+ }
479
+ //# sourceMappingURL=provider-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-runtime.js","sourceRoot":"","sources":["../../../src/hooks/provider-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ export declare const SUPPORTED_PROVIDER_HOOK_VERSIONS: Readonly<{
2
+ readonly claude: "2.1.207";
3
+ readonly codex: "0.145.0-alpha.2";
4
+ }>;
5
+ export declare const PROVIDER_HOOK_EVENTS: readonly ["SessionStart", "UserPromptSubmit", "Stop", "StopFailure", "Notification", "SessionEnd"];
6
+ export type ProviderName = keyof typeof SUPPORTED_PROVIDER_HOOK_VERSIONS;
7
+ export type ProviderVersion = (typeof SUPPORTED_PROVIDER_HOOK_VERSIONS)[ProviderName];
8
+ export type ProviderHookEvent = (typeof PROVIDER_HOOK_EVENTS)[number];
9
+ export interface ProviderRuntimeBinding {
10
+ readonly provider: ProviderName;
11
+ readonly dispatch_id: string;
12
+ readonly dispatch_version: number;
13
+ readonly session_id: string;
14
+ readonly session_version: number;
15
+ readonly worker_record_id: string;
16
+ readonly worker_version: number;
17
+ readonly ticket_id: string;
18
+ readonly ticket_version: number;
19
+ readonly ticket_attempt: number;
20
+ readonly native_session_sha256: string | null;
21
+ }
22
+ export interface ProviderBindingResolver {
23
+ resolve(input: Readonly<{
24
+ provider: ProviderName;
25
+ dispatch_id: string;
26
+ session_id: string;
27
+ }>): ProviderRuntimeBinding;
28
+ }
29
+ interface ProviderObservationBase extends Record<string, unknown> {
30
+ readonly schema_version: 1;
31
+ readonly observation_id: string;
32
+ readonly delivery_id: string;
33
+ readonly occurrence_id: string;
34
+ readonly provider: ProviderName;
35
+ readonly provider_version: ProviderVersion;
36
+ readonly hook_event: ProviderHookEvent;
37
+ readonly dispatch_id: string;
38
+ readonly dispatch_version: number;
39
+ readonly session_id: string;
40
+ readonly session_version: number;
41
+ readonly worker_record_id: string;
42
+ readonly worker_version: number;
43
+ readonly ticket_id: string;
44
+ readonly ticket_version: number;
45
+ readonly ticket_attempt: number;
46
+ readonly observed_at: string;
47
+ readonly native_session_sha256: string;
48
+ readonly source_sha256: string;
49
+ readonly terminal_authority: false;
50
+ }
51
+ export type ProviderSessionObservation = ProviderObservationBase & {
52
+ readonly observation_kind: "session";
53
+ readonly observation_state: "started" | "stopped";
54
+ };
55
+ export type ProviderActivityObservation = ProviderObservationBase & {
56
+ readonly observation_kind: "activity";
57
+ readonly observation_state: "idle" | "working";
58
+ };
59
+ export type ProviderHealthObservation = ProviderObservationBase & {
60
+ readonly observation_kind: "health";
61
+ readonly observation_state: "healthy" | "parked" | "stalled" | "stopped";
62
+ };
63
+ export type ProviderCompletionObservation = ProviderObservationBase & {
64
+ readonly observation_kind: "completion-observed";
65
+ readonly observation_state: "observed";
66
+ };
67
+ export type ProviderQuotaObservation = ProviderObservationBase & {
68
+ readonly observation_kind: "quota";
69
+ readonly observation_state: "limited" | "available";
70
+ };
71
+ export type ProviderObservation = ProviderSessionObservation | ProviderActivityObservation | ProviderHealthObservation | ProviderCompletionObservation | ProviderQuotaObservation;
72
+ export interface ProviderObservationPublishRequest {
73
+ readonly eventKind: "provider-observed";
74
+ readonly sourceId: string;
75
+ readonly sourceVersion: number;
76
+ readonly dedupeKey: string;
77
+ readonly occurredAt: string;
78
+ readonly payload: ProviderObservation;
79
+ }
80
+ export interface ProviderObservationProjectionSink<T = unknown> {
81
+ observeSession(observation: ProviderSessionObservation): T;
82
+ observeActivity(observation: ProviderActivityObservation): T;
83
+ observeHealth(observation: ProviderHealthObservation): T;
84
+ observeCompletion(observation: ProviderCompletionObservation): T;
85
+ observeQuota(observation: ProviderQuotaObservation): T;
86
+ }
87
+ export declare function normalizeProviderHook(options: {
88
+ readonly packageRoot: string;
89
+ readonly provider: ProviderName;
90
+ readonly providerVersion: string;
91
+ readonly dispatchId: string;
92
+ readonly sessionId: string;
93
+ readonly observedAt: string;
94
+ readonly input: unknown;
95
+ readonly bindings: ProviderBindingResolver;
96
+ }): readonly ProviderObservation[];
97
+ export declare function parseProviderObservation(value: unknown, schemaPathOrPackageRoot: string): ProviderObservation;
98
+ export declare function reissueProviderObservationOccurrence(observation: ProviderObservation, occurrenceId: string, packageRoot: string): ProviderObservation;
99
+ export declare function publishProviderObservations<T>(observations: readonly ProviderObservation[], publish: (request: ProviderObservationPublishRequest) => T): readonly T[];
100
+ export declare function projectProviderObservation<T>(observation: ProviderObservation, sink: ProviderObservationProjectionSink<T>): T;
101
+ export declare function providerNativeSessionSha256(nativeSessionId: string): string;
102
+ export {};