@monoes/monomindcli 2.9.22 → 2.9.24

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 (1006) hide show
  1. package/.claude/agents/consensus/quorum-manager.md +35 -54
  2. package/.claude/agents/core/coordinator.md +14 -18
  3. package/.claude/agents/core/researcher.md +1 -1
  4. package/.claude/agents/github/issue-tracker.md +3 -3
  5. package/.claude/agents/github/{code-review-swarm.md → monoswarm-code-review.md} +1 -1
  6. package/.claude/agents/github/{swarm-issue.md → monoswarm-issue.md} +1 -1
  7. package/.claude/agents/github/{multi-repo-swarm.md → monoswarm-multi-repo.md} +1 -1
  8. package/.claude/agents/github/{swarm-pr.md → monoswarm-pr.md} +1 -1
  9. package/.claude/agents/github/pr-manager.md +1 -1
  10. package/.claude/agents/github/release-manager.md +1 -1
  11. package/.claude/agents/github/repo-architect.md +1 -1
  12. package/.claude/agents/github/sync-coordinator.md +4 -4
  13. package/.claude/agents/{hive-mind → monoswarm}/collective-intelligence-coordinator.md +9 -16
  14. package/.claude/agents/{swarm → monoswarm}/mesh-coordinator.md +19 -24
  15. package/.claude/agents/{hive-mind/swarm-memory-manager.md → monoswarm/monoswarm-memory-manager.md} +1 -1
  16. package/.claude/agents/templates/{coordinator-swarm-init.md → coordinator-monoswarm-init.md} +1 -1
  17. package/.claude/agents/testing/{tdd-london-swarm.md → tdd-london-monoswarm.md} +2 -2
  18. package/.claude/commands/agents/agent-coordination.md +3 -3
  19. package/.claude/commands/agents/agent-types.md +1 -1
  20. package/.claude/commands/automation/self-healing.md +1 -1
  21. package/.claude/commands/automation/smart-spawn.md +1 -1
  22. package/.claude/commands/coordination/README.md +1 -1
  23. package/.claude/commands/coordination/{swarm-init.md → monoswarm-init.md} +2 -2
  24. package/.claude/commands/coordination/task-orchestrate.md +4 -4
  25. package/.claude/commands/github/README.md +1 -1
  26. package/.claude/commands/github/issue-tracker.md +2 -2
  27. package/.claude/commands/github/pr-manager.md +1 -1
  28. package/.claude/commands/github/release-manager.md +1 -1
  29. package/.claude/commands/github/repo-architect.md +1 -1
  30. package/.claude/commands/github/sync-coordinator.md +2 -2
  31. package/.claude/commands/hooks/README.md +1 -2
  32. package/.claude/commands/hooks/overview.md +1 -2
  33. package/.claude/commands/hooks/setup.md +0 -3
  34. package/.claude/commands/mastermind/createtask.md +2 -2
  35. package/.claude/commands/mastermind/do.md +3 -3
  36. package/.claude/commands/mastermind/help.md +2 -2
  37. package/.claude/commands/mastermind/ideate.md +1 -1
  38. package/.claude/commands/mastermind/improve.md +1 -1
  39. package/.claude/commands/mastermind/memory.md +2 -2
  40. package/.claude/commands/mastermind/{swarm.md → monoswarm.md} +13 -26
  41. package/.claude/commands/mastermind/topology.md +1 -1
  42. package/.claude/commands/memory/README.md +2 -2
  43. package/.claude/commands/memory/memory-search.md +1 -1
  44. package/.claude/commands/monoswarm/README.md +59 -0
  45. package/.claude/commands/monoswarm/consensus.md +61 -0
  46. package/.claude/commands/monoswarm/init.md +68 -0
  47. package/.claude/commands/monoswarm/memory.md +55 -0
  48. package/.claude/commands/monoswarm/monoswarm.md +139 -0
  49. package/.claude/commands/{swarm → monoswarm}/research.md +2 -2
  50. package/.claude/commands/monoswarm/spawn.md +49 -0
  51. package/.claude/commands/monoswarm/status.md +48 -0
  52. package/.claude/commands/monoswarm/stop.md +46 -0
  53. package/.claude/commands/optimization/auto-topology.md +9 -9
  54. package/.claude/commands/stream-chain/run.md +1 -1
  55. package/.claude/commands/workflows/development.md +1 -1
  56. package/.claude/commands/workflows/research.md +2 -2
  57. package/.claude/helpers/audit-log-writer.cjs +72 -0
  58. package/.claude/helpers/control-start.cjs +84 -26
  59. package/.claude/helpers/handlers/agent-start-handler.cjs +5 -5
  60. package/.claude/helpers/handlers/gates-handler.cjs +31 -10
  61. package/.claude/helpers/handlers/session-restore-handler.cjs +1 -1
  62. package/.claude/helpers/handlers/task-handler.cjs +4 -4
  63. package/.claude/helpers/skill-registry.json +4718 -3669
  64. package/.claude/helpers/statusline.cjs +21 -21
  65. package/.claude/helpers/token-tracker.cjs +0 -6
  66. package/.claude/settings.json +2 -3
  67. package/.claude/skills/hooks-automation/SKILL.md +5 -5
  68. package/.claude/skills/mastermind-protocol/SKILL.md +3 -3
  69. package/.claude/skills/memory-toolkit/SKILL.md +2 -2
  70. package/.claude/skills/{swarm-orchestration → monoswarm}/SKILL.md +106 -42
  71. package/.claude/skills/specialagent/SKILL.md +1 -1
  72. package/README.md +31 -12
  73. package/dist/src/agents/registry-builder.d.ts.map +1 -1
  74. package/dist/src/agents/registry-builder.js +8 -9
  75. package/dist/src/agents/registry-builder.js.map +1 -1
  76. package/dist/src/autopilot-state.d.ts +0 -16
  77. package/dist/src/autopilot-state.d.ts.map +1 -1
  78. package/dist/src/autopilot-state.js +6 -21
  79. package/dist/src/autopilot-state.js.map +1 -1
  80. package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -1
  81. package/dist/src/browser/action-builder/analyzer.js +6 -6
  82. package/dist/src/browser/action-builder/analyzer.js.map +1 -1
  83. package/dist/src/browser/action-builder/types.d.ts.map +1 -1
  84. package/dist/src/browser/adapters/gemini.d.ts.map +1 -1
  85. package/dist/src/browser/adapters/index.d.ts.map +1 -1
  86. package/dist/src/browser/adapters/index.js +2 -2
  87. package/dist/src/browser/adapters/index.js.map +1 -1
  88. package/dist/src/browser/adapters/instagram.d.ts.map +1 -1
  89. package/dist/src/browser/adapters/linkedin.d.ts.map +1 -1
  90. package/dist/src/browser/adapters/linkedin.js +9 -1
  91. package/dist/src/browser/adapters/linkedin.js.map +1 -1
  92. package/dist/src/browser/adapters/x.d.ts.map +1 -1
  93. package/dist/src/browser/adapters/x.js +14 -2
  94. package/dist/src/browser/adapters/x.js.map +1 -1
  95. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  96. package/dist/src/browser/dashboard/server.js +23 -13
  97. package/dist/src/browser/dashboard/server.js.map +1 -1
  98. package/dist/src/browser/dashboard/ui.html +5 -5
  99. package/dist/src/browser/workflow/engine.d.ts +1 -1
  100. package/dist/src/browser/workflow/engine.d.ts.map +1 -1
  101. package/dist/src/browser/workflow/engine.js +74 -25
  102. package/dist/src/browser/workflow/engine.js.map +1 -1
  103. package/dist/src/browser/workflow/store.d.ts +1 -1
  104. package/dist/src/browser/workflow/store.d.ts.map +1 -1
  105. package/dist/src/browser/workflow/store.js +54 -26
  106. package/dist/src/browser/workflow/store.js.map +1 -1
  107. package/dist/src/browser/workflow/types.d.ts.map +1 -1
  108. package/dist/src/capabilities/cap-code.d.ts.map +1 -1
  109. package/dist/src/capabilities/cap-code.js.map +1 -1
  110. package/dist/src/capabilities/cap-data.d.ts.map +1 -1
  111. package/dist/src/capabilities/cap-data.js +28 -8
  112. package/dist/src/capabilities/cap-data.js.map +1 -1
  113. package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
  114. package/dist/src/capabilities/cap-documents.js +136 -54
  115. package/dist/src/capabilities/cap-documents.js.map +1 -1
  116. package/dist/src/capabilities/cap-graph.d.ts.map +1 -1
  117. package/dist/src/capabilities/cap-graph.js +3 -3
  118. package/dist/src/capabilities/cap-graph.js.map +1 -1
  119. package/dist/src/capabilities/cap-media.d.ts.map +1 -1
  120. package/dist/src/capabilities/cap-media.js +1 -1
  121. package/dist/src/capabilities/cap-media.js.map +1 -1
  122. package/dist/src/capabilities/cap-timeline.d.ts.map +1 -1
  123. package/dist/src/capabilities/cap-timeline.js +33 -7
  124. package/dist/src/capabilities/cap-timeline.js.map +1 -1
  125. package/dist/src/capabilities/index.d.ts +5 -5
  126. package/dist/src/capabilities/index.d.ts.map +1 -1
  127. package/dist/src/capabilities/index.js +5 -5
  128. package/dist/src/capabilities/index.js.map +1 -1
  129. package/dist/src/capabilities/manager.d.ts.map +1 -1
  130. package/dist/src/capabilities/manager.js +6 -6
  131. package/dist/src/capabilities/manager.js.map +1 -1
  132. package/dist/src/capabilities/scanner.d.ts.map +1 -1
  133. package/dist/src/capabilities/scanner.js +103 -14
  134. package/dist/src/capabilities/scanner.js.map +1 -1
  135. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
  136. package/dist/src/commands/agent-lifecycle.js +120 -41
  137. package/dist/src/commands/agent-lifecycle.js.map +1 -1
  138. package/dist/src/commands/agent-ops.d.ts.map +1 -1
  139. package/dist/src/commands/agent-ops.js +107 -41
  140. package/dist/src/commands/agent-ops.js.map +1 -1
  141. package/dist/src/commands/agent.d.ts.map +1 -1
  142. package/dist/src/commands/agent.js +11 -3
  143. package/dist/src/commands/agent.js.map +1 -1
  144. package/dist/src/commands/analyze-ast.d.ts +1 -1
  145. package/dist/src/commands/analyze-ast.d.ts.map +1 -1
  146. package/dist/src/commands/analyze-ast.js +47 -41
  147. package/dist/src/commands/analyze-ast.js.map +1 -1
  148. package/dist/src/commands/analyze-diff.d.ts.map +1 -1
  149. package/dist/src/commands/analyze-diff.js +147 -35
  150. package/dist/src/commands/analyze-diff.js.map +1 -1
  151. package/dist/src/commands/analyze-imports.d.ts.map +1 -1
  152. package/dist/src/commands/analyze-imports.js +74 -30
  153. package/dist/src/commands/analyze-imports.js.map +1 -1
  154. package/dist/src/commands/analyze-symbols.d.ts.map +1 -1
  155. package/dist/src/commands/analyze-symbols.js +55 -41
  156. package/dist/src/commands/analyze-symbols.js.map +1 -1
  157. package/dist/src/commands/analyze.d.ts +19 -6
  158. package/dist/src/commands/analyze.d.ts.map +1 -1
  159. package/dist/src/commands/analyze.js +90 -28
  160. package/dist/src/commands/analyze.js.map +1 -1
  161. package/dist/src/commands/autopilot.d.ts.map +1 -1
  162. package/dist/src/commands/autopilot.js +5 -90
  163. package/dist/src/commands/autopilot.js.map +1 -1
  164. package/dist/src/commands/browse-action.d.ts.map +1 -1
  165. package/dist/src/commands/browse-action.js +65 -17
  166. package/dist/src/commands/browse-action.js.map +1 -1
  167. package/dist/src/commands/browse-platform.d.ts.map +1 -1
  168. package/dist/src/commands/browse-platform.js +13 -10
  169. package/dist/src/commands/browse-platform.js.map +1 -1
  170. package/dist/src/commands/browse-workflow.d.ts.map +1 -1
  171. package/dist/src/commands/browse-workflow.js +54 -20
  172. package/dist/src/commands/browse-workflow.js.map +1 -1
  173. package/dist/src/commands/browse.d.ts +1 -1
  174. package/dist/src/commands/browse.js +2 -2
  175. package/dist/src/commands/browse.js.map +1 -1
  176. package/dist/src/commands/cleanup.d.ts.map +1 -1
  177. package/dist/src/commands/cleanup.js +115 -49
  178. package/dist/src/commands/cleanup.js.map +1 -1
  179. package/dist/src/commands/completions.d.ts.map +1 -1
  180. package/dist/src/commands/completions.js +34 -21
  181. package/dist/src/commands/completions.js.map +1 -1
  182. package/dist/src/commands/config.d.ts.map +1 -1
  183. package/dist/src/commands/config.js +95 -54
  184. package/dist/src/commands/config.js.map +1 -1
  185. package/dist/src/commands/crash-reporting.d.ts.map +1 -1
  186. package/dist/src/commands/crash-reporting.js +10 -4
  187. package/dist/src/commands/crash-reporting.js.map +1 -1
  188. package/dist/src/commands/design-detect.d.ts.map +1 -1
  189. package/dist/src/commands/design-detect.js +33 -12
  190. package/dist/src/commands/design-detect.js.map +1 -1
  191. package/dist/src/commands/design-palette.d.ts.map +1 -1
  192. package/dist/src/commands/design-palette.js +770 -380
  193. package/dist/src/commands/design-palette.js.map +1 -1
  194. package/dist/src/commands/doc.d.ts.map +1 -1
  195. package/dist/src/commands/doc.js +272 -60
  196. package/dist/src/commands/doc.js.map +1 -1
  197. package/dist/src/commands/doctor-env-checks.d.ts.map +1 -1
  198. package/dist/src/commands/doctor-env-checks.js +130 -31
  199. package/dist/src/commands/doctor-env-checks.js.map +1 -1
  200. package/dist/src/commands/doctor-monoes-checks.d.ts.map +1 -1
  201. package/dist/src/commands/doctor-monoes-checks.js +20 -7
  202. package/dist/src/commands/doctor-monoes-checks.js.map +1 -1
  203. package/dist/src/commands/doctor-project-checks.d.ts +7 -0
  204. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  205. package/dist/src/commands/doctor-project-checks.js +476 -114
  206. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  207. package/dist/src/commands/doctor.d.ts.map +1 -1
  208. package/dist/src/commands/doctor.js +139 -60
  209. package/dist/src/commands/doctor.js.map +1 -1
  210. package/dist/src/commands/download-embeddings.d.ts.map +1 -1
  211. package/dist/src/commands/download-embeddings.js +1 -1
  212. package/dist/src/commands/download-embeddings.js.map +1 -1
  213. package/dist/src/commands/events.d.ts.map +1 -1
  214. package/dist/src/commands/events.js +5 -2
  215. package/dist/src/commands/events.js.map +1 -1
  216. package/dist/src/commands/guidance.d.ts.map +1 -1
  217. package/dist/src/commands/guidance.js +38 -14
  218. package/dist/src/commands/guidance.js.map +1 -1
  219. package/dist/src/commands/hooks-core-commands.d.ts.map +1 -1
  220. package/dist/src/commands/hooks-core-commands.js +71 -44
  221. package/dist/src/commands/hooks-core-commands.js.map +1 -1
  222. package/dist/src/commands/hooks-coverage-commands.d.ts +1 -2
  223. package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -1
  224. package/dist/src/commands/hooks-coverage-commands.js +140 -58
  225. package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
  226. package/dist/src/commands/hooks-coverage-gaps.d.ts.map +1 -1
  227. package/dist/src/commands/hooks-coverage-gaps.js +74 -36
  228. package/dist/src/commands/hooks-coverage-gaps.js.map +1 -1
  229. package/dist/src/commands/hooks-coverage-routing.d.ts.map +1 -1
  230. package/dist/src/commands/hooks-coverage-routing.js +139 -66
  231. package/dist/src/commands/hooks-coverage-routing.js.map +1 -1
  232. package/dist/src/commands/hooks-coverage-utils.d.ts.map +1 -1
  233. package/dist/src/commands/hooks-coverage-utils.js +27 -8
  234. package/dist/src/commands/hooks-coverage-utils.js.map +1 -1
  235. package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -1
  236. package/dist/src/commands/hooks-extended-commands.js +86 -21
  237. package/dist/src/commands/hooks-extended-commands.js.map +1 -1
  238. package/dist/src/commands/hooks-routing-commands.d.ts +1 -2
  239. package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -1
  240. package/dist/src/commands/hooks-routing-commands.js +175 -183
  241. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  242. package/dist/src/commands/hooks-workers.d.ts.map +1 -1
  243. package/dist/src/commands/hooks-workers.js +111 -128
  244. package/dist/src/commands/hooks-workers.js.map +1 -1
  245. package/dist/src/commands/hooks.d.ts +1 -1
  246. package/dist/src/commands/hooks.d.ts.map +1 -1
  247. package/dist/src/commands/hooks.js +9 -12
  248. package/dist/src/commands/hooks.js.map +1 -1
  249. package/dist/src/commands/index.d.ts +1 -1
  250. package/dist/src/commands/index.d.ts.map +1 -1
  251. package/dist/src/commands/index.js +2 -2
  252. package/dist/src/commands/index.js.map +1 -1
  253. package/dist/src/commands/init-subcommands.d.ts.map +1 -1
  254. package/dist/src/commands/init-subcommands.js +16 -5
  255. package/dist/src/commands/init-subcommands.js.map +1 -1
  256. package/dist/src/commands/init-upgrade.d.ts.map +1 -1
  257. package/dist/src/commands/init-upgrade.js +46 -23
  258. package/dist/src/commands/init-upgrade.js.map +1 -1
  259. package/dist/src/commands/init-wizard.d.ts.map +1 -1
  260. package/dist/src/commands/init-wizard.js +161 -44
  261. package/dist/src/commands/init-wizard.js.map +1 -1
  262. package/dist/src/commands/init.d.ts.map +1 -1
  263. package/dist/src/commands/init.js +179 -64
  264. package/dist/src/commands/init.js.map +1 -1
  265. package/dist/src/commands/mcp.d.ts +1 -0
  266. package/dist/src/commands/mcp.d.ts.map +1 -1
  267. package/dist/src/commands/mcp.js +229 -134
  268. package/dist/src/commands/mcp.js.map +1 -1
  269. package/dist/src/commands/memory-admin.d.ts.map +1 -1
  270. package/dist/src/commands/memory-admin.js +67 -48
  271. package/dist/src/commands/memory-admin.js.map +1 -1
  272. package/dist/src/commands/memory-crud.d.ts.map +1 -1
  273. package/dist/src/commands/memory-crud.js +97 -60
  274. package/dist/src/commands/memory-crud.js.map +1 -1
  275. package/dist/src/commands/memory-list.d.ts.map +1 -1
  276. package/dist/src/commands/memory-list.js +6 -6
  277. package/dist/src/commands/memory-list.js.map +1 -1
  278. package/dist/src/commands/memory-transfer.d.ts.map +1 -1
  279. package/dist/src/commands/memory-transfer.js +46 -23
  280. package/dist/src/commands/memory-transfer.js.map +1 -1
  281. package/dist/src/commands/memory.d.ts.map +1 -1
  282. package/dist/src/commands/memory.js +63 -35
  283. package/dist/src/commands/memory.js.map +1 -1
  284. package/dist/src/commands/monograph.d.ts.map +1 -1
  285. package/dist/src/commands/monograph.js +170 -57
  286. package/dist/src/commands/monograph.js.map +1 -1
  287. package/dist/src/commands/monoswarm.d.ts +8 -0
  288. package/dist/src/commands/monoswarm.d.ts.map +1 -0
  289. package/dist/src/commands/{swarm.js → monoswarm.js} +93 -315
  290. package/dist/src/commands/monoswarm.js.map +1 -0
  291. package/dist/src/commands/neural-core.d.ts.map +1 -1
  292. package/dist/src/commands/neural-core.js +123 -32
  293. package/dist/src/commands/neural-core.js.map +1 -1
  294. package/dist/src/commands/neural-optimize.d.ts.map +1 -1
  295. package/dist/src/commands/neural-optimize.js +95 -130
  296. package/dist/src/commands/neural-optimize.js.map +1 -1
  297. package/dist/src/commands/neural-registry.d.ts +1 -2
  298. package/dist/src/commands/neural-registry.d.ts.map +1 -1
  299. package/dist/src/commands/neural-registry.js +70 -181
  300. package/dist/src/commands/neural-registry.js.map +1 -1
  301. package/dist/src/commands/org-observe.d.ts +13 -3
  302. package/dist/src/commands/org-observe.d.ts.map +1 -1
  303. package/dist/src/commands/org-observe.js +308 -131
  304. package/dist/src/commands/org-observe.js.map +1 -1
  305. package/dist/src/commands/org-visualize.d.ts.map +1 -1
  306. package/dist/src/commands/org-visualize.js +10 -5
  307. package/dist/src/commands/org-visualize.js.map +1 -1
  308. package/dist/src/commands/org.d.ts +15 -1
  309. package/dist/src/commands/org.d.ts.map +1 -1
  310. package/dist/src/commands/org.js +663 -193
  311. package/dist/src/commands/org.js.map +1 -1
  312. package/dist/src/commands/performance.d.ts.map +1 -1
  313. package/dist/src/commands/performance.js +232 -79
  314. package/dist/src/commands/performance.js.map +1 -1
  315. package/dist/src/commands/platforms.d.ts +1 -1
  316. package/dist/src/commands/platforms.d.ts.map +1 -1
  317. package/dist/src/commands/platforms.js +89 -49
  318. package/dist/src/commands/platforms.js.map +1 -1
  319. package/dist/src/commands/providers.d.ts.map +1 -1
  320. package/dist/src/commands/providers.js +31 -18
  321. package/dist/src/commands/providers.js.map +1 -1
  322. package/dist/src/commands/report-crash.d.ts.map +1 -1
  323. package/dist/src/commands/report-crash.js +17 -5
  324. package/dist/src/commands/report-crash.js.map +1 -1
  325. package/dist/src/commands/route.d.ts.map +1 -1
  326. package/dist/src/commands/route.js +123 -41
  327. package/dist/src/commands/route.js.map +1 -1
  328. package/dist/src/commands/search-universal.d.ts +1 -1
  329. package/dist/src/commands/search-universal.d.ts.map +1 -1
  330. package/dist/src/commands/search-universal.js +29 -14
  331. package/dist/src/commands/search-universal.js.map +1 -1
  332. package/dist/src/commands/security-cve.d.ts.map +1 -1
  333. package/dist/src/commands/security-cve.js +75 -34
  334. package/dist/src/commands/security-cve.js.map +1 -1
  335. package/dist/src/commands/security-misc.d.ts.map +1 -1
  336. package/dist/src/commands/security-misc.js +362 -102
  337. package/dist/src/commands/security-misc.js.map +1 -1
  338. package/dist/src/commands/security-scan.d.ts +13 -0
  339. package/dist/src/commands/security-scan.d.ts.map +1 -1
  340. package/dist/src/commands/security-scan.js +222 -57
  341. package/dist/src/commands/security-scan.js.map +1 -1
  342. package/dist/src/commands/security.d.ts.map +1 -1
  343. package/dist/src/commands/security.js +10 -3
  344. package/dist/src/commands/security.js.map +1 -1
  345. package/dist/src/commands/session.d.ts.map +1 -1
  346. package/dist/src/commands/session.js +81 -75
  347. package/dist/src/commands/session.js.map +1 -1
  348. package/dist/src/commands/start.d.ts.map +1 -1
  349. package/dist/src/commands/start.js +59 -129
  350. package/dist/src/commands/start.js.map +1 -1
  351. package/dist/src/commands/status.d.ts.map +1 -1
  352. package/dist/src/commands/status.js +151 -130
  353. package/dist/src/commands/status.js.map +1 -1
  354. package/dist/src/commands/task.d.ts.map +1 -1
  355. package/dist/src/commands/task.js +115 -84
  356. package/dist/src/commands/task.js.map +1 -1
  357. package/dist/src/commands/tokens.d.ts.map +1 -1
  358. package/dist/src/commands/tokens.js +67 -32
  359. package/dist/src/commands/tokens.js.map +1 -1
  360. package/dist/src/commands/update.d.ts.map +1 -1
  361. package/dist/src/commands/update.js +3 -5
  362. package/dist/src/commands/update.js.map +1 -1
  363. package/dist/src/consensus/audit-writer.d.ts +7 -2
  364. package/dist/src/consensus/audit-writer.d.ts.map +1 -1
  365. package/dist/src/consensus/audit-writer.js +19 -11
  366. package/dist/src/consensus/audit-writer.js.map +1 -1
  367. package/dist/src/consensus/tally.d.ts.map +1 -1
  368. package/dist/src/consensus/tally.js +2 -2
  369. package/dist/src/consensus/tally.js.map +1 -1
  370. package/dist/src/index.d.ts +7 -7
  371. package/dist/src/index.d.ts.map +1 -1
  372. package/dist/src/index.js +51 -43
  373. package/dist/src/index.js.map +1 -1
  374. package/dist/src/init/claudemd-generator.d.ts +1 -1
  375. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  376. package/dist/src/init/claudemd-generator.js +52 -36
  377. package/dist/src/init/claudemd-generator.js.map +1 -1
  378. package/dist/src/init/codex-generator.d.ts +16 -0
  379. package/dist/src/init/codex-generator.d.ts.map +1 -0
  380. package/dist/src/init/codex-generator.js +180 -0
  381. package/dist/src/init/codex-generator.js.map +1 -0
  382. package/dist/src/init/copy-assets.d.ts.map +1 -1
  383. package/dist/src/init/copy-assets.js +17 -20
  384. package/dist/src/init/copy-assets.js.map +1 -1
  385. package/dist/src/init/executor.d.ts +1 -1
  386. package/dist/src/init/executor.d.ts.map +1 -1
  387. package/dist/src/init/executor.js +56 -29
  388. package/dist/src/init/executor.js.map +1 -1
  389. package/dist/src/init/geminimd-generator.d.ts +1 -1
  390. package/dist/src/init/geminimd-generator.d.ts.map +1 -1
  391. package/dist/src/init/geminimd-generator.js +2 -2
  392. package/dist/src/init/geminimd-generator.js.map +1 -1
  393. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  394. package/dist/src/init/helpers-generator.js +7 -7
  395. package/dist/src/init/helpers-generator.js.map +1 -1
  396. package/dist/src/init/index.d.ts +8 -7
  397. package/dist/src/init/index.d.ts.map +1 -1
  398. package/dist/src/init/index.js +9 -8
  399. package/dist/src/init/index.js.map +1 -1
  400. package/dist/src/init/kimi-generator.d.ts +1 -1
  401. package/dist/src/init/kimi-generator.d.ts.map +1 -1
  402. package/dist/src/init/kimi-generator.js +34 -28
  403. package/dist/src/init/kimi-generator.js.map +1 -1
  404. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  405. package/dist/src/init/mcp-generator.js +3 -11
  406. package/dist/src/init/mcp-generator.js.map +1 -1
  407. package/dist/src/init/opencode-generator.d.ts.map +1 -1
  408. package/dist/src/init/opencode-generator.js +35 -22
  409. package/dist/src/init/opencode-generator.js.map +1 -1
  410. package/dist/src/init/settings-generator.d.ts.map +1 -1
  411. package/dist/src/init/settings-generator.js +3 -7
  412. package/dist/src/init/settings-generator.js.map +1 -1
  413. package/dist/src/init/shared-instructions-generator.d.ts.map +1 -1
  414. package/dist/src/init/shared-instructions-generator.js +124 -76
  415. package/dist/src/init/shared-instructions-generator.js.map +1 -1
  416. package/dist/src/init/shared.d.ts.map +1 -1
  417. package/dist/src/init/shared.js +26 -25
  418. package/dist/src/init/shared.js.map +1 -1
  419. package/dist/src/init/statusline-generator.js +19 -19
  420. package/dist/src/init/types.d.ts +9 -10
  421. package/dist/src/init/types.d.ts.map +1 -1
  422. package/dist/src/init/types.js +10 -8
  423. package/dist/src/init/types.js.map +1 -1
  424. package/dist/src/init/upgrade.d.ts.map +1 -1
  425. package/dist/src/init/upgrade.js +24 -22
  426. package/dist/src/init/upgrade.js.map +1 -1
  427. package/dist/src/init/write-antigravity.d.ts.map +1 -1
  428. package/dist/src/init/write-antigravity.js +15 -7
  429. package/dist/src/init/write-antigravity.js.map +1 -1
  430. package/dist/src/init/write-capabilities.d.ts.map +1 -1
  431. package/dist/src/init/write-capabilities.js +39 -52
  432. package/dist/src/init/write-capabilities.js.map +1 -1
  433. package/dist/src/init/write-claude.d.ts.map +1 -1
  434. package/dist/src/init/write-claude.js +19 -15
  435. package/dist/src/init/write-claude.js.map +1 -1
  436. package/dist/src/init/write-codex.d.ts +4 -0
  437. package/dist/src/init/write-codex.d.ts.map +1 -0
  438. package/dist/src/init/write-codex.js +122 -0
  439. package/dist/src/init/write-codex.js.map +1 -0
  440. package/dist/src/init/write-kimicode.d.ts.map +1 -1
  441. package/dist/src/init/write-kimicode.js +10 -6
  442. package/dist/src/init/write-kimicode.js.map +1 -1
  443. package/dist/src/init/write-opencode.d.ts.map +1 -1
  444. package/dist/src/init/write-opencode.js +4 -4
  445. package/dist/src/init/write-opencode.js.map +1 -1
  446. package/dist/src/init/write-runtime-config.d.ts.map +1 -1
  447. package/dist/src/init/write-runtime-config.js +24 -24
  448. package/dist/src/init/write-runtime-config.js.map +1 -1
  449. package/dist/src/init/write-sample-org.js +1 -1
  450. package/dist/src/init/write-sample-org.js.map +1 -1
  451. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  452. package/dist/src/knowledge/document-pipeline.js +144 -48
  453. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  454. package/dist/src/knowledge/eval/corpus.d.ts.map +1 -1
  455. package/dist/src/knowledge/eval/corpus.js +18 -9
  456. package/dist/src/knowledge/eval/corpus.js.map +1 -1
  457. package/dist/src/knowledge/eval/golden-set.d.ts.map +1 -1
  458. package/dist/src/knowledge/eval/golden-set.js +4286 -136
  459. package/dist/src/knowledge/eval/golden-set.js.map +1 -1
  460. package/dist/src/knowledge/eval/harness.d.ts +2 -2
  461. package/dist/src/knowledge/eval/harness.d.ts.map +1 -1
  462. package/dist/src/knowledge/eval/harness.js +163 -70
  463. package/dist/src/knowledge/eval/harness.js.map +1 -1
  464. package/dist/src/knowledge/eval/metrics.d.ts.map +1 -1
  465. package/dist/src/knowledge/eval/metrics.js +25 -18
  466. package/dist/src/knowledge/eval/metrics.js.map +1 -1
  467. package/dist/src/knowledge/eval/model-presence.d.ts.map +1 -1
  468. package/dist/src/knowledge/eval/model-presence.js +40 -14
  469. package/dist/src/knowledge/eval/model-presence.js.map +1 -1
  470. package/dist/src/knowledge/eval/network-guard.d.ts.map +1 -1
  471. package/dist/src/knowledge/eval/network-guard.js +22 -10
  472. package/dist/src/knowledge/eval/network-guard.js.map +1 -1
  473. package/dist/src/knowledge/eval/retrievers.d.ts.map +1 -1
  474. package/dist/src/knowledge/eval/retrievers.js +14 -10
  475. package/dist/src/knowledge/eval/retrievers.js.map +1 -1
  476. package/dist/src/knowledge/eval/signals.d.ts.map +1 -1
  477. package/dist/src/knowledge/eval/signals.js +54 -18
  478. package/dist/src/knowledge/eval/signals.js.map +1 -1
  479. package/dist/src/mcp-client.d.ts.map +1 -1
  480. package/dist/src/mcp-client.js +70 -35
  481. package/dist/src/mcp-client.js.map +1 -1
  482. package/dist/src/mcp-server.d.ts +1 -9
  483. package/dist/src/mcp-server.d.ts.map +1 -1
  484. package/dist/src/mcp-server.js +20 -43
  485. package/dist/src/mcp-server.js.map +1 -1
  486. package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
  487. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  488. package/dist/src/mcp-tools/agent-tools.js +87 -52
  489. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  490. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
  491. package/dist/src/mcp-tools/analyze-tools.js +34 -17
  492. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  493. package/dist/src/mcp-tools/auto-install.d.ts.map +1 -1
  494. package/dist/src/mcp-tools/auto-install.js +3 -3
  495. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  496. package/dist/src/mcp-tools/autopilot-tools.d.ts +1 -1
  497. package/dist/src/mcp-tools/autopilot-tools.d.ts.map +1 -1
  498. package/dist/src/mcp-tools/autopilot-tools.js +32 -70
  499. package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
  500. package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
  501. package/dist/src/mcp-tools/browser-tools.js +119 -37
  502. package/dist/src/mcp-tools/browser-tools.js.map +1 -1
  503. package/dist/src/mcp-tools/claims-tools.d.ts.map +1 -1
  504. package/dist/src/mcp-tools/claims-tools.js +100 -44
  505. package/dist/src/mcp-tools/claims-tools.js.map +1 -1
  506. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  507. package/dist/src/mcp-tools/config-tools.js +36 -15
  508. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  509. package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
  510. package/dist/src/mcp-tools/embeddings-tools.js +34 -23
  511. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  512. package/dist/src/mcp-tools/github-tools.d.ts.map +1 -1
  513. package/dist/src/mcp-tools/github-tools.js +200 -43
  514. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  515. package/dist/src/mcp-tools/graphify-tools.d.ts.map +1 -1
  516. package/dist/src/mcp-tools/graphify-tools.js +2 -2
  517. package/dist/src/mcp-tools/graphify-tools.js.map +1 -1
  518. package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
  519. package/dist/src/mcp-tools/guidance-tools.js +461 -115
  520. package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
  521. package/dist/src/mcp-tools/hooks-embedding.d.ts +0 -6
  522. package/dist/src/mcp-tools/hooks-embedding.d.ts.map +1 -1
  523. package/dist/src/mcp-tools/hooks-embedding.js +170 -59
  524. package/dist/src/mcp-tools/hooks-embedding.js.map +1 -1
  525. package/dist/src/mcp-tools/hooks-intelligence.d.ts +0 -9
  526. package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
  527. package/dist/src/mcp-tools/hooks-intelligence.js +64 -119
  528. package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
  529. package/dist/src/mcp-tools/hooks-routing.d.ts +1 -2
  530. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  531. package/dist/src/mcp-tools/hooks-routing.js +92 -165
  532. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  533. package/dist/src/mcp-tools/hooks-tools.d.ts +1 -1
  534. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  535. package/dist/src/mcp-tools/hooks-tools.js +2 -4
  536. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  537. package/dist/src/mcp-tools/index.d.ts +18 -19
  538. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  539. package/dist/src/mcp-tools/index.js +18 -19
  540. package/dist/src/mcp-tools/index.js.map +1 -1
  541. package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
  542. package/dist/src/mcp-tools/knowledge-tools.js +88 -28
  543. package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
  544. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  545. package/dist/src/mcp-tools/memory-tools.js +157 -40
  546. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  547. package/dist/src/mcp-tools/monodesign-tools.d.ts.map +1 -1
  548. package/dist/src/mcp-tools/monodesign-tools.js +63 -22
  549. package/dist/src/mcp-tools/monodesign-tools.js.map +1 -1
  550. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts.map +1 -1
  551. package/dist/src/mcp-tools/monograph/agent-history-tools.js +22 -9
  552. package/dist/src/mcp-tools/monograph/agent-history-tools.js.map +1 -1
  553. package/dist/src/mcp-tools/monograph/build-tools.d.ts.map +1 -1
  554. package/dist/src/mcp-tools/monograph/build-tools.js +37 -16
  555. package/dist/src/mcp-tools/monograph/build-tools.js.map +1 -1
  556. package/dist/src/mcp-tools/monograph/group-tools.d.ts.map +1 -1
  557. package/dist/src/mcp-tools/monograph/group-tools.js +57 -20
  558. package/dist/src/mcp-tools/monograph/group-tools.js.map +1 -1
  559. package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -1
  560. package/dist/src/mcp-tools/monograph/health-tools.js +13 -7
  561. package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -1
  562. package/dist/src/mcp-tools/monograph/impact-tools.js +6 -6
  563. package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -1
  564. package/dist/src/mcp-tools/monograph/index.d.ts.map +1 -1
  565. package/dist/src/mcp-tools/monograph/index.js +8 -8
  566. package/dist/src/mcp-tools/monograph/index.js.map +1 -1
  567. package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -1
  568. package/dist/src/mcp-tools/monograph/query-tools.js +140 -65
  569. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
  570. package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -1
  571. package/dist/src/mcp-tools/monograph/shared.js +42 -22
  572. package/dist/src/mcp-tools/monograph/shared.js.map +1 -1
  573. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts.map +1 -1
  574. package/dist/src/mcp-tools/monograph/visualize-tools.js +87 -36
  575. package/dist/src/mcp-tools/monograph/visualize-tools.js.map +1 -1
  576. package/dist/src/mcp-tools/monograph-compat.d.ts.map +1 -1
  577. package/dist/src/mcp-tools/monograph-compat.js +25 -14
  578. package/dist/src/mcp-tools/monograph-compat.js.map +1 -1
  579. package/dist/src/mcp-tools/monograph-tools.d.ts +1 -1
  580. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  581. package/dist/src/mcp-tools/monograph-tools.js +1 -1
  582. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  583. package/dist/src/mcp-tools/monomind-tools.d.ts.map +1 -1
  584. package/dist/src/mcp-tools/monomind-tools.js +1 -1
  585. package/dist/src/mcp-tools/monomind-tools.js.map +1 -1
  586. package/dist/src/mcp-tools/monoswarm-tools.d.ts +17 -0
  587. package/dist/src/mcp-tools/monoswarm-tools.d.ts.map +1 -0
  588. package/dist/src/mcp-tools/monoswarm-tools.js +1289 -0
  589. package/dist/src/mcp-tools/monoswarm-tools.js.map +1 -0
  590. package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
  591. package/dist/src/mcp-tools/performance-tools.js +305 -101
  592. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  593. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -1
  594. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +9 -4
  595. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js.map +1 -1
  596. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +1 -1
  597. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
  598. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +36 -14
  599. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -1
  600. package/dist/src/mcp-tools/quality-tools.d.ts.map +1 -1
  601. package/dist/src/mcp-tools/quality-tools.js.map +1 -1
  602. package/dist/src/mcp-tools/request-tracker.d.ts.map +1 -1
  603. package/dist/src/mcp-tools/request-tracker.js +2 -1
  604. package/dist/src/mcp-tools/request-tracker.js.map +1 -1
  605. package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
  606. package/dist/src/mcp-tools/security-tools.js +117 -53
  607. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  608. package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
  609. package/dist/src/mcp-tools/session-tools.js +22 -13
  610. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  611. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  612. package/dist/src/mcp-tools/system-tools.js +37 -20
  613. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  614. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  615. package/dist/src/mcp-tools/task-tools.js +59 -22
  616. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  617. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  618. package/dist/src/mcp-tools/terminal-tools.js +43 -16
  619. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  620. package/dist/src/mcp-tools/transfer-tools.d.ts +8 -12
  621. package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
  622. package/dist/src/mcp-tools/transfer-tools.js +11 -14
  623. package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
  624. package/dist/src/mcp-tools/types.d.ts +1 -1
  625. package/dist/src/mcp-tools/types.d.ts.map +1 -1
  626. package/dist/src/mcp-tools/types.js +1 -1
  627. package/dist/src/mcp-tools/types.js.map +1 -1
  628. package/dist/src/memory/bm25-index.d.ts.map +1 -1
  629. package/dist/src/memory/bm25-index.js.map +1 -1
  630. package/dist/src/memory/embedding-operations.d.ts.map +1 -1
  631. package/dist/src/memory/embedding-operations.js +23 -56
  632. package/dist/src/memory/embedding-operations.js.map +1 -1
  633. package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
  634. package/dist/src/memory/ewc-consolidation.js +31 -27
  635. package/dist/src/memory/ewc-consolidation.js.map +1 -1
  636. package/dist/src/memory/hnsw-operations.d.ts +15 -75
  637. package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
  638. package/dist/src/memory/hnsw-operations.js +27 -268
  639. package/dist/src/memory/hnsw-operations.js.map +1 -1
  640. package/dist/src/memory/intelligence.d.ts +2 -2
  641. package/dist/src/memory/intelligence.d.ts.map +1 -1
  642. package/dist/src/memory/intelligence.js +130 -91
  643. package/dist/src/memory/intelligence.js.map +1 -1
  644. package/dist/src/memory/memory-bridge.d.ts +24 -24
  645. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  646. package/dist/src/memory/memory-bridge.js +40 -41
  647. package/dist/src/memory/memory-bridge.js.map +1 -1
  648. package/dist/src/memory/memory-crud.d.ts +1 -1
  649. package/dist/src/memory/memory-crud.d.ts.map +1 -1
  650. package/dist/src/memory/memory-crud.js +82 -67
  651. package/dist/src/memory/memory-crud.js.map +1 -1
  652. package/dist/src/memory/memory-initializer.d.ts +7 -8
  653. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  654. package/dist/src/memory/memory-initializer.js +38 -35
  655. package/dist/src/memory/memory-initializer.js.map +1 -1
  656. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  657. package/dist/src/memory/memory-kg.js +173 -41
  658. package/dist/src/memory/memory-kg.js.map +1 -1
  659. package/dist/src/memory/memory-migrations.d.ts.map +1 -1
  660. package/dist/src/memory/memory-migrations.js +11 -7
  661. package/dist/src/memory/memory-migrations.js.map +1 -1
  662. package/dist/src/memory/memory-read.d.ts.map +1 -1
  663. package/dist/src/memory/memory-read.js +50 -35
  664. package/dist/src/memory/memory-read.js.map +1 -1
  665. package/dist/src/memory/query-router.d.ts.map +1 -1
  666. package/dist/src/memory/query-router.js +29 -12
  667. package/dist/src/memory/query-router.js.map +1 -1
  668. package/dist/src/memory/sona-optimizer.d.ts +1 -1
  669. package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
  670. package/dist/src/memory/sona-optimizer.js +164 -42
  671. package/dist/src/memory/sona-optimizer.js.map +1 -1
  672. package/dist/src/memory/text-tokens.d.ts.map +1 -1
  673. package/dist/src/memory/text-tokens.js +78 -8
  674. package/dist/src/memory/text-tokens.js.map +1 -1
  675. package/dist/src/monovector/command-outcomes.d.ts.map +1 -1
  676. package/dist/src/monovector/command-outcomes.js +23 -8
  677. package/dist/src/monovector/command-outcomes.js.map +1 -1
  678. package/dist/src/monovector/coverage-router.d.ts.map +1 -1
  679. package/dist/src/monovector/coverage-router.js +29 -14
  680. package/dist/src/monovector/coverage-router.js.map +1 -1
  681. package/dist/src/monovector/coverage-tools.d.ts.map +1 -1
  682. package/dist/src/monovector/coverage-tools.js +21 -6
  683. package/dist/src/monovector/coverage-tools.js.map +1 -1
  684. package/dist/src/monovector/diff-classifier.d.ts +1 -1
  685. package/dist/src/monovector/diff-classifier.d.ts.map +1 -1
  686. package/dist/src/monovector/diff-classifier.js +100 -45
  687. package/dist/src/monovector/diff-classifier.js.map +1 -1
  688. package/dist/src/monovector/index.d.ts +3 -4
  689. package/dist/src/monovector/index.d.ts.map +1 -1
  690. package/dist/src/monovector/index.js +18 -6
  691. package/dist/src/monovector/index.js.map +1 -1
  692. package/dist/src/monovector/init-state.d.ts.map +1 -1
  693. package/dist/src/monovector/init-state.js +15 -5
  694. package/dist/src/monovector/init-state.js.map +1 -1
  695. package/dist/src/monovector/model-outcomes.d.ts +25 -0
  696. package/dist/src/monovector/model-outcomes.d.ts.map +1 -0
  697. package/dist/src/monovector/model-outcomes.js +113 -0
  698. package/dist/src/monovector/model-outcomes.js.map +1 -0
  699. package/dist/src/monovector/route-outcomes.d.ts.map +1 -1
  700. package/dist/src/monovector/route-outcomes.js +40 -21
  701. package/dist/src/monovector/route-outcomes.js.map +1 -1
  702. package/dist/src/observability/replay-reader.d.ts.map +1 -1
  703. package/dist/src/observability/replay-reader.js +6 -8
  704. package/dist/src/observability/replay-reader.js.map +1 -1
  705. package/dist/src/orgrt/agent-runner.d.ts +9 -3
  706. package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
  707. package/dist/src/orgrt/agent-runner.js +1 -1
  708. package/dist/src/orgrt/agent-runner.js.map +1 -1
  709. package/dist/src/orgrt/antigravity-runner.d.ts +26 -3
  710. package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
  711. package/dist/src/orgrt/antigravity-runner.js +295 -125
  712. package/dist/src/orgrt/antigravity-runner.js.map +1 -1
  713. package/dist/src/orgrt/approvals.d.ts.map +1 -1
  714. package/dist/src/orgrt/approvals.js +32 -8
  715. package/dist/src/orgrt/approvals.js.map +1 -1
  716. package/dist/src/orgrt/broker.d.ts.map +1 -1
  717. package/dist/src/orgrt/broker.js +11 -4
  718. package/dist/src/orgrt/broker.js.map +1 -1
  719. package/dist/src/orgrt/bus.d.ts.map +1 -1
  720. package/dist/src/orgrt/bus.js +28 -15
  721. package/dist/src/orgrt/bus.js.map +1 -1
  722. package/dist/src/orgrt/checkpoint-ops.d.ts +10 -16
  723. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
  724. package/dist/src/orgrt/checkpoint-ops.js +47 -36
  725. package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
  726. package/dist/src/orgrt/checkpoint.d.ts +12 -1
  727. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  728. package/dist/src/orgrt/checkpoint.js +22 -4
  729. package/dist/src/orgrt/checkpoint.js.map +1 -1
  730. package/dist/src/orgrt/codex-runner.d.ts +27 -3
  731. package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
  732. package/dist/src/orgrt/codex-runner.js +387 -129
  733. package/dist/src/orgrt/codex-runner.js.map +1 -1
  734. package/dist/src/orgrt/copilot-runner.d.ts +1 -1
  735. package/dist/src/orgrt/copilot-runner.d.ts.map +1 -1
  736. package/dist/src/orgrt/copilot-runner.js +60 -18
  737. package/dist/src/orgrt/copilot-runner.js.map +1 -1
  738. package/dist/src/orgrt/cross-org.d.ts.map +1 -1
  739. package/dist/src/orgrt/cross-org.js +224 -41
  740. package/dist/src/orgrt/cross-org.js.map +1 -1
  741. package/dist/src/orgrt/crush-runner.d.ts +5 -2
  742. package/dist/src/orgrt/crush-runner.d.ts.map +1 -1
  743. package/dist/src/orgrt/crush-runner.js +93 -47
  744. package/dist/src/orgrt/crush-runner.js.map +1 -1
  745. package/dist/src/orgrt/daemon.d.ts +42 -30
  746. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  747. package/dist/src/orgrt/daemon.js +199 -69
  748. package/dist/src/orgrt/daemon.js.map +1 -1
  749. package/dist/src/orgrt/decisions.d.ts +3 -2
  750. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  751. package/dist/src/orgrt/decisions.js +101 -32
  752. package/dist/src/orgrt/decisions.js.map +1 -1
  753. package/dist/src/orgrt/fence.d.ts +2 -2
  754. package/dist/src/orgrt/fence.d.ts.map +1 -1
  755. package/dist/src/orgrt/fence.js +13 -5
  756. package/dist/src/orgrt/fence.js.map +1 -1
  757. package/dist/src/orgrt/forwarder.js +1 -1
  758. package/dist/src/orgrt/forwarder.js.map +1 -1
  759. package/dist/src/orgrt/grok-runner.d.ts +1 -1
  760. package/dist/src/orgrt/grok-runner.d.ts.map +1 -1
  761. package/dist/src/orgrt/grok-runner.js +75 -30
  762. package/dist/src/orgrt/grok-runner.js.map +1 -1
  763. package/dist/src/orgrt/inbox.d.ts.map +1 -1
  764. package/dist/src/orgrt/inbox.js +5 -3
  765. package/dist/src/orgrt/inbox.js.map +1 -1
  766. package/dist/src/orgrt/kimicode-runner.d.ts +54 -8
  767. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  768. package/dist/src/orgrt/kimicode-runner.js +278 -151
  769. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  770. package/dist/src/orgrt/mailbox.d.ts +26 -1
  771. package/dist/src/orgrt/mailbox.d.ts.map +1 -1
  772. package/dist/src/orgrt/mailbox.js +88 -6
  773. package/dist/src/orgrt/mailbox.js.map +1 -1
  774. package/dist/src/orgrt/migrate.d.ts.map +1 -1
  775. package/dist/src/orgrt/migrate.js +38 -25
  776. package/dist/src/orgrt/migrate.js.map +1 -1
  777. package/dist/src/orgrt/opencode-runner.d.ts +1 -1
  778. package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
  779. package/dist/src/orgrt/opencode-runner.js +16 -5
  780. package/dist/src/orgrt/opencode-runner.js.map +1 -1
  781. package/dist/src/orgrt/org-memory.d.ts +2 -2
  782. package/dist/src/orgrt/org-memory.d.ts.map +1 -1
  783. package/dist/src/orgrt/org-memory.js +66 -26
  784. package/dist/src/orgrt/org-memory.js.map +1 -1
  785. package/dist/src/orgrt/pi-rpc-runner.d.ts +1 -1
  786. package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
  787. package/dist/src/orgrt/pi-rpc-runner.js +134 -114
  788. package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
  789. package/dist/src/orgrt/pi-runner.d.ts +1 -1
  790. package/dist/src/orgrt/pi-runner.d.ts.map +1 -1
  791. package/dist/src/orgrt/pi-runner.js +35 -16
  792. package/dist/src/orgrt/pi-runner.js.map +1 -1
  793. package/dist/src/orgrt/policy.d.ts +11 -0
  794. package/dist/src/orgrt/policy.d.ts.map +1 -1
  795. package/dist/src/orgrt/policy.js +86 -18
  796. package/dist/src/orgrt/policy.js.map +1 -1
  797. package/dist/src/orgrt/prechecks.d.ts.map +1 -1
  798. package/dist/src/orgrt/prechecks.js +9 -4
  799. package/dist/src/orgrt/prechecks.js.map +1 -1
  800. package/dist/src/orgrt/provider.d.ts +29 -1
  801. package/dist/src/orgrt/provider.d.ts.map +1 -1
  802. package/dist/src/orgrt/provider.js +62 -2
  803. package/dist/src/orgrt/provider.js.map +1 -1
  804. package/dist/src/orgrt/questions.d.ts.map +1 -1
  805. package/dist/src/orgrt/questions.js +34 -10
  806. package/dist/src/orgrt/questions.js.map +1 -1
  807. package/dist/src/orgrt/qwen-rpc-runner.d.ts +56 -0
  808. package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -0
  809. package/dist/src/orgrt/qwen-rpc-runner.js +381 -0
  810. package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -0
  811. package/dist/src/orgrt/qwen-runner.d.ts +1 -1
  812. package/dist/src/orgrt/qwen-runner.d.ts.map +1 -1
  813. package/dist/src/orgrt/qwen-runner.js +42 -23
  814. package/dist/src/orgrt/qwen-runner.js.map +1 -1
  815. package/dist/src/orgrt/remote.js +1 -1
  816. package/dist/src/orgrt/remote.js.map +1 -1
  817. package/dist/src/orgrt/reporting.d.ts.map +1 -1
  818. package/dist/src/orgrt/reporting.js +61 -27
  819. package/dist/src/orgrt/reporting.js.map +1 -1
  820. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
  821. package/dist/src/orgrt/scheduler-integration.js +63 -19
  822. package/dist/src/orgrt/scheduler-integration.js.map +1 -1
  823. package/dist/src/orgrt/scheduler.d.ts.map +1 -1
  824. package/dist/src/orgrt/scheduler.js +7 -3
  825. package/dist/src/orgrt/scheduler.js.map +1 -1
  826. package/dist/src/orgrt/server.js +1 -1
  827. package/dist/src/orgrt/server.js.map +1 -1
  828. package/dist/src/orgrt/session.d.ts +32 -4
  829. package/dist/src/orgrt/session.d.ts.map +1 -1
  830. package/dist/src/orgrt/session.js +242 -74
  831. package/dist/src/orgrt/session.js.map +1 -1
  832. package/dist/src/orgrt/state-detector.d.ts.map +1 -1
  833. package/dist/src/orgrt/state-detector.js +6 -2
  834. package/dist/src/orgrt/state-detector.js.map +1 -1
  835. package/dist/src/orgrt/task-dag.d.ts +29 -1
  836. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  837. package/dist/src/orgrt/task-dag.js +76 -12
  838. package/dist/src/orgrt/task-dag.js.map +1 -1
  839. package/dist/src/orgrt/templates.d.ts.map +1 -1
  840. package/dist/src/orgrt/templates.js +198 -36
  841. package/dist/src/orgrt/templates.js.map +1 -1
  842. package/dist/src/orgrt/test-loop.d.ts.map +1 -1
  843. package/dist/src/orgrt/test-loop.js +139 -35
  844. package/dist/src/orgrt/test-loop.js.map +1 -1
  845. package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
  846. package/dist/src/orgrt/tool-fence.js +21 -3
  847. package/dist/src/orgrt/tool-fence.js.map +1 -1
  848. package/dist/src/orgrt/types.d.ts +32 -1
  849. package/dist/src/orgrt/types.d.ts.map +1 -1
  850. package/dist/src/orgrt/types.js +192 -39
  851. package/dist/src/orgrt/types.js.map +1 -1
  852. package/dist/src/orgrt/usage-proxy.d.ts +20 -0
  853. package/dist/src/orgrt/usage-proxy.d.ts.map +1 -1
  854. package/dist/src/orgrt/usage-proxy.js +25 -15
  855. package/dist/src/orgrt/usage-proxy.js.map +1 -1
  856. package/dist/src/orgrt/vercel-providers.d.ts.map +1 -1
  857. package/dist/src/orgrt/vercel-providers.js +11 -1
  858. package/dist/src/orgrt/vercel-providers.js.map +1 -1
  859. package/dist/src/orgrt/vercel-runner.d.ts +1 -1
  860. package/dist/src/orgrt/vercel-runner.d.ts.map +1 -1
  861. package/dist/src/orgrt/vercel-runner.js +3 -5
  862. package/dist/src/orgrt/vercel-runner.js.map +1 -1
  863. package/dist/src/orgrt/vercel-session-store.d.ts +14 -0
  864. package/dist/src/orgrt/vercel-session-store.d.ts.map +1 -1
  865. package/dist/src/orgrt/vercel-session-store.js +3 -3
  866. package/dist/src/orgrt/vercel-session-store.js.map +1 -1
  867. package/dist/src/orgrt/visualization.js +3 -4
  868. package/dist/src/orgrt/visualization.js.map +1 -1
  869. package/dist/src/output.d.ts +1 -1
  870. package/dist/src/output.d.ts.map +1 -1
  871. package/dist/src/output.js +68 -39
  872. package/dist/src/output.js.map +1 -1
  873. package/dist/src/parser.d.ts.map +1 -1
  874. package/dist/src/parser.js +35 -24
  875. package/dist/src/parser.js.map +1 -1
  876. package/dist/src/pricing/model-pricing.d.ts.map +1 -1
  877. package/dist/src/pricing/model-pricing.js +3 -7
  878. package/dist/src/pricing/model-pricing.js.map +1 -1
  879. package/dist/src/prompt.d.ts +2 -2
  880. package/dist/src/prompt.d.ts.map +1 -1
  881. package/dist/src/prompt.js +49 -41
  882. package/dist/src/prompt.js.map +1 -1
  883. package/dist/src/routing/embedder.d.ts.map +1 -1
  884. package/dist/src/routing/embedder.js +0 -0
  885. package/dist/src/routing/embedder.js.map +1 -1
  886. package/dist/src/routing/llm-caller.d.ts.map +1 -1
  887. package/dist/src/routing/llm-caller.js +27 -8
  888. package/dist/src/routing/llm-caller.js.map +1 -1
  889. package/dist/src/routing/model-download.d.ts.map +1 -1
  890. package/dist/src/routing/model-download.js +3 -3
  891. package/dist/src/routing/model-download.js.map +1 -1
  892. package/dist/src/routing/route-layer-factory.d.ts.map +1 -1
  893. package/dist/src/routing/route-layer-factory.js +22 -14
  894. package/dist/src/routing/route-layer-factory.js.map +1 -1
  895. package/dist/src/security/audit-log.d.ts +47 -0
  896. package/dist/src/security/audit-log.d.ts.map +1 -0
  897. package/dist/src/security/audit-log.js +88 -0
  898. package/dist/src/security/audit-log.js.map +1 -0
  899. package/dist/src/services/config-file-manager.d.ts +2 -2
  900. package/dist/src/services/config-file-manager.d.ts.map +1 -1
  901. package/dist/src/services/config-file-manager.js +44 -20
  902. package/dist/src/services/config-file-manager.js.map +1 -1
  903. package/dist/src/services/crash-reporter.d.ts.map +1 -1
  904. package/dist/src/services/crash-reporter.js +44 -16
  905. package/dist/src/services/crash-reporter.js.map +1 -1
  906. package/dist/src/suggest.d.ts +1 -1
  907. package/dist/src/suggest.d.ts.map +1 -1
  908. package/dist/src/suggest.js +57 -57
  909. package/dist/src/suggest.js.map +1 -1
  910. package/dist/src/sync/checker.d.ts.map +1 -1
  911. package/dist/src/sync/checker.js +7 -8
  912. package/dist/src/sync/checker.js.map +1 -1
  913. package/dist/src/transfer/anonymization/index.d.ts +1 -1
  914. package/dist/src/transfer/anonymization/index.js +3 -3
  915. package/dist/src/transfer/anonymization/index.js.map +1 -1
  916. package/dist/src/types.d.ts +4 -4
  917. package/dist/src/types.d.ts.map +1 -1
  918. package/dist/src/ui/collector.mjs +275 -159
  919. package/dist/src/ui/dashboard.html +761 -742
  920. package/dist/src/ui/data/agent-avatars.html +3 -15
  921. package/dist/src/ui/data/agent-avatars.json +11 -27
  922. package/dist/src/ui/markdown.js +243 -62
  923. package/dist/src/ui/mastermind-diagram-fallback.html +29 -29
  924. package/dist/src/ui/orgs-files.js +99 -46
  925. package/dist/src/ui/orgs.html +54 -54
  926. package/dist/src/ui/routes-monograph.mjs +918 -246
  927. package/dist/src/ui/routes-org.mjs +4234 -2369
  928. package/dist/src/ui/server.mjs +142 -106
  929. package/dist/src/update/checker.d.ts.map +1 -1
  930. package/dist/src/update/checker.js +17 -12
  931. package/dist/src/update/checker.js.map +1 -1
  932. package/dist/src/update/executor.d.ts +2 -2
  933. package/dist/src/update/executor.d.ts.map +1 -1
  934. package/dist/src/update/executor.js +21 -11
  935. package/dist/src/update/executor.js.map +1 -1
  936. package/dist/src/update/index.d.ts +6 -6
  937. package/dist/src/update/index.d.ts.map +1 -1
  938. package/dist/src/update/index.js +9 -9
  939. package/dist/src/update/index.js.map +1 -1
  940. package/dist/src/update/rate-limiter.d.ts.map +1 -1
  941. package/dist/src/update/rate-limiter.js +11 -7
  942. package/dist/src/update/rate-limiter.js.map +1 -1
  943. package/dist/src/update/validator.d.ts.map +1 -1
  944. package/dist/src/update/validator.js +8 -12
  945. package/dist/src/update/validator.js.map +1 -1
  946. package/dist/src/utils/cosine-similarity.d.ts.map +1 -1
  947. package/dist/src/utils/cosine-similarity.js.map +1 -1
  948. package/dist/src/utils/input-guards.d.ts +1 -1
  949. package/dist/src/utils/input-guards.d.ts.map +1 -1
  950. package/dist/src/utils/input-guards.js +24 -9
  951. package/dist/src/utils/input-guards.js.map +1 -1
  952. package/dist/src/utils/json-file.d.ts +12 -0
  953. package/dist/src/utils/json-file.d.ts.map +1 -1
  954. package/dist/src/utils/json-file.js +14 -3
  955. package/dist/src/utils/json-file.js.map +1 -1
  956. package/dist/src/utils/parse-jsonl.d.ts.map +1 -1
  957. package/dist/src/utils/parse-jsonl.js +1 -3
  958. package/dist/src/utils/parse-jsonl.js.map +1 -1
  959. package/dist/src/utils/paths.d.ts.map +1 -1
  960. package/dist/src/utils/paths.js +2 -2
  961. package/dist/src/utils/paths.js.map +1 -1
  962. package/dist/src/utils/redaction.d.ts.map +1 -1
  963. package/dist/src/utils/redaction.js +1 -1
  964. package/dist/src/utils/redaction.js.map +1 -1
  965. package/dist/src/utils/resource-governor.d.ts.map +1 -1
  966. package/dist/src/utils/resource-governor.js +38 -14
  967. package/dist/src/utils/resource-governor.js.map +1 -1
  968. package/dist/tsconfig.tsbuildinfo +1 -1
  969. package/package.json +7 -7
  970. package/.claude/agents/consensus/crdt-synchronizer.md +0 -977
  971. package/.claude/commands/hive-mind/README.md +0 -42
  972. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
  973. package/.claude/commands/hive-mind/hive-mind-init.md +0 -68
  974. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
  975. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
  976. package/.claude/commands/hive-mind/hive-mind-status.md +0 -56
  977. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
  978. package/.claude/commands/hive-mind/hive-mind.md +0 -87
  979. package/.claude/commands/swarm/README.md +0 -40
  980. package/.claude/commands/swarm/swarm.md +0 -79
  981. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -347
  982. package/.claude/skills/swarm-advanced/SKILL.md +0 -936
  983. package/dist/src/commands/swarm.d.ts +0 -8
  984. package/dist/src/commands/swarm.d.ts.map +0 -1
  985. package/dist/src/commands/swarm.js.map +0 -1
  986. package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -17
  987. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +0 -1
  988. package/dist/src/mcp-tools/hive-mind-tools.js +0 -1239
  989. package/dist/src/mcp-tools/hive-mind-tools.js.map +0 -1
  990. package/dist/src/mcp-tools/swarm-tools.d.ts +0 -9
  991. package/dist/src/mcp-tools/swarm-tools.d.ts.map +0 -1
  992. package/dist/src/mcp-tools/swarm-tools.js +0 -411
  993. package/dist/src/mcp-tools/swarm-tools.js.map +0 -1
  994. package/dist/src/ui/data/avatars/crdt-synchronizer.svg +0 -53
  995. package/dist/src/ui/data/avatars/gossip-coordinator.svg +0 -54
  996. package/scripts/deploy-ipfs-node.sh +0 -153
  997. package/scripts/setup-ipfs-registry.md +0 -365
  998. /package/.claude/agents/{hive-mind → monoswarm}/scout-explorer.md +0 -0
  999. /package/.claude/agents/{hive-mind → monoswarm}/worker-specialist.md +0 -0
  1000. /package/.claude/commands/{swarm → monoswarm}/analysis.md +0 -0
  1001. /package/.claude/commands/{swarm → monoswarm}/development.md +0 -0
  1002. /package/.claude/commands/{swarm → monoswarm}/examples.md +0 -0
  1003. /package/.claude/commands/{swarm → monoswarm}/maintenance.md +0 -0
  1004. /package/.claude/commands/{swarm → monoswarm}/optimization.md +0 -0
  1005. /package/.claude/commands/{swarm → monoswarm}/testing.md +0 -0
  1006. /package/dist/src/ui/data/avatars/{code-review-swarm.svg → monoswarm-code-review.svg} +0 -0
@@ -1,16 +1,19 @@
1
1
  // packages/@monomind/cli/src/commands/org.ts
2
- import { readFileSync, writeFileSync, existsSync, unlinkSync, rmSync, readdirSync, mkdirSync } from 'node:fs';
3
- import { join, resolve, dirname } from 'node:path';
4
- import { homedir } from 'node:os';
5
2
  import { createHash } from 'node:crypto';
6
- import { output } from '../output.js';
3
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync, } from 'node:fs';
4
+ import { homedir } from 'node:os';
5
+ import { dirname, join, resolve } from 'node:path';
7
6
  import { OrgDaemon } from '../orgrt/daemon.js';
8
- import { resolveModel } from '../orgrt/session.js';
9
- import { startOrgServer } from '../orgrt/server.js';
10
- import { ORG_DIR, OrgDefSchema } from '../orgrt/types.js';
11
7
  import { migrateOrgFile } from '../orgrt/migrate.js';
12
8
  import { readHistory, readRunEvents, summarizeRun } from '../orgrt/reporting.js';
13
- const log = (text) => { console.log(text); };
9
+ import { startOrgServer } from '../orgrt/server.js';
10
+ import { resolveModel } from '../orgrt/session.js';
11
+ import { ORG_DIR, OrgDefSchema } from '../orgrt/types.js';
12
+ import { output } from '../output.js';
13
+ import { MODEL_PRICING } from '../pricing/model-pricing.js';
14
+ const log = (text) => {
15
+ console.log(text);
16
+ };
14
17
  /** Org names are used to build filesystem paths under .monomind/orgs — reject
15
18
  * anything that isn't a plain identifier to prevent path traversal (e.g.
16
19
  * `monomind org stop '../../../../tmp/x'`). */
@@ -30,19 +33,37 @@ export function validateOrgName(name) {
30
33
  * exclude them when discovering real org configs) and deleteAction (which
31
34
  * must remove all of them when deleting an org). */
32
35
  const ORG_ARTIFACT_SUFFIXES = [
33
- '-state', '-goals', '-threads', '-activity', '-approvals', '-members', '-secrets', '-budgets',
34
- '-routines', '-issues', '-projects', '-workspaces', '-worktrees', '-environments',
35
- '-plugins', '-adapters', '-join-requests', '-bootstrap', '-project-workspaces',
36
- '-approval-comments', '-skills',
36
+ '-state',
37
+ '-goals',
38
+ '-threads',
39
+ '-activity',
40
+ '-approvals',
41
+ '-members',
42
+ '-secrets',
43
+ '-budgets',
44
+ '-routines',
45
+ '-issues',
46
+ '-projects',
47
+ '-workspaces',
48
+ '-worktrees',
49
+ '-environments',
50
+ '-plugins',
51
+ '-adapters',
52
+ '-join-requests',
53
+ '-bootstrap',
54
+ '-project-workspaces',
55
+ '-approval-comments',
56
+ '-skills',
37
57
  ];
38
58
  export function listOrgConfigFiles(orgsDir) {
39
59
  // endsWith, not includes: substring matching hid legitimate orgs whose NAME
40
60
  // merely contains an artifact suffix anywhere (e.g. "state-machine.json",
41
61
  // "issues-triage.json") — and anything hidden here is also invisible to
42
62
  // run/list/serve while `org delete <sibling>` would still remove its files.
43
- return readdirSync(orgsDir)
44
- .filter(f => f.endsWith('.json') && !f.startsWith('._') && !f.endsWith('.v1.json')
45
- && !ORG_ARTIFACT_SUFFIXES.some(suf => f.endsWith(`${suf}.json`)));
63
+ return readdirSync(orgsDir).filter((f) => f.endsWith('.json') &&
64
+ !f.startsWith('._') &&
65
+ !f.endsWith('.v1.json') &&
66
+ !ORG_ARTIFACT_SUFFIXES.some((suf) => f.endsWith(`${suf}.json`)));
46
67
  }
47
68
  /** Remove a lingering stopfile so a fresh `org run` doesn't self-terminate. */
48
69
  export const clearStopfile = (cwd, name) => {
@@ -90,22 +111,24 @@ const runAction = async (ctx) => {
90
111
  // plain `as string` cast would let that array flow straight into the org's
91
112
  // goal and get stringified as "a,b" with no warning. Checked before any
92
113
  // side effects (starting the xdeliver listener) run.
93
- const taskFlag = ctx.flags['task'];
114
+ const taskFlag = ctx.flags.task;
94
115
  if (Array.isArray(taskFlag))
95
116
  return { success: false, message: '--task was passed more than once — pass it exactly once' };
96
117
  // Fail before any side effects (inbox server) when the org doesn't exist.
97
118
  const orgsDir = join(ctx.cwd, ORG_DIR);
98
119
  if (!existsSync(join(orgsDir, `${name}.json`))) {
99
- const known = existsSync(orgsDir) ? listOrgConfigFiles(orgsDir).map(f => f.replace(/\.json$/, '')) : [];
120
+ const known = existsSync(orgsDir)
121
+ ? listOrgConfigFiles(orgsDir).map((f) => f.replace(/\.json$/, ''))
122
+ : [];
100
123
  log(output.error(`Org not found: ${name}${known.length ? ` — available: ${known.join(', ')}` : ' — create one with /mastermind:createorg'}`));
101
124
  return { success: false, message: 'org not found' };
102
125
  }
103
- if (ctx.flags['dryRun'] === true) {
126
+ if (ctx.flags.dryRun === true) {
104
127
  // Validate + preview each role's actual briefing without spawning sessions.
105
128
  try {
106
129
  const def = OrgDefSchema.parse(JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8')));
107
130
  const { buildRolePrompt } = await import('../orgrt/session.js');
108
- const roster = def.roles.map(r => r.id);
131
+ const roster = def.roles.map((r) => r.id);
109
132
  const perRole = Math.floor((def.run_config.budget_tokens ?? 1_000_000) / def.roles.length);
110
133
  // Same KG entity glossary the live daemon injects — the preview must
111
134
  // match what sessions actually receive.
@@ -160,14 +183,23 @@ const runAction = async (ctx) => {
160
183
  log(output.dim(` watch it with: monomind org logs ${name} --follow`));
161
184
  return { success: true, message: 'start requested' };
162
185
  }
163
- const crossProcess = ctx.flags['crossProcess'] !== false;
186
+ const crossProcess = ctx.flags.crossProcess !== false;
164
187
  // P1-1: v1 deprecation warning. Detect v1-shaped configs and warn.
165
188
  // Gate on MONOMIND_V1_LEGACY=off to refuse v1 orgs entirely (patch-versioning-
166
189
  // compliant mechanism — no minor bump needed).
167
- const V1_ORG_KEYS = ['topology', 'consensus', 'strategy', 'board_id', 'todo_col_id', 'doing_col_id', 'done_col_id', 'loop'];
190
+ const V1_ORG_KEYS = [
191
+ 'topology',
192
+ 'consensus',
193
+ 'strategy',
194
+ 'board_id',
195
+ 'todo_col_id',
196
+ 'doing_col_id',
197
+ 'done_col_id',
198
+ 'loop',
199
+ ];
168
200
  try {
169
201
  const rawCfg = JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8'));
170
- const isV1 = V1_ORG_KEYS.some(k => k in rawCfg);
202
+ const isV1 = V1_ORG_KEYS.some((k) => k in rawCfg);
171
203
  if (isV1) {
172
204
  const v1Legacy = process.env.MONOMIND_V1_LEGACY;
173
205
  if (v1Legacy === 'off') {
@@ -179,34 +211,51 @@ const runAction = async (ctx) => {
179
211
  log(output.dim(` To silence: run "monomind org migrate ${name}". To block v1 orgs: set MONOMIND_V1_LEGACY=off.`));
180
212
  }
181
213
  }
182
- catch { /* config parse errors surface below in cost estimate or daemon.startOrg */ }
214
+ catch {
215
+ /* config parse errors surface below in cost estimate or daemon.startOrg */
216
+ }
183
217
  // P0-17: Upfront cost estimate. `org run` and `/mastermind:autodev` spend real
184
218
  // provider tokens. Print an estimate before sessions start; honor --budget-usd
185
219
  // as a hard stop and --yes to skip the confirmation prompt. Rates are defaults
186
- // (per 1M tokens, input+output blended, Aug 2026); override via the model id.
220
+ // (per 1M tokens, blended estimate, Aug 2026); override via the model id.
187
221
  //
188
222
  // No provider Usage API is queried (that needs Admin/Org API credentials most
189
- // users won't have configured) — rates come from this hardcoded table, or from
190
- // a user-editable ~/.monomind/rates.json override when present. Either way this
191
- // is static data, not a live query, so a "stale rates" warning is always shown
192
- // to make that limitation visible rather than implying live pricing.
223
+ // users won't have configured) — rates are derived from the canonical
224
+ // MODEL_PRICING table (src/pricing/model-pricing.ts), using each model's
225
+ // output-token price as the blended per-1M estimate (output tokens dominate
226
+ // role-turn cost). Models not yet tracked in that table (third-party/non-
227
+ // Anthropic providers) fall back to the manually maintained EXTRA table
228
+ // below. A user-editable ~/.monomind/rates.json override, when present,
229
+ // takes precedence over both. Either way this is static data, not a live
230
+ // query, so a "stale rates" warning is always shown to make that
231
+ // limitation visible rather than implying live pricing.
232
+ const DERIVED_RATE_PER_1M = Object.fromEntries(Object.entries(MODEL_PRICING).map(([model, price]) => [model, price.out * 1_000_000]));
233
+ // Models absent from MODEL_PRICING (not yet in the canonical pricing table).
234
+ const EXTRA_MODEL_RATE_PER_1M = {
235
+ 'gpt-4': 10,
236
+ 'glm-5.2': 2,
237
+ 'glm-4': 2,
238
+ 'kimi-latest': 3,
239
+ 'kimi-k2': 3,
240
+ 'kimi-code/k3': 3,
241
+ 'kimi-code/k3-256k': 3,
242
+ 'gemini-3.1-pro': 8,
243
+ 'gemini-3.6-flash-high': 1,
244
+ 'gpt-5.6-terra': 10,
245
+ 'gpt-5.5': 10,
246
+ };
193
247
  const MODEL_RATE_PER_1M = {
194
- 'claude-opus-5': 75, 'claude-opus-4': 75,
195
- 'claude-sonnet-5': 15, 'claude-sonnet-4': 15, 'claude-sonnet-4-5': 15,
196
- 'gpt-5': 10, 'gpt-4': 10,
197
- 'glm-5.2': 2, 'glm-4': 2,
198
- 'kimi-latest': 3, 'kimi-k2': 3, 'kimi-code/k3': 3, 'kimi-code/k3-256k': 3,
199
- 'gemini-3.1-pro': 8, 'gemini-3.6-flash-high': 1,
200
- 'gpt-5.6-terra': 10, 'gpt-5.5': 10,
248
+ ...EXTRA_MODEL_RATE_PER_1M,
249
+ ...DERIVED_RATE_PER_1M,
201
250
  };
202
251
  const DEFAULT_RATE_PER_1M = 10;
203
252
  const AVG_TOKENS_PER_TURN = 2000;
204
- const budgetUsd = ctx.flags['budgetUsd'];
205
- const skipConfirm = ctx.flags['yes'] === true;
253
+ const budgetUsd = ctx.flags.budgetUsd;
254
+ const skipConfirm = ctx.flags.yes === true;
206
255
  // User-editable rate overrides: ~/.monomind/rates.json, e.g.
207
256
  // { "claude-opus-5": 90, "my-custom-model": 5 }
208
257
  const ratesPath = join(homedir(), '.monomind', 'rates.json');
209
- let userRates = {};
258
+ const userRates = {};
210
259
  let ratesFileUsed = false;
211
260
  try {
212
261
  const parsed = JSON.parse(readFileSync(ratesPath, 'utf8'));
@@ -218,7 +267,9 @@ const runAction = async (ctx) => {
218
267
  ratesFileUsed = Object.keys(userRates).length > 0;
219
268
  }
220
269
  }
221
- catch { /* no rates.json (or invalid) — hardcoded defaults only */ }
270
+ catch {
271
+ /* no rates.json (or invalid) — hardcoded defaults only */
272
+ }
222
273
  try {
223
274
  const def = OrgDefSchema.parse(JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8')));
224
275
  const defaultMaxTurns = def.run_config.max_turns_per_message ?? 30;
@@ -226,7 +277,7 @@ const runAction = async (ctx) => {
226
277
  // the schema default is effectively unlimited (DEFAULT_MAX_TURNS_PER_MESSAGE),
227
278
  // which would balloon the upfront figure into meaninglessness.
228
279
  const ESTIMATE_TURNS_CAP = 30;
229
- let totalTokens = 0;
280
+ let _totalTokens = 0;
230
281
  const perRoleRows = def.roles.map((r) => {
231
282
  // Mirror the actual runtime's model resolution (session.ts resolveModel)
232
283
  // instead of a hardcoded 'claude-sonnet-5' fallback — otherwise every
@@ -236,7 +287,7 @@ const runAction = async (ctx) => {
236
287
  const rate = userRates[model] ?? MODEL_RATE_PER_1M[model] ?? DEFAULT_RATE_PER_1M;
237
288
  const roleTurns = Math.min(r.max_turns_per_message ?? defaultMaxTurns, ESTIMATE_TURNS_CAP);
238
289
  const tokens = roleTurns * AVG_TOKENS_PER_TURN;
239
- totalTokens += tokens;
290
+ _totalTokens += tokens;
240
291
  return { id: r.id, model, tokens, cost: (tokens * rate) / 1_000_000 };
241
292
  });
242
293
  const estimate = perRoleRows.reduce((s, r) => s + r.cost, 0);
@@ -253,7 +304,10 @@ const runAction = async (ctx) => {
253
304
  }
254
305
  if (!skipConfirm && process.stdin.isTTY) {
255
306
  const { confirm } = await import('../prompt.js');
256
- const ok = await confirm({ message: `Start ${def.roles.length}-role org? This will spend real provider tokens.`, default: true });
307
+ const ok = await confirm({
308
+ message: `Start ${def.roles.length}-role org? This will spend real provider tokens.`,
309
+ default: true,
310
+ });
257
311
  if (!ok) {
258
312
  log(output.dim('Aborted — no tokens spent.'));
259
313
  return { success: false, message: 'user declined cost-estimate prompt' };
@@ -267,7 +321,7 @@ const runAction = async (ctx) => {
267
321
  log(output.dim(`(cost estimate skipped: ${err instanceof Error ? err.message : String(err)})`));
268
322
  }
269
323
  }
270
- const resumeFlag = ctx.flags['resume'] === true;
324
+ const resumeFlag = ctx.flags.resume === true;
271
325
  const daemon = new OrgDaemon(ctx.cwd, { crossProcess });
272
326
  let srv;
273
327
  if (crossProcess) {
@@ -281,14 +335,45 @@ const runAction = async (ctx) => {
281
335
  catch (err) {
282
336
  // Don't leave the inbox server holding the event loop open on a failed start.
283
337
  srv?.close();
284
- await daemon.stopAll().catch(() => { });
338
+ await daemon.stopAll().catch(() => {
339
+ /* nothing started */
340
+ });
285
341
  const detail = err instanceof Error ? err.message : String(err);
286
342
  const hint = err instanceof Error && err.name === 'ZodError'
287
- ? ` — run "monomind org validate ${name}" for details` : '';
343
+ ? ` — run "monomind org validate ${name}" for details`
344
+ : '';
288
345
  log(output.error(`Could not start org ${name}: ${detail}${hint}`));
289
346
  return { success: false, message: 'org start failed' };
290
347
  }
291
348
  log(output.info(`org ${name} running (${running.def.roles.length} agents, run ${running.run}) — Ctrl-C or "monomind org stop ${name}" to stop`));
349
+ // #206 follow-up: without this, an uncaught error in this process left
350
+ // runtime.json's status stuck at 'running' (finishStop never runs), and
351
+ // runOutcomeResult's status === 'crashed' branch — the one meant to
352
+ // surface *why* the run failed — could never actually fire for `org run`,
353
+ // since nothing here ever wrote 'crashed'. Mirrors serveAction's
354
+ // crashExit, but deliberately does NOT touch SIGINT/SIGTERM — those are
355
+ // already handled by the wait loop below as a graceful stop, and
356
+ // registering a second, competing handler here would race it.
357
+ process.on('uncaughtException', (err) => {
358
+ try {
359
+ console.error('[org run] uncaughtException:', err);
360
+ }
361
+ catch {
362
+ /* stderr gone */
363
+ }
364
+ daemon.persistCrashStateAll(`uncaughtException: ${err instanceof Error ? err.message : String(err)}`);
365
+ process.exit(1);
366
+ });
367
+ process.on('unhandledRejection', (err) => {
368
+ try {
369
+ console.error('[org run] unhandledRejection:', err);
370
+ }
371
+ catch {
372
+ /* stderr gone */
373
+ }
374
+ daemon.persistCrashStateAll(`unhandledRejection: ${err instanceof Error ? err.message : String(err)}`);
375
+ process.exit(1);
376
+ });
292
377
  // P1-12: Print the dashboard URL so CLI users know where to look.
293
378
  // The dashboard is normally spawned by a Claude Code SessionStart hook
294
379
  // (.claude/helpers/control-start.cjs) — but `org run` doesn't require
@@ -314,7 +399,9 @@ const runAction = async (ctx) => {
314
399
  stdio: 'ignore',
315
400
  });
316
401
  }
317
- catch { /* best-effort — fall through to whatever control.json already has */ }
402
+ catch {
403
+ /* best-effort — fall through to whatever control.json already has */
404
+ }
318
405
  }
319
406
  if (existsSync(controlPath)) {
320
407
  try {
@@ -322,7 +409,9 @@ const runAction = async (ctx) => {
322
409
  const dashUrl = ctl.url || (ctl.port ? `http://localhost:${ctl.port}` : 'http://localhost:4242');
323
410
  log(output.dim(` Dashboard: ${dashUrl}`));
324
411
  }
325
- catch { /* non-critical */ }
412
+ catch {
413
+ /* non-critical */
414
+ }
326
415
  }
327
416
  else if (existsSync(controlStartPath)) {
328
417
  // control-start.cjs ran above (spawnSync'd synchronously with a 5s cap)
@@ -342,21 +431,75 @@ const runAction = async (ctx) => {
342
431
  // previous run before polling.
343
432
  clearStopfile(ctx.cwd, name);
344
433
  const stopfile = join(ctx.cwd, ORG_DIR, name, 'stop');
345
- await new Promise(resolvePromise => {
434
+ // #206: a human explicitly running `monomind org stop` is a deliberate,
435
+ // successful action regardless of how the run itself ended — capture that
436
+ // BEFORE clearStopfile() below wipes the file, so it isn't lost.
437
+ let stoppedManually = false;
438
+ await new Promise((resolvePromise) => {
346
439
  const iv = setInterval(() => {
347
- if (existsSync(stopfile) || !daemon.getOrg(name)) {
440
+ if (existsSync(stopfile)) {
441
+ stoppedManually = true;
442
+ clearInterval(iv);
443
+ resolvePromise();
444
+ }
445
+ else if (!daemon.getOrg(name)) {
348
446
  clearInterval(iv);
349
447
  resolvePromise();
350
448
  }
351
449
  }, 2000);
352
- process.once('SIGINT', () => { clearInterval(iv); resolvePromise(); });
353
- process.once('SIGTERM', () => { clearInterval(iv); resolvePromise(); });
450
+ process.once('SIGINT', () => {
451
+ clearInterval(iv);
452
+ resolvePromise();
453
+ });
454
+ process.once('SIGTERM', () => {
455
+ clearInterval(iv);
456
+ resolvePromise();
457
+ });
354
458
  });
355
459
  clearStopfile(ctx.cwd, name);
356
460
  await daemon.stopAll();
357
461
  srv?.close();
358
- return { success: true, message: `org ${name} stopped` };
462
+ if (stoppedManually)
463
+ return { success: true, message: `org ${name} stopped` };
464
+ // #206: 'org run' used to exit 0 unconditionally here — a crashed or
465
+ // watchdog-stopped run was indistinguishable from a completed one to any
466
+ // script or supervisor (launchd/systemd) driving off the exit code. Re-read
467
+ // the daemon's final record (same runtime.json pattern isOrgRunning/
468
+ // statusAction already use below) and only report success for a run that
469
+ // actually finished its goal via org_complete.
470
+ let final = {};
471
+ try {
472
+ final = JSON.parse(readFileSync(join(ctx.cwd, ORG_DIR, name, 'runtime.json'), 'utf8'));
473
+ }
474
+ catch {
475
+ /* best-effort — falls through to the non-clean-stop case below */
476
+ }
477
+ return runOutcomeResult(name, final);
359
478
  };
479
+ /** Decides `org run`'s exit-code-bearing CommandResult from the run's final
480
+ * recorded state. Extracted (matching resolvedIdleNudgeCount's precedent for
481
+ * the idle watchdog) so this decision is unit-testable without spinning up a
482
+ * real daemon/org. Exit 0 ONLY for a clean, goal-driven end (closedBy:
483
+ * 'org-complete', set by daemon.ts's org-complete auto-stop path) — every
484
+ * other outcome (idle-watchdog stop, boss-restart-exhausted, a process-level
485
+ * crash) exits 1 so scripts/supervisors can tell success from failure. */
486
+ export function runOutcomeResult(name, final) {
487
+ if (final.closedBy === 'org-complete') {
488
+ return { success: true, message: `org ${name} completed` };
489
+ }
490
+ if (final.status === 'crashed') {
491
+ return {
492
+ success: false,
493
+ message: `org ${name} crashed: ${final.error ?? 'unknown error'}`,
494
+ exitCode: 1,
495
+ };
496
+ }
497
+ return {
498
+ success: false,
499
+ message: `org ${name} stopped without completing (not via org_complete) — check 'monomind org status ${name}' or the run history for the reason`,
500
+ exitCode: 1,
501
+ };
502
+ }
360
503
  /** True when runtime.json records a running org whose recorded pid is still alive. */
361
504
  const isOrgRunning = (cwd, name) => {
362
505
  try {
@@ -386,7 +529,9 @@ const stopAction = async (ctx) => {
386
529
  try {
387
530
  rt = JSON.parse(readFileSync(join(ctx.cwd, ORG_DIR, name, 'runtime.json'), 'utf8'));
388
531
  }
389
- catch { /* never run */ }
532
+ catch {
533
+ /* never run */
534
+ }
390
535
  if (rt?.status !== 'running') {
391
536
  log(output.warning(`Org "${name}" is not running (runtime state: ${rt?.status ?? 'never run'}) — nothing to stop.`));
392
537
  return { success: false, message: 'org not running' };
@@ -466,12 +611,16 @@ const statusAction = async (ctx) => {
466
611
  }
467
612
  }
468
613
  const orgDir = join(ctx.cwd, ORG_DIR);
469
- const targets = name ? [name] : (existsSync(orgDir)
470
- ? listOrgConfigFiles(orgDir).map(f => f.replace(/\.json$/, ''))
471
- : []);
614
+ const targets = name
615
+ ? [name]
616
+ : existsSync(orgDir)
617
+ ? listOrgConfigFiles(orgDir).map((f) => f.replace(/\.json$/, ''))
618
+ : [];
472
619
  for (const t of targets) {
473
620
  const rt = join(orgDir, t, 'runtime.json');
474
- let state = { status: 'never run' };
621
+ let state = {
622
+ status: 'never run',
623
+ };
475
624
  if (existsSync(rt)) {
476
625
  try {
477
626
  state = JSON.parse(readFileSync(rt, 'utf8'));
@@ -484,24 +633,29 @@ const statusAction = async (ctx) => {
484
633
  // A "running" record whose pid is gone means the daemon died without its
485
634
  // stopOrg cleanup — surface that instead of reporting it as still running.
486
635
  if ((state.status === 'running' || state.status === 'crashed') && state.pid) {
487
- const pidGone = state.status === 'crashed' || (() => {
488
- try {
489
- process.kill(state.pid, 0);
490
- return false;
491
- }
492
- catch {
493
- return true;
494
- }
495
- })();
636
+ const pidGone = state.status === 'crashed' ||
637
+ (() => {
638
+ try {
639
+ process.kill(state.pid, 0);
640
+ return false;
641
+ }
642
+ catch {
643
+ return true;
644
+ }
645
+ })();
496
646
  if (pidGone) {
497
647
  let heartbeatHint = '';
498
648
  try {
499
649
  const hb = JSON.parse(readFileSync(join(ctx.cwd, '.monomind', 'serve-heartbeat.json'), 'utf8'));
500
650
  heartbeatHint = ` (last heartbeat: ${hb.updatedAt})`;
501
651
  }
502
- catch { /* no heartbeat file — daemon predates this change or was already cleaned up */ }
652
+ catch {
653
+ /* no heartbeat file — daemon predates this change or was already cleaned up */
654
+ }
503
655
  const closedBy = state.closedBy;
504
- const label = closedBy === 'crash-handler' ? 'crashed (caught by crash handler)' : `crashed (runtime.json says ${state.status} but pid ${state.pid} is gone)`;
656
+ const label = closedBy === 'crash-handler'
657
+ ? 'crashed (caught by crash handler)'
658
+ : `crashed (runtime.json says ${state.status} but pid ${state.pid} is gone)`;
505
659
  log(output.warning(`${t}: ${label}${heartbeatHint}${state.run ? ` — run ${state.run}` : ''} — close it out with "monomind org mark-complete ${t}"`));
506
660
  continue;
507
661
  }
@@ -528,7 +682,7 @@ const statusAction = async (ctx) => {
528
682
  const quietMs = Date.now() - lastTs;
529
683
  const quietStr = fmtDuration(quietMs);
530
684
  const toolCalls = Object.values(summary.roles).reduce((a, r) => a + r.toolsAllowed + r.toolsDenied, 0);
531
- const rolesUp = Object.keys(summary.roles).filter(r => r !== '(system)').length;
685
+ const rolesUp = Object.keys(summary.roles).filter((r) => r !== '(system)').length;
532
686
  log(` elapsed: ${elapsedStr} | events: ${summary.events} | messages: ${summary.messages} | tools: ${toolCalls}`);
533
687
  log(` roles active: ${rolesUp} | tokens: ${fmtNum(summary.totalTokens)} | cost: $${summary.totalCostUsd.toFixed(2)}`);
534
688
  log(` quiet since: ${new Date(lastTs).toISOString().slice(11, 19)} (${quietStr} ago)`);
@@ -537,7 +691,7 @@ const statusAction = async (ctx) => {
537
691
  }
538
692
  // Previous cycle comparison from history
539
693
  const history = readHistory(ctx.cwd, t);
540
- const prev = history.filter(h => h.run !== state.run).at(-1);
694
+ const prev = history.filter((h) => h.run !== state.run).at(-1);
541
695
  if (prev) {
542
696
  const dur = prev.durationMs !== null ? fmtDuration(prev.durationMs) : '?';
543
697
  const outcome = prev.outcome?.status ?? (prev.crashes.length ? 'crashed' : 'completed');
@@ -601,7 +755,9 @@ export const pollReloadfiles = async (cwd, daemon) => {
601
755
  try {
602
756
  unlinkSync(reloadFile);
603
757
  }
604
- catch { /* already gone */ }
758
+ catch {
759
+ /* already gone */
760
+ }
605
761
  try {
606
762
  const result = daemon.reloadOrgDef(name);
607
763
  const parts = [];
@@ -653,11 +809,15 @@ export const pollRunfiles = async (cwd, daemon) => {
653
809
  if (typeof body.task === 'string' && body.task.trim())
654
810
  task = body.task;
655
811
  }
656
- catch { /* bare/empty runfile — start with the org's own goal */ }
812
+ catch {
813
+ /* bare/empty runfile — start with the org's own goal */
814
+ }
657
815
  try {
658
816
  unlinkSync(runfile);
659
817
  }
660
- catch { /* already gone */ }
818
+ catch {
819
+ /* already gone */
820
+ }
661
821
  if (daemon.listRunning().includes(name))
662
822
  continue; // already running — request satisfied
663
823
  log(output.info(`org ${name}: run requested — starting now${task ? ' (with task)' : ''}`));
@@ -688,7 +848,9 @@ export const pollRunfiles = async (cwd, daemon) => {
688
848
  */
689
849
  const supervisorAction = async (ctx) => {
690
850
  const cwd = resolve(ctx.cwd || process.cwd());
691
- const requested = String(ctx.flags.format ?? '').trim().toLowerCase();
851
+ const requested = String(ctx.flags.format ?? '')
852
+ .trim()
853
+ .toLowerCase();
692
854
  const format = requested || (process.platform === 'darwin' ? 'launchd' : 'systemd');
693
855
  if (format !== 'launchd' && format !== 'systemd') {
694
856
  log(output.error(`Unknown --format "${requested}" — expected launchd or systemd.`));
@@ -776,7 +938,7 @@ WantedBy=default.target
776
938
  return { success: true, message: `${format} unit emitted` };
777
939
  };
778
940
  const serveAction = async (ctx) => {
779
- const crossProcess = ctx.flags['crossProcess'] !== false;
941
+ const crossProcess = ctx.flags.crossProcess !== false;
780
942
  const daemon = new OrgDaemon(ctx.cwd, { crossProcess });
781
943
  let srv;
782
944
  if (crossProcess) {
@@ -789,13 +951,21 @@ const serveAction = async (ctx) => {
789
951
  try {
790
952
  console.error(`[org serve] ${label}:`, err);
791
953
  }
792
- catch { /* stderr gone */ }
793
- daemon.persistCrashStateAll();
954
+ catch {
955
+ /* stderr gone */
956
+ }
957
+ daemon.persistCrashStateAll(`${label}: ${err instanceof Error ? err.message : String(err)}`);
794
958
  daemon.clearHeartbeat();
795
959
  process.exitCode = 1;
796
960
  };
797
- process.on('uncaughtException', (err) => { crashExit('uncaughtException', err); process.exit(1); });
798
- process.on('unhandledRejection', (err) => { crashExit('unhandledRejection', err); process.exit(1); });
961
+ process.on('uncaughtException', (err) => {
962
+ crashExit('uncaughtException', err);
963
+ process.exit(1);
964
+ });
965
+ process.on('unhandledRejection', (err) => {
966
+ crashExit('unhandledRejection', err);
967
+ process.exit(1);
968
+ });
799
969
  // Termination diagnostics (#45). The two handlers above only cover errors
800
970
  // raised *inside* the daemon. A report of the daemon vanishing after hours
801
971
  // had a log holding nothing but its startup lines, because the ways a daemon
@@ -819,7 +989,9 @@ const serveAction = async (ctx) => {
819
989
  try {
820
990
  console.error(`[org serve] shutting down: ${reason}`);
821
991
  }
822
- catch { /* stderr gone */ }
992
+ catch {
993
+ /* stderr gone */
994
+ }
823
995
  };
824
996
  for (const sig of ['SIGTERM', 'SIGINT', 'SIGHUP']) {
825
997
  process.on(sig, () => {
@@ -828,7 +1000,9 @@ const serveAction = async (ctx) => {
828
1000
  daemon.persistCrashStateAll();
829
1001
  daemon.clearHeartbeat();
830
1002
  }
831
- catch { /* best effort */ }
1003
+ catch {
1004
+ /* best effort */
1005
+ }
832
1006
  // A daemon holds ref'd timers, so it will not drain on its own; an
833
1007
  // explicit exit is required here and is the intended signal semantics.
834
1008
  process.exit(sig === 'SIGTERM' || sig === 'SIGINT' ? 0 : 1);
@@ -842,7 +1016,9 @@ const serveAction = async (ctx) => {
842
1016
  // Heartbeat: write every 30s so `org status` can tell "alive but busy" from
843
1017
  // "daemon gone" without relying on pid liveness alone.
844
1018
  daemon.writeHeartbeat();
845
- const heartbeatInterval = setInterval(() => { daemon.writeHeartbeat(); }, 30_000);
1019
+ const heartbeatInterval = setInterval(() => {
1020
+ daemon.writeHeartbeat();
1021
+ }, 30_000);
846
1022
  heartbeatInterval.unref?.();
847
1023
  log(output.info('org daemon serving — Ctrl-C to stop'));
848
1024
  // schedule orgs whose definition declares an interval (e.g. "15m", "2h")
@@ -860,7 +1036,7 @@ const serveAction = async (ctx) => {
860
1036
  const { runPrechecks } = await import('../orgrt/prechecks.js');
861
1037
  const { ok, results } = await runPrechecks(checks, ctx.cwd);
862
1038
  if (!ok) {
863
- const failed = results.find(r => !r.passed);
1039
+ const failed = results.find((r) => !r.passed);
864
1040
  log(output.warning(`org ${name}: precheck "${failed?.name}" failed — skipping scheduled run`));
865
1041
  if (failed?.output)
866
1042
  log(output.warning(` ${failed.output.slice(0, 200)}`));
@@ -887,9 +1063,10 @@ const serveAction = async (ctx) => {
887
1063
  // (idempotent — it resolves `done` and flushes).
888
1064
  const org = daemon.getOrg(name);
889
1065
  const allDone = org
890
- ? Promise.allSettled([...org.agents.values()].map(a => a.done))
1066
+ ? Promise.allSettled([...org.agents.values()].map((a) => a.done))
891
1067
  : Promise.resolve([]);
892
- const maxRun = org?.def?.run_config?.max_run;
1068
+ const maxRun = org?.def
1069
+ ?.run_config?.max_run;
893
1070
  // Default to the full interval. The old `min(interval, 10min)` clamp
894
1071
  // silently guillotined every org that didn't set max_run: real cycles
895
1072
  // here run 75-93 minutes, so a 2h-scheduled org was being force-stopped
@@ -901,10 +1078,13 @@ const serveAction = async (ctx) => {
901
1078
  // Set run_config.max_run to bound it tighter — or looser.
902
1079
  const maxMs = parseSchedule(maxRun) ?? intervalMs;
903
1080
  let timer;
904
- await Promise.race([allDone, new Promise(r => {
1081
+ await Promise.race([
1082
+ allDone,
1083
+ new Promise((r) => {
905
1084
  timer = setTimeout(r, maxMs);
906
1085
  timer.unref?.();
907
- })]);
1086
+ }),
1087
+ ]);
908
1088
  if (timer)
909
1089
  clearTimeout(timer);
910
1090
  }
@@ -916,7 +1096,9 @@ const serveAction = async (ctx) => {
916
1096
  // bound threw that work away; a minute is enough to finish an edit or a
917
1097
  // test run and flush, and still well inside any sane interval.
918
1098
  if (startedHere) {
919
- await daemon.stopOrg(name, { drainMs: 60_000 }).catch(err => console.error(`org ${name}: stop failed:`, err));
1099
+ await daemon
1100
+ .stopOrg(name, { drainMs: 60_000 })
1101
+ .catch((err) => console.error(`org ${name}: stop failed:`, err));
920
1102
  }
921
1103
  }
922
1104
  });
@@ -948,13 +1130,22 @@ const serveAction = async (ctx) => {
948
1130
  }
949
1131
  }
950
1132
  }
951
- const stopPoll = setInterval(() => { void pollStopfiles(ctx.cwd, daemon); }, 2000);
1133
+ const stopPoll = setInterval(() => {
1134
+ void pollStopfiles(ctx.cwd, daemon);
1135
+ }, 2000);
952
1136
  stopPoll.unref?.();
953
- const runPoll = setInterval(() => { void pollRunfiles(ctx.cwd, daemon); }, 2000);
1137
+ const runPoll = setInterval(() => {
1138
+ void pollRunfiles(ctx.cwd, daemon);
1139
+ }, 2000);
954
1140
  runPoll.unref?.();
955
- const reloadPoll = setInterval(() => { void pollReloadfiles(ctx.cwd, daemon); }, 2000);
1141
+ const reloadPoll = setInterval(() => {
1142
+ void pollReloadfiles(ctx.cwd, daemon);
1143
+ }, 2000);
956
1144
  reloadPoll.unref?.();
957
- await new Promise(r => { process.once('SIGINT', () => r()); process.once('SIGTERM', () => r()); });
1145
+ await new Promise((r) => {
1146
+ process.once('SIGINT', () => r());
1147
+ process.once('SIGTERM', () => r());
1148
+ });
958
1149
  clearInterval(stopPoll);
959
1150
  clearInterval(runPoll);
960
1151
  clearInterval(reloadPoll);
@@ -968,9 +1159,10 @@ const serveAction = async (ctx) => {
968
1159
  const testLoopAction = async (ctx) => {
969
1160
  // non-literal specifier: test-loop.ts lands in a later task; keeps tsc clean until then
970
1161
  const testLoopModule = '../orgrt/test-loop.js';
971
- const { runTestLoop } = await import(testLoopModule);
972
- const n = Number(ctx.flags['times'] ?? ctx.flags['n'] ?? 5);
973
- const report = await runTestLoop(ctx.cwd, n);
1162
+ const { runTestLoop } = (await import(testLoopModule));
1163
+ const n = Number(ctx.flags.times ?? ctx.flags.n ?? 5);
1164
+ const scenario = typeof ctx.flags.scenario === 'string' ? ctx.flags.scenario : undefined;
1165
+ const report = await runTestLoop(ctx.cwd, n, scenario);
974
1166
  log(output.info(report.summary));
975
1167
  return { success: report.failed === 0, message: report.summary };
976
1168
  };
@@ -1009,9 +1201,12 @@ const listAction = async (ctx) => {
1009
1201
  }
1010
1202
  }
1011
1203
  }
1012
- catch { /* no runtime state yet */ }
1204
+ catch {
1205
+ /* no runtime state yet */
1206
+ }
1013
1207
  const goal = typeof def.goal === 'string' && def.goal
1014
- ? ` — ${def.goal.length > 60 ? `${def.goal.slice(0, 57)}...` : def.goal}` : '';
1208
+ ? ` — ${def.goal.length > 60 ? `${def.goal.slice(0, 57)}...` : def.goal}`
1209
+ : '';
1015
1210
  detail = ` (${roles} role${roles === 1 ? '' : 's'}, ${sched}, ${status})${goal}`;
1016
1211
  }
1017
1212
  catch {
@@ -1031,7 +1226,7 @@ const deleteAction = async (ctx) => {
1031
1226
  log(output.error(`Invalid org name: ${orgName}`));
1032
1227
  return { success: false, message: 'invalid org name' };
1033
1228
  }
1034
- const confirmed = ctx.flags['yes'] === true || ctx.args.includes('--yes') || ctx.args.includes('-y');
1229
+ const confirmed = ctx.flags.yes === true || ctx.args.includes('--yes') || ctx.args.includes('-y');
1035
1230
  if (!confirmed) {
1036
1231
  log(output.warning(`This will permanently delete org "${orgName}" and all its data.`));
1037
1232
  log(output.warning('Pass --yes to confirm.'));
@@ -1044,7 +1239,7 @@ const deleteAction = async (ctx) => {
1044
1239
  log(output.error(`Org not found: ${orgName}`));
1045
1240
  return { success: false, message: 'org not found' };
1046
1241
  }
1047
- if (isOrgRunning(cwd, orgName) && ctx.flags['force'] !== true) {
1242
+ if (isOrgRunning(cwd, orgName) && ctx.flags.force !== true) {
1048
1243
  log(output.error(`Org "${orgName}" is currently running — stop it first (monomind org stop ${orgName}) or pass --force.`));
1049
1244
  return { success: false, message: 'org is running' };
1050
1245
  }
@@ -1058,27 +1253,37 @@ const deleteAction = async (ctx) => {
1058
1253
  removed++;
1059
1254
  }
1060
1255
  }
1061
- catch { /* ignore */ }
1256
+ catch {
1257
+ /* ignore */
1258
+ }
1062
1259
  }
1063
1260
  }
1064
1261
  try {
1065
1262
  unlinkSync(join(orgsDir, '.stops', `${orgName}.stop`));
1066
1263
  }
1067
- catch { /* ignore */ }
1264
+ catch {
1265
+ /* ignore */
1266
+ }
1068
1267
  const orgSubDir = join(orgsDir, orgName);
1069
1268
  try {
1070
1269
  if (existsSync(orgSubDir))
1071
1270
  rmSync(orgSubDir, { recursive: true, force: true });
1072
1271
  }
1073
- catch { /* ignore */ }
1272
+ catch {
1273
+ /* ignore */
1274
+ }
1074
1275
  try {
1075
1276
  unlinkSync(join(cwd, '.monomind', 'loops', `${orgName}.md`));
1076
1277
  }
1077
- catch { /* ignore */ }
1278
+ catch {
1279
+ /* ignore */
1280
+ }
1078
1281
  try {
1079
1282
  unlinkSync(join(orgsDir, `${orgName}-run.md`));
1080
1283
  }
1081
- catch { /* ignore */ }
1284
+ catch {
1285
+ /* ignore */
1286
+ }
1082
1287
  log(output.success(`Org "${orgName}" deleted (${removed} file(s) removed).`));
1083
1288
  return { success: true };
1084
1289
  };
@@ -1096,7 +1301,11 @@ const clearStaleRuntime = (cwd, name) => {
1096
1301
  rt = JSON.parse(readFileSync(rtPath, 'utf8'));
1097
1302
  }
1098
1303
  catch (err) {
1099
- return { cleared: false, reason: 'unreadable', detail: err instanceof Error ? err.message : String(err) };
1304
+ return {
1305
+ cleared: false,
1306
+ reason: 'unreadable',
1307
+ detail: err instanceof Error ? err.message : String(err),
1308
+ };
1100
1309
  }
1101
1310
  if (rt.status !== 'running' && rt.status !== 'crashed')
1102
1311
  return { cleared: false, reason: 'not-running' };
@@ -1105,11 +1314,19 @@ const clearStaleRuntime = (cwd, name) => {
1105
1314
  process.kill(rt.pid, 0);
1106
1315
  return { cleared: false, reason: 'alive', detail: String(rt.pid) };
1107
1316
  }
1108
- catch { /* pid is gone — this is exactly the stale case mark-complete exists for */ }
1317
+ catch {
1318
+ /* pid is gone — this is exactly the stale case mark-complete exists for */
1319
+ }
1109
1320
  }
1110
1321
  // Same shape stopOrg's persistState() writes, so every reader (org status,
1111
1322
  // isOrgRunning, the mastermind-org* skills' jq checks) sees a stopped org.
1112
- writeFileSync(rtPath, JSON.stringify({ status: 'stopped', run: rt.run, pid: rt.pid, updated: new Date().toISOString(), closedBy: 'mark-complete' }, null, 2));
1323
+ writeFileSync(rtPath, JSON.stringify({
1324
+ status: 'stopped',
1325
+ run: rt.run,
1326
+ pid: rt.pid,
1327
+ updated: new Date().toISOString(),
1328
+ closedBy: 'mark-complete',
1329
+ }, null, 2));
1113
1330
  return { cleared: true, run: rt.run };
1114
1331
  };
1115
1332
  const markCompleteAction = async (ctx) => {
@@ -1124,7 +1341,9 @@ const markCompleteAction = async (ctx) => {
1124
1341
  // 0 — a typo looked like a successful cleanup.
1125
1342
  const orgsDir = join(cwd, ORG_DIR);
1126
1343
  if (!existsSync(join(orgsDir, `${orgName}.json`))) {
1127
- const known = existsSync(orgsDir) ? listOrgConfigFiles(orgsDir).map(f => f.replace(/\.json$/, '')) : [];
1344
+ const known = existsSync(orgsDir)
1345
+ ? listOrgConfigFiles(orgsDir).map((f) => f.replace(/\.json$/, ''))
1346
+ : [];
1128
1347
  log(output.error(`Org not found: ${orgName}${known.length ? ` — available: ${known.join(', ')}` : ''}`));
1129
1348
  return { success: false, message: 'org not found' };
1130
1349
  }
@@ -1149,14 +1368,18 @@ const markCompleteAction = async (ctx) => {
1149
1368
  if (ctl.url)
1150
1369
  ctrlUrl = ctl.url;
1151
1370
  }
1152
- catch { /* default */ }
1371
+ catch {
1372
+ /* default */
1373
+ }
1153
1374
  try {
1154
1375
  // All dashboard /api routes are auth-gated — attach the local session token.
1155
1376
  let auth = '';
1156
1377
  try {
1157
1378
  auth = readFileSync(join(cwd, '.monomind', 'dashboard-token'), 'utf8').trim();
1158
1379
  }
1159
- catch { /* server may be pre-auth */ }
1380
+ catch {
1381
+ /* server may be pre-auth */
1382
+ }
1160
1383
  // Bounded. Updating the dashboard is best-effort — the local state has
1161
1384
  // already been cleared by this point — but the fetch had no timeout, so a
1162
1385
  // dashboard that holds the port without answering (a wedged build from an
@@ -1222,27 +1445,69 @@ export const orgCommand = {
1222
1445
  description: 'SDK-based org runtime — run agent organizations as a controlled daemon',
1223
1446
  subcommands: [
1224
1447
  {
1225
- name: 'run', description: 'Start an org (foreground daemon)',
1448
+ name: 'run',
1449
+ description: 'Start an org (foreground daemon)',
1226
1450
  options: [
1227
1451
  { name: 'task', description: 'Override the org goal for this run', type: 'string' },
1228
- { name: 'resume', description: 'Resume an org run from its persisted checkpoint instead of starting fresh', type: 'boolean' },
1229
- { name: 'cross-process', description: 'Discover and message orgs hosted by other monomind processes on this machine (default true)', type: 'boolean', default: true },
1230
- { name: 'dry-run', description: 'Validate and print each role\'s briefing without starting any agent sessions', type: 'boolean' },
1231
- { name: 'budget-usd', description: 'Hard-stop the run if the upfront cost estimate exceeds this USD value (e.g. --budget-usd 5)', type: 'number' },
1232
- { name: 'yes', short: 'y', description: 'Skip the interactive cost-estimate confirmation prompt', type: 'boolean' },
1452
+ {
1453
+ name: 'resume',
1454
+ description: 'Resume an org run from its persisted checkpoint instead of starting fresh',
1455
+ type: 'boolean',
1456
+ },
1457
+ {
1458
+ name: 'cross-process',
1459
+ description: 'Discover and message orgs hosted by other monomind processes on this machine (default true)',
1460
+ type: 'boolean',
1461
+ default: true,
1462
+ },
1463
+ {
1464
+ name: 'dry-run',
1465
+ description: "Validate and print each role's briefing without starting any agent sessions",
1466
+ type: 'boolean',
1467
+ },
1468
+ {
1469
+ name: 'budget-usd',
1470
+ description: 'Hard-stop the run if the upfront cost estimate exceeds this USD value (e.g. --budget-usd 5)',
1471
+ type: 'number',
1472
+ },
1473
+ {
1474
+ name: 'yes',
1475
+ short: 'y',
1476
+ description: 'Skip the interactive cost-estimate confirmation prompt',
1477
+ type: 'boolean',
1478
+ },
1479
+ ],
1480
+ examples: [
1481
+ {
1482
+ command: 'monomind org run growth --task "weekly report"',
1483
+ description: 'Run the growth org once with a task',
1484
+ },
1233
1485
  ],
1234
- examples: [{ command: 'monomind org run growth --task "weekly report"', description: 'Run the growth org once with a task' }],
1235
1486
  action: runAction,
1236
1487
  },
1237
1488
  { name: 'stop', description: 'Request a running org daemon to stop', action: stopAction },
1238
- { name: 'pause', description: 'Pause an org — current turns finish, no new cycles start', action: pauseAction },
1489
+ {
1490
+ name: 'pause',
1491
+ description: 'Pause an org — current turns finish, no new cycles start',
1492
+ action: pauseAction,
1493
+ },
1239
1494
  { name: 'resume', description: 'Resume a paused org', action: resumeAction },
1240
- { name: 'reload', description: 'Hot-reload an org definition without stopping sessions', action: reloadAction },
1495
+ {
1496
+ name: 'reload',
1497
+ description: 'Hot-reload an org definition without stopping sessions',
1498
+ action: reloadAction,
1499
+ },
1241
1500
  { name: 'status', description: 'Show runtime state of orgs', action: statusAction },
1242
1501
  {
1243
- name: 'serve', description: 'Start the daemon server only (hosts scheduled orgs)',
1502
+ name: 'serve',
1503
+ description: 'Start the daemon server only (hosts scheduled orgs)',
1244
1504
  options: [
1245
- { name: 'cross-process', description: 'Discover and message orgs hosted by other monomind processes on this machine (default true)', type: 'boolean', default: true },
1505
+ {
1506
+ name: 'cross-process',
1507
+ description: 'Discover and message orgs hosted by other monomind processes on this machine (default true)',
1508
+ type: 'boolean',
1509
+ default: true,
1510
+ },
1246
1511
  ],
1247
1512
  action: serveAction,
1248
1513
  },
@@ -1251,29 +1516,57 @@ export const orgCommand = {
1251
1516
  description: 'Print (or --install) a launchd/systemd unit that keeps `org serve` running',
1252
1517
  options: [
1253
1518
  { name: 'format', description: 'launchd or systemd (default: platform)', type: 'string' },
1254
- { name: 'install', description: 'Write the unit into the per-user location', type: 'boolean' },
1519
+ {
1520
+ name: 'install',
1521
+ description: 'Write the unit into the per-user location',
1522
+ type: 'boolean',
1523
+ },
1255
1524
  ],
1256
1525
  action: supervisorAction,
1257
1526
  },
1258
1527
  {
1259
- name: 'test-loop', description: 'Run the org e2e verification loop N times',
1260
- options: [{ name: 'times', short: 'n', description: 'Iterations', type: 'number', default: 5 }],
1528
+ name: 'test-loop',
1529
+ description: 'Run the org e2e verification loop N times',
1530
+ options: [
1531
+ { name: 'times', short: 'n', description: 'Iterations', type: 'number', default: 5 },
1532
+ {
1533
+ name: 'scenario',
1534
+ description: 'Run a declarative scenario file (.monomind/scenarios/<file>) instead of the built-in fixture — structural dry-run only',
1535
+ type: 'string',
1536
+ },
1537
+ ],
1261
1538
  action: testLoopAction,
1262
1539
  },
1263
1540
  {
1264
- name: 'logs', description: 'Show (or follow) the formatted event log of an org run',
1541
+ name: 'logs',
1542
+ description: 'Show (or follow) the formatted event log of an org run',
1265
1543
  options: [
1266
1544
  { name: 'run', description: 'Run id (default: latest)', type: 'string' },
1267
1545
  { name: 'role', description: 'Only events from/to this role', type: 'string' },
1268
- { name: 'filter-tool', description: 'Filter events by tool name (e.g., Write, Edit)', type: 'string' },
1546
+ {
1547
+ name: 'filter-tool',
1548
+ description: 'Filter events by tool name (e.g., Write, Edit)',
1549
+ type: 'string',
1550
+ },
1269
1551
  { name: 'filter-role', description: 'Filter events by role ID', type: 'string' },
1270
- { name: 'tools-only', description: 'Show only tool events (exclude messages/status/audit)', type: 'boolean' },
1271
- { name: 'audit-filter', description: 'Filter audit events by decision (allow|deny)', type: 'string' },
1552
+ {
1553
+ name: 'tools-only',
1554
+ description: 'Show only tool events (exclude messages/status/audit)',
1555
+ type: 'boolean',
1556
+ },
1557
+ {
1558
+ name: 'audit-filter',
1559
+ description: 'Filter audit events by decision (allow|deny)',
1560
+ type: 'string',
1561
+ },
1272
1562
  { name: 'follow', short: 'f', description: 'Keep tailing until Ctrl-C', type: 'boolean' },
1273
1563
  ],
1274
1564
  examples: [
1275
1565
  { command: 'monomind org logs growth --follow', description: 'Live-tail the latest run' },
1276
- { command: 'monomind org logs growth --tools-only', description: 'Show only tool call events' },
1566
+ {
1567
+ command: 'monomind org logs growth --tools-only',
1568
+ description: 'Show only tool call events',
1569
+ },
1277
1570
  ],
1278
1571
  action: async (ctx) => {
1279
1572
  const v = validateOrgName(ctx.args[0]);
@@ -1284,16 +1577,36 @@ export const orgCommand = {
1284
1577
  },
1285
1578
  },
1286
1579
  {
1287
- name: 'watch', description: 'Live-tail one role\'s assistant chat text (any runtime) — a filtered, friendlier `logs --follow`',
1580
+ name: 'watch',
1581
+ description: "Live-tail one role's assistant chat text (any runtime) — a filtered, friendlier `logs --follow`",
1288
1582
  options: [
1289
1583
  { name: 'run', description: 'Run id (default: latest)', type: 'string' },
1290
- { name: 'follow', description: 'Set --follow=false to print current output once and exit instead of live-tailing', type: 'boolean', default: true },
1291
- { name: 'verbose', description: 'Also interleave status events (restart/crash/state-change) into the transcript', type: 'boolean' },
1292
- { name: 'stats', description: 'Print a running token/cost line as usage events arrive', type: 'boolean' },
1584
+ {
1585
+ name: 'follow',
1586
+ description: 'Set --follow=false to print current output once and exit instead of live-tailing',
1587
+ type: 'boolean',
1588
+ default: true,
1589
+ },
1590
+ {
1591
+ name: 'verbose',
1592
+ description: 'Also interleave status events (restart/crash/state-change) into the transcript',
1593
+ type: 'boolean',
1594
+ },
1595
+ {
1596
+ name: 'stats',
1597
+ description: 'Print a running token/cost line as usage events arrive',
1598
+ type: 'boolean',
1599
+ },
1293
1600
  ],
1294
1601
  examples: [
1295
- { command: 'monomind org watch growth researcher', description: 'Watch the researcher role\'s live output' },
1296
- { command: 'monomind org watch growth researcher --verbose --stats', description: 'Also show restarts/crashes and a running token/cost total' },
1602
+ {
1603
+ command: 'monomind org watch growth researcher',
1604
+ description: "Watch the researcher role's live output",
1605
+ },
1606
+ {
1607
+ command: 'monomind org watch growth researcher --verbose --stats',
1608
+ description: 'Also show restarts/crashes and a running token/cost total',
1609
+ },
1297
1610
  ],
1298
1611
  action: async (ctx) => {
1299
1612
  const v = validateOrgName(ctx.args[0]);
@@ -1304,16 +1617,23 @@ export const orgCommand = {
1304
1617
  },
1305
1618
  },
1306
1619
  {
1307
- name: 'report', description: 'Summarize an org run: outcome, per-role activity, tokens, assets, crashes',
1620
+ name: 'report',
1621
+ description: 'Summarize an org run: outcome, per-role activity, tokens, assets, crashes',
1308
1622
  options: [
1309
1623
  { name: 'run', description: 'Run id (default: latest)', type: 'string' },
1310
1624
  { name: 'all', description: 'List all recorded runs from history', type: 'boolean' },
1311
1625
  { name: 'by-role', description: 'Show per-role cost breakdown', type: 'boolean' },
1312
1626
  { name: 'audit', description: 'Show tool audit trail', type: 'boolean' },
1313
- { name: 'tool', description: 'Filter tool audit by tool name (with --audit)', type: 'string' },
1627
+ {
1628
+ name: 'tool',
1629
+ description: 'Filter tool audit by tool name (with --audit)',
1630
+ type: 'string',
1631
+ },
1314
1632
  { name: 'format', description: 'Output format (mermaid for flowchart)', type: 'string' },
1315
1633
  ],
1316
- examples: [{ command: 'monomind org report growth', description: 'Report on the latest run' }],
1634
+ examples: [
1635
+ { command: 'monomind org report growth', description: 'Report on the latest run' },
1636
+ ],
1317
1637
  action: async (ctx) => {
1318
1638
  const v = validateOrgName(ctx.args[0]);
1319
1639
  if (!v.ok)
@@ -1323,11 +1643,18 @@ export const orgCommand = {
1323
1643
  },
1324
1644
  },
1325
1645
  {
1326
- name: 'memory', description: 'Inspect an org\'s cross-run memory and knowledge graph (stats | search <query> | rules | rollback <run-ref>)',
1646
+ name: 'memory',
1647
+ description: "Inspect an org's cross-run memory and knowledge graph (stats | search <query> | rules | rollback <run-ref>)",
1327
1648
  examples: [
1328
1649
  { command: 'monomind org memory growth stats', description: 'KG size and namespaces' },
1329
- { command: 'monomind org memory growth search "launch checklist"', description: 'Search org memory + KG' },
1330
- { command: 'monomind org memory growth rollback run:m4x2', description: 'Delete everything one run wrote to the KG' },
1650
+ {
1651
+ command: 'monomind org memory growth search "launch checklist"',
1652
+ description: 'Search org memory + KG',
1653
+ },
1654
+ {
1655
+ command: 'monomind org memory growth rollback run:m4x2',
1656
+ description: 'Delete everything one run wrote to the KG',
1657
+ },
1331
1658
  ],
1332
1659
  action: async (ctx) => {
1333
1660
  const v = validateOrgName(ctx.args[0]);
@@ -1341,7 +1668,9 @@ export const orgCommand = {
1341
1668
  try {
1342
1669
  if (sub === 'stats') {
1343
1670
  const [stats, glossary, backend] = await Promise.all([
1344
- kg.kgStats({ dbPath }), kg.kgGlossary({ dbPath, limit: 15 }), bridge.bridgeGetBackendStats(dbPath),
1671
+ kg.kgStats({ dbPath }),
1672
+ kg.kgGlossary({ dbPath, limit: 15 }),
1673
+ bridge.bridgeGetBackendStats(dbPath),
1345
1674
  ]);
1346
1675
  log(output.info(`Knowledge graph: ${stats.nodes} entities, ${stats.edges} relations, ${stats.rules} rules`));
1347
1676
  if (glossary.length)
@@ -1349,21 +1678,33 @@ export const orgCommand = {
1349
1678
  const byNs = backend?.entriesByNamespace ?? {};
1350
1679
  for (const [ns, count] of Object.entries(byNs))
1351
1680
  log(output.info(` ${ns}: ${count} entries`));
1352
- return { success: true, message: 'org memory stats', data: { ...stats, namespaces: byNs } };
1681
+ return {
1682
+ success: true,
1683
+ message: 'org memory stats',
1684
+ data: { ...stats, namespaces: byNs },
1685
+ };
1353
1686
  }
1354
1687
  if (sub === 'search') {
1355
1688
  const q = ctx.args.slice(2).join(' ');
1356
1689
  if (!q)
1357
1690
  return { success: false, message: 'usage: org memory <org> search <query>' };
1358
1691
  const [mem, graph] = await Promise.all([
1359
- bridge.bridgeSearchEntries({ query: q, namespace: `org:${v.name}`, limit: 5, dbPath }),
1692
+ bridge.bridgeSearchEntries({
1693
+ query: q,
1694
+ namespace: `org:${v.name}`,
1695
+ limit: 5,
1696
+ dbPath,
1697
+ }),
1360
1698
  kg.kgSearch({ query: q, dbPath, limit: 8 }),
1361
1699
  ]);
1362
1700
  for (const r of mem?.results ?? [])
1363
1701
  log(output.info(`[${r.score.toFixed(2)}] ${r.key}: ${r.content.slice(0, 160)}`));
1364
1702
  if (graph.context)
1365
1703
  log(output.info(`\nKnowledge graph:\n${graph.context}`));
1366
- return { success: true, message: `${(mem?.results ?? []).length} memories, ${graph.triplets.length} triplets` };
1704
+ return {
1705
+ success: true,
1706
+ message: `${(mem?.results ?? []).length} memories, ${graph.triplets.length} triplets`,
1707
+ };
1367
1708
  }
1368
1709
  if (sub === 'rules') {
1369
1710
  const rules = await kg.kgListRules({ dbPath, limit: 50 });
@@ -1374,26 +1715,36 @@ export const orgCommand = {
1374
1715
  if (sub === 'rollback') {
1375
1716
  const ref = ctx.args[2];
1376
1717
  if (!ref)
1377
- return { success: false, message: 'usage: org memory <org> rollback <origin-ref> (e.g. run:m4x2)' };
1718
+ return {
1719
+ success: false,
1720
+ message: 'usage: org memory <org> rollback <origin-ref> (e.g. run:m4x2)',
1721
+ };
1378
1722
  const res = await kg.kgRollback({ originRef: ref, dbPath });
1379
1723
  log(output.info(`Rolled back ${ref}: ${res.deleted} deleted, ${res.retained} retained (shared with other origins)`));
1380
1724
  return { success: res.success, message: `rollback ${ref}`, data: res };
1381
1725
  }
1382
- return { success: false, message: `unknown subcommand "${sub}" — use stats | search | rules | rollback` };
1726
+ return {
1727
+ success: false,
1728
+ message: `unknown subcommand "${sub}" — use stats | search | rules | rollback`,
1729
+ };
1383
1730
  }
1384
1731
  finally {
1385
- await bridge.shutdownBridge().catch(() => { });
1732
+ await bridge.shutdownBridge().catch(() => {
1733
+ /* best effort */
1734
+ });
1386
1735
  }
1387
1736
  },
1388
1737
  },
1389
1738
  {
1390
- name: 'costs', description: 'Show per-role cost tracking from runtime.json',
1391
- options: [
1392
- { name: 'run', description: 'Run ID (defaults to latest)', type: 'string' },
1393
- ],
1739
+ name: 'costs',
1740
+ description: 'Show per-role cost tracking from runtime.json',
1741
+ options: [{ name: 'run', description: 'Run ID (defaults to latest)', type: 'string' }],
1394
1742
  examples: [
1395
1743
  { command: 'monomind org costs growth', description: 'Show cost breakdown for latest run' },
1396
- { command: 'monomind org costs growth --run run-20240130-123456', description: 'Show cost breakdown for specific run' },
1744
+ {
1745
+ command: 'monomind org costs growth --run run-20240130-123456',
1746
+ description: 'Show cost breakdown for specific run',
1747
+ },
1397
1748
  ],
1398
1749
  action: async (ctx) => {
1399
1750
  const v = validateOrgName(ctx.args[0]);
@@ -1404,15 +1755,29 @@ export const orgCommand = {
1404
1755
  },
1405
1756
  },
1406
1757
  {
1407
- name: 'inbox', description: 'Deliver an inbound cross-org message (live to a running org, queued to inbox.jsonl otherwise) — remote.ts shells out to this over SSH',
1758
+ name: 'inbox',
1759
+ description: 'Deliver an inbound cross-org message (live to a running org, queued to inbox.jsonl otherwise) — remote.ts shells out to this over SSH',
1408
1760
  options: [
1409
- { name: 'json', description: 'JSON payload: {"from":"orgA:role","subject":"...","body":"..."}', type: 'string' },
1410
- { name: 'to', description: 'Target role (default: the org\'s coordinator)', type: 'string' },
1411
- { name: 'from', description: 'Sender, qualified "org:role" (alternative to --json)', type: 'string' },
1761
+ {
1762
+ name: 'json',
1763
+ description: 'JSON payload: {"from":"orgA:role","subject":"...","body":"..."}',
1764
+ type: 'string',
1765
+ },
1766
+ { name: 'to', description: "Target role (default: the org's coordinator)", type: 'string' },
1767
+ {
1768
+ name: 'from',
1769
+ description: 'Sender, qualified "org:role" (alternative to --json)',
1770
+ type: 'string',
1771
+ },
1412
1772
  { name: 'subject', description: 'Subject (alternative to --json)', type: 'string' },
1413
1773
  { name: 'body', description: 'Body (alternative to --json)', type: 'string' },
1414
1774
  ],
1415
- examples: [{ command: 'monomind org inbox growth --json \'{"from":"sales:boss","subject":"leads","body":"..."}\'', description: 'Deliver a message to the growth org' }],
1775
+ examples: [
1776
+ {
1777
+ command: 'monomind org inbox growth --json \'{"from":"sales:boss","subject":"leads","body":"..."}\'',
1778
+ description: 'Deliver a message to the growth org',
1779
+ },
1780
+ ],
1416
1781
  action: async (ctx) => {
1417
1782
  const v = validateOrgName(ctx.args[0]);
1418
1783
  if (!v.ok)
@@ -1422,9 +1787,15 @@ export const orgCommand = {
1422
1787
  },
1423
1788
  },
1424
1789
  {
1425
- name: 'flow', description: 'Export org flow as Mermaid diagram',
1790
+ name: 'flow',
1791
+ description: 'Export org flow as Mermaid diagram',
1426
1792
  options: [{ name: 'run', description: 'Run ID (defaults to latest)', type: 'string' }],
1427
- examples: [{ command: 'monomind org flow growth --run run-20250130120000', description: 'Export Mermaid flowchart' }],
1793
+ examples: [
1794
+ {
1795
+ command: 'monomind org flow growth --run run-20250130120000',
1796
+ description: 'Export Mermaid flowchart',
1797
+ },
1798
+ ],
1428
1799
  action: async (ctx) => {
1429
1800
  const v = validateOrgName(ctx.args[0]);
1430
1801
  if (!v.ok)
@@ -1434,9 +1805,12 @@ export const orgCommand = {
1434
1805
  },
1435
1806
  },
1436
1807
  {
1437
- name: 'questions', description: 'List pending ask_human questions from an org\'s agents',
1808
+ name: 'questions',
1809
+ description: "List pending ask_human questions from an org's agents",
1438
1810
  options: [{ name: 'all', description: 'Include answered questions', type: 'boolean' }],
1439
- examples: [{ command: 'monomind org questions growth', description: 'Show unanswered questions' }],
1811
+ examples: [
1812
+ { command: 'monomind org questions growth', description: 'Show unanswered questions' },
1813
+ ],
1440
1814
  action: async (ctx) => {
1441
1815
  const v = validateOrgName(ctx.args[0]);
1442
1816
  if (!v.ok)
@@ -1446,8 +1820,14 @@ export const orgCommand = {
1446
1820
  },
1447
1821
  },
1448
1822
  {
1449
- name: 'answer', description: 'Answer a pending ask_human question (live if the org is running, queued otherwise)',
1450
- examples: [{ command: 'monomind org answer growth q-123-ab "yes, ship it"', description: 'Answer question q-123-ab' }],
1823
+ name: 'answer',
1824
+ description: 'Answer a pending ask_human question (live if the org is running, queued otherwise)',
1825
+ examples: [
1826
+ {
1827
+ command: 'monomind org answer growth q-123-ab "yes, ship it"',
1828
+ description: 'Answer question q-123-ab',
1829
+ },
1830
+ ],
1451
1831
  action: async (ctx) => {
1452
1832
  const v = validateOrgName(ctx.args[0]);
1453
1833
  if (!v.ok)
@@ -1457,8 +1837,14 @@ export const orgCommand = {
1457
1837
  },
1458
1838
  },
1459
1839
  {
1460
- name: 'approve', description: 'Approve a pending tool/action approval',
1461
- examples: [{ command: 'monomind org approve growth coder "Bash"', description: 'Approve Bash tool for coder role' }],
1840
+ name: 'approve',
1841
+ description: 'Approve a pending tool/action approval',
1842
+ examples: [
1843
+ {
1844
+ command: 'monomind org approve growth coder "Bash"',
1845
+ description: 'Approve Bash tool for coder role',
1846
+ },
1847
+ ],
1462
1848
  action: async (ctx) => {
1463
1849
  const v = validateOrgName(ctx.args[0]);
1464
1850
  if (!v.ok)
@@ -1468,8 +1854,14 @@ export const orgCommand = {
1468
1854
  },
1469
1855
  },
1470
1856
  {
1471
- name: 'deny', description: 'Deny a pending tool/action approval',
1472
- examples: [{ command: 'monomind org deny growth coder "Bash"', description: 'Deny Bash tool for coder role' }],
1857
+ name: 'deny',
1858
+ description: 'Deny a pending tool/action approval',
1859
+ examples: [
1860
+ {
1861
+ command: 'monomind org deny growth coder "Bash"',
1862
+ description: 'Deny Bash tool for coder role',
1863
+ },
1864
+ ],
1473
1865
  action: async (ctx) => {
1474
1866
  const v = validateOrgName(ctx.args[0]);
1475
1867
  if (!v.ok)
@@ -1479,7 +1871,8 @@ export const orgCommand = {
1479
1871
  },
1480
1872
  },
1481
1873
  {
1482
- name: 'gates', description: 'List decision gates from an org\'s agents',
1874
+ name: 'gates',
1875
+ description: "List decision gates from an org's agents",
1483
1876
  options: [{ name: 'all', description: 'Include resolved gates', type: 'boolean' }],
1484
1877
  examples: [
1485
1878
  { command: 'monomind org gates growth', description: 'Show pending gates' },
@@ -1494,8 +1887,14 @@ export const orgCommand = {
1494
1887
  },
1495
1888
  },
1496
1889
  {
1497
- name: 'gate-approve', description: 'Approve a pending decision gate',
1498
- examples: [{ command: 'monomind org gate-approve growth gate-123-ab "ship it"', description: 'Approve gate with resolution' }],
1890
+ name: 'gate-approve',
1891
+ description: 'Approve a pending decision gate',
1892
+ examples: [
1893
+ {
1894
+ command: 'monomind org gate-approve growth gate-123-ab "ship it"',
1895
+ description: 'Approve gate with resolution',
1896
+ },
1897
+ ],
1499
1898
  action: async (ctx) => {
1500
1899
  const v = validateOrgName(ctx.args[0]);
1501
1900
  if (!v.ok)
@@ -1505,8 +1904,14 @@ export const orgCommand = {
1505
1904
  },
1506
1905
  },
1507
1906
  {
1508
- name: 'gate-reject', description: 'Reject a pending decision gate',
1509
- examples: [{ command: 'monomind org gate-reject growth gate-123-ab "not ready"', description: 'Reject gate with reason' }],
1907
+ name: 'gate-reject',
1908
+ description: 'Reject a pending decision gate',
1909
+ examples: [
1910
+ {
1911
+ command: 'monomind org gate-reject growth gate-123-ab "not ready"',
1912
+ description: 'Reject gate with reason',
1913
+ },
1914
+ ],
1510
1915
  action: async (ctx) => {
1511
1916
  const v = validateOrgName(ctx.args[0]);
1512
1917
  if (!v.ok)
@@ -1516,8 +1921,14 @@ export const orgCommand = {
1516
1921
  },
1517
1922
  },
1518
1923
  {
1519
- name: 'replay', description: 'Time-travel debugging: replay from a checkpoint',
1520
- examples: [{ command: 'monomind org replay growth run-20250130120000-abc', description: 'Replay from checkpoint' }],
1924
+ name: 'replay',
1925
+ description: 'Time-travel debugging: replay a run\'s bus events (does not resume live execution — use "org run --resume" for that)',
1926
+ examples: [
1927
+ {
1928
+ command: 'monomind org replay growth run-20250130120000-abc',
1929
+ description: "Replay a checkpoint's events for inspection",
1930
+ },
1931
+ ],
1521
1932
  action: async (ctx) => {
1522
1933
  const v = validateOrgName(ctx.args[0]);
1523
1934
  if (!v.ok)
@@ -1527,8 +1938,14 @@ export const orgCommand = {
1527
1938
  },
1528
1939
  },
1529
1940
  {
1530
- name: 'resume-from', description: 'Resume from checkpoint (alias for replay)',
1531
- examples: [{ command: 'monomind org resume-from growth run-20250130120000-abc', description: 'Resume from checkpoint' }],
1941
+ name: 'resume-from',
1942
+ description: "Resume live execution from the org's persisted checkpoint (restores mailbox/policy/session state; subject to TTL and checksum validation)",
1943
+ examples: [
1944
+ {
1945
+ command: 'monomind org resume-from growth',
1946
+ description: 'Resume growth from its last checkpoint',
1947
+ },
1948
+ ],
1532
1949
  action: async (ctx) => {
1533
1950
  const v = validateOrgName(ctx.args[0]);
1534
1951
  if (!v.ok)
@@ -1538,8 +1955,14 @@ export const orgCommand = {
1538
1955
  },
1539
1956
  },
1540
1957
  {
1541
- name: 'branch', description: 'Create a branch from checkpoint for what-if experiments',
1542
- examples: [{ command: 'monomind org branch growth run-20250130 abc-branch', description: 'Create branch from checkpoint' }],
1958
+ name: 'branch',
1959
+ description: "Snapshot a run's event log for replay",
1960
+ examples: [
1961
+ {
1962
+ command: 'monomind org branch growth run-20250130 abc-branch',
1963
+ description: "Snapshot a run's checkpoint into a new run for replay",
1964
+ },
1965
+ ],
1543
1966
  action: async (ctx) => {
1544
1967
  const v = validateOrgName(ctx.args[0]);
1545
1968
  if (!v.ok)
@@ -1549,8 +1972,14 @@ export const orgCommand = {
1549
1972
  },
1550
1973
  },
1551
1974
  {
1552
- name: 'decisions', description: 'Show Rifft-style decision traces',
1553
- examples: [{ command: 'monomind org decisions growth --run run-20250130', description: 'Show decision traces' }],
1975
+ name: 'decisions',
1976
+ description: 'Show Rifft-style decision traces',
1977
+ examples: [
1978
+ {
1979
+ command: 'monomind org decisions growth --run run-20250130',
1980
+ description: 'Show decision traces',
1981
+ },
1982
+ ],
1554
1983
  action: async (ctx) => {
1555
1984
  const v = validateOrgName(ctx.args[0]);
1556
1985
  if (!v.ok)
@@ -1560,14 +1989,34 @@ export const orgCommand = {
1560
1989
  },
1561
1990
  },
1562
1991
  {
1563
- name: 'create', description: 'Scaffold an org config from a starter template',
1992
+ name: 'create',
1993
+ description: 'Scaffold an org config from a starter template',
1564
1994
  options: [
1565
- { name: 'template', description: 'content-team | dev-team | research-pod | kg-extraction | advisor-orchestrator', type: 'string' },
1566
- { name: 'goal', description: 'Org goal (defaults to the template\'s placeholder)', type: 'string' },
1995
+ {
1996
+ name: 'template',
1997
+ description: 'content-team | dev-team | research-pod | kg-extraction | advisor-orchestrator',
1998
+ type: 'string',
1999
+ },
2000
+ {
2001
+ name: 'goal',
2002
+ description: "Org goal (defaults to the template's placeholder)",
2003
+ type: 'string',
2004
+ },
1567
2005
  { name: 'schedule', description: 'Daemon schedule, e.g. 30m or 2h', type: 'string' },
1568
2006
  { name: 'force', description: 'Overwrite an existing org config', type: 'boolean' },
2007
+ {
2008
+ name: 'yes',
2009
+ short: 'y',
2010
+ description: 'Skip the per-role model confirmation prompt (TTY only)',
2011
+ type: 'boolean',
2012
+ },
2013
+ ],
2014
+ examples: [
2015
+ {
2016
+ command: 'monomind org create blog --template content-team --goal "3 posts/week"',
2017
+ description: 'Create a content org',
2018
+ },
1569
2019
  ],
1570
- examples: [{ command: 'monomind org create blog --template content-team --goal "3 posts/week"', description: 'Create a content org' }],
1571
2020
  action: async (ctx) => {
1572
2021
  const v = validateOrgName(ctx.args[0]);
1573
2022
  if (!v.ok)
@@ -1577,10 +2026,14 @@ export const orgCommand = {
1577
2026
  },
1578
2027
  },
1579
2028
  {
1580
- name: 'validate', description: 'Validate org config(s) against the runtime schema and structural invariants',
2029
+ name: 'validate',
2030
+ description: 'Validate org config(s) against the runtime schema and structural invariants',
1581
2031
  examples: [
1582
2032
  { command: 'monomind org validate growth', description: 'Validate one org config' },
1583
- { command: 'monomind org validate', description: 'Validate every org config in the project' },
2033
+ {
2034
+ command: 'monomind org validate',
2035
+ description: 'Validate every org config in the project',
2036
+ },
1584
2037
  ],
1585
2038
  action: async (ctx) => {
1586
2039
  const { validateAction } = await import('./org-observe.js');
@@ -1588,22 +2041,39 @@ export const orgCommand = {
1588
2041
  },
1589
2042
  },
1590
2043
  {
1591
- name: 'migrate', description: 'Convert a v1 org config (topology/board/loop) to the v2 daemon shape',
1592
- examples: [{ command: 'monomind org migrate growth', description: 'Migrate one org; original saved as growth.v1.json' }],
2044
+ name: 'migrate',
2045
+ description: 'Convert a v1 org config (topology/board/loop) to the v2 daemon shape',
2046
+ examples: [
2047
+ {
2048
+ command: 'monomind org migrate growth',
2049
+ description: 'Migrate one org; original saved as growth.v1.json',
2050
+ },
2051
+ ],
1593
2052
  action: migrateAction,
1594
2053
  },
1595
2054
  { name: 'list', description: 'List all orgs in the current project', action: listAction },
1596
2055
  {
1597
- name: 'delete', description: 'Delete an org and all its data',
2056
+ name: 'delete',
2057
+ description: 'Delete an org and all its data',
1598
2058
  options: [
1599
2059
  { name: 'yes', short: 'y', description: 'Skip confirmation', type: 'boolean' },
1600
- { name: 'force', description: 'Delete even if the org appears to be running', type: 'boolean' },
2060
+ {
2061
+ name: 'force',
2062
+ description: 'Delete even if the org appears to be running',
2063
+ type: 'boolean',
2064
+ },
1601
2065
  ],
1602
2066
  action: deleteAction,
1603
2067
  },
1604
- { name: 'mark-complete', description: 'Manually close a stale/crashed run', action: markCompleteAction },
2068
+ {
2069
+ name: 'mark-complete',
2070
+ description: 'Manually close a stale/crashed run',
2071
+ action: markCompleteAction,
2072
+ },
2073
+ ],
2074
+ examples: [
2075
+ { command: 'monomind org run my-org', description: 'Run an org under full daemon control' },
1605
2076
  ],
1606
- examples: [{ command: 'monomind org run my-org', description: 'Run an org under full daemon control' }],
1607
2077
  action: async () => {
1608
2078
  // index.ts's dispatcher never prints result.message on a failed action —
1609
2079
  // it only exits with result.exitCode — so this must log itself or bare