@openrig/cli 0.5.9 → 0.5.10

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 (496) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +48 -61
  2. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +19 -5
  3. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +25 -0
  4. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  5. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +26 -10
  6. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  7. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  8. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  9. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  10. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +21 -6
  12. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +48 -61
  16. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +3 -3
  17. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +19 -5
  32. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/openrig-user/SKILL.md +25 -0
  35. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/pods/development-team/SKILL.md +40 -139
  45. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +3 -3
  46. package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +40 -60
  47. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +3 -3
  48. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pods/review-team/SKILL.md +34 -31
  50. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +3 -3
  51. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +6 -8
  57. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  65. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  66. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  67. package/daemon/dist/build-info.js +3 -3
  68. package/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
  69. package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
  70. package/daemon/dist/domain/gateway/channel-operations.js +35 -0
  71. package/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
  72. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
  73. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  74. package/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
  75. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  76. package/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
  77. package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
  78. package/daemon/dist/domain/gateway/human-readiness.js +44 -0
  79. package/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
  80. package/daemon/dist/domain/gateway/human-registry.d.ts +2 -7
  81. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  82. package/daemon/dist/domain/gateway/human-registry.js +2 -7
  83. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  84. package/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
  85. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  86. package/daemon/dist/domain/gateway/slack/inbound.js +35 -12
  87. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  88. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
  89. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  90. package/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
  91. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  92. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
  93. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  94. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +62 -8
  95. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  96. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
  97. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  98. package/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
  99. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  100. package/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
  101. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  102. package/daemon/dist/domain/gateway/slack/state-store.js +28 -1
  103. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  104. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
  105. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  106. package/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
  107. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  108. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
  109. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  110. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  111. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  112. package/daemon/dist/domain/health-checkpoints.d.ts +57 -0
  113. package/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
  114. package/daemon/dist/domain/health-checkpoints.js +198 -0
  115. package/daemon/dist/domain/health-checkpoints.js.map +1 -0
  116. package/daemon/dist/domain/health-context.d.ts +14 -0
  117. package/daemon/dist/domain/health-context.d.ts.map +1 -0
  118. package/daemon/dist/domain/health-context.js +93 -0
  119. package/daemon/dist/domain/health-context.js.map +1 -0
  120. package/daemon/dist/domain/health-detectors.d.ts +106 -0
  121. package/daemon/dist/domain/health-detectors.d.ts.map +1 -0
  122. package/daemon/dist/domain/health-detectors.js +392 -0
  123. package/daemon/dist/domain/health-detectors.js.map +1 -0
  124. package/daemon/dist/domain/health-diagnosis.d.ts +143 -0
  125. package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
  126. package/daemon/dist/domain/health-diagnosis.js +249 -0
  127. package/daemon/dist/domain/health-diagnosis.js.map +1 -0
  128. package/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
  129. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
  130. package/daemon/dist/domain/health-passive-ceremony.js +234 -0
  131. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
  132. package/daemon/dist/domain/health-policy.d.ts +45 -0
  133. package/daemon/dist/domain/health-policy.d.ts.map +1 -0
  134. package/daemon/dist/domain/health-policy.js +89 -0
  135. package/daemon/dist/domain/health-policy.js.map +1 -0
  136. package/daemon/dist/domain/health-projection.d.ts +237 -0
  137. package/daemon/dist/domain/health-projection.d.ts.map +1 -0
  138. package/daemon/dist/domain/health-projection.js +312 -0
  139. package/daemon/dist/domain/health-projection.js.map +1 -0
  140. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  141. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
  142. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  143. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  144. package/daemon/dist/domain/node-inventory.js +1 -0
  145. package/daemon/dist/domain/node-inventory.js.map +1 -1
  146. package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  147. package/daemon/dist/domain/project-lifecycle-compiler.js +35 -6
  148. package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  149. package/daemon/dist/domain/queue-repository.d.ts +14 -0
  150. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  151. package/daemon/dist/domain/queue-repository.js +60 -5
  152. package/daemon/dist/domain/queue-repository.js.map +1 -1
  153. package/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  154. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  155. package/daemon/dist/domain/queue-transition-log.js +28 -0
  156. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  157. package/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
  158. package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
  159. package/daemon/dist/domain/queue-wait-backoff.js +96 -0
  160. package/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
  161. package/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
  162. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  163. package/daemon/dist/domain/queue-wake-repository.js +8 -3
  164. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  165. package/daemon/dist/domain/types.d.ts +3 -0
  166. package/daemon/dist/domain/types.d.ts.map +1 -1
  167. package/daemon/dist/domain/types.js.map +1 -1
  168. package/daemon/dist/domain/user-settings/settings-store.d.ts +9 -1
  169. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  170. package/daemon/dist/domain/user-settings/settings-store.js +72 -12
  171. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  172. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
  173. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  174. package/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
  175. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  176. package/daemon/dist/domain/workflow-projector.d.ts +24 -0
  177. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  178. package/daemon/dist/domain/workflow-projector.js +108 -16
  179. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  180. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  181. package/daemon/dist/domain/workflow-runtime.js +58 -11
  182. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  183. package/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
  184. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  185. package/daemon/dist/domain/workflow-spec-cache.js +16 -0
  186. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  187. package/daemon/dist/domain/workflow-types.d.ts +8 -0
  188. package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  189. package/daemon/dist/domain/workflow-types.js.map +1 -1
  190. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  191. package/daemon/dist/domain/workflow-validator.js +18 -0
  192. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  193. package/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
  194. package/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
  195. package/daemon/dist/gateway-human-registry-surface.js +1 -0
  196. package/daemon/dist/gateway-human-registry-surface.js.map +1 -1
  197. package/daemon/dist/gateway-slack-surface.d.ts +1 -0
  198. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  199. package/daemon/dist/gateway-slack-surface.js +1 -0
  200. package/daemon/dist/gateway-slack-surface.js.map +1 -1
  201. package/daemon/dist/health-detectors-surface.d.ts +2 -0
  202. package/daemon/dist/health-detectors-surface.d.ts.map +1 -0
  203. package/daemon/dist/health-detectors-surface.js +2 -0
  204. package/daemon/dist/health-detectors-surface.js.map +1 -0
  205. package/daemon/dist/health-projection-surface.d.ts +2 -0
  206. package/daemon/dist/health-projection-surface.d.ts.map +1 -0
  207. package/daemon/dist/health-projection-surface.js +2 -0
  208. package/daemon/dist/health-projection-surface.js.map +1 -0
  209. package/daemon/dist/index.d.ts.map +1 -1
  210. package/daemon/dist/index.js +2 -0
  211. package/daemon/dist/index.js.map +1 -1
  212. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  213. package/daemon/dist/lib/pane-envelope.js +4 -1
  214. package/daemon/dist/lib/pane-envelope.js.map +1 -1
  215. package/daemon/dist/routes/gateway.d.ts +5 -1
  216. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  217. package/daemon/dist/routes/gateway.js +70 -22
  218. package/daemon/dist/routes/gateway.js.map +1 -1
  219. package/daemon/dist/routes/health-diagnosis.d.ts +3 -0
  220. package/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
  221. package/daemon/dist/routes/health-diagnosis.js +47 -0
  222. package/daemon/dist/routes/health-diagnosis.js.map +1 -0
  223. package/daemon/dist/routes/health.d.ts +3 -0
  224. package/daemon/dist/routes/health.d.ts.map +1 -0
  225. package/daemon/dist/routes/health.js +50 -0
  226. package/daemon/dist/routes/health.js.map +1 -0
  227. package/daemon/dist/routes/hosts.d.ts +2 -0
  228. package/daemon/dist/routes/hosts.d.ts.map +1 -1
  229. package/daemon/dist/routes/hosts.js +12 -5
  230. package/daemon/dist/routes/hosts.js.map +1 -1
  231. package/daemon/dist/server.d.ts +8 -0
  232. package/daemon/dist/server.d.ts.map +1 -1
  233. package/daemon/dist/server.js +8 -0
  234. package/daemon/dist/server.js.map +1 -1
  235. package/daemon/dist/startup.d.ts.map +1 -1
  236. package/daemon/dist/startup.js +29 -1
  237. package/daemon/dist/startup.js.map +1 -1
  238. package/daemon/docs/reference/health-diagnosis.md +305 -0
  239. package/daemon/docs/reference/product-journey-sdlc.md +53 -15
  240. package/daemon/docs/reference/sdlc-conventions.md +6 -4
  241. package/daemon/specs/agents/development/implementer/agent.yaml +1 -9
  242. package/daemon/specs/agents/development/implementer/guidance/role.md +21 -43
  243. package/daemon/specs/agents/development/qa/agent.yaml +2 -11
  244. package/daemon/specs/agents/development/qa/guidance/role.md +21 -73
  245. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -9
  246. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +25 -72
  247. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -9
  248. package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +20 -35
  249. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +21 -6
  250. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +48 -61
  251. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +40 -139
  252. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +40 -60
  253. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +34 -31
  254. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +6 -8
  255. package/daemon/specs/rigs/launch/demo/CULTURE.md +21 -30
  256. package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +3 -3
  257. package/daemon/specs/rigs/preview/product-team/CULTURE.md +26 -71
  258. package/dist/build-info.js +3 -3
  259. package/dist/commands/config.d.ts.map +1 -1
  260. package/dist/commands/config.js +1 -0
  261. package/dist/commands/config.js.map +1 -1
  262. package/dist/commands/gateway.d.ts +17 -0
  263. package/dist/commands/gateway.d.ts.map +1 -1
  264. package/dist/commands/gateway.js +99 -13
  265. package/dist/commands/gateway.js.map +1 -1
  266. package/dist/commands/health.d.ts +12 -0
  267. package/dist/commands/health.d.ts.map +1 -0
  268. package/dist/commands/health.js +351 -0
  269. package/dist/commands/health.js.map +1 -0
  270. package/dist/commands/host.d.ts.map +1 -1
  271. package/dist/commands/host.js +2 -0
  272. package/dist/commands/host.js.map +1 -1
  273. package/dist/commands/queue.d.ts +18 -0
  274. package/dist/commands/queue.d.ts.map +1 -1
  275. package/dist/commands/queue.js +62 -0
  276. package/dist/commands/queue.js.map +1 -1
  277. package/dist/commands/send.d.ts.map +1 -1
  278. package/dist/commands/send.js +4 -1
  279. package/dist/commands/send.js.map +1 -1
  280. package/dist/commands/slack.d.ts.map +1 -1
  281. package/dist/commands/slack.js +39 -11
  282. package/dist/commands/slack.js.map +1 -1
  283. package/dist/commands/workflow.d.ts.map +1 -1
  284. package/dist/commands/workflow.js +8 -6
  285. package/dist/commands/workflow.js.map +1 -1
  286. package/dist/config-store.d.ts +9 -1
  287. package/dist/config-store.d.ts.map +1 -1
  288. package/dist/config-store.js +72 -14
  289. package/dist/config-store.js.map +1 -1
  290. package/dist/daemon-lifecycle.d.ts +5 -1
  291. package/dist/daemon-lifecycle.d.ts.map +1 -1
  292. package/dist/daemon-lifecycle.js +4 -2
  293. package/dist/daemon-lifecycle.js.map +1 -1
  294. package/dist/index.d.ts +4 -0
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +3 -1
  297. package/dist/index.js.map +1 -1
  298. package/dist/lib/scope/scope-fs.js +2 -2
  299. package/dist/lib/scope/scope-fs.js.map +1 -1
  300. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  301. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
  302. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
  303. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js +35 -0
  304. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
  305. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
  306. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  307. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
  308. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  309. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
  310. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
  311. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js +44 -0
  312. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
  313. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +2 -7
  314. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  315. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +2 -7
  316. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  317. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
  318. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  319. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +35 -12
  320. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  321. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
  322. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  323. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
  324. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  325. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
  326. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  327. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +62 -8
  328. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  329. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
  330. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  331. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
  332. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  333. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
  334. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  335. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +28 -1
  336. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  337. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
  338. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  339. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
  340. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  341. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
  342. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  343. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  344. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  345. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts +57 -0
  346. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
  347. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js +198 -0
  348. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js.map +1 -0
  349. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts +14 -0
  350. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts.map +1 -0
  351. package/node_modules/@openrig/daemon/dist/domain/health-context.js +93 -0
  352. package/node_modules/@openrig/daemon/dist/domain/health-context.js.map +1 -0
  353. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts +106 -0
  354. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts.map +1 -0
  355. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js +392 -0
  356. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js.map +1 -0
  357. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts +143 -0
  358. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
  359. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js +249 -0
  360. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js.map +1 -0
  361. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
  362. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
  363. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js +234 -0
  364. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
  365. package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts +45 -0
  366. package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts.map +1 -0
  367. package/node_modules/@openrig/daemon/dist/domain/health-policy.js +89 -0
  368. package/node_modules/@openrig/daemon/dist/domain/health-policy.js.map +1 -0
  369. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts +237 -0
  370. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts.map +1 -0
  371. package/node_modules/@openrig/daemon/dist/domain/health-projection.js +312 -0
  372. package/node_modules/@openrig/daemon/dist/domain/health-projection.js.map +1 -0
  373. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  374. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
  375. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  376. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  377. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +1 -0
  378. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
  379. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  380. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js +35 -6
  381. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  382. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +14 -0
  383. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  384. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +60 -5
  385. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  386. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  387. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  388. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +28 -0
  389. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
  390. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
  391. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
  392. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js +96 -0
  393. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
  394. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
  395. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  396. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +8 -3
  397. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  398. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +3 -0
  399. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  400. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  401. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +9 -1
  402. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  403. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +72 -12
  404. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  405. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
  406. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  407. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
  408. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  409. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +24 -0
  410. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  411. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +108 -16
  412. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
  413. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  414. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +58 -11
  415. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
  416. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
  417. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  418. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js +16 -0
  419. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  420. package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts +8 -0
  421. package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  422. package/node_modules/@openrig/daemon/dist/domain/workflow-types.js.map +1 -1
  423. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  424. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js +18 -0
  425. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js.map +1 -1
  426. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
  427. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
  428. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js +1 -0
  429. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js.map +1 -1
  430. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +1 -0
  431. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  432. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +1 -0
  433. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -1
  434. package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts +2 -0
  435. package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts.map +1 -0
  436. package/node_modules/@openrig/daemon/dist/health-detectors-surface.js +2 -0
  437. package/node_modules/@openrig/daemon/dist/health-detectors-surface.js.map +1 -0
  438. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts +2 -0
  439. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts.map +1 -0
  440. package/node_modules/@openrig/daemon/dist/health-projection-surface.js +2 -0
  441. package/node_modules/@openrig/daemon/dist/health-projection-surface.js.map +1 -0
  442. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  443. package/node_modules/@openrig/daemon/dist/index.js +2 -0
  444. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  445. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  446. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +4 -1
  447. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
  448. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +5 -1
  449. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -1
  450. package/node_modules/@openrig/daemon/dist/routes/gateway.js +70 -22
  451. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -1
  452. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts +3 -0
  453. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
  454. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js +47 -0
  455. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js.map +1 -0
  456. package/node_modules/@openrig/daemon/dist/routes/health.d.ts +3 -0
  457. package/node_modules/@openrig/daemon/dist/routes/health.d.ts.map +1 -0
  458. package/node_modules/@openrig/daemon/dist/routes/health.js +50 -0
  459. package/node_modules/@openrig/daemon/dist/routes/health.js.map +1 -0
  460. package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts +2 -0
  461. package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts.map +1 -1
  462. package/node_modules/@openrig/daemon/dist/routes/hosts.js +12 -5
  463. package/node_modules/@openrig/daemon/dist/routes/hosts.js.map +1 -1
  464. package/node_modules/@openrig/daemon/dist/server.d.ts +8 -0
  465. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  466. package/node_modules/@openrig/daemon/dist/server.js +8 -0
  467. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  468. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  469. package/node_modules/@openrig/daemon/dist/startup.js +29 -1
  470. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  471. package/node_modules/@openrig/daemon/package.json +9 -1
  472. package/package.json +1 -1
  473. package/tui/dist/commands/registry.js +1 -1
  474. package/tui/dist/commands/registry.js.map +1 -1
  475. package/tui/dist/daemon-client.d.ts +2 -0
  476. package/tui/dist/daemon-client.d.ts.map +1 -1
  477. package/tui/dist/daemon-client.js +4 -0
  478. package/tui/dist/daemon-client.js.map +1 -1
  479. package/tui/dist/health/health-model.d.ts +25 -0
  480. package/tui/dist/health/health-model.d.ts.map +1 -0
  481. package/tui/dist/health/health-model.js +322 -0
  482. package/tui/dist/health/health-model.js.map +1 -0
  483. package/tui/dist/hydrate.d.ts.map +1 -1
  484. package/tui/dist/hydrate.js +13 -2
  485. package/tui/dist/hydrate.js.map +1 -1
  486. package/tui/dist/input.d.ts.map +1 -1
  487. package/tui/dist/input.js +2 -0
  488. package/tui/dist/input.js.map +1 -1
  489. package/tui/dist/render.d.ts.map +1 -1
  490. package/tui/dist/render.js +23 -2
  491. package/tui/dist/render.js.map +1 -1
  492. package/tui/dist/state.d.ts.map +1 -1
  493. package/tui/dist/state.js +14 -8
  494. package/tui/dist/state.js.map +1 -1
  495. package/tui/dist/types.d.ts +90 -1
  496. package/tui/dist/types.d.ts.map +1 -1
@@ -0,0 +1,198 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { readHealthArtifact } from "./health-context.js";
5
+ import { healthHash, object } from "./health-policy.js";
6
+ import { adaptQueueTransitionEvidence, adaptLifecycleReceiptEvidence, boundHealthEvidence, deriveHealthSourceFreshness } from "./health-projection.js";
7
+ function text(value) { if (typeof value !== "string" || !value.trim() || value.length > 4096)
8
+ throw new Error("Expected a nonempty bounded string"); }
9
+ function timestamp(value) { text(value); const time = Date.parse(value); if (!Number.isFinite(time))
10
+ throw new Error("Invalid checkpoint timestamp"); return time; }
11
+ function scope(value) {
12
+ const type = value?.type;
13
+ const fields = { instance: ["instanceId"], rig: ["rigId"], seat: ["rigId", "seatId"], mission: ["projectId", "missionId"], slice: ["projectId", "missionId", "sliceId"] }[type];
14
+ if (!fields)
15
+ throw new Error("Unknown health scope");
16
+ const s = object(value, ["type", ...fields]);
17
+ fields.forEach((f) => text(s[f]));
18
+ }
19
+ export class HealthCheckpointSource {
20
+ queue;
21
+ policy;
22
+ now;
23
+ workspace;
24
+ dir;
25
+ constructor(home, queue, policy, now = () => new Date().toISOString(), workspace = join(home, "workspace")) {
26
+ this.queue = queue;
27
+ this.policy = policy;
28
+ this.now = now;
29
+ this.workspace = workspace;
30
+ this.dir = join(home, "health", "checkpoints");
31
+ }
32
+ validate(value, allowDerive = false) {
33
+ const c = object(value, ["schema", "lineageQitemId", "scope", "startedAt", "observedAt", "transitionIds", "productOutcomes", "productCensusRef", "boundedAuthority", "authorityPaths", ...["includeHandoffs", "sdlc"].filter((key) => Object.hasOwn(value ?? {}, key))]);
34
+ if (c.schema !== "openrig.health-checkpoint/v0alpha1")
35
+ throw new Error("Unsupported checkpoint schema");
36
+ text(c.lineageQitemId);
37
+ text(c.productCensusRef);
38
+ scope(c.scope);
39
+ const start = timestamp(c.startedAt);
40
+ const end = timestamp(c.observedAt);
41
+ if (end < start || end > Date.parse(this.now()))
42
+ throw new Error("Checkpoint window is reversed or future");
43
+ // Resolve once on explicit submission, then retain exact IDs in the audit.
44
+ // Reads and stored checkpoints never silently acquire later traffic.
45
+ if (allowDerive && c.transitionIds === "derive")
46
+ c.transitionIds = this.transitions(c).map((t) => t.transitionId);
47
+ if (!Array.isArray(c.transitionIds) || c.transitionIds.length > 10000 || c.transitionIds.some((x) => !Number.isInteger(x) || x < 1) || new Set(c.transitionIds).size !== c.transitionIds.length)
48
+ throw new Error("Invalid, duplicate, or excessive transition IDs");
49
+ if (!Array.isArray(c.productOutcomes) || c.productOutcomes.length > 1000)
50
+ throw new Error("Invalid product outcomes");
51
+ const ids = new Set();
52
+ for (const outcome of c.productOutcomes) {
53
+ const o = object(outcome, ["id", "observedAt", "evidenceRef"]);
54
+ text(o.id);
55
+ text(o.evidenceRef);
56
+ const at = timestamp(o.observedAt);
57
+ if (at < start || at > end || ids.has(o.id))
58
+ throw new Error("Product outcome is duplicate or outside the lineage window");
59
+ ids.add(o.id);
60
+ }
61
+ const authority = object(c.boundedAuthority, ["applies", "evidenceRef"]);
62
+ text(authority.evidenceRef);
63
+ if (authority.applies !== null && typeof authority.applies !== "boolean")
64
+ throw new Error("Authority must be true, false or unknown");
65
+ if (c.includeHandoffs !== undefined && typeof c.includeHandoffs !== "boolean")
66
+ throw new Error("includeHandoffs must be boolean");
67
+ if (c.sdlc !== undefined) {
68
+ const sdlc = object(c.sdlc, ["expectation", "evidenceRef"]);
69
+ text(sdlc.expectation);
70
+ text(sdlc.evidenceRef);
71
+ }
72
+ const paths = object(c.authorityPaths, ["project", "mission", "slice"]);
73
+ for (const list of Object.values(paths)) {
74
+ if (!Array.isArray(list) || list.length > 10)
75
+ throw new Error("Invalid authority path list");
76
+ list.forEach(text);
77
+ }
78
+ const row = this.queue.getById(c.lineageQitemId);
79
+ if (!row || row.tags?.some((t) => t === "health-diagnosis" || t === "health-human"))
80
+ throw new Error("Checkpoint must name existing product work, not health traffic");
81
+ const transitions = this.transitions(value);
82
+ const members = [...new Set(transitions.map((t) => t.qitemId))].map((id) => this.queue.getById(id));
83
+ if (members.some((member) => member.tags?.some((tag) => tag === "health-diagnosis" || tag === "health-human")))
84
+ throw new Error("Checkpoint excludes health traffic");
85
+ if (c.includeHandoffs) {
86
+ const expected = c.scope.type === "slice" ? { "mission:": c.scope.missionId, "slice:": c.scope.sliceId }
87
+ : c.scope.type === "mission" ? { "mission:": c.scope.missionId } : {};
88
+ if (members.some((member) => member.tags?.some((tag) => Object.entries(expected).some(([prefix, id]) => tag.startsWith(prefix) && tag !== `${prefix}${id}`))))
89
+ throw new Error("Handoff lineage crosses the declared checkpoint scope");
90
+ }
91
+ const actual = new Set(transitions.map((t) => t.transitionId));
92
+ if (actual.size !== c.transitionIds.length || c.transitionIds.some((id) => !actual.has(id)))
93
+ throw new Error("Checkpoint transition census does not match this exact lineage/window");
94
+ return structuredClone(c);
95
+ }
96
+ transitions(c) {
97
+ const log = this.queue.transitionLog;
98
+ return c.includeHandoffs ? log.listForHandoffWindow(c.lineageQitemId, c.startedAt, c.observedAt, 10001)
99
+ : log.listForQitemWindow(c.lineageQitemId, c.startedAt, c.observedAt, 10001);
100
+ }
101
+ file(lineage) { return join(this.dir, `${healthHash(lineage)}.json`); }
102
+ submit(value, actor) {
103
+ const checkpoint = this.validate(structuredClone(value), true);
104
+ text(actor);
105
+ const file = this.file(checkpoint.lineageQitemId);
106
+ if (!existsSync(file) && existsSync(this.dir) && readdirSync(this.dir).filter((name) => /^[a-f0-9]{64}\.json$/.test(name)).length >= 200)
107
+ throw new Error("health_checkpoint_source_limit");
108
+ const previous = existsSync(file) ? JSON.parse(readFileSync(file, "utf8")) : null;
109
+ if (previous && healthHash(previous.checkpoint) === healthHash(checkpoint))
110
+ return previous;
111
+ if (previous && Date.parse(checkpoint.observedAt) <= Date.parse(previous.checkpoint.observedAt))
112
+ throw new Error("Checkpoint must advance observation time");
113
+ const p = this.policy.read().policy.thresholds;
114
+ const active = checkpoint.boundedAuthority.applies !== true && checkpoint.transitionIds.length >= p.ceremonyTransitions
115
+ && checkpoint.transitionIds.length / Math.max(checkpoint.productOutcomes.length, 1) >= p.ceremonyRatio;
116
+ const stored = { actor, checkpoint, active,
117
+ episodeStartedAt: previous?.active ? previous.episodeStartedAt : checkpoint.startedAt,
118
+ qualifying: active ? checkpoint : previous?.active ? previous.qualifying : null };
119
+ // Recurrence starts at the first new qualifying checkpoint, not the previous episode's window.
120
+ if (active && previous && !previous.active)
121
+ stored.episodeStartedAt = checkpoint.observedAt;
122
+ if (Buffer.byteLength(JSON.stringify(stored)) > 1048576)
123
+ throw new Error("health_checkpoint_too_large");
124
+ mkdirSync(join(this.dir, "history"), { recursive: true });
125
+ const id = randomUUID();
126
+ writeFileSync(join(this.dir, "history", `${id}.json`), JSON.stringify({ previous, current: stored }, null, 2), { flag: "wx" });
127
+ const tmp = join(this.dir, `${id}.tmp`);
128
+ writeFileSync(tmp, JSON.stringify(stored, null, 2));
129
+ renameSync(tmp, file);
130
+ return stored;
131
+ }
132
+ entries() {
133
+ if (!existsSync(this.dir))
134
+ return [];
135
+ const names = readdirSync(this.dir).filter((name) => /^[a-f0-9]{64}\.json$/.test(name));
136
+ if (names.length > 200)
137
+ throw new Error("health_checkpoint_source_limit");
138
+ return names.map((name) => {
139
+ const bytes = readFileSync(join(this.dir, name), "utf8");
140
+ if (Buffer.byteLength(bytes) > 1048576)
141
+ throw new Error("health_checkpoint_too_large");
142
+ const stored = JSON.parse(bytes);
143
+ this.validate(stored.checkpoint);
144
+ text(stored.actor);
145
+ timestamp(stored.episodeStartedAt);
146
+ if (stored.qualifying)
147
+ this.validate(stored.qualifying);
148
+ return stored;
149
+ });
150
+ }
151
+ read() {
152
+ const policy = this.policy.read().policy;
153
+ const now = this.now();
154
+ return this.entries().flatMap((stored) => {
155
+ const current = stored.checkpoint;
156
+ const thresholds = policy.thresholds;
157
+ const active = current.boundedAuthority.applies !== true && current.transitionIds.length >= thresholds.ceremonyTransitions
158
+ && current.transitionIds.length / Math.max(current.productOutcomes.length, 1) >= thresholds.ceremonyRatio;
159
+ // A missing counter-signal is unknown, even when the authored value would
160
+ // suppress the rule. Keep a potential observation until refs are resolved.
161
+ const c = active ? current : stored.qualifying ?? (current.transitionIds.length >= thresholds.ceremonyTransitions ? current : null);
162
+ if (!c)
163
+ return [];
164
+ const ids = new Set(c.transitionIds);
165
+ const transitions = this.transitions(c).filter((t) => ids.has(t.transitionId));
166
+ const evidence = transitions.map(adaptQueueTransitionEvidence);
167
+ const refs = [...c.productOutcomes.map((p) => ({ id: p.evidenceRef, at: p.observedAt, outcome: p.id })),
168
+ { id: current.productCensusRef, at: current.observedAt, outcome: `product census by ${stored.actor}: ${current.productOutcomes.length} outcomes` },
169
+ { id: current.boundedAuthority.evidenceRef, at: current.observedAt, outcome: `bounded authority: ${String(current.boundedAuthority.applies)}` },
170
+ ...(current.sdlc ? [{ id: current.sdlc.evidenceRef, at: current.observedAt, outcome: `selected SDLC expectation: ${current.sdlc.expectation}` }] : [])];
171
+ const resolved = new Map([...new Set([...c.productOutcomes, ...current.productOutcomes].map((p) => p.evidenceRef)
172
+ .concat(c.productCensusRef, c.boundedAuthority.evidenceRef, current.productCensusRef, current.boundedAuthority.evidenceRef, current.sdlc?.evidenceRef ?? ""))]
173
+ .map((ref) => [ref, readHealthArtifact(this.workspace, ref)]));
174
+ const missing = [...resolved].filter(([, result]) => result.state !== "available").map(([ref]) => ref);
175
+ const outcomeCount = resolved.get(c.productCensusRef)?.state === "available"
176
+ && c.productOutcomes.every((p) => resolved.get(p.evidenceRef)?.state === "available") ? c.productOutcomes.length : null;
177
+ const receipts = refs.flatMap((r, i) => {
178
+ const result = resolved.get(r.id);
179
+ return result.state === "available" ? [adaptLifecycleReceiptEvidence({ receiptId: r.id, operation: "health-outcome-checkpoint", outcome: `${r.outcome}; sha256:${result.sha256}`, observedAt: r.at, sourceOrder: evidence.length + i })] : [];
180
+ });
181
+ const available = transitions.length === ids.size && current.boundedAuthority.applies !== null && !!current.sdlc && missing.length === 0;
182
+ const gateCounts = new Map();
183
+ const rows = new Map([...new Set(transitions.map((t) => t.qitemId))].map((id) => [id, this.queue.getById(id)]));
184
+ for (const t of transitions) {
185
+ const tags = rows.get(t.qitemId)?.tags?.filter((tag) => tag.startsWith("gate:")).sort().join("+") || "untagged";
186
+ gateCounts.set(tags, (gateCounts.get(tags) ?? 0) + 1);
187
+ }
188
+ const breakdown = [...gateCounts].sort(([a], [b]) => a.localeCompare(b, "en-US")).map(([tag, count]) => `${tag}=${count}`).join(", ");
189
+ return [{ kind: "coordination-lineage", scope: current.scope, episodeStartedAt: stored.episodeStartedAt,
190
+ lastObservedAt: current.observedAt, conditionCleared: !active && stored.qualifying !== null, confidence: "medium", sourceDescription: `Outcome census attributed to ${stored.actor}; latest authored census: ${current.transitionIds.length} transitions, ${current.productOutcomes.length} listed product outcomes, bounded authority ${String(current.boundedAuthority.applies)}. Observed census: ${rows.size} qitems; transition breakdown by literal gate tags: ${breakdown}. Selected SDLC expectation: ${current.sdlc?.expectation ?? "SDLC expectation unavailable"}. Product, authority and expectation meaning are authored evidence, not inferred by the daemon. A known ratio is a signal to inspect proportionality against that expectation, not a verdict that a review was unnecessary. Unavailable references: ${missing.length ? missing.map((ref) => ref || "SDLC expectation unavailable").join(", ") : "none"}.`, lineageId: c.lineageQitemId,
191
+ coordinationTransitions: c.transitionIds.length, productStateChanges: outcomeCount,
192
+ boundedAuthority: available && c.boundedAuthority.applies === true,
193
+ reviewReturns: 0, candidateChanges: 0, newRiskClasses: 0,
194
+ source: boundHealthEvidence([...evidence, ...receipts], { source: "mixed", startedAt: new Date(Math.max(Date.parse(c.startedAt), Date.parse(now) - policy.observationWindowSeconds * 1000)).toISOString(), endedAt: now, limit: 11003, retentionSeconds: policy.observationWindowSeconds }, deriveHealthSourceFreshness({ evaluatedAt: now, newestSourceAt: current.observedAt, maxAgeSeconds: policy.freshnessSeconds, available })) }];
195
+ });
196
+ }
197
+ }
198
+ //# sourceMappingURL=health-checkpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-checkpoints.js","sourceRoot":"","sources":["../../src/domain/health-checkpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { HealthRecord } from "./health-projection.js";
2
+ import type { AuthorityReference } from "./health-diagnosis.js";
3
+ import type { HealthCheckpointSource } from "./health-checkpoints.js";
4
+ /** Local evidence files only. Unsupported addresses retain unavailable truth.
5
+ * Reuse the file surface's realpath resolver; callers choose whether to embed bytes. */
6
+ export declare function readHealthArtifact(workspace: string, path: string, maxBytes?: number, embed?: boolean): AuthorityReference;
7
+ export declare function healthAuthority(workspace: string, checkpoints: HealthCheckpointSource, record: HealthRecord): AuthorityReference[];
8
+ /** Connector-specific readiness lives behind the transport-neutral diagnosis port.
9
+ * No notification is posted here; the existing gateway owns posting and receipts. */
10
+ export declare function healthHumanReadiness(home: string, address: string, gatewayActive: boolean): Promise<{
11
+ ready: boolean;
12
+ reason: string;
13
+ }>;
14
+ //# sourceMappingURL=health-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-context.d.ts","sourceRoot":"","sources":["../../src/domain/health-context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAMtE;wFACwF;AACxF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAU,EAAE,KAAK,UAAQ,GAAG,kBAAkB,CASzH;AAcD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,EAAE,YAAY,GAAG,kBAAkB,EAAE,CA2BlI;AAED;qFACqF;AACrF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;;;GAa/F"}
@@ -0,0 +1,93 @@
1
+ import { readFileSync, statSync, realpathSync } from "node:fs";
2
+ import { join, relative, resolve } from "node:path";
3
+ import { parse as parseYaml } from "yaml";
4
+ import { createHash } from "node:crypto";
5
+ import { resolveAllowedFile } from "./files/path-safety.js";
6
+ import { healthEpisodeId } from "./health-projection.js";
7
+ import { loadHumanRegistry } from "./gateway/human-registry.js";
8
+ import { loadConfig } from "./gateway/slack/config.js";
9
+ import { resolveSecret } from "./gateway/slack/secrets.js";
10
+ import { resolveHumanDeliveryReadiness } from "./gateway/human-readiness.js";
11
+ /** Local evidence files only. Unsupported addresses retain unavailable truth.
12
+ * Reuse the file surface's realpath resolver; callers choose whether to embed bytes. */
13
+ export function readHealthArtifact(workspace, path, maxBytes = 1048576, embed = false) {
14
+ try {
15
+ const root = realpathSync(workspace);
16
+ const canonical = resolveAllowedFile([{ name: "workspace", canonicalPath: root }], "workspace", relative(resolve(workspace), resolve(workspace, path)));
17
+ const size = statSync(canonical).size;
18
+ if (size === 0 || size > maxBytes)
19
+ return { path, state: "unavailable" };
20
+ const bytes = readFileSync(canonical);
21
+ return { path, state: "available", ...(embed ? { content: bytes.toString("utf8") } : {}), sha256: createHash("sha256").update(bytes).digest("hex") };
22
+ }
23
+ catch {
24
+ return { path, state: "unavailable" };
25
+ }
26
+ }
27
+ /** Only read a canonical file at the selected work-tree node; aliases are unavailable. */
28
+ function readAuthorityFile(workspace, path) {
29
+ try {
30
+ const selected = relative(resolve(workspace), resolve(workspace, path));
31
+ const actual = relative(realpathSync(workspace), realpathSync(resolve(workspace, path)));
32
+ if (actual !== selected)
33
+ return { path, state: "unavailable" };
34
+ return readHealthArtifact(workspace, path, 65536, true);
35
+ }
36
+ catch {
37
+ return { path, state: "unavailable" };
38
+ }
39
+ }
40
+ export function healthAuthority(workspace, checkpoints, record) {
41
+ const checkpoint = record.detector === "process.ceremony-amplification" ? checkpoints.entries().find((c) => healthEpisodeId(record.detector, c.checkpoint.scope, c.episodeStartedAt) === record.id)?.checkpoint : undefined;
42
+ const scope = record.scope;
43
+ const mission = (scope.type === "mission" || scope.type === "slice") && /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(scope.missionId) ? scope.missionId : null;
44
+ const groups = {
45
+ project: [join(workspace, "SPEC.md"), join(workspace, "project.yaml"), ...checkpoint?.authorityPaths.project ?? []],
46
+ mission: [...(mission ? [join(workspace, "missions", mission, "SPEC.md"), join(workspace, "missions", mission, "mission.yaml")] : []), ...checkpoint?.authorityPaths.mission ?? []],
47
+ slice: [...checkpoint?.authorityPaths.slice ?? [], ...record.ceremony?.context.filter((r) => r.role.startsWith("slice authority")).map((r) => r.path).filter((p) => /(?:SPEC\.md|slice\.yaml)$/.test(p)) ?? []],
48
+ };
49
+ const belongs = (level, path) => {
50
+ const parts = relative(resolve(workspace), resolve(workspace, path)).split("/");
51
+ if (level === "project")
52
+ return parts.length === 1 && ["SPEC.md", "project.yaml"].includes(parts[0]);
53
+ if (!mission || parts[0] !== "missions" || parts[1] !== mission)
54
+ return false;
55
+ if (level === "mission")
56
+ return parts.length === 3 && ["SPEC.md", "mission.yaml"].includes(parts[2]);
57
+ if (scope.type !== "slice" || parts.length !== 5 || parts[2] !== "slices" || !["SPEC.md", "slice.yaml"].includes(parts[4]))
58
+ return false;
59
+ // Directory names are not slice IDs. The canonical sibling SPEC owns identity.
60
+ const spec = readAuthorityFile(workspace, join(workspace, ...parts.slice(0, 4), "SPEC.md"));
61
+ const frontmatter = spec.content?.match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/)?.[1];
62
+ if (!frontmatter)
63
+ return false;
64
+ const identity = parseYaml(frontmatter);
65
+ return identity?.id === scope.sliceId && (identity.mission === undefined || identity.mission === mission);
66
+ };
67
+ return Object.keys(groups).flatMap((level) => [...new Set(groups[level])].map((path) => {
68
+ try {
69
+ return { ...(belongs(level, path) ? readAuthorityFile(workspace, path) : { path, state: "unavailable" }), level };
70
+ }
71
+ catch {
72
+ return { path, state: "unavailable", level };
73
+ }
74
+ }));
75
+ }
76
+ /** Connector-specific readiness lives behind the transport-neutral diagnosis port.
77
+ * No notification is posted here; the existing gateway owns posting and receipts. */
78
+ export async function healthHumanReadiness(home, address, gatewayActive) {
79
+ const registry = loadHumanRegistry(home);
80
+ const human = registry.ok ? registry.entities.find((h) => h.address === address) : undefined;
81
+ if (!human)
82
+ return { ready: false, reason: "registered human primary connector unavailable" };
83
+ const cfg = loadConfig(home);
84
+ const token = resolveSecret("SLACK_BOT_TOKEN", { envFile: cfg.secretsEnvFile ?? undefined });
85
+ const readiness = await resolveHumanDeliveryReadiness({
86
+ human,
87
+ config: cfg,
88
+ gatewayState: gatewayActive ? "active" : "inactive",
89
+ botToken: token,
90
+ });
91
+ return { ready: readiness.ready, reason: readiness.reason };
92
+ }
93
+ //# sourceMappingURL=health-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-context.js","sourceRoot":"","sources":["../../src/domain/health-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { type EffectiveHealthPolicy, type HealthPolicy } from "./health-policy.js";
2
+ import type Database from "better-sqlite3";
3
+ import { type BoundedHealthEvidence, type HealthConfidence, type HealthRecord, type PassiveCeremony, type HealthScope, type HealthSeverity, type HealthStatus } from "./health-projection.js";
4
+ import type { ContextUsageStore } from "./context-usage-store.js";
5
+ import type { RigRepository } from "./rig-repository.js";
6
+ import type { SessionRegistry } from "./session-registry.js";
7
+ export declare const HEALTH_LIST_SCHEMA: "openrig.health-list/v0alpha1";
8
+ interface ObservationBase {
9
+ episodeKey?: string;
10
+ ceremony?: PassiveCeremony;
11
+ conditionCleared?: boolean;
12
+ confidence?: HealthConfidence;
13
+ sourceDescription?: string;
14
+ scope: HealthScope;
15
+ episodeStartedAt: string;
16
+ lastObservedAt: string;
17
+ source: BoundedHealthEvidence;
18
+ }
19
+ export type HealthDetectorObservation = (ObservationBase & {
20
+ kind: "coordination-lineage";
21
+ lineageId: string;
22
+ coordinationTransitions: number;
23
+ productStateChanges: number | null;
24
+ boundedAuthority: boolean;
25
+ reviewReturns: number;
26
+ candidateChanges: number;
27
+ newRiskClasses: number;
28
+ }) | (ObservationBase & {
29
+ kind: "wake-lineage";
30
+ lineageId: string;
31
+ wakeCount: number;
32
+ rescueWakeCount: number;
33
+ existingNextAction: boolean;
34
+ }) | (ObservationBase & {
35
+ kind: "directive";
36
+ directiveId: string;
37
+ declaredPhase: string | null;
38
+ currentPhase: string | null;
39
+ declaredRigor: string | null;
40
+ currentRigor: string | null;
41
+ conflictSourceAddress: string | null;
42
+ }) | (ObservationBase & {
43
+ kind: "scope-admission";
44
+ sliceId: string;
45
+ missionActive: boolean;
46
+ buildable: boolean;
47
+ requiredAuthority: string | null;
48
+ admissionAuthority: string | null;
49
+ admissionState: "present" | "missing" | "contradictory" | "unavailable";
50
+ authoritySourceAddress: string | null;
51
+ }) | (ObservationBase & {
52
+ kind: "context-pressure";
53
+ sourceName: string | null;
54
+ continuity: string | null;
55
+ warningPercent?: number;
56
+ criticalPercent?: number;
57
+ });
58
+ export interface HealthObservationSource {
59
+ read(): readonly HealthDetectorObservation[];
60
+ }
61
+ export interface HealthListQuery {
62
+ limit?: number;
63
+ scopeType?: HealthScope["type"];
64
+ scopeId?: string;
65
+ severity?: HealthSeverity;
66
+ status?: HealthStatus;
67
+ }
68
+ export interface HealthListProjection {
69
+ schema: typeof HEALTH_LIST_SCHEMA;
70
+ evaluatedAt: string | null;
71
+ total: number;
72
+ limit: number;
73
+ truncated: boolean;
74
+ records: HealthRecord[];
75
+ }
76
+ export declare function evaluateHealthDetectors(observations: readonly HealthDetectorObservation[], policy?: HealthPolicy): HealthRecord[];
77
+ export declare function canonicalDetectorJson(records: readonly HealthRecord[]): string;
78
+ export declare class HealthProjectionService {
79
+ private readonly source;
80
+ private readonly policy?;
81
+ constructor(source: HealthObservationSource, policy?: (() => EffectiveHealthPolicy) | undefined);
82
+ records(): HealthRecord[];
83
+ list(query?: HealthListQuery): HealthListProjection;
84
+ get(id: string): HealthRecord | null;
85
+ }
86
+ /** The live v1 adapter intentionally supplies only context observations. The other
87
+ * detectors require structured product-change, directive, or admission facts that
88
+ * current tables cannot express without inference. Replay sources can supply them. */
89
+ export declare class LiveContextHealthSource implements HealthObservationSource {
90
+ private readonly deps;
91
+ constructor(deps: {
92
+ db: Database.Database;
93
+ rigRepo: RigRepository;
94
+ sessionRegistry: SessionRegistry;
95
+ contextUsageStore: ContextUsageStore;
96
+ resolveContextPressurePolicy?: () => {
97
+ warningPercent: number;
98
+ criticalPercent: number;
99
+ };
100
+ now?: () => Date;
101
+ });
102
+ read(): HealthDetectorObservation[];
103
+ }
104
+ export declare function healthScopeId(scope: HealthScope): string;
105
+ export {};
106
+ //# sourceMappingURL=health-detectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-detectors.d.ts","sourceRoot":"","sources":["../../src/domain/health-detectors.ts"],"names":[],"mappings":"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"}