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,212 @@
1
+ import { join } from "node:path";
2
+ import { assertOpaqueId } from "../domain/records.js";
3
+ import { ImmutableFileConflictError, assertFileInside, openStableDirectory, readImmutableFile, writeImmutableFile, } from "../evidence/immutable-file.js";
4
+ import { assertSchema, loadJsonSchema } from "../runtime/schema.js";
5
+ import { registeredSchema } from "../schemas/registry.js";
6
+ import { isRecord, lstatIfExists, validateExistingDirectory } from "../utils/fs.js";
7
+ const MAX_STRUCTURED_ROLE_BYTES = 256 * 1024;
8
+ export function createClaudeStructuredRoleStore(options) {
9
+ const packageRoot = validateExistingDirectory(options.packageRoot, "structured-role package root");
10
+ const requestsRoot = validateExistingDirectory(join(options.stateRoot, "structured-role-requests"), "structured-role requests root");
11
+ const resultsRoot = validateExistingDirectory(join(options.stateRoot, "structured-role-results"), "structured-role results root");
12
+ const requestEnvelope = loadJsonSchema(join(packageRoot, "schemas", "structured-role-request.schema.json"));
13
+ const resultEnvelope = loadJsonSchema(join(packageRoot, "schemas", "structured-role-result.schema.json"));
14
+ function readRequest(requestId) {
15
+ const id = assertOpaqueId(requestId, "structured request id");
16
+ return withStableFile(requestsRoot, `${id}.json`, "structured-role requests root", (path) => (parseRequest(parseBytes(readImmutableFile(path, MAX_STRUCTURED_ROLE_BYTES)), requestEnvelope)));
17
+ }
18
+ function readRequestIfExists(requestId) {
19
+ const id = assertOpaqueId(requestId, "structured request id");
20
+ const path = join(requestsRoot, `${id}.json`);
21
+ const entry = lstatIfExists(path);
22
+ if (!entry)
23
+ return undefined;
24
+ if (entry.isSymbolicLink() || !entry.isFile())
25
+ throw new Error("structured-role request path is unsafe");
26
+ return readRequest(id);
27
+ }
28
+ function readResultIfExists(requestId) {
29
+ const id = assertOpaqueId(requestId, "structured request id");
30
+ const path = join(resultsRoot, `${id}.json`);
31
+ const entry = lstatIfExists(path);
32
+ if (!entry)
33
+ return undefined;
34
+ if (entry.isSymbolicLink() || !entry.isFile())
35
+ throw new Error("structured-role result path is unsafe");
36
+ return withStableFile(resultsRoot, `${id}.json`, "structured-role results root", (stablePath) => {
37
+ const result = parseResult(parseBytes(readImmutableFile(stablePath, MAX_STRUCTURED_ROLE_BYTES)), resultEnvelope);
38
+ if (result.request_id !== id)
39
+ throw new Error("structured-role result has the wrong request id");
40
+ const request = readRequest(id);
41
+ assertResultBinding(request, result);
42
+ assertSchema(result.result, registeredSchema(request.evidence_schema, packageRoot).schema, request.evidence_schema);
43
+ return result;
44
+ });
45
+ }
46
+ const store = {
47
+ writeRequest(rawRequest) {
48
+ const request = parseRequest(rawRequest, requestEnvelope);
49
+ assertRoleSchema(request.role_id, request.evidence_schema);
50
+ const path = join(requestsRoot, `${assertOpaqueId(request.request_id, "structured request id")}.json`);
51
+ const bytes = canonicalBytes(request);
52
+ if (bytes.byteLength > MAX_STRUCTURED_ROLE_BYTES) {
53
+ throw new Error(`structured-role request exceeds ${MAX_STRUCTURED_ROLE_BYTES} bytes`);
54
+ }
55
+ const status = withStableRoot(requestsRoot, "structured-role requests root", (root) => {
56
+ assertFileInside(root, path);
57
+ return writeImmutableFile(path, bytes);
58
+ });
59
+ return Object.freeze({ status, request: readRequest(request.request_id) });
60
+ },
61
+ readRequest,
62
+ readRequestIfExists,
63
+ submitResult(requestId, rawResult, submittedAt) {
64
+ const request = readRequest(requestId);
65
+ assertTimestamp(submittedAt, "structured result timestamp");
66
+ const result = cloneObject(rawResult, "structured result");
67
+ assertSchema(result, registeredSchema(request.evidence_schema, packageRoot).schema, request.evidence_schema);
68
+ const existing = readResultIfExists(request.request_id);
69
+ if (existing) {
70
+ if (canonicalJson(existing.result) !== canonicalJson(result)) {
71
+ throw new Error("structured-role result conflict");
72
+ }
73
+ return Object.freeze({ status: "replayed", record: existing });
74
+ }
75
+ const record = parseResult({
76
+ schema_version: 1,
77
+ request_id: request.request_id,
78
+ role_id: request.role_id,
79
+ evidence_schema: request.evidence_schema,
80
+ claude_session_id: request.claude_session_id,
81
+ submitted_at: submittedAt,
82
+ result,
83
+ }, resultEnvelope);
84
+ const path = join(resultsRoot, `${request.request_id}.json`);
85
+ let writeStatus = "replayed";
86
+ try {
87
+ writeStatus = withStableRoot(resultsRoot, "structured-role results root", (root) => {
88
+ assertFileInside(root, path);
89
+ return writeImmutableFile(path, canonicalBytes(record));
90
+ });
91
+ }
92
+ catch (error) {
93
+ if (!(error instanceof ImmutableFileConflictError))
94
+ throw error;
95
+ }
96
+ const stored = readResultIfExists(request.request_id);
97
+ if (!stored)
98
+ throw new Error("structured-role result disappeared after write");
99
+ if (canonicalJson(stored.result) !== canonicalJson(result)) {
100
+ throw new Error("structured-role result conflict");
101
+ }
102
+ return Object.freeze({ status: writeStatus, record: stored });
103
+ },
104
+ readResultIfExists,
105
+ outputSchema(requestId) {
106
+ const request = readRequest(requestId);
107
+ return deepFreeze(structuredClone(registeredSchema(request.evidence_schema, packageRoot).schema));
108
+ },
109
+ };
110
+ return Object.freeze(store);
111
+ }
112
+ export function sameStructuredRequestIntent(request, expected) {
113
+ return request.request_id === expected.requestId
114
+ && request.role_id === expected.roleId
115
+ && request.evidence_schema === expected.evidenceSchema
116
+ && canonicalJson(request.input) === canonicalJson(expected.input);
117
+ }
118
+ function parseRequest(value, schema) {
119
+ assertSchema(value, schema, "structured-role request");
120
+ if (!isRecord(value) || !isRecord(value.input))
121
+ throw new Error("structured-role request is invalid");
122
+ const request = value;
123
+ assertRoleSchema(request.role_id, request.evidence_schema);
124
+ assertTimestamp(request.created_at, "structured request timestamp");
125
+ return deepFreeze(structuredClone(request));
126
+ }
127
+ function parseResult(value, schema) {
128
+ assertSchema(value, schema, "structured-role result");
129
+ if (!isRecord(value) || !isRecord(value.result))
130
+ throw new Error("structured-role result is invalid");
131
+ const result = value;
132
+ assertRoleSchema(result.role_id, result.evidence_schema);
133
+ assertTimestamp(result.submitted_at, "structured result timestamp");
134
+ return deepFreeze(structuredClone(result));
135
+ }
136
+ function assertRoleSchema(roleId, schema) {
137
+ const expected = roleId === "oms.grader.claude" ? "grader-output.v1" : "reflection.v1";
138
+ if (schema !== expected)
139
+ throw new Error(`role ${roleId} requires ${expected}`);
140
+ }
141
+ function assertResultBinding(request, result) {
142
+ if (result.role_id !== request.role_id
143
+ || result.evidence_schema !== request.evidence_schema
144
+ || result.claude_session_id !== request.claude_session_id)
145
+ throw new Error("structured-role result binding changed");
146
+ }
147
+ function withStableRoot(path, label, action) {
148
+ const root = openStableDirectory(path, label);
149
+ try {
150
+ return action(root);
151
+ }
152
+ finally {
153
+ root.close();
154
+ }
155
+ }
156
+ function withStableFile(rootPath, fileName, label, action) {
157
+ return withStableRoot(rootPath, label, (root) => {
158
+ const path = join(root.path, fileName);
159
+ assertFileInside(root, path);
160
+ const result = action(path);
161
+ root.assertUnchanged();
162
+ return result;
163
+ });
164
+ }
165
+ function parseBytes(bytes) {
166
+ try {
167
+ return JSON.parse(bytes.toString("utf8"));
168
+ }
169
+ catch {
170
+ throw new Error("structured-role record contains malformed JSON");
171
+ }
172
+ }
173
+ function canonicalBytes(value) {
174
+ return Buffer.from(`${canonicalJson(value)}\n`, "utf8");
175
+ }
176
+ function canonicalJson(value) {
177
+ if (value === null || typeof value === "string" || typeof value === "boolean")
178
+ return JSON.stringify(value);
179
+ if (typeof value === "number") {
180
+ if (!Number.isFinite(value))
181
+ throw new Error("structured-role data contains a non-finite number");
182
+ return JSON.stringify(value);
183
+ }
184
+ if (Array.isArray(value))
185
+ return `[${value.map(canonicalJson).join(",")}]`;
186
+ if (isRecord(value)) {
187
+ const prototype = Object.getPrototypeOf(value);
188
+ if (prototype !== Object.prototype && prototype !== null) {
189
+ throw new Error("structured-role data contains an unsupported object prototype");
190
+ }
191
+ return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(value[key])}`).join(",")}}`;
192
+ }
193
+ throw new Error("structured-role data must contain only JSON values");
194
+ }
195
+ function cloneObject(value, label) {
196
+ if (!isRecord(value))
197
+ throw new Error(`${label} must be an object`);
198
+ return JSON.parse(canonicalJson(value));
199
+ }
200
+ function assertTimestamp(value, label) {
201
+ const parsed = Date.parse(value);
202
+ if (!Number.isFinite(parsed))
203
+ throw new Error(`${label} is invalid`);
204
+ }
205
+ function deepFreeze(value) {
206
+ if (typeof value !== "object" || value === null || Object.isFrozen(value))
207
+ return value;
208
+ for (const nested of Object.values(value))
209
+ deepFreeze(nested);
210
+ return Object.freeze(value);
211
+ }
212
+ //# sourceMappingURL=claude-structured-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-structured-store.js","sourceRoot":"","sources":["../../../src/providers/claude-structured-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type ClaudeStructuredPaneAdapter, type ClaudeStructuredPaneObservation } from "./claude-structured-pane.js";
2
+ import { type ClaudeStructuredEvidenceSchema, type ClaudeStructuredRequest, type ClaudeStructuredResult, type ClaudeStructuredRoleId } from "./claude-structured-store.js";
3
+ import { type ProcessRunner } from "./process.js";
4
+ export interface PrepareClaudeStructuredRoleOptions {
5
+ readonly requestId: string;
6
+ readonly roleId: ClaudeStructuredRoleId;
7
+ readonly evidenceSchema: ClaudeStructuredEvidenceSchema;
8
+ readonly input: Readonly<Record<string, unknown>>;
9
+ }
10
+ export interface PreparedClaudeStructuredRole {
11
+ readonly status: "created" | "replayed";
12
+ readonly request: ClaudeStructuredRequest;
13
+ }
14
+ export type ClaudeStructuredRoleProgress = Readonly<{
15
+ status: "launched" | "waiting";
16
+ request: ClaudeStructuredRequest;
17
+ observation: ClaudeStructuredPaneObservation;
18
+ result?: never;
19
+ reason?: never;
20
+ }> | Readonly<{
21
+ status: "complete";
22
+ request: ClaudeStructuredRequest;
23
+ result: ClaudeStructuredResult;
24
+ observation?: never;
25
+ reason?: never;
26
+ }> | Readonly<{
27
+ status: "blocked";
28
+ request: ClaudeStructuredRequest;
29
+ reason: string;
30
+ observation?: ClaudeStructuredPaneObservation;
31
+ result?: never;
32
+ }>;
33
+ export interface ClaudeStructuredRoleTransport {
34
+ prepare(options: PrepareClaudeStructuredRoleOptions): PreparedClaudeStructuredRole;
35
+ advance(prepared: PreparedClaudeStructuredRole): ClaudeStructuredRoleProgress;
36
+ read(requestId: string): ClaudeStructuredRoleProgress;
37
+ }
38
+ export interface ClaudeStructuredResultIdentity {
39
+ readonly request_id: string;
40
+ readonly role_id: ClaudeStructuredRoleId;
41
+ readonly fresh_session_id: string;
42
+ readonly certifying: boolean;
43
+ }
44
+ export declare function createClaudeStructuredRoleTransport(options: {
45
+ readonly packageRoot: string;
46
+ readonly configRoot?: string;
47
+ readonly workspaceRoot: string;
48
+ readonly stateRoot: string;
49
+ readonly executablePath: string;
50
+ readonly env?: NodeJS.ProcessEnv;
51
+ readonly runner?: ProcessRunner;
52
+ readonly panes?: ClaudeStructuredPaneAdapter;
53
+ readonly clock?: () => string;
54
+ readonly sessionIdFactory?: () => string;
55
+ }): ClaudeStructuredRoleTransport;
56
+ export declare function claudeStructuredResultIdentity(value: unknown): ClaudeStructuredResultIdentity;
@@ -0,0 +1,250 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { existsSync, lstatSync, realpathSync } from "node:fs";
3
+ import { isAbsolute, join } from "node:path";
4
+ import { readOmsConfig } from "../config.js";
5
+ import { digestRolePolicyConfig } from "../domain/role-policy.js";
6
+ import { assertOpaqueId } from "../domain/records.js";
7
+ import { ImmutableFileConflictError } from "../evidence/immutable-file.js";
8
+ import { isRecord, validateExistingDirectory } from "../utils/fs.js";
9
+ import { prepareClaudeInteractiveLaunch } from "./claude-interactive.js";
10
+ import { createClaudeStructuredPaneAdapter, } from "./claude-structured-pane.js";
11
+ import { createClaudeStructuredRoleStore, sameStructuredRequestIntent, } from "./claude-structured-store.js";
12
+ import { probeClaudeCodeCompatibility, resolveConfiguredRole } from "./preflight.js";
13
+ import { runProcess } from "./process.js";
14
+ const PREPARED_METADATA = new WeakMap();
15
+ const ADVANCED = new WeakSet();
16
+ const CLAUDE_STRUCTURED_IDENTITIES = new WeakMap();
17
+ export function createClaudeStructuredRoleTransport(options) {
18
+ const packageRoot = validateExistingDirectory(options.packageRoot, "structured-role package root");
19
+ const configRoot = validateExistingDirectory(options.configRoot ?? packageRoot, "structured-role configuration root");
20
+ const workspaceRoot = validateExistingDirectory(options.workspaceRoot, "structured-role workspace root");
21
+ const stateRoot = validateExistingDirectory(options.stateRoot, "structured-role state root");
22
+ const executablePath = validateExecutable(options.executablePath);
23
+ const env = options.env ?? process.env;
24
+ const runner = options.runner ?? runProcess;
25
+ const panes = options.panes ?? createClaudeStructuredPaneAdapter({ env, runner });
26
+ const clock = options.clock ?? (() => new Date().toISOString());
27
+ const sessionIdFactory = options.sessionIdFactory ?? randomUUID;
28
+ const store = createClaudeStructuredRoleStore({ packageRoot, stateRoot });
29
+ const transport = Symbol("OMS Claude structured-role transport");
30
+ const certifying = options.runner === undefined
31
+ && options.panes === undefined
32
+ && options.sessionIdFactory === undefined;
33
+ function prepare(raw) {
34
+ const intent = normalizeIntent(raw);
35
+ const existing = store.readRequestIfExists(intent.requestId);
36
+ if (existing)
37
+ return preparedResult("replayed", existing, intent);
38
+ const config = readOmsConfig(configRoot);
39
+ const configured = resolveConfiguredRole(config, intent.roleId);
40
+ if (configured.role.evidence_schema !== intent.evidenceSchema
41
+ || configured.role.engine !== "claude"
42
+ || configured.role.transport !== "claude_interactive"
43
+ || configured.role.sandbox !== "read-only"
44
+ || configured.role.session_policy !== "fresh"
45
+ || configured.role.freshness_policy !== "fresh_required")
46
+ throw new Error(`role ${intent.roleId} is not an eligible fresh interactive structured role`);
47
+ const compatibility = probeClaudeCodeCompatibility({ cwd: workspaceRoot, env, runner });
48
+ const sessionId = sessionIdFactory().toLowerCase();
49
+ const bridge = {
50
+ command: executablePath,
51
+ args: [
52
+ "structured-role",
53
+ "bridge",
54
+ "--request-id",
55
+ intent.requestId,
56
+ "--session-id",
57
+ sessionId,
58
+ "--state-root",
59
+ stateRoot,
60
+ "--workspace-root",
61
+ workspaceRoot,
62
+ ],
63
+ };
64
+ const launch = prepareClaudeInteractiveLaunch({
65
+ config,
66
+ roleId: intent.roleId,
67
+ cwd: workspaceRoot,
68
+ sessionName: intent.requestId,
69
+ env,
70
+ runner,
71
+ structuredRoleBridge: bridge,
72
+ structuredRoleInstructionsPath: join(packageRoot, ".agents", "agents", intent.roleId === "oms.grader.claude" ? "grader.md" : "dreamer.md"),
73
+ structuredRequestId: intent.requestId,
74
+ nativeSessionId: sessionId,
75
+ });
76
+ const request = {
77
+ schema_version: 1,
78
+ request_id: intent.requestId,
79
+ role_id: intent.roleId,
80
+ evidence_schema: intent.evidenceSchema,
81
+ model_id: configured.modelId,
82
+ policy_digest: digestRolePolicyConfig(config),
83
+ claude_session_id: sessionId,
84
+ claude_version: compatibility.version,
85
+ created_at: clock(),
86
+ input: intent.input,
87
+ };
88
+ let written;
89
+ try {
90
+ written = store.writeRequest(request);
91
+ }
92
+ catch (error) {
93
+ if (!(error instanceof ImmutableFileConflictError))
94
+ throw error;
95
+ const raced = store.readRequest(intent.requestId);
96
+ return preparedResult("replayed", raced, intent);
97
+ }
98
+ if (written.status === "replayed")
99
+ return preparedResult("replayed", written.request, intent);
100
+ const prepared = Object.freeze({ status: "created", request: written.request });
101
+ PREPARED_METADATA.set(prepared, {
102
+ transport,
103
+ launch: Object.freeze({
104
+ requestId: intent.requestId,
105
+ command: launch.command,
106
+ args: Object.freeze([...launch.args]),
107
+ cwd: launch.cwd,
108
+ env: Object.freeze({ ...launch.env }),
109
+ }),
110
+ });
111
+ return prepared;
112
+ }
113
+ function preparedResult(status, request, intent) {
114
+ if (!sameStructuredRequestIntent(request, intent))
115
+ throw new Error("structured-role request conflict");
116
+ const prepared = Object.freeze({ status, request });
117
+ PREPARED_METADATA.set(prepared, { transport });
118
+ return prepared;
119
+ }
120
+ function read(requestId) {
121
+ const request = store.readRequest(assertOpaqueId(requestId, "structured request id"));
122
+ const result = store.readResultIfExists(request.request_id);
123
+ if (result)
124
+ return completedProgress(request, result, certifying);
125
+ try {
126
+ const observation = panes.observe(request.request_id);
127
+ if (!observation) {
128
+ return Object.freeze({ status: "blocked", request, reason: "structured-role launch is ambiguous after its durable claim" });
129
+ }
130
+ if (observation.dead) {
131
+ return Object.freeze({ status: "blocked", request, observation, reason: "structured-role pane is dead" });
132
+ }
133
+ return Object.freeze({ status: "waiting", request, observation });
134
+ }
135
+ catch (error) {
136
+ return Object.freeze({ status: "blocked", request, reason: boundedReason(error) });
137
+ }
138
+ }
139
+ function advance(prepared) {
140
+ const metadata = PREPARED_METADATA.get(prepared);
141
+ if (!metadata || metadata.transport !== transport || !Object.isFrozen(prepared)) {
142
+ throw new Error("structured-role advance requires a prepared request from this transport");
143
+ }
144
+ const completed = store.readResultIfExists(prepared.request.request_id);
145
+ if (completed)
146
+ return completedProgress(prepared.request, completed, certifying);
147
+ if (!metadata.launch || ADVANCED.has(prepared))
148
+ return read(prepared.request.request_id);
149
+ ADVANCED.add(prepared);
150
+ try {
151
+ const observation = panes.create(metadata.launch);
152
+ return Object.freeze({ status: "launched", request: prepared.request, observation });
153
+ }
154
+ catch (error) {
155
+ return Object.freeze({ status: "blocked", request: prepared.request, reason: boundedReason(error) });
156
+ }
157
+ }
158
+ return Object.freeze({ prepare, advance, read });
159
+ }
160
+ export function claudeStructuredResultIdentity(value) {
161
+ if (typeof value !== "object" || value === null || !Object.isFrozen(value)) {
162
+ throw new Error("Claude grade source is not a completed structured invocation");
163
+ }
164
+ const identity = CLAUDE_STRUCTURED_IDENTITIES.get(value);
165
+ if (!identity)
166
+ throw new Error("Claude grade source is not a completed structured invocation");
167
+ return identity;
168
+ }
169
+ function completedProgress(request, result, certifying) {
170
+ if (result.request_id !== request.request_id
171
+ || result.role_id !== request.role_id
172
+ || result.evidence_schema !== request.evidence_schema
173
+ || result.claude_session_id !== request.claude_session_id)
174
+ throw new Error("Claude structured result changed its durable request or fresh session binding");
175
+ CLAUDE_STRUCTURED_IDENTITIES.set(result, Object.freeze({
176
+ request_id: request.request_id,
177
+ role_id: request.role_id,
178
+ fresh_session_id: request.claude_session_id,
179
+ certifying,
180
+ }));
181
+ return Object.freeze({ status: "complete", request, result });
182
+ }
183
+ function normalizeIntent(options) {
184
+ const requestId = assertOpaqueId(options.requestId, "structured request id");
185
+ if (options.roleId !== "oms.grader.claude" && options.roleId !== "oms.bounded-dreamer") {
186
+ throw new Error("unsupported Claude structured role");
187
+ }
188
+ const expectedSchema = options.roleId === "oms.grader.claude" ? "grader-output.v1" : "reflection.v1";
189
+ if (options.evidenceSchema !== expectedSchema)
190
+ throw new Error(`role ${options.roleId} requires ${expectedSchema}`);
191
+ if (!isRecord(options.input))
192
+ throw new Error("structured-role input must be an object");
193
+ try {
194
+ assertJsonValue(options.input, new Set());
195
+ }
196
+ catch {
197
+ throw new Error("structured-role input must contain only acyclic JSON data");
198
+ }
199
+ const input = structuredClone(options.input);
200
+ return Object.freeze({ requestId, roleId: options.roleId, evidenceSchema: options.evidenceSchema, input: deepFreeze(input) });
201
+ }
202
+ function validateExecutable(path) {
203
+ if (!isAbsolute(path) || !existsSync(path))
204
+ throw new Error("OMS executable path must be an existing absolute file");
205
+ const entry = lstatSync(path);
206
+ if (entry.isSymbolicLink() || !entry.isFile() || (entry.mode & 0o111) === 0) {
207
+ throw new Error("OMS executable path must be a non-symbolic executable file");
208
+ }
209
+ return realpathSync.native(path);
210
+ }
211
+ function boundedReason(error) {
212
+ const value = error instanceof Error ? error.message : String(error);
213
+ return (value.trim().replace(/[\0\r\n]+/gu, " ") || "structured-role transport blocked").slice(0, 512);
214
+ }
215
+ function deepFreeze(value) {
216
+ if (typeof value !== "object" || value === null || Object.isFrozen(value))
217
+ return value;
218
+ for (const nested of Object.values(value))
219
+ deepFreeze(nested);
220
+ return Object.freeze(value);
221
+ }
222
+ function assertJsonValue(value, ancestors) {
223
+ if (value === null || typeof value === "string" || typeof value === "boolean")
224
+ return;
225
+ if (typeof value === "number") {
226
+ if (!Number.isFinite(value))
227
+ throw new Error("non-finite number");
228
+ return;
229
+ }
230
+ if (typeof value !== "object")
231
+ throw new Error("unsupported JSON value");
232
+ if (ancestors.has(value))
233
+ throw new Error("cyclic JSON value");
234
+ ancestors.add(value);
235
+ if (Array.isArray(value)) {
236
+ for (const child of value)
237
+ assertJsonValue(child, ancestors);
238
+ }
239
+ else {
240
+ if (!isRecord(value))
241
+ throw new Error("unsupported JSON object");
242
+ const prototype = Object.getPrototypeOf(value);
243
+ if (prototype !== Object.prototype && prototype !== null)
244
+ throw new Error("unsupported JSON object prototype");
245
+ for (const child of Object.values(value))
246
+ assertJsonValue(child, ancestors);
247
+ }
248
+ ancestors.delete(value);
249
+ }
250
+ //# sourceMappingURL=claude-structured.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-structured.js","sourceRoot":"","sources":["../../../src/providers/claude-structured.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { RolePolicyConfig } from "../domain/role-policy.js";
2
+ import { type ProcessResult, type ProcessRunner } from "./process.js";
3
+ export interface CodexStructuredRequest {
4
+ config: RolePolicyConfig;
5
+ roleId: "oms.exec-advisor" | "oms.grader.codex";
6
+ prompt: string;
7
+ requestId: string;
8
+ cwd: string;
9
+ temporaryRoot: string;
10
+ packageRoot?: string;
11
+ timeoutMs?: number;
12
+ confirmBilledUse?: boolean;
13
+ beforeProviderContact?: () => void;
14
+ env?: NodeJS.ProcessEnv;
15
+ runner?: ProcessRunner;
16
+ }
17
+ export interface CodexStructuredResult<T = unknown> {
18
+ value: T;
19
+ outputPath: string;
20
+ process: Pick<ProcessResult, "status" | "signal" | "stdout" | "stderr">;
21
+ }
22
+ export interface CodexStructuredResultIdentity {
23
+ readonly request_id: string;
24
+ readonly role_id: CodexStructuredRequest["roleId"];
25
+ readonly fresh_session_id: string;
26
+ readonly certifying: boolean;
27
+ }
28
+ export declare function runCodexStructured<T = unknown>(request: CodexStructuredRequest): CodexStructuredResult<T>;
29
+ export declare function codexStructuredResultIdentity(value: unknown): CodexStructuredResultIdentity;