@monoes/monomindcli 2.16.12 → 2.16.14

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 (386) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/engineering/engineering-devops-automator.md +1 -1
  3. package/.claude/agents/github/repo-architect.md +1 -1
  4. package/.claude/agents/testing/production-validator.md +1 -1
  5. package/.claude/agents/testing/testing-tool-evaluator.md +1 -1
  6. package/.claude/commands/github/pr-manager.md +1 -1
  7. package/.claude/helpers/pick-rank.cjs +34 -4
  8. package/.claude/skills/monolean-audit/SKILL.md +1 -1
  9. package/README.md +1 -1
  10. package/dist/src/commands/cleanup-data.d.ts +30 -0
  11. package/dist/src/commands/cleanup-data.d.ts.map +1 -0
  12. package/dist/src/commands/cleanup-data.js +138 -0
  13. package/dist/src/commands/cleanup-data.js.map +1 -0
  14. package/dist/src/commands/cleanup-scratch.d.ts +43 -0
  15. package/dist/src/commands/cleanup-scratch.d.ts.map +1 -0
  16. package/dist/src/commands/cleanup-scratch.js +125 -0
  17. package/dist/src/commands/cleanup-scratch.js.map +1 -0
  18. package/dist/src/commands/cleanup.d.ts +2 -39
  19. package/dist/src/commands/cleanup.d.ts.map +1 -1
  20. package/dist/src/commands/cleanup.js +5 -247
  21. package/dist/src/commands/cleanup.js.map +1 -1
  22. package/dist/src/commands/doctor-gitignore-checks.d.ts +10 -0
  23. package/dist/src/commands/doctor-gitignore-checks.d.ts.map +1 -0
  24. package/dist/src/commands/doctor-gitignore-checks.js +141 -0
  25. package/dist/src/commands/doctor-gitignore-checks.js.map +1 -0
  26. package/dist/src/commands/doctor-helpers-checks.d.ts +10 -0
  27. package/dist/src/commands/doctor-helpers-checks.d.ts.map +1 -0
  28. package/dist/src/commands/doctor-helpers-checks.js +292 -0
  29. package/dist/src/commands/doctor-helpers-checks.js.map +1 -0
  30. package/dist/src/commands/doctor-memory-checks.d.ts +47 -0
  31. package/dist/src/commands/doctor-memory-checks.d.ts.map +1 -0
  32. package/dist/src/commands/doctor-memory-checks.js +298 -0
  33. package/dist/src/commands/doctor-memory-checks.js.map +1 -0
  34. package/dist/src/commands/doctor-monograph-checks.d.ts +9 -0
  35. package/dist/src/commands/doctor-monograph-checks.d.ts.map +1 -0
  36. package/dist/src/commands/doctor-monograph-checks.js +331 -0
  37. package/dist/src/commands/doctor-monograph-checks.js.map +1 -0
  38. package/dist/src/commands/doctor-project-checks.d.ts +7 -66
  39. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  40. package/dist/src/commands/doctor-project-checks.js +10 -1331
  41. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  42. package/dist/src/commands/doctor-routing-checks.d.ts +10 -0
  43. package/dist/src/commands/doctor-routing-checks.d.ts.map +1 -0
  44. package/dist/src/commands/doctor-routing-checks.js +194 -0
  45. package/dist/src/commands/doctor-routing-checks.js.map +1 -0
  46. package/dist/src/commands/doctor-worker-checks.d.ts +17 -0
  47. package/dist/src/commands/doctor-worker-checks.d.ts.map +1 -0
  48. package/dist/src/commands/doctor-worker-checks.js +122 -0
  49. package/dist/src/commands/doctor-worker-checks.js.map +1 -0
  50. package/dist/src/commands/hooks-routing-commands.js +1 -1
  51. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  52. package/dist/src/commands/init.d.ts.map +1 -1
  53. package/dist/src/commands/init.js +6 -15
  54. package/dist/src/commands/init.js.map +1 -1
  55. package/dist/src/commands/org-control.d.ts +117 -0
  56. package/dist/src/commands/org-control.d.ts.map +1 -0
  57. package/dist/src/commands/org-control.js +274 -0
  58. package/dist/src/commands/org-control.js.map +1 -0
  59. package/dist/src/commands/org-lifecycle.d.ts +7 -0
  60. package/dist/src/commands/org-lifecycle.d.ts.map +1 -0
  61. package/dist/src/commands/org-lifecycle.js +298 -0
  62. package/dist/src/commands/org-lifecycle.js.map +1 -0
  63. package/dist/src/commands/org-manage.d.ts +7 -0
  64. package/dist/src/commands/org-manage.d.ts.map +1 -0
  65. package/dist/src/commands/org-manage.js +357 -0
  66. package/dist/src/commands/org-manage.js.map +1 -0
  67. package/dist/src/commands/org-memory-command.d.ts +3 -0
  68. package/dist/src/commands/org-memory-command.d.ts.map +1 -0
  69. package/dist/src/commands/org-memory-command.js +178 -0
  70. package/dist/src/commands/org-memory-command.js.map +1 -0
  71. package/dist/src/commands/org-observe-approvals.d.ts +8 -0
  72. package/dist/src/commands/org-observe-approvals.d.ts.map +1 -0
  73. package/dist/src/commands/org-observe-approvals.js +211 -0
  74. package/dist/src/commands/org-observe-approvals.js.map +1 -0
  75. package/dist/src/commands/org-observe-checkpoint.d.ts +26 -0
  76. package/dist/src/commands/org-observe-checkpoint.d.ts.map +1 -0
  77. package/dist/src/commands/org-observe-checkpoint.js +180 -0
  78. package/dist/src/commands/org-observe-checkpoint.js.map +1 -0
  79. package/dist/src/commands/org-observe-config.d.ts +8 -0
  80. package/dist/src/commands/org-observe-config.d.ts.map +1 -0
  81. package/dist/src/commands/org-observe-config.js +160 -0
  82. package/dist/src/commands/org-observe-config.js.map +1 -0
  83. package/dist/src/commands/org-observe-gates.d.ts +4 -0
  84. package/dist/src/commands/org-observe-gates.d.ts.map +1 -0
  85. package/dist/src/commands/org-observe-gates.js +182 -0
  86. package/dist/src/commands/org-observe-gates.js.map +1 -0
  87. package/dist/src/commands/org-observe-inbox.d.ts +18 -0
  88. package/dist/src/commands/org-observe-inbox.d.ts.map +1 -0
  89. package/dist/src/commands/org-observe-inbox.js +154 -0
  90. package/dist/src/commands/org-observe-inbox.js.map +1 -0
  91. package/dist/src/commands/org-observe-logs.d.ts +31 -0
  92. package/dist/src/commands/org-observe-logs.d.ts.map +1 -0
  93. package/dist/src/commands/org-observe-logs.js +272 -0
  94. package/dist/src/commands/org-observe-logs.js.map +1 -0
  95. package/dist/src/commands/org-observe-questions.d.ts +8 -0
  96. package/dist/src/commands/org-observe-questions.d.ts.map +1 -0
  97. package/dist/src/commands/org-observe-questions.js +201 -0
  98. package/dist/src/commands/org-observe-questions.js.map +1 -0
  99. package/dist/src/commands/org-observe-report.d.ts +8 -0
  100. package/dist/src/commands/org-observe-report.d.ts.map +1 -0
  101. package/dist/src/commands/org-observe-report.js +366 -0
  102. package/dist/src/commands/org-observe-report.js.map +1 -0
  103. package/dist/src/commands/org-observe-shared.d.ts +20 -0
  104. package/dist/src/commands/org-observe-shared.d.ts.map +1 -0
  105. package/dist/src/commands/org-observe-shared.js +55 -0
  106. package/dist/src/commands/org-observe-shared.js.map +1 -0
  107. package/dist/src/commands/org-observe.d.ts +9 -101
  108. package/dist/src/commands/org-observe.d.ts.map +1 -1
  109. package/dist/src/commands/org-observe.js +12 -1675
  110. package/dist/src/commands/org-observe.js.map +1 -1
  111. package/dist/src/commands/org-poll.d.ts +57 -0
  112. package/dist/src/commands/org-poll.d.ts.map +1 -0
  113. package/dist/src/commands/org-poll.js +194 -0
  114. package/dist/src/commands/org-poll.js.map +1 -0
  115. package/dist/src/commands/org-run.d.ts +3 -0
  116. package/dist/src/commands/org-run.d.ts.map +1 -0
  117. package/dist/src/commands/org-run.js +449 -0
  118. package/dist/src/commands/org-run.js.map +1 -0
  119. package/dist/src/commands/org-serve.d.ts +19 -0
  120. package/dist/src/commands/org-serve.d.ts.map +1 -0
  121. package/dist/src/commands/org-serve.js +395 -0
  122. package/dist/src/commands/org-serve.js.map +1 -0
  123. package/dist/src/commands/org-subcommands-config.d.ts +8 -0
  124. package/dist/src/commands/org-subcommands-config.d.ts.map +1 -0
  125. package/dist/src/commands/org-subcommands-config.js +93 -0
  126. package/dist/src/commands/org-subcommands-config.js.map +1 -0
  127. package/dist/src/commands/org-subcommands-hil.d.ts +11 -0
  128. package/dist/src/commands/org-subcommands-hil.d.ts.map +1 -0
  129. package/dist/src/commands/org-subcommands-hil.js +216 -0
  130. package/dist/src/commands/org-subcommands-hil.js.map +1 -0
  131. package/dist/src/commands/org-subcommands-observe.d.ts +12 -0
  132. package/dist/src/commands/org-subcommands-observe.d.ts.map +1 -0
  133. package/dist/src/commands/org-subcommands-observe.js +249 -0
  134. package/dist/src/commands/org-subcommands-observe.js.map +1 -0
  135. package/dist/src/commands/org-subcommands-runtime.d.ts +12 -0
  136. package/dist/src/commands/org-subcommands-runtime.d.ts.map +1 -0
  137. package/dist/src/commands/org-subcommands-runtime.js +163 -0
  138. package/dist/src/commands/org-subcommands-runtime.js.map +1 -0
  139. package/dist/src/commands/org.d.ts +3 -151
  140. package/dist/src/commands/org.d.ts.map +1 -1
  141. package/dist/src/commands/org.js +43 -2735
  142. package/dist/src/commands/org.js.map +1 -1
  143. package/dist/src/index.js +2 -2
  144. package/dist/src/index.js.map +1 -1
  145. package/dist/src/init/never-commit.d.ts +3 -3
  146. package/dist/src/init/types.d.ts +1 -1
  147. package/dist/src/init/types.js +1 -1
  148. package/dist/src/knowledge/document-store.js +1 -1
  149. package/dist/src/knowledge/document-store.js.map +1 -1
  150. package/dist/src/mcp-tools/hooks-edit-command.d.ts +10 -0
  151. package/dist/src/mcp-tools/hooks-edit-command.d.ts.map +1 -0
  152. package/dist/src/mcp-tools/hooks-edit-command.js +247 -0
  153. package/dist/src/mcp-tools/hooks-edit-command.js.map +1 -0
  154. package/dist/src/mcp-tools/hooks-learning.d.ts +9 -0
  155. package/dist/src/mcp-tools/hooks-learning.d.ts.map +1 -0
  156. package/dist/src/mcp-tools/hooks-learning.js +408 -0
  157. package/dist/src/mcp-tools/hooks-learning.js.map +1 -0
  158. package/dist/src/mcp-tools/hooks-metrics-list.d.ts +8 -0
  159. package/dist/src/mcp-tools/hooks-metrics-list.d.ts.map +1 -0
  160. package/dist/src/mcp-tools/hooks-metrics-list.js +205 -0
  161. package/dist/src/mcp-tools/hooks-metrics-list.js.map +1 -0
  162. package/dist/src/mcp-tools/hooks-route.d.ts +12 -0
  163. package/dist/src/mcp-tools/hooks-route.d.ts.map +1 -0
  164. package/dist/src/mcp-tools/hooks-route.js +251 -0
  165. package/dist/src/mcp-tools/hooks-route.js.map +1 -0
  166. package/dist/src/mcp-tools/hooks-routing.d.ts +6 -27
  167. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  168. package/dist/src/mcp-tools/hooks-routing.js +6 -1727
  169. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  170. package/dist/src/mcp-tools/hooks-session.d.ts +9 -0
  171. package/dist/src/mcp-tools/hooks-session.d.ts.map +1 -0
  172. package/dist/src/mcp-tools/hooks-session.js +243 -0
  173. package/dist/src/mcp-tools/hooks-session.js.map +1 -0
  174. package/dist/src/mcp-tools/hooks-task.d.ts +17 -0
  175. package/dist/src/mcp-tools/hooks-task.d.ts.map +1 -0
  176. package/dist/src/mcp-tools/hooks-task.js +427 -0
  177. package/dist/src/mcp-tools/hooks-task.js.map +1 -0
  178. package/dist/src/mcp-tools/hooks-tools.d.ts +2 -1
  179. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  180. package/dist/src/mcp-tools/hooks-tools.js +2 -1
  181. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  182. package/dist/src/mcp-tools/memory-tools.js +1 -1
  183. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  184. package/dist/src/memory/bm25-index.d.ts +2 -2
  185. package/dist/src/memory/bm25-index.js +2 -2
  186. package/dist/src/memory/embedding-operations.js +2 -2
  187. package/dist/src/memory/embedding-operations.js.map +1 -1
  188. package/dist/src/memory/entity-name-key.d.ts +1 -1
  189. package/dist/src/memory/entity-name-key.js +1 -1
  190. package/dist/src/memory/hnsw-operations.d.ts +1 -1
  191. package/dist/src/memory/hnsw-operations.js +1 -1
  192. package/dist/src/memory/memory-bridge-backend.d.ts +43 -0
  193. package/dist/src/memory/memory-bridge-backend.d.ts.map +1 -0
  194. package/dist/src/memory/memory-bridge-backend.js +363 -0
  195. package/dist/src/memory/memory-bridge-backend.js.map +1 -0
  196. package/dist/src/memory/memory-bridge-core.d.ts +42 -0
  197. package/dist/src/memory/memory-bridge-core.d.ts.map +1 -0
  198. package/dist/src/memory/memory-bridge-core.js +126 -0
  199. package/dist/src/memory/memory-bridge-core.js.map +1 -0
  200. package/dist/src/memory/memory-bridge-entries.d.ts +131 -0
  201. package/dist/src/memory/memory-bridge-entries.d.ts.map +1 -0
  202. package/dist/src/memory/memory-bridge-entries.js +227 -0
  203. package/dist/src/memory/memory-bridge-entries.js.map +1 -0
  204. package/dist/src/memory/memory-bridge-feedback.d.ts +60 -0
  205. package/dist/src/memory/memory-bridge-feedback.d.ts.map +1 -0
  206. package/dist/src/memory/memory-bridge-feedback.js +118 -0
  207. package/dist/src/memory/memory-bridge-feedback.js.map +1 -0
  208. package/dist/src/memory/memory-bridge-paths.d.ts +123 -0
  209. package/dist/src/memory/memory-bridge-paths.d.ts.map +1 -0
  210. package/dist/src/memory/memory-bridge-paths.js +335 -0
  211. package/dist/src/memory/memory-bridge-paths.js.map +1 -0
  212. package/dist/src/memory/memory-bridge-search.d.ts +48 -0
  213. package/dist/src/memory/memory-bridge-search.d.ts.map +1 -0
  214. package/dist/src/memory/memory-bridge-search.js +383 -0
  215. package/dist/src/memory/memory-bridge-search.js.map +1 -0
  216. package/dist/src/memory/memory-bridge-sessions.d.ts +38 -0
  217. package/dist/src/memory/memory-bridge-sessions.d.ts.map +1 -0
  218. package/dist/src/memory/memory-bridge-sessions.js +109 -0
  219. package/dist/src/memory/memory-bridge-sessions.js.map +1 -0
  220. package/dist/src/memory/memory-bridge-store.d.ts +58 -0
  221. package/dist/src/memory/memory-bridge-store.d.ts.map +1 -0
  222. package/dist/src/memory/memory-bridge-store.js +201 -0
  223. package/dist/src/memory/memory-bridge-store.js.map +1 -0
  224. package/dist/src/memory/memory-bridge.d.ts +10 -438
  225. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  226. package/dist/src/memory/memory-bridge.js +14 -1787
  227. package/dist/src/memory/memory-bridge.js.map +1 -1
  228. package/dist/src/memory/memory-kg-claims.d.ts +52 -0
  229. package/dist/src/memory/memory-kg-claims.d.ts.map +1 -0
  230. package/dist/src/memory/memory-kg-claims.js +99 -0
  231. package/dist/src/memory/memory-kg-claims.js.map +1 -0
  232. package/dist/src/memory/memory-kg-index.d.ts +86 -0
  233. package/dist/src/memory/memory-kg-index.d.ts.map +1 -0
  234. package/dist/src/memory/memory-kg-index.js +256 -0
  235. package/dist/src/memory/memory-kg-index.js.map +1 -0
  236. package/dist/src/memory/memory-kg-ingest.d.ts +44 -0
  237. package/dist/src/memory/memory-kg-ingest.d.ts.map +1 -0
  238. package/dist/src/memory/memory-kg-ingest.js +361 -0
  239. package/dist/src/memory/memory-kg-ingest.js.map +1 -0
  240. package/dist/src/memory/memory-kg-model.d.ts +168 -0
  241. package/dist/src/memory/memory-kg-model.d.ts.map +1 -0
  242. package/dist/src/memory/memory-kg-model.js +158 -0
  243. package/dist/src/memory/memory-kg-model.js.map +1 -0
  244. package/dist/src/memory/memory-kg-names.d.ts +64 -0
  245. package/dist/src/memory/memory-kg-names.d.ts.map +1 -0
  246. package/dist/src/memory/memory-kg-names.js +187 -0
  247. package/dist/src/memory/memory-kg-names.js.map +1 -0
  248. package/dist/src/memory/memory-kg-promote.d.ts +79 -0
  249. package/dist/src/memory/memory-kg-promote.d.ts.map +1 -0
  250. package/dist/src/memory/memory-kg-promote.js +248 -0
  251. package/dist/src/memory/memory-kg-promote.js.map +1 -0
  252. package/dist/src/memory/memory-kg-rebuild.d.ts +77 -0
  253. package/dist/src/memory/memory-kg-rebuild.d.ts.map +1 -0
  254. package/dist/src/memory/memory-kg-rebuild.js +299 -0
  255. package/dist/src/memory/memory-kg-rebuild.js.map +1 -0
  256. package/dist/src/memory/memory-kg-rollback.d.ts +47 -0
  257. package/dist/src/memory/memory-kg-rollback.d.ts.map +1 -0
  258. package/dist/src/memory/memory-kg-rollback.js +193 -0
  259. package/dist/src/memory/memory-kg-rollback.js.map +1 -0
  260. package/dist/src/memory/memory-kg-rules.d.ts +64 -0
  261. package/dist/src/memory/memory-kg-rules.d.ts.map +1 -0
  262. package/dist/src/memory/memory-kg-rules.js +251 -0
  263. package/dist/src/memory/memory-kg-rules.js.map +1 -0
  264. package/dist/src/memory/memory-kg-scan.d.ts +118 -0
  265. package/dist/src/memory/memory-kg-scan.d.ts.map +1 -0
  266. package/dist/src/memory/memory-kg-scan.js +209 -0
  267. package/dist/src/memory/memory-kg-scan.js.map +1 -0
  268. package/dist/src/memory/memory-kg-search.d.ts +80 -0
  269. package/dist/src/memory/memory-kg-search.d.ts.map +1 -0
  270. package/dist/src/memory/memory-kg-search.js +239 -0
  271. package/dist/src/memory/memory-kg-search.js.map +1 -0
  272. package/dist/src/memory/memory-kg.d.ts +19 -547
  273. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  274. package/dist/src/memory/memory-kg.js +10 -2389
  275. package/dist/src/memory/memory-kg.js.map +1 -1
  276. package/dist/src/orgrt/daemon-types.d.ts +196 -0
  277. package/dist/src/orgrt/daemon-types.d.ts.map +1 -0
  278. package/dist/src/orgrt/daemon-types.js +38 -0
  279. package/dist/src/orgrt/daemon-types.js.map +1 -0
  280. package/dist/src/orgrt/daemon.d.ts +70 -300
  281. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  282. package/dist/src/orgrt/daemon.js +41 -2536
  283. package/dist/src/orgrt/daemon.js.map +1 -1
  284. package/dist/src/orgrt/idle-watchdog.d.ts +39 -0
  285. package/dist/src/orgrt/idle-watchdog.d.ts.map +1 -0
  286. package/dist/src/orgrt/idle-watchdog.js +289 -0
  287. package/dist/src/orgrt/idle-watchdog.js.map +1 -0
  288. package/dist/src/orgrt/org-reload.d.ts +7 -0
  289. package/dist/src/orgrt/org-reload.d.ts.map +1 -0
  290. package/dist/src/orgrt/org-reload.js +111 -0
  291. package/dist/src/orgrt/org-reload.js.map +1 -0
  292. package/dist/src/orgrt/org-start-steps.d.ts +21 -0
  293. package/dist/src/orgrt/org-start-steps.d.ts.map +1 -0
  294. package/dist/src/orgrt/org-start-steps.js +305 -0
  295. package/dist/src/orgrt/org-start-steps.js.map +1 -0
  296. package/dist/src/orgrt/org-start.d.ts +7 -0
  297. package/dist/src/orgrt/org-start.d.ts.map +1 -0
  298. package/dist/src/orgrt/org-start.js +435 -0
  299. package/dist/src/orgrt/org-start.js.map +1 -0
  300. package/dist/src/orgrt/org-state-file.d.ts +8 -0
  301. package/dist/src/orgrt/org-state-file.d.ts.map +1 -0
  302. package/dist/src/orgrt/org-state-file.js +116 -0
  303. package/dist/src/orgrt/org-state-file.js.map +1 -0
  304. package/dist/src/orgrt/org-stop.d.ts +6 -0
  305. package/dist/src/orgrt/org-stop.d.ts.map +1 -0
  306. package/dist/src/orgrt/org-stop.js +332 -0
  307. package/dist/src/orgrt/org-stop.js.map +1 -0
  308. package/dist/src/orgrt/org-tools.d.ts +11 -0
  309. package/dist/src/orgrt/org-tools.d.ts.map +1 -0
  310. package/dist/src/orgrt/org-tools.js +305 -0
  311. package/dist/src/orgrt/org-tools.js.map +1 -0
  312. package/dist/src/orgrt/role-incarnation.d.ts +18 -0
  313. package/dist/src/orgrt/role-incarnation.d.ts.map +1 -0
  314. package/dist/src/orgrt/role-incarnation.js +374 -0
  315. package/dist/src/orgrt/role-incarnation.js.map +1 -0
  316. package/dist/src/orgrt/role-respawn.d.ts +7 -0
  317. package/dist/src/orgrt/role-respawn.d.ts.map +1 -0
  318. package/dist/src/orgrt/role-respawn.js +318 -0
  319. package/dist/src/orgrt/role-respawn.js.map +1 -0
  320. package/dist/src/orgrt/role-session-opts.d.ts +389 -0
  321. package/dist/src/orgrt/role-session-opts.d.ts.map +1 -0
  322. package/dist/src/orgrt/role-session-opts.js +289 -0
  323. package/dist/src/orgrt/role-session-opts.js.map +1 -0
  324. package/dist/src/orgrt/runner-resolve.d.ts +43 -0
  325. package/dist/src/orgrt/runner-resolve.d.ts.map +1 -0
  326. package/dist/src/orgrt/runner-resolve.js +77 -0
  327. package/dist/src/orgrt/runner-resolve.js.map +1 -0
  328. package/dist/src/orgrt/session-gate.d.ts +34 -0
  329. package/dist/src/orgrt/session-gate.d.ts.map +1 -0
  330. package/dist/src/orgrt/session-gate.js +74 -0
  331. package/dist/src/orgrt/session-gate.js.map +1 -0
  332. package/dist/src/orgrt/session-prompt.d.ts +31 -0
  333. package/dist/src/orgrt/session-prompt.d.ts.map +1 -0
  334. package/dist/src/orgrt/session-prompt.js +115 -0
  335. package/dist/src/orgrt/session-prompt.js.map +1 -0
  336. package/dist/src/orgrt/session-run.d.ts +18 -0
  337. package/dist/src/orgrt/session-run.d.ts.map +1 -0
  338. package/dist/src/orgrt/session-run.js +429 -0
  339. package/dist/src/orgrt/session-run.js.map +1 -0
  340. package/dist/src/orgrt/session-stream.d.ts +21 -0
  341. package/dist/src/orgrt/session-stream.d.ts.map +1 -0
  342. package/dist/src/orgrt/session-stream.js +173 -0
  343. package/dist/src/orgrt/session-stream.js.map +1 -0
  344. package/dist/src/orgrt/session-types.d.ts +219 -0
  345. package/dist/src/orgrt/session-types.d.ts.map +1 -0
  346. package/dist/src/orgrt/session-types.js +2 -0
  347. package/dist/src/orgrt/session-types.js.map +1 -0
  348. package/dist/src/orgrt/session-usage.d.ts +29 -0
  349. package/dist/src/orgrt/session-usage.d.ts.map +1 -0
  350. package/dist/src/orgrt/session-usage.js +64 -0
  351. package/dist/src/orgrt/session-usage.js.map +1 -0
  352. package/dist/src/orgrt/session.d.ts +5 -281
  353. package/dist/src/orgrt/session.d.ts.map +1 -1
  354. package/dist/src/orgrt/session.js +8 -1117
  355. package/dist/src/orgrt/session.js.map +1 -1
  356. package/dist/src/ui/org-hil.mjs +1 -1
  357. package/dist/src/ui/routes-org-agents.mjs +318 -0
  358. package/dist/src/ui/routes-org-approvals.mjs +133 -0
  359. package/dist/src/ui/routes-org-config.mjs +459 -0
  360. package/dist/src/ui/routes-org-control.mjs +300 -0
  361. package/dist/src/ui/routes-org-files.mjs +172 -0
  362. package/dist/src/ui/routes-org-helpers.mjs +84 -0
  363. package/dist/src/ui/routes-org-knowledge.mjs +262 -0
  364. package/dist/src/ui/routes-org-lifecycle.mjs +224 -0
  365. package/dist/src/ui/routes-org-live.mjs +278 -0
  366. package/dist/src/ui/routes-org-mastermind.mjs +346 -0
  367. package/dist/src/ui/routes-org-planning.mjs +398 -0
  368. package/dist/src/ui/routes-org-runs.mjs +430 -0
  369. package/dist/src/ui/routes-org-status.mjs +342 -0
  370. package/dist/src/ui/routes-org-workflows.mjs +212 -0
  371. package/dist/src/ui/routes-org.mjs +26 -3847
  372. package/dist/src/ui/server.mjs +1 -1
  373. package/dist/src/utils/native-error.d.ts +1 -1
  374. package/dist/src/utils/native-error.js +1 -1
  375. package/dist/src/utils/paths.d.ts +2 -1
  376. package/dist/src/utils/paths.d.ts.map +1 -1
  377. package/dist/src/utils/paths.js +2 -1
  378. package/dist/src/utils/paths.js.map +1 -1
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/org-skills/adversarial-reviewer/SKILL.md +1 -1
  381. package/org-skills/board-deck-builder/SKILL.md +1 -1
  382. package/org-skills/code-reviewer/SKILL.md +1 -1
  383. package/org-skills/debugging-wizard/SKILL.md +1 -1
  384. package/org-skills/scientific-thinking-literature-review/SKILL.md +1 -1
  385. package/org-skills/scientific-thinking-scholar-evaluation/SKILL.md +1 -1
  386. package/package.json +5 -5
@@ -0,0 +1,435 @@
1
+ // packages/@monomind/cli/src/orgrt/org-start.ts
2
+ // Extracted from daemon.ts — starting an org run: the reservation guard
3
+ // (startOrg) and the run setup it protects (startOrgInner).
4
+ import { execFileSync } from 'node:child_process';
5
+ import { randomUUID } from 'node:crypto';
6
+ import { join } from 'node:path';
7
+ import { reapOrphanedSdkProcesses } from '../utils/resource-governor.js';
8
+ import { onBudgetBusEvent } from './budget-closure.js';
9
+ import { OrgBus } from './bus.js';
10
+ import * as decisionOps from './decisions.js';
11
+ import { agentRoles, isEndpointRole } from './endpoint-roles.js';
12
+ import { attachForwarder } from './forwarder.js';
13
+ import * as idleWatchdog from './idle-watchdog.js';
14
+ import * as orgMemory from './org-memory.js';
15
+ import * as startSteps from './org-start-steps.js';
16
+ import { readHistory } from './reporting.js';
17
+ import { mergeEffectiveRoleConfig } from './role-slot.js';
18
+ import { SessionLedger } from './session-ledger.js';
19
+ import { TaskDag } from './task-dag.js';
20
+ /** Drain window for a PLANNED stop (the boss called org_complete). Long enough
21
+ * for a sibling mid-build or mid-test to finish and flush its work. A hard
22
+ * stop keeps the short bound — see finishStop. */
23
+ const COMPLETE_DRAIN_MS = 5 * 60_000;
24
+ export async function startOrg(daemon, name, taskOverride, options) {
25
+ // A restart-driven start (scheduleBossRestart) keeps its crash counter so the
26
+ // cap holds; any other (explicit) start resets it so a manual re-run gets a
27
+ // fresh budget.
28
+ if (!daemon.restarting.has(name))
29
+ daemon.bossRestartCounts.delete(name);
30
+ // Join any in-flight stop for this org before checking `this.orgs` — otherwise a
31
+ // start racing a stop's drain window (up to stopWaitMs) can share the stopping
32
+ // run's worktree path while it's still being force-removed.
33
+ const inflightStop = daemon.stopping.get(name);
34
+ if (inflightStop)
35
+ await inflightStop;
36
+ // Bug 2 (TOCTOU race): this existence check is synchronous, but the real
37
+ // registration into `this.orgs` doesn't happen until deep inside
38
+ // startOrgInner, after several genuine `await` points (the provider
39
+ // validation dynamic import, `git worktree add` for workspace:
40
+ // 'worktree'). Two concurrent startOrg(name) calls — e.g. the
41
+ // scheduler's tick, the runfile poll loop, and autoWake firing close
42
+ // together — could each pass this check before either registered,
43
+ // spawning two duplicate runs with separate budget/policy counters that
44
+ // both write the same shared per-org files. Reserve the name in
45
+ // `startingOrgs` synchronously, in the same tick as the check, so a
46
+ // second concurrent call sees the reservation and is rejected instead of
47
+ // racing ahead to spawn a duplicate.
48
+ if (daemon.orgs.has(name))
49
+ throw new Error(`org ${name} already running`);
50
+ if (daemon.startingOrgs.has(name))
51
+ throw new Error(`org ${name} already starting`);
52
+ daemon.startingOrgs.add(name);
53
+ // #345: the run's --auto-approve list — kept by a boss auto-restart like
54
+ // the crash counter, replaced by any other start. Set only after the
55
+ // guards above, so a rejected start can't rewrite a live run's list.
56
+ if (!daemon.restarting.has(name)) {
57
+ if (options?.autoApprove?.length)
58
+ daemon.runAutoApprove.set(name, options.autoApprove);
59
+ else
60
+ daemon.runAutoApprove.delete(name);
61
+ }
62
+ try {
63
+ return await startOrgInner(daemon, name, taskOverride, options);
64
+ }
65
+ catch (err) {
66
+ // startOrgInner registers the org in `this.orgs` (and spawns the boss,
67
+ // installs the exit listener, starts the broker lease) well before it
68
+ // returns; persistState (ENOSPC/EACCES) and BrokerLease.start() can
69
+ // still throw after that. Left alone, that was a live, unreachable org:
70
+ // sessions running, `this.orgs` still holding it, every later startOrg
71
+ // rejected with "already running", and nothing ever calling stopOrg.
72
+ // Only this call can have registered the name (the reservation above
73
+ // holds until `finally`), so anything in the map is ours to tear down.
74
+ if (daemon.orgs.has(name)) {
75
+ // #302: tag the real cause so a run's history/report can never read
76
+ // this as a boss-attributed outcome — nothing here asked the boss.
77
+ await daemon
78
+ .stopOrg(name, { closedBy: 'failed-start' })
79
+ .catch((stopErr) => console.error(`org ${name}: teardown after failed start failed:`, stopErr instanceof Error ? stopErr.message : stopErr));
80
+ }
81
+ throw err;
82
+ }
83
+ finally {
84
+ daemon.startingOrgs.delete(name);
85
+ }
86
+ }
87
+ /** The actual startOrg implementation. Split out of startOrg() so the
88
+ * reservation guard above runs synchronously, before any `await` in here —
89
+ * see the bug 2 comment in startOrg(). */
90
+ async function startOrgInner(daemon, name, taskOverride, options) {
91
+ const { def, run, checkpoint, dir, cwd, worktreePath } = await startSteps.prepareOrgStart(daemon, name, options);
92
+ const bus = new OrgBus(name, run, dir);
93
+ // Lightweight in-memory tail for busEvents() (test-loop, /api/history).
94
+ // Full events (including Write content snapshots) live on disk in bus.jsonl;
95
+ // the in-memory copy strips bulky data.content to keep RAM flat.
96
+ const MAX_COLLECTED = 1000;
97
+ const collected = [];
98
+ let lastActivity = Date.now();
99
+ // Separate from lastActivity: only real tool calls (org_send, org_task,
100
+ // Bash, ...) count here, not status pings or chat-only turns. The idle
101
+ // watchdog's nudge-recovery check (resolvedIdleNudgeCount) uses this to
102
+ // tell genuine forward progress apart from a boss that "answers" a nudge
103
+ // with a bare acknowledgment ("✓ Complete") and does nothing — a
104
+ // content-free reply still updates lastActivity (so the org isn't
105
+ // flagged as silent), but must not reset the cumulative nudge cap, or a
106
+ // boss that's genuinely out of ideas can loop forever making zero
107
+ // progress without ever tripping the watchdog.
108
+ let lastToolActivity = 0;
109
+ // ADR-O001 D4 (no-progress detector): the idle clock above is org-wide and
110
+ // says nothing at all while a hold is in force — the 8.3-hour stall looked
111
+ // perfectly healthy from it. Per-role last-activity is what tells a role
112
+ // that is nominally working but producing nothing from one that is simply
113
+ // waiting its turn.
114
+ const roleActivity = new Map();
115
+ const noProgressAlarmed = new Set();
116
+ bus.subscribe((e) => {
117
+ const slim = e.data?.content != null ? { ...e, data: { ...e.data, content: undefined } } : e;
118
+ collected.push(slim);
119
+ if (collected.length > MAX_COLLECTED)
120
+ collected.splice(0, collected.length - MAX_COLLECTED);
121
+ // The watchdog's own events must not count as org activity, or a hung
122
+ // boss would never trip the "nudge produced no activity" stop and a
123
+ // silent role would clear its own no-progress alarm.
124
+ const selfEmitted = e.reason === 'idle-nudge' || e.reason === 'no-progress' || e.reason === 'hold-expired';
125
+ if (!selfEmitted)
126
+ lastActivity = Date.now();
127
+ if (e.type === 'tool')
128
+ lastToolActivity = Date.now();
129
+ if (e.from && !selfEmitted) {
130
+ roleActivity.set(e.from, Date.now());
131
+ noProgressAlarmed.delete(e.from);
132
+ }
133
+ // org_complete IS the end of the run — self-stop instead of sitting
134
+ // "running" forever after a recorded outcome. Deferred (unref'd) so the
135
+ // tool call's receipt reaches the boss and its final turn text still
136
+ // lands on the bus before mailboxes close; stopOrg is reentrant-safe
137
+ // against a concurrent manual stop.
138
+ if (e.type === 'status' && e.reason === 'org-complete') {
139
+ const t = setTimeout(() => {
140
+ // #206: closedBy: 'org-complete' is the ONLY signal `org run`
141
+ // trusts to mean "the run ended cleanly, exit 0" — every other
142
+ // stop path (idle watchdog, boss-restart-exhausted, manual stop)
143
+ // leaves it unset.
144
+ daemon
145
+ .stopOrg(name, { drainMs: COMPLETE_DRAIN_MS, closedBy: 'org-complete' })
146
+ .catch((err) => console.error(`org ${name}: auto-stop after org_complete failed:`, err instanceof Error ? err.message : err));
147
+ }, 1000);
148
+ t.unref?.();
149
+ }
150
+ // Accumulate cost from usage events into per-role metrics
151
+ if (e.type === 'usage' && e.from && e.data) {
152
+ const runtime = running.agents.get(e.from);
153
+ if (runtime) {
154
+ const cost = Number(e.data.cost_usd ?? 0);
155
+ if (Number.isFinite(cost)) {
156
+ runtime.metrics.costUsd += cost;
157
+ }
158
+ }
159
+ }
160
+ // Bug 1 / #343: enforce the org-wide run_config.budget_tokens ceiling,
161
+ // hold a budget-closed role's tasks, warn near a budget.
162
+ onBudgetBusEvent(running, e);
163
+ // Track last message ID for threading responses
164
+ if ((e.type === 'message' || e.type === 'xorg') && e.from) {
165
+ const runtime = running.agents.get(e.from);
166
+ if (runtime) {
167
+ runtime.lastMessageId = e.id;
168
+ }
169
+ }
170
+ // Apply audit filter if configured (skip filtered tool events before forwarding)
171
+ if (daemon.opts.auditFilter && e.type === 'tool') {
172
+ const { tool, decision } = daemon.opts.auditFilter;
173
+ if (tool && e.tool !== tool)
174
+ return; // Skip: tool name doesn't match
175
+ if (decision && e.decision !== decision)
176
+ return; // Skip: decision doesn't match
177
+ }
178
+ for (const fn of daemon.globalSubscribers)
179
+ fn(e);
180
+ });
181
+ if (daemon.opts.forward !== false)
182
+ daemon.forwarders.set(name, attachForwarder(bus, daemon.opts.controlJson ?? join(daemon.root, '.monomind/control.json')));
183
+ const running = {
184
+ def,
185
+ run,
186
+ sessionLedger: new SessionLedger(join(dir, 'sessions.json')),
187
+ gates: decisionOps.readGates(daemon.root, name),
188
+ bus,
189
+ agents: new Map(),
190
+ roleSlots: new Map(),
191
+ bossRoleId: '', // set below, once bossRole is computed
192
+ glossary: [],
193
+ respawning: new Set(),
194
+ busEvents: () => [...collected],
195
+ workdir: cwd,
196
+ credential: randomUUID(),
197
+ };
198
+ daemon.orgs.set(name, running);
199
+ const roleFences = await startSteps.createRoleFences(daemon, def);
200
+ if (roleFences.size > 0)
201
+ running.fences = roleFences;
202
+ // Even-split budget; a role's own budget_tokens overrides it (roleTokenBudget).
203
+ // Bug 1: roles WITH an explicit override spend on top of the even split
204
+ // rather than out of it, so the roster's ceilings could sum to well over
205
+ // the declared org-wide budget (e.g. 4 roles @ 250k + one role overridden
206
+ // to 2M = 2.75M achievable against a declared 1M cap). Subtract the sum of
207
+ // every role's explicit override from the org-wide budget first, then
208
+ // split only the remainder among the roles WITHOUT an override, so the
209
+ // static split is honest about what's left. (Live usage is still tracked
210
+ // and enforced as a real ceiling above, independent of this static split.)
211
+ const orgBudgetTokens = def.run_config.budget_tokens ?? 1_000_000;
212
+ const overriddenTokenSum = def.roles.reduce((sum, r) => sum + (r.budget_tokens ?? 0), 0);
213
+ const unoverriddenRoleCount = agentRoles(def.roles).filter((r) => r.budget_tokens == null).length;
214
+ const _perRoleBudget = unoverriddenRoleCount > 0
215
+ ? Math.max(0, Math.floor((orgBudgetTokens - overriddenTokenSum) / unoverriddenRoleCount))
216
+ : 0;
217
+ // Single boss-selection rule for kickoff AND org_complete gating — the
218
+ // session layer previously keyed the tool on reports_to===null while the
219
+ // kickoff went to (type==='boss' || reports_to===null || roles[0]), so a
220
+ // fallback-selected boss could be told to call org_complete without having
221
+ // the tool.
222
+ // M2: endpoint roles are never the boss.
223
+ const sessionRoles = agentRoles(def.roles);
224
+ if (sessionRoles.length === 0)
225
+ throw new Error(`org ${name}: no agent roles — endpoint roles cannot run an org`);
226
+ const bossRole = sessionRoles.find((r) => r.type === 'boss' || r.reports_to === null) ?? sessionRoles[0];
227
+ running.bossRoleId = bossRole.id;
228
+ // Canonical entity names from THIS org's KG — injected into the coordinator
229
+ // prompt so org_learn extractions reuse them instead of minting duplicates.
230
+ // Scoped: an unscoped glossary handed every org's entity names to every
231
+ // coordinator, which is how one org's claims got merged into another's.
232
+ const glossary = await (async () => {
233
+ try {
234
+ if (!(await daemon.orgMemoryUsable()))
235
+ return [];
236
+ const kg = await import('../memory/memory-kg.js');
237
+ return await kg.kgGlossary({
238
+ dbPath: daemon.orgMemoryDbPath(),
239
+ scope: orgMemory.orgKgScope(name),
240
+ });
241
+ }
242
+ catch {
243
+ return [];
244
+ }
245
+ })();
246
+ running.glossary = glossary;
247
+ // Resource-gated staggered spawn: check memory/process limits before each
248
+ // NON-BOSS agent, wait if under pressure. The boss always spawns immediately
249
+ // and ungated — the org has no coordinator at all without it, so gating it
250
+ // behind host memory pressure would make the whole org fail to start over a
251
+ // condition workers are specifically designed to ride out.
252
+ // Extracted so a role that fails its gate check can be spawned later by
253
+ // scheduleDeferredSpawn() once resources free up, without re-running the
254
+ // gate logic or duplicating the session-wiring below.
255
+ const spawnRole = (role, roleCheckpoint) => {
256
+ if (running.agents.has(role.id))
257
+ return;
258
+ if (isEndpointRole(role))
259
+ return; // M2: no session, mailbox or slot
260
+ const { runtime, abort } = daemon.spawnRoleIncarnation(name, running, role, roleCheckpoint?.generation ?? 0, { roleCheckpoint });
261
+ running.agents.set(role.id, runtime);
262
+ running.roleSlots.set(role.id, {
263
+ generation: roleCheckpoint?.generation ?? 0,
264
+ phase: 'running',
265
+ runtime,
266
+ abort,
267
+ effectiveRole: roleCheckpoint?.effectiveRoleOverrides &&
268
+ Object.keys(roleCheckpoint.effectiveRoleOverrides).length > 0
269
+ ? mergeEffectiveRoleConfig(role, roleCheckpoint.effectiveRoleOverrides)
270
+ : role,
271
+ respawnCount: roleCheckpoint?.respawnCount ?? 0,
272
+ queuedDuringSwap: roleCheckpoint?.queuedDuringSwap ?? [],
273
+ retiredUsage: roleCheckpoint?.retiredUsage ?? { tokens: 0, costUsd: 0 },
274
+ });
275
+ };
276
+ if (options?.resume && checkpoint) {
277
+ const restoredRoles = new Set(Object.keys(checkpoint.roleState));
278
+ for (const [roleId, roleState] of Object.entries(checkpoint.roleState)) {
279
+ const role = def.roles.find((r) => r.id === roleId);
280
+ if (role)
281
+ spawnRole(role, roleState);
282
+ }
283
+ const pendingRoles = new Map();
284
+ for (const role of def.roles) {
285
+ if (!restoredRoles.has(role.id) && !isEndpointRole(role)) {
286
+ pendingRoles.set(role.id, role);
287
+ }
288
+ }
289
+ running.pendingRoles = pendingRoles;
290
+ running.spawnRole = spawnRole;
291
+ running.taskDag =
292
+ checkpoint.tasks && checkpoint.tasks.length > 0
293
+ ? TaskDag.fromJSON(checkpoint.tasks)
294
+ : new TaskDag();
295
+ // A 'running' task's "[task:…]" message was consumed by the session that
296
+ // was working it. If that role's SDK session is resumed (checkpointed
297
+ // sessionId) the task is still in its context; otherwise — role not
298
+ // restored at all, or restored into a fresh session — nothing knows
299
+ // about the task, so put it back to 'ready' and re-dispatch.
300
+ for (const task of running.taskDag.all()) {
301
+ if (task.status !== 'running')
302
+ continue;
303
+ if (checkpoint.roleState[task.assignee]?.sessionId)
304
+ continue;
305
+ running.taskDag.requeue(task.id);
306
+ }
307
+ decisionOps.dispatchReadyTasks(daemon, name, running);
308
+ if (worktreePath)
309
+ running.worktreePath = worktreePath;
310
+ }
311
+ else {
312
+ spawnRole(bossRole); // always, ungated — see comment above
313
+ // Lazy spawn: register non-boss roles as pending. They spawn on first
314
+ // message (see deliver()), avoiding the memory gate stampede at startup.
315
+ const pendingRoles = new Map();
316
+ for (const role of def.roles) {
317
+ if (role.id === bossRole.id || isEndpointRole(role))
318
+ continue;
319
+ pendingRoles.set(role.id, role);
320
+ }
321
+ running.pendingRoles = pendingRoles;
322
+ running.spawnRole = spawnRole;
323
+ running.taskDag = new TaskDag();
324
+ if (worktreePath)
325
+ running.worktreePath = worktreePath;
326
+ }
327
+ // Crash cleanup: reap SDK children if this process exits abnormally.
328
+ // monolean: process-scoped listener — upgrade path = per-org tracking
329
+ const crashCleanup = () => {
330
+ try {
331
+ // Statically imported: a process 'exit' handler must be synchronous,
332
+ // so `await import()` is unavailable — and a bare require() throws
333
+ // "require is not defined" in this ESM package. Guarded by
334
+ // no-cjs-require-in-esm.test.ts.
335
+ reapOrphanedSdkProcesses(new Set(), process.pid);
336
+ }
337
+ catch {
338
+ /* best-effort */
339
+ }
340
+ // #301: `process.on('exit')` is the SECOND termination path — it fires
341
+ // for a normal stop too (finishStop's own prune above already covers
342
+ // that case, so this is a harmless idempotent repeat there) but also
343
+ // for every path that reaches it via an explicit `process.exit()`
344
+ // (org.ts's SIGTERM/SIGINT/SIGHUP handlers, uncaughtException,
345
+ // unhandledRejection) — none of which run finishStop's cleanup at all.
346
+ // execFileSync is already a static top-level import (see the comment
347
+ // above), so this stays synchronous-safe like the rest of this
348
+ // handler. SIGKILL cannot reach here — no in-process code runs for
349
+ // it — which is why prune-at-start exists as the complement.
350
+ try {
351
+ execFileSync('git', ['worktree', 'prune'], {
352
+ cwd: daemon.root,
353
+ stdio: 'ignore',
354
+ timeout: 30_000,
355
+ });
356
+ }
357
+ catch {
358
+ /* best-effort: not a git repo, git missing, or a wedged hook */
359
+ }
360
+ };
361
+ process.on('exit', crashCleanup);
362
+ running._crashCleanup = crashCleanup;
363
+ // Stale-base drift detection: if the working tree is too many commits behind
364
+ // its tracking branch, warn or refuse to start. Best-effort — git may not be
365
+ // available, or the repo may have no tracking branch.
366
+ const staleThreshold = def.run_config.stale_base_threshold;
367
+ if (staleThreshold && staleThreshold > 0 && cwd === daemon.root) {
368
+ try {
369
+ const { execSync } = await import('node:child_process');
370
+ const behind = execSync('git rev-list --count HEAD..@{upstream} 2>/dev/null', {
371
+ cwd,
372
+ encoding: 'utf8',
373
+ timeout: 10_000,
374
+ }).trim();
375
+ const count = parseInt(behind, 10);
376
+ if (!Number.isNaN(count) && count > staleThreshold) {
377
+ bus.emit({
378
+ type: 'audit',
379
+ reason: 'stale-base',
380
+ msg: `working tree is ${count} commits behind upstream (threshold: ${staleThreshold}) — consider pulling before running`,
381
+ data: { behind: count, threshold: staleThreshold },
382
+ });
383
+ }
384
+ }
385
+ catch {
386
+ /* no upstream tracking or git unavailable — skip silently */
387
+ }
388
+ }
389
+ const boss = bossRole;
390
+ if (options?.resume) {
391
+ if (running.agents.get(boss.id)?.mailbox.serialize().queue.length === 0) {
392
+ running.agents
393
+ .get(boss.id)
394
+ ?.mailbox.push(`Org "${name}" resumed from checkpoint (run ${run}).\nGoal: ${taskOverride ?? def.goal}\n` +
395
+ `Outstanding tasks and role states have been restored. Continue coordinating your team.`);
396
+ }
397
+ bus.emit({
398
+ type: 'status',
399
+ msg: `org resumed from checkpoint (${run})`,
400
+ data: { goal: taskOverride ?? def.goal },
401
+ });
402
+ }
403
+ else {
404
+ // Cross-run memory: brief the coordinator on the previous run so scheduled
405
+ // orgs accumulate instead of starting cold every interval.
406
+ const prev = readHistory(daemon.root, name).at(-1);
407
+ const prevBrief = prev
408
+ ? `\n\nPrevious run (${prev.run}${prev.endedAt ? `, ${new Date(prev.endedAt).toISOString()}` : ''}): ` +
409
+ (prev.outcome
410
+ ? `outcome "${prev.outcome.status}" — ${prev.outcome.summary}`
411
+ : `no recorded outcome (${prev.messages} messages, ${prev.assets.length} assets${prev.crashes.length ? `, ${prev.crashes.length} crashed agent(s)` : ''})`) +
412
+ `\nBuild on that work — do not redo what is already done.`
413
+ : '';
414
+ running.agents
415
+ .get(boss.id)
416
+ ?.mailbox.push(`Org "${name}" started (run ${run}).\nGoal: ${taskOverride ?? def.goal}\n` +
417
+ `Coordinate your team via org_send. Only when the FULL goal above is achieved (or clearly can't be) — not merely "this batch of dispatched tasks finished" — record it with org_complete, then end your turn. ` +
418
+ `If a batch finishes but the goal has more scope left, dispatch the next batch instead of ending the run.${prevBrief}`);
419
+ bus.emit({
420
+ type: 'status',
421
+ msg: `org started (${sessionRoles.length} agents)`,
422
+ data: { goal: taskOverride ?? def.goal },
423
+ });
424
+ }
425
+ daemon.persistState(name, 'running', run);
426
+ idleWatchdog.startIdleWatchdog(daemon, name, running, bossRole, {
427
+ lastActivity: () => lastActivity,
428
+ lastToolActivity: () => lastToolActivity,
429
+ roleActivity,
430
+ noProgressAlarmed,
431
+ });
432
+ await startSteps.startInboxAndDrain(daemon, name, running);
433
+ return running;
434
+ }
435
+ //# sourceMappingURL=org-start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-start.js","sourceRoot":"","sources":["../../../src/orgrt/org-start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type OrgCheckpoint } from './checkpoint.js';
2
+ import type { OrgDaemon } from './daemon.js';
3
+ import type { RunningOrg } from './daemon-types.js';
4
+ export declare function persistState(daemon: OrgDaemon, name: string, status: string, run: string, org?: RunningOrg, checkpointOverride?: OrgCheckpoint | null, closedBy?: string): void;
5
+ export declare function persistCrashStateAll(daemon: OrgDaemon, error?: string): void;
6
+ export declare function writeHeartbeat(daemon: OrgDaemon): void;
7
+ export declare function clearHeartbeat(daemon: OrgDaemon): void;
8
+ //# sourceMappingURL=org-state-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-state-file.d.ts","sourceRoot":"","sources":["../../../src/orgrt/org-state-file.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,UAAU,EAChB,kBAAkB,CAAC,EAAE,aAAa,GAAG,IAAI,EACzC,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAgDN;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CA6B5E;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CActD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAMtD"}
@@ -0,0 +1,116 @@
1
+ // packages/@monomind/cli/src/orgrt/org-state-file.ts
2
+ // Extracted from daemon.ts — the daemon's on-disk state: runtime.json
3
+ // (persistState, persistCrashStateAll) and the serve heartbeat.
4
+ import { mkdirSync, unlinkSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { writeJsonFileAtomic } from '../utils/json-file.js';
7
+ import { captureCheckpoint, generateChecksum } from './checkpoint.js';
8
+ import { ORG_DIR } from './types.js';
9
+ export function persistState(daemon, name, status, run, org, checkpointOverride, closedBy) {
10
+ const p = join(daemon.root, ORG_DIR, name, 'runtime.json');
11
+ const missing = [...(daemon.abandoned.get(name) ?? [])];
12
+ const memoryError = daemon.memoryErrors.get(name);
13
+ const running = org ?? daemon.orgs.get(name);
14
+ const validStatus = status === 'stopped' || status === 'crashed' ? status : 'running';
15
+ // Pattern 3: Capture full checkpoint state for resume. On stop, finishStop
16
+ // passes a snapshot captured BEFORE mailboxes close and sessions drain —
17
+ // otherwise the queue is always empty by persist time.
18
+ let checkpoint = checkpointOverride ?? null;
19
+ if (!checkpoint && running) {
20
+ // Best-effort, like the snapshot in finishStop: persisting the run's
21
+ // state matters more than the resume checkpoint inside it, and a stop
22
+ // must not fail because a checkpoint could not be built.
23
+ try {
24
+ checkpoint = captureCheckpoint(running, validStatus);
25
+ }
26
+ catch (err) {
27
+ console.error(`org ${name}: could not capture the ${validStatus} checkpoint:`, err instanceof Error ? err.message : err);
28
+ checkpoint = null;
29
+ }
30
+ }
31
+ else if (checkpoint && checkpoint.status !== validStatus) {
32
+ const { checksum: _, ...state } = checkpoint;
33
+ checkpoint = {
34
+ ...state,
35
+ status: validStatus,
36
+ checksum: generateChecksum({
37
+ ...state,
38
+ status: validStatus,
39
+ }),
40
+ };
41
+ }
42
+ // C4: writeJsonFileAtomic (tmp + rename) — a direct writeFileSync here
43
+ // could leave runtime.json truncated on Ctrl-C during `org stop`, which
44
+ // would brick every subsequent `org status` / isOrgRunning / scheduler
45
+ // call. The state files in 6 other daemon paths already use this helper.
46
+ writeJsonFileAtomic(p, {
47
+ status,
48
+ run,
49
+ pid: process.pid,
50
+ updated: new Date().toISOString(),
51
+ ...(missing.length ? { abandonedRoles: missing } : {}),
52
+ ...(memoryError ? { memoryError } : {}),
53
+ ...(checkpoint ? { checkpoint } : {}),
54
+ ...(closedBy ? { closedBy } : {}),
55
+ });
56
+ }
57
+ export function persistCrashStateAll(daemon, error) {
58
+ for (const [name, org] of daemon.orgs) {
59
+ try {
60
+ const p = join(daemon.root, ORG_DIR, name, 'runtime.json');
61
+ // Capture separately from the write below: a throw here (e.g. a
62
+ // cyclic structure in roleState reaching generateChecksum) must not
63
+ // suppress the base crash record, which is the actually-important
64
+ // best-effort write this method exists for.
65
+ let checkpoint;
66
+ try {
67
+ checkpoint = captureCheckpoint(org, 'crashed');
68
+ }
69
+ catch {
70
+ /* best effort — proceed without a checkpoint */
71
+ }
72
+ // C4: atomic write — crash handler is the most likely place to hit
73
+ // a partial write since the process is mid-teardown.
74
+ writeJsonFileAtomic(p, {
75
+ status: 'crashed',
76
+ run: org.run,
77
+ pid: process.pid,
78
+ updated: new Date().toISOString(),
79
+ closedBy: 'crash-handler',
80
+ ...(checkpoint ? { checkpoint } : {}),
81
+ ...(error ? { error } : {}),
82
+ });
83
+ }
84
+ catch {
85
+ /* best effort — filesystem may be unavailable */
86
+ }
87
+ }
88
+ }
89
+ function heartbeatPath(daemon) {
90
+ return join(daemon.root, '.monomind', 'serve-heartbeat.json');
91
+ }
92
+ export function writeHeartbeat(daemon) {
93
+ try {
94
+ const p = heartbeatPath(daemon);
95
+ mkdirSync(join(daemon.root, '.monomind'), { recursive: true });
96
+ // C4: atomic write — heartbeat corruption is how `org status` reports
97
+ // a phantom daemon after a crash.
98
+ writeJsonFileAtomic(p, {
99
+ pid: process.pid,
100
+ updatedAt: new Date().toISOString(),
101
+ running: daemon.listRunning(),
102
+ });
103
+ }
104
+ catch {
105
+ /* best effort */
106
+ }
107
+ }
108
+ export function clearHeartbeat(daemon) {
109
+ try {
110
+ unlinkSync(heartbeatPath(daemon));
111
+ }
112
+ catch {
113
+ /* already gone or never written */
114
+ }
115
+ }
116
+ //# sourceMappingURL=org-state-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-state-file.js","sourceRoot":"","sources":["../../../src/orgrt/org-state-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { OrgDaemon } from './daemon.js';
2
+ export declare function stopOrg(daemon: OrgDaemon, name: string, opts?: {
3
+ drainMs?: number;
4
+ closedBy?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=org-stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-stop.d.ts","sourceRoot":"","sources":["../../../src/orgrt/org-stop.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C,wBAAsB,OAAO,CAC3B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CA4Bf"}