@monoes/monomindcli 2.9.21 → 2.9.23

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 (505) 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-createorg/SKILL.md +26 -3
  69. package/.claude/skills/mastermind-protocol/SKILL.md +3 -3
  70. package/.claude/skills/memory-toolkit/SKILL.md +2 -2
  71. package/.claude/skills/{swarm-orchestration → monoswarm}/SKILL.md +106 -42
  72. package/.claude/skills/specialagent/SKILL.md +1 -1
  73. package/README.md +31 -12
  74. package/dist/src/autopilot-state.d.ts +0 -16
  75. package/dist/src/autopilot-state.d.ts.map +1 -1
  76. package/dist/src/autopilot-state.js +0 -15
  77. package/dist/src/autopilot-state.js.map +1 -1
  78. package/dist/src/browser/dashboard/server.js +3 -3
  79. package/dist/src/browser/dashboard/server.js.map +1 -1
  80. package/dist/src/browser/dashboard/ui.html +2 -2
  81. package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
  82. package/dist/src/capabilities/cap-documents.js +49 -38
  83. package/dist/src/capabilities/cap-documents.js.map +1 -1
  84. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
  85. package/dist/src/commands/agent-lifecycle.js +4 -9
  86. package/dist/src/commands/agent-lifecycle.js.map +1 -1
  87. package/dist/src/commands/agent-ops.d.ts.map +1 -1
  88. package/dist/src/commands/agent-ops.js +37 -24
  89. package/dist/src/commands/agent-ops.js.map +1 -1
  90. package/dist/src/commands/analyze-ast.d.ts +1 -1
  91. package/dist/src/commands/analyze-ast.d.ts.map +1 -1
  92. package/dist/src/commands/analyze-ast.js +8 -27
  93. package/dist/src/commands/analyze-ast.js.map +1 -1
  94. package/dist/src/commands/analyze-imports.d.ts.map +1 -1
  95. package/dist/src/commands/analyze-imports.js +18 -17
  96. package/dist/src/commands/analyze-imports.js.map +1 -1
  97. package/dist/src/commands/analyze-symbols.d.ts.map +1 -1
  98. package/dist/src/commands/analyze-symbols.js +10 -24
  99. package/dist/src/commands/analyze-symbols.js.map +1 -1
  100. package/dist/src/commands/analyze.d.ts +19 -6
  101. package/dist/src/commands/analyze.d.ts.map +1 -1
  102. package/dist/src/commands/analyze.js +61 -15
  103. package/dist/src/commands/analyze.js.map +1 -1
  104. package/dist/src/commands/autopilot.d.ts.map +1 -1
  105. package/dist/src/commands/autopilot.js +4 -89
  106. package/dist/src/commands/autopilot.js.map +1 -1
  107. package/dist/src/commands/browse.d.ts +1 -1
  108. package/dist/src/commands/cleanup.d.ts.map +1 -1
  109. package/dist/src/commands/cleanup.js +4 -2
  110. package/dist/src/commands/cleanup.js.map +1 -1
  111. package/dist/src/commands/completions.d.ts.map +1 -1
  112. package/dist/src/commands/completions.js +0 -1
  113. package/dist/src/commands/completions.js.map +1 -1
  114. package/dist/src/commands/config.js +7 -7
  115. package/dist/src/commands/config.js.map +1 -1
  116. package/dist/src/commands/doctor-project-checks.d.ts +7 -0
  117. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  118. package/dist/src/commands/doctor-project-checks.js +37 -5
  119. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  120. package/dist/src/commands/doctor.d.ts.map +1 -1
  121. package/dist/src/commands/doctor.js +9 -3
  122. package/dist/src/commands/doctor.js.map +1 -1
  123. package/dist/src/commands/events.d.ts +9 -0
  124. package/dist/src/commands/events.d.ts.map +1 -0
  125. package/dist/src/commands/events.js +89 -0
  126. package/dist/src/commands/events.js.map +1 -0
  127. package/dist/src/commands/hooks-routing-commands.d.ts +1 -2
  128. package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -1
  129. package/dist/src/commands/hooks-routing-commands.js +1 -101
  130. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  131. package/dist/src/commands/hooks-workers.d.ts.map +1 -1
  132. package/dist/src/commands/hooks-workers.js +19 -71
  133. package/dist/src/commands/hooks-workers.js.map +1 -1
  134. package/dist/src/commands/hooks.d.ts +1 -1
  135. package/dist/src/commands/hooks.d.ts.map +1 -1
  136. package/dist/src/commands/hooks.js +4 -7
  137. package/dist/src/commands/hooks.js.map +1 -1
  138. package/dist/src/commands/index.d.ts +2 -2
  139. package/dist/src/commands/index.d.ts.map +1 -1
  140. package/dist/src/commands/index.js +4 -3
  141. package/dist/src/commands/index.js.map +1 -1
  142. package/dist/src/commands/init-subcommands.d.ts.map +1 -1
  143. package/dist/src/commands/init-subcommands.js +4 -0
  144. package/dist/src/commands/init-subcommands.js.map +1 -1
  145. package/dist/src/commands/init-wizard.d.ts.map +1 -1
  146. package/dist/src/commands/init-wizard.js +0 -8
  147. package/dist/src/commands/init-wizard.js.map +1 -1
  148. package/dist/src/commands/init.d.ts.map +1 -1
  149. package/dist/src/commands/init.js +53 -23
  150. package/dist/src/commands/init.js.map +1 -1
  151. package/dist/src/commands/mcp.d.ts +1 -0
  152. package/dist/src/commands/mcp.d.ts.map +1 -1
  153. package/dist/src/commands/mcp.js +111 -60
  154. package/dist/src/commands/mcp.js.map +1 -1
  155. package/dist/src/commands/memory-crud.d.ts.map +1 -1
  156. package/dist/src/commands/memory-crud.js +33 -20
  157. package/dist/src/commands/memory-crud.js.map +1 -1
  158. package/dist/src/commands/monoswarm.d.ts +8 -0
  159. package/dist/src/commands/monoswarm.d.ts.map +1 -0
  160. package/dist/src/commands/{swarm.js → monoswarm.js} +83 -297
  161. package/dist/src/commands/monoswarm.js.map +1 -0
  162. package/dist/src/commands/neural-core.d.ts.map +1 -1
  163. package/dist/src/commands/neural-core.js +9 -1
  164. package/dist/src/commands/neural-core.js.map +1 -1
  165. package/dist/src/commands/neural-optimize.d.ts.map +1 -1
  166. package/dist/src/commands/neural-optimize.js +30 -110
  167. package/dist/src/commands/neural-optimize.js.map +1 -1
  168. package/dist/src/commands/neural-registry.d.ts +1 -2
  169. package/dist/src/commands/neural-registry.d.ts.map +1 -1
  170. package/dist/src/commands/neural-registry.js +21 -168
  171. package/dist/src/commands/neural-registry.js.map +1 -1
  172. package/dist/src/commands/org-observe.d.ts +34 -3
  173. package/dist/src/commands/org-observe.d.ts.map +1 -1
  174. package/dist/src/commands/org-observe.js +213 -45
  175. package/dist/src/commands/org-observe.js.map +1 -1
  176. package/dist/src/commands/org.d.ts +14 -0
  177. package/dist/src/commands/org.d.ts.map +1 -1
  178. package/dist/src/commands/org.js +118 -20
  179. package/dist/src/commands/org.js.map +1 -1
  180. package/dist/src/commands/performance.d.ts.map +1 -1
  181. package/dist/src/commands/performance.js +38 -31
  182. package/dist/src/commands/performance.js.map +1 -1
  183. package/dist/src/commands/security-misc.d.ts.map +1 -1
  184. package/dist/src/commands/security-misc.js +220 -90
  185. package/dist/src/commands/security-misc.js.map +1 -1
  186. package/dist/src/commands/security-scan.d.ts +13 -0
  187. package/dist/src/commands/security-scan.d.ts.map +1 -1
  188. package/dist/src/commands/security-scan.js +96 -27
  189. package/dist/src/commands/security-scan.js.map +1 -1
  190. package/dist/src/commands/security.js +1 -1
  191. package/dist/src/commands/security.js.map +1 -1
  192. package/dist/src/commands/start.d.ts.map +1 -1
  193. package/dist/src/commands/start.js +17 -96
  194. package/dist/src/commands/start.js.map +1 -1
  195. package/dist/src/commands/status.d.ts.map +1 -1
  196. package/dist/src/commands/status.js +72 -64
  197. package/dist/src/commands/status.js.map +1 -1
  198. package/dist/src/commands/tokens.d.ts.map +1 -1
  199. package/dist/src/commands/tokens.js +4 -5
  200. package/dist/src/commands/tokens.js.map +1 -1
  201. package/dist/src/consensus/audit-writer.d.ts +2 -2
  202. package/dist/src/consensus/audit-writer.d.ts.map +1 -1
  203. package/dist/src/consensus/audit-writer.js +1 -1
  204. package/dist/src/index.d.ts +2 -2
  205. package/dist/src/index.d.ts.map +1 -1
  206. package/dist/src/index.js +12 -10
  207. package/dist/src/index.js.map +1 -1
  208. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  209. package/dist/src/init/claudemd-generator.js +32 -31
  210. package/dist/src/init/claudemd-generator.js.map +1 -1
  211. package/dist/src/init/codex-generator.d.ts +10 -0
  212. package/dist/src/init/codex-generator.d.ts.map +1 -0
  213. package/dist/src/init/codex-generator.js +67 -0
  214. package/dist/src/init/codex-generator.js.map +1 -0
  215. package/dist/src/init/copy-assets.d.ts.map +1 -1
  216. package/dist/src/init/copy-assets.js +4 -8
  217. package/dist/src/init/copy-assets.js.map +1 -1
  218. package/dist/src/init/executor.d.ts.map +1 -1
  219. package/dist/src/init/executor.js +9 -2
  220. package/dist/src/init/executor.js.map +1 -1
  221. package/dist/src/init/helpers-generator.js +1 -1
  222. package/dist/src/init/index.d.ts +1 -0
  223. package/dist/src/init/index.d.ts.map +1 -1
  224. package/dist/src/init/index.js +1 -0
  225. package/dist/src/init/index.js.map +1 -1
  226. package/dist/src/init/opencode-generator.js +2 -2
  227. package/dist/src/init/opencode-generator.js.map +1 -1
  228. package/dist/src/init/settings-generator.d.ts.map +1 -1
  229. package/dist/src/init/settings-generator.js +1 -2
  230. package/dist/src/init/settings-generator.js.map +1 -1
  231. package/dist/src/init/shared.d.ts.map +1 -1
  232. package/dist/src/init/shared.js +3 -7
  233. package/dist/src/init/shared.js.map +1 -1
  234. package/dist/src/init/statusline-generator.js +19 -19
  235. package/dist/src/init/types.d.ts +9 -10
  236. package/dist/src/init/types.d.ts.map +1 -1
  237. package/dist/src/init/types.js +8 -6
  238. package/dist/src/init/types.js.map +1 -1
  239. package/dist/src/init/upgrade.js +5 -5
  240. package/dist/src/init/upgrade.js.map +1 -1
  241. package/dist/src/init/write-capabilities.d.ts.map +1 -1
  242. package/dist/src/init/write-capabilities.js +36 -49
  243. package/dist/src/init/write-capabilities.js.map +1 -1
  244. package/dist/src/init/write-claude.js +1 -1
  245. package/dist/src/init/write-claude.js.map +1 -1
  246. package/dist/src/init/write-codex.d.ts +4 -0
  247. package/dist/src/init/write-codex.d.ts.map +1 -0
  248. package/dist/src/init/write-codex.js +57 -0
  249. package/dist/src/init/write-codex.js.map +1 -0
  250. package/dist/src/init/write-runtime-config.d.ts.map +1 -1
  251. package/dist/src/init/write-runtime-config.js +4 -5
  252. package/dist/src/init/write-runtime-config.js.map +1 -1
  253. package/dist/src/knowledge/eval/golden-set.js +15 -15
  254. package/dist/src/knowledge/eval/golden-set.js.map +1 -1
  255. package/dist/src/mcp-client.d.ts.map +1 -1
  256. package/dist/src/mcp-client.js +1 -2
  257. package/dist/src/mcp-client.js.map +1 -1
  258. package/dist/src/mcp-server.js +1 -1
  259. package/dist/src/mcp-server.js.map +1 -1
  260. package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
  261. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  262. package/dist/src/mcp-tools/agent-tools.js +3 -3
  263. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  264. package/dist/src/mcp-tools/autopilot-tools.d.ts +1 -1
  265. package/dist/src/mcp-tools/autopilot-tools.d.ts.map +1 -1
  266. package/dist/src/mcp-tools/autopilot-tools.js +4 -62
  267. package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
  268. package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
  269. package/dist/src/mcp-tools/guidance-tools.js +21 -31
  270. package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
  271. package/dist/src/mcp-tools/hooks-intelligence.d.ts +0 -1
  272. package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
  273. package/dist/src/mcp-tools/hooks-intelligence.js +56 -103
  274. package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
  275. package/dist/src/mcp-tools/hooks-routing.d.ts +1 -2
  276. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  277. package/dist/src/mcp-tools/hooks-routing.js +78 -152
  278. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  279. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  280. package/dist/src/mcp-tools/hooks-tools.js +2 -4
  281. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  282. package/dist/src/mcp-tools/index.d.ts +1 -2
  283. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  284. package/dist/src/mcp-tools/index.js +1 -2
  285. package/dist/src/mcp-tools/index.js.map +1 -1
  286. package/dist/src/mcp-tools/memory-tools.js +10 -10
  287. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  288. package/dist/src/mcp-tools/monograph/query-tools.js +9 -9
  289. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
  290. package/dist/src/mcp-tools/monoswarm-tools.d.ts +17 -0
  291. package/dist/src/mcp-tools/monoswarm-tools.d.ts.map +1 -0
  292. package/dist/src/mcp-tools/monoswarm-tools.js +1153 -0
  293. package/dist/src/mcp-tools/monoswarm-tools.js.map +1 -0
  294. package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
  295. package/dist/src/mcp-tools/performance-tools.js +32 -25
  296. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  297. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  298. package/dist/src/mcp-tools/system-tools.js +30 -13
  299. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  300. package/dist/src/mcp-tools/transfer-tools.d.ts +8 -12
  301. package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
  302. package/dist/src/mcp-tools/transfer-tools.js +9 -13
  303. package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
  304. package/dist/src/memory/embedding-operations.d.ts.map +1 -1
  305. package/dist/src/memory/embedding-operations.js +0 -37
  306. package/dist/src/memory/embedding-operations.js.map +1 -1
  307. package/dist/src/memory/hnsw-operations.d.ts +14 -74
  308. package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
  309. package/dist/src/memory/hnsw-operations.js +22 -262
  310. package/dist/src/memory/hnsw-operations.js.map +1 -1
  311. package/dist/src/memory/intelligence.d.ts +2 -2
  312. package/dist/src/memory/intelligence.d.ts.map +1 -1
  313. package/dist/src/memory/intelligence.js +8 -7
  314. package/dist/src/memory/intelligence.js.map +1 -1
  315. package/dist/src/memory/memory-bridge.d.ts +24 -24
  316. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  317. package/dist/src/memory/memory-bridge.js +33 -34
  318. package/dist/src/memory/memory-bridge.js.map +1 -1
  319. package/dist/src/memory/memory-crud.d.ts.map +1 -1
  320. package/dist/src/memory/memory-crud.js +0 -20
  321. package/dist/src/memory/memory-crud.js.map +1 -1
  322. package/dist/src/memory/memory-initializer.d.ts +2 -3
  323. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  324. package/dist/src/memory/memory-initializer.js +2 -3
  325. package/dist/src/memory/memory-initializer.js.map +1 -1
  326. package/dist/src/memory/memory-read.d.ts.map +1 -1
  327. package/dist/src/memory/memory-read.js +5 -14
  328. package/dist/src/memory/memory-read.js.map +1 -1
  329. package/dist/src/memory/sona-optimizer.d.ts +1 -1
  330. package/dist/src/memory/sona-optimizer.js +1 -1
  331. package/dist/src/monovector/model-outcomes.d.ts +25 -0
  332. package/dist/src/monovector/model-outcomes.d.ts.map +1 -0
  333. package/dist/src/monovector/model-outcomes.js +113 -0
  334. package/dist/src/monovector/model-outcomes.js.map +1 -0
  335. package/dist/src/orgrt/agent-runner.d.ts +8 -2
  336. package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
  337. package/dist/src/orgrt/agent-runner.js.map +1 -1
  338. package/dist/src/orgrt/antigravity-runner.d.ts +25 -2
  339. package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
  340. package/dist/src/orgrt/antigravity-runner.js +265 -124
  341. package/dist/src/orgrt/antigravity-runner.js.map +1 -1
  342. package/dist/src/orgrt/approvals.d.ts +16 -1
  343. package/dist/src/orgrt/approvals.d.ts.map +1 -1
  344. package/dist/src/orgrt/approvals.js +47 -2
  345. package/dist/src/orgrt/approvals.js.map +1 -1
  346. package/dist/src/orgrt/checkpoint-ops.d.ts +10 -16
  347. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
  348. package/dist/src/orgrt/checkpoint-ops.js +12 -18
  349. package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
  350. package/dist/src/orgrt/checkpoint.d.ts +12 -1
  351. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  352. package/dist/src/orgrt/checkpoint.js +19 -3
  353. package/dist/src/orgrt/checkpoint.js.map +1 -1
  354. package/dist/src/orgrt/codex-runner.d.ts +26 -2
  355. package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
  356. package/dist/src/orgrt/codex-runner.js +359 -128
  357. package/dist/src/orgrt/codex-runner.js.map +1 -1
  358. package/dist/src/orgrt/copilot-runner.d.ts +14 -0
  359. package/dist/src/orgrt/copilot-runner.d.ts.map +1 -0
  360. package/dist/src/orgrt/copilot-runner.js +260 -0
  361. package/dist/src/orgrt/copilot-runner.js.map +1 -0
  362. package/dist/src/orgrt/cross-org.d.ts.map +1 -1
  363. package/dist/src/orgrt/cross-org.js +11 -0
  364. package/dist/src/orgrt/cross-org.js.map +1 -1
  365. package/dist/src/orgrt/crush-runner.d.ts +27 -0
  366. package/dist/src/orgrt/crush-runner.d.ts.map +1 -0
  367. package/dist/src/orgrt/crush-runner.js +263 -0
  368. package/dist/src/orgrt/crush-runner.js.map +1 -0
  369. package/dist/src/orgrt/daemon.d.ts +68 -16
  370. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  371. package/dist/src/orgrt/daemon.js +212 -29
  372. package/dist/src/orgrt/daemon.js.map +1 -1
  373. package/dist/src/orgrt/decisions.d.ts +1 -0
  374. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  375. package/dist/src/orgrt/decisions.js +20 -0
  376. package/dist/src/orgrt/decisions.js.map +1 -1
  377. package/dist/src/orgrt/grok-runner.d.ts +18 -0
  378. package/dist/src/orgrt/grok-runner.d.ts.map +1 -0
  379. package/dist/src/orgrt/grok-runner.js +348 -0
  380. package/dist/src/orgrt/grok-runner.js.map +1 -0
  381. package/dist/src/orgrt/kimicode-runner.d.ts +53 -7
  382. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  383. package/dist/src/orgrt/kimicode-runner.js +246 -144
  384. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  385. package/dist/src/orgrt/mailbox.d.ts +26 -1
  386. package/dist/src/orgrt/mailbox.d.ts.map +1 -1
  387. package/dist/src/orgrt/mailbox.js +74 -2
  388. package/dist/src/orgrt/mailbox.js.map +1 -1
  389. package/dist/src/orgrt/pi-rpc-runner.d.ts +68 -0
  390. package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -0
  391. package/dist/src/orgrt/pi-rpc-runner.js +385 -0
  392. package/dist/src/orgrt/pi-rpc-runner.js.map +1 -0
  393. package/dist/src/orgrt/pi-runner.d.ts +16 -0
  394. package/dist/src/orgrt/pi-runner.d.ts.map +1 -0
  395. package/dist/src/orgrt/pi-runner.js +264 -0
  396. package/dist/src/orgrt/pi-runner.js.map +1 -0
  397. package/dist/src/orgrt/policy.d.ts +11 -0
  398. package/dist/src/orgrt/policy.d.ts.map +1 -1
  399. package/dist/src/orgrt/policy.js +25 -2
  400. package/dist/src/orgrt/policy.js.map +1 -1
  401. package/dist/src/orgrt/provider.d.ts +29 -1
  402. package/dist/src/orgrt/provider.d.ts.map +1 -1
  403. package/dist/src/orgrt/provider.js +62 -2
  404. package/dist/src/orgrt/provider.js.map +1 -1
  405. package/dist/src/orgrt/qwen-rpc-runner.d.ts +56 -0
  406. package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -0
  407. package/dist/src/orgrt/qwen-rpc-runner.js +346 -0
  408. package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -0
  409. package/dist/src/orgrt/qwen-runner.d.ts +18 -0
  410. package/dist/src/orgrt/qwen-runner.d.ts.map +1 -0
  411. package/dist/src/orgrt/qwen-runner.js +270 -0
  412. package/dist/src/orgrt/qwen-runner.js.map +1 -0
  413. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
  414. package/dist/src/orgrt/scheduler-integration.js +7 -0
  415. package/dist/src/orgrt/scheduler-integration.js.map +1 -1
  416. package/dist/src/orgrt/session.d.ts +29 -1
  417. package/dist/src/orgrt/session.d.ts.map +1 -1
  418. package/dist/src/orgrt/session.js +87 -18
  419. package/dist/src/orgrt/session.js.map +1 -1
  420. package/dist/src/orgrt/task-dag.d.ts +29 -1
  421. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  422. package/dist/src/orgrt/task-dag.js +54 -0
  423. package/dist/src/orgrt/task-dag.js.map +1 -1
  424. package/dist/src/orgrt/test-loop.d.ts.map +1 -1
  425. package/dist/src/orgrt/test-loop.js +86 -9
  426. package/dist/src/orgrt/test-loop.js.map +1 -1
  427. package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
  428. package/dist/src/orgrt/tool-fence.js +15 -0
  429. package/dist/src/orgrt/tool-fence.js.map +1 -1
  430. package/dist/src/orgrt/types.d.ts +50 -1
  431. package/dist/src/orgrt/types.d.ts.map +1 -1
  432. package/dist/src/orgrt/types.js +47 -4
  433. package/dist/src/orgrt/types.js.map +1 -1
  434. package/dist/src/orgrt/usage-proxy.d.ts +32 -0
  435. package/dist/src/orgrt/usage-proxy.d.ts.map +1 -0
  436. package/dist/src/orgrt/usage-proxy.js +226 -0
  437. package/dist/src/orgrt/usage-proxy.js.map +1 -0
  438. package/dist/src/pricing/model-pricing.d.ts.map +1 -1
  439. package/dist/src/pricing/model-pricing.js +0 -4
  440. package/dist/src/pricing/model-pricing.js.map +1 -1
  441. package/dist/src/security/audit-log.d.ts +47 -0
  442. package/dist/src/security/audit-log.d.ts.map +1 -0
  443. package/dist/src/security/audit-log.js +84 -0
  444. package/dist/src/security/audit-log.js.map +1 -0
  445. package/dist/src/services/config-file-manager.d.ts +2 -2
  446. package/dist/src/services/config-file-manager.d.ts.map +1 -1
  447. package/dist/src/services/config-file-manager.js +6 -7
  448. package/dist/src/services/config-file-manager.js.map +1 -1
  449. package/dist/src/suggest.d.ts.map +1 -1
  450. package/dist/src/suggest.js +4 -5
  451. package/dist/src/suggest.js.map +1 -1
  452. package/dist/src/transfer/anonymization/index.d.ts +1 -1
  453. package/dist/src/transfer/anonymization/index.js +1 -1
  454. package/dist/src/types.d.ts +3 -3
  455. package/dist/src/types.d.ts.map +1 -1
  456. package/dist/src/ui/collector.mjs +9 -13
  457. package/dist/src/ui/dashboard.html +93 -10
  458. package/dist/src/ui/data/agent-avatars.html +0 -12
  459. package/dist/src/ui/data/agent-avatars.json +10 -26
  460. package/dist/src/ui/orgs.html +8 -1
  461. package/dist/src/ui/routes-org.mjs +85 -16
  462. package/dist/src/ui/server.mjs +50 -23
  463. package/dist/src/utils/json-file.d.ts +12 -0
  464. package/dist/src/utils/json-file.d.ts.map +1 -1
  465. package/dist/src/utils/json-file.js +11 -0
  466. package/dist/src/utils/json-file.js.map +1 -1
  467. package/dist/tsconfig.tsbuildinfo +1 -1
  468. package/package.json +5 -5
  469. package/.claude/agents/consensus/crdt-synchronizer.md +0 -977
  470. package/.claude/commands/hive-mind/README.md +0 -42
  471. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
  472. package/.claude/commands/hive-mind/hive-mind-init.md +0 -68
  473. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
  474. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
  475. package/.claude/commands/hive-mind/hive-mind-status.md +0 -56
  476. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
  477. package/.claude/commands/hive-mind/hive-mind.md +0 -87
  478. package/.claude/commands/swarm/README.md +0 -40
  479. package/.claude/commands/swarm/swarm.md +0 -79
  480. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -347
  481. package/.claude/skills/swarm-advanced/SKILL.md +0 -936
  482. package/dist/src/commands/swarm.d.ts +0 -8
  483. package/dist/src/commands/swarm.d.ts.map +0 -1
  484. package/dist/src/commands/swarm.js.map +0 -1
  485. package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -17
  486. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +0 -1
  487. package/dist/src/mcp-tools/hive-mind-tools.js +0 -1239
  488. package/dist/src/mcp-tools/hive-mind-tools.js.map +0 -1
  489. package/dist/src/mcp-tools/swarm-tools.d.ts +0 -9
  490. package/dist/src/mcp-tools/swarm-tools.d.ts.map +0 -1
  491. package/dist/src/mcp-tools/swarm-tools.js +0 -411
  492. package/dist/src/mcp-tools/swarm-tools.js.map +0 -1
  493. package/dist/src/ui/data/avatars/crdt-synchronizer.svg +0 -53
  494. package/dist/src/ui/data/avatars/gossip-coordinator.svg +0 -54
  495. package/scripts/deploy-ipfs-node.sh +0 -153
  496. package/scripts/setup-ipfs-registry.md +0 -365
  497. /package/.claude/agents/{hive-mind → monoswarm}/scout-explorer.md +0 -0
  498. /package/.claude/agents/{hive-mind → monoswarm}/worker-specialist.md +0 -0
  499. /package/.claude/commands/{swarm → monoswarm}/analysis.md +0 -0
  500. /package/.claude/commands/{swarm → monoswarm}/development.md +0 -0
  501. /package/.claude/commands/{swarm → monoswarm}/examples.md +0 -0
  502. /package/.claude/commands/{swarm → monoswarm}/maintenance.md +0 -0
  503. /package/.claude/commands/{swarm → monoswarm}/optimization.md +0 -0
  504. /package/.claude/commands/{swarm → monoswarm}/testing.md +0 -0
  505. /package/dist/src/ui/data/avatars/{code-review-swarm.svg → monoswarm-code-review.svg} +0 -0
@@ -2098,6 +2098,9 @@ select.pb-cfg-inp { padding: 4px 7px; cursor: pointer; }
2098
2098
  <button class="odt-btn secondary" data-tab="costs" onclick="v2SwitchOrgTab('costs')">Costs</button>
2099
2099
  <button class="odt-btn secondary" data-tab="config" onclick="v2SwitchOrgTab('config')">Config</button>
2100
2100
  <button class="odt-btn secondary" data-tab="files" onclick="v2SwitchOrgTab('files')">Files</button>
2101
+ <button class="odt-btn secondary" data-tab="approvals" onclick="v2SwitchOrgTab('approvals')">Approvals</button>
2102
+ <button class="odt-btn secondary" data-tab="budgets" onclick="v2SwitchOrgTab('budgets')">Budgets</button>
2103
+ <button class="odt-btn secondary" data-tab="decisions" onclick="v2SwitchOrgTab('decisions')">Decisions</button>
2101
2104
  </div>
2102
2105
  <div id="org-detail-body">
2103
2106
  <div class="odt-pane active" id="odt-chart"></div>
@@ -2108,6 +2111,9 @@ select.pb-cfg-inp { padding: 4px 7px; cursor: pointer; }
2108
2111
  <div class="odt-pane" id="odt-costs"></div>
2109
2112
  <div class="odt-pane" id="odt-config" style="overflow-y:auto"></div>
2110
2113
  <div class="odt-pane" id="odt-files" style="overflow-y:auto"></div>
2114
+ <div class="odt-pane" id="odt-approvals"></div>
2115
+ <div class="odt-pane" id="odt-budgets"></div>
2116
+ <div class="odt-pane" id="odt-decisions"></div>
2111
2117
  </div>
2112
2118
  </div>
2113
2119
  <div id="org-copy-dialog" style="display:none;position:absolute;inset:0;background:rgba(0,0,0,0.72);z-index:90;align-items:center;justify-content:center">
@@ -2604,6 +2610,9 @@ function refreshCurrent() {
2604
2610
  renderView(currentView);
2605
2611
  }
2606
2612
 
2613
+ // Project paths may be Windows ('\') or POSIX ('/') — split on either.
2614
+ function baseName(p) { return String(p || '').split(/[\\/]/).filter(Boolean).pop() || ''; }
2615
+
2607
2616
  // ── init ───────────────────────────────────────────────────
2608
2617
  async function init() {
2609
2618
  try {
@@ -2613,7 +2622,9 @@ async function init() {
2613
2622
  gitUser = gu;
2614
2623
  document.getElementById('sb-user').textContent = gu.name || gu.email || '—';
2615
2624
  document.getElementById('sb-path').textContent = DIR;
2616
- document.getElementById('sb-proj').textContent = DIR.split('/').filter(Boolean).pop() || '—';
2625
+ const sbProjEl = document.getElementById('sb-proj');
2626
+ sbProjEl.textContent = baseName(DIR) || '—';
2627
+ sbProjEl.title = DIR;
2617
2628
  _showNavProjectCtx(DIR);
2618
2629
  } catch (_) {}
2619
2630
  // deep-link: ?sess=<id>&proj=<path>
@@ -2644,7 +2655,9 @@ async function init() {
2644
2655
  }
2645
2656
  } catch (_) {}
2646
2657
  DIR = projParam;
2647
- document.getElementById('sb-proj').textContent = DIR.split('/').filter(Boolean).pop() || '—';
2658
+ const sbProjEl2 = document.getElementById('sb-proj');
2659
+ sbProjEl2.textContent = baseName(DIR) || '—';
2660
+ sbProjEl2.title = DIR;
2648
2661
  document.getElementById('sb-path').textContent = DIR;
2649
2662
  _showNavProjectCtx(DIR);
2650
2663
  }
@@ -2702,11 +2715,13 @@ async function apiFetch(url, timeout = 15000) {
2702
2715
 
2703
2716
  // ── project switching ──────────────────────────────────────
2704
2717
  function _showNavProjectCtx(path) {
2705
- const projName = (path || '').split('/').filter(Boolean).pop() || '';
2718
+ const projName = baseName(path);
2706
2719
  const ctx = document.getElementById('nav-project-ctx');
2707
2720
  const hint = document.getElementById('nav-no-proj-hint');
2708
2721
  if (projName) {
2709
- document.getElementById('nav-proj-name').textContent = projName;
2722
+ const nameEl = document.getElementById('nav-proj-name');
2723
+ nameEl.textContent = projName;
2724
+ nameEl.title = path;
2710
2725
  ctx.classList.add('visible');
2711
2726
  hint.style.display = 'none';
2712
2727
  } else {
@@ -2728,7 +2743,9 @@ function switchProject(path) {
2728
2743
  _mgLoaded = false;
2729
2744
  _mgGraph = null;
2730
2745
  window._mgRealTotals = null;
2731
- document.getElementById('sb-proj').textContent = path.split('/').filter(Boolean).pop() || '—';
2746
+ const sbProjEl3 = document.getElementById('sb-proj');
2747
+ sbProjEl3.textContent = baseName(path) || '—';
2748
+ sbProjEl3.title = path;
2732
2749
  document.getElementById('sb-path').textContent = path;
2733
2750
  _showNavProjectCtx(path);
2734
2751
  viewRendered = {};
@@ -5863,6 +5880,7 @@ function v2RenderOrgTab(tab) {
5863
5880
  else if (tab === 'routines') v2RenderOrgRoutines();
5864
5881
  else if (tab === 'myissues') v2RenderOrgMyIssues();
5865
5882
  else if (tab === 'budgets') v2RenderOrgBudgets();
5883
+ else if (tab === 'decisions') v2RenderOrgDecisions();
5866
5884
  else if (tab === 'plugins') v2RenderOrgPlugins();
5867
5885
  else if (tab === 'charts') v2RenderOrgCharts();
5868
5886
  else if (tab === 'projects') v2RenderOrgProjects();
@@ -5975,13 +5993,22 @@ function v2RenderOrgChart() {
5975
5993
  const colorOf = (role, idx) => COLORS[_v2OrgIsLeader(role) ? 0 : (idx % (COLORS.length - 1)) + 1];
5976
5994
 
5977
5995
  // ── auto-generate edges ───────────────────────────────
5996
+ // Prefer each role's actual reports_to over a flat leader fan-out — a
5997
+ // multi-level org (specialist -> team lead -> director) should connect to
5998
+ // its real manager, not skip straight to the top boss.
5978
5999
  let comms = Array.isArray(d.communication) ? [...d.communication] : [];
5979
6000
  if (!comms.length && roles.length > 1) {
5980
6001
  const _lr0 = roles.find(_v2OrgIsLeader) || roles[0];
5981
- comms = roles.filter(r => r.id !== _lr0.id).flatMap(r => [
5982
- { from: _lr0.id, to: r.id, type: 'command' },
5983
- { from: r.id, to: _lr0.id, type: 'report' },
5984
- ]);
6002
+ const _roleIds = new Set(roles.map(r => r.id));
6003
+ comms = roles.filter(r => r.id !== _lr0.id).flatMap(r => {
6004
+ const parentId = (r.reports_to && r.reports_to !== r.id && _roleIds.has(r.reports_to))
6005
+ ? r.reports_to
6006
+ : _lr0.id;
6007
+ return [
6008
+ { from: parentId, to: r.id, type: 'command' },
6009
+ { from: r.id, to: parentId, type: 'report' },
6010
+ ];
6011
+ });
5985
6012
  }
5986
6013
 
5987
6014
  // ── layout positions ──────────────────────────────────
@@ -6518,7 +6545,7 @@ const _v2AvatarKnown = new Set([
6518
6545
  'security-architect','security-auditor','threat-detection','input-validator',
6519
6546
  'path-validator','safe-executor','hierarchical-coord','mesh-coordinator',
6520
6547
  'adaptive-coordinator','collective-coord','queen-coordinator','worker-specialist',
6521
- 'byzantine-coord','raft-manager','gossip-coordinator','crdt-synchronizer',
6548
+ 'byzantine-coord','raft-manager',
6522
6549
  'quorum-manager','consensus-coordinator','perf-analyzer','benchmarker',
6523
6550
  'task-orchestrator','memory-coordinator','load-balancer','resource-allocator',
6524
6551
  'pr-manager','code-review-swarm','issue-tracker','release-manager','repo-architect',
@@ -7171,6 +7198,62 @@ async function orgApprovalAction(id, action) {
7171
7198
  } catch (e) { showToast('Error', e.message, 'err'); }
7172
7199
  }
7173
7200
 
7201
+ // ── DECISIONS ──────────────────────────────────────────────
7202
+ let _v2DecisionsCache = [];
7203
+ let _v2DecisionsStatusFilter = 'all';
7204
+ let _v2DecisionsRoleFilter = 'all';
7205
+
7206
+ async function v2RenderOrgDecisions() {
7207
+ const el = document.getElementById('odt-decisions');
7208
+ if (!el || !_v2SelOrg) return;
7209
+ const _rendOrg = _v2SelOrg;
7210
+ el.innerHTML = '<div class="loading-txt">Loading…</div>';
7211
+ try {
7212
+ const _enc = encodeURIComponent(_rendOrg);
7213
+ const data = await fetch(`/api/org/${_enc}/gates${DIR ? '?dir=' + encodeURIComponent(DIR) : ''}`).then(r => r.ok ? r.json() : { gates: [] }).catch(() => ({ gates: [] }));
7214
+ if (_v2SelOrg !== _rendOrg) return;
7215
+ _v2DecisionsCache = Array.isArray(data) ? data : (data.gates || []);
7216
+ _v2DecisionsStatusFilter = 'all';
7217
+ _v2DecisionsRoleFilter = 'all';
7218
+ v2RenderDecisionsTable();
7219
+ } catch (e) { el.innerHTML = '<div class="empty">Failed: ' + esc(e.message) + '</div>'; }
7220
+ }
7221
+
7222
+ function v2RenderDecisionsTable() {
7223
+ const el = document.getElementById('odt-decisions');
7224
+ if (!el) return;
7225
+ const gates = _v2DecisionsCache;
7226
+ const roles = [...new Set(gates.map(g => g.roleId || '—'))].sort();
7227
+ const filtered = gates.filter(g =>
7228
+ (_v2DecisionsStatusFilter === 'all' || (g.status || 'pending') === _v2DecisionsStatusFilter) &&
7229
+ (_v2DecisionsRoleFilter === 'all' || (g.roleId || '—') === _v2DecisionsRoleFilter)
7230
+ );
7231
+ const filterBar = `<div style="display:flex;gap:10px;margin-bottom:10px">
7232
+ <select class="filter-input" style="width:auto" onchange="_v2DecisionsStatusFilter=this.value;v2RenderDecisionsTable()">
7233
+ ${['all', 'pending', 'approved', 'rejected'].map(s => `<option value="${s}" ${_v2DecisionsStatusFilter===s?'selected':''}>${s === 'all' ? 'All statuses' : s}</option>`).join('')}
7234
+ </select>
7235
+ <select class="filter-input" style="width:auto" onchange="_v2DecisionsRoleFilter=this.value;v2RenderDecisionsTable()">
7236
+ <option value="all" ${_v2DecisionsRoleFilter==='all'?'selected':''}>All roles</option>
7237
+ ${roles.map(r => `<option value="${esc(r)}" ${_v2DecisionsRoleFilter===r?'selected':''}>${esc(r)}</option>`).join('')}
7238
+ </select>
7239
+ </div>`;
7240
+ if (!filtered.length) { el.innerHTML = filterBar + '<div class="empty">No decision gates match</div>'; return; }
7241
+ el.innerHTML = filterBar + `<table style="width:100%;border-collapse:collapse;font-size:12px">
7242
+ <thead><tr style="color:var(--text-xs);text-align:left">
7243
+ <th style="padding:6px 8px">Role</th><th>Gate</th><th>Status</th><th>Resolution</th><th>Date</th>
7244
+ </tr></thead><tbody>` +
7245
+ filtered.slice(0, 100).map(g => {
7246
+ const cls = g.status === 'approved' ? 'on' : g.status === 'rejected' ? 'warn' : '';
7247
+ return `<tr style="border-top:1px solid var(--border)">
7248
+ <td style="padding:6px 8px;color:var(--text-hi)">${esc(g.roleId || '—')}</td>
7249
+ <td style="padding:6px 8px;color:var(--text-lo);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap" title="${esc(g.description || '')}">${esc(g.name || '—')}</td>
7250
+ <td style="padding:6px 8px"><span class="ss-pill ${cls}">${esc(g.status || 'pending')}</span></td>
7251
+ <td style="padding:6px 8px;color:var(--text-lo);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">${esc(g.resolution || '—')}</td>
7252
+ <td style="padding:6px 8px;color:var(--text-xs);font-size:11px;font-family:var(--mono)">${relTime(g.resolvedAt || g.createdAt)}</td>
7253
+ </tr>`;
7254
+ }).join('') + '</tbody></table>';
7255
+ }
7256
+
7174
7257
  // ── SECRETS ────────────────────────────────────────────────
7175
7258
  async function v2RenderOrgSecrets() {
7176
7259
  const el = document.getElementById('odt-secrets');
@@ -144,18 +144,6 @@
144
144
  <span>Raft Manager</span>
145
145
  <span class="cat-badge">consensus</span>
146
146
  </div>
147
- <div class="card" data-label="gossip coordinator" data-cat="consensus"
148
- onclick="copy('gossip-coordinator')">
149
- <img src="avatars/gossip-coordinator.svg" alt="Gossip Coordinator" loading="lazy"/>
150
- <span>Gossip Coordinator</span>
151
- <span class="cat-badge">consensus</span>
152
- </div>
153
- <div class="card" data-label="crdt synchronizer" data-cat="consensus"
154
- onclick="copy('crdt-synchronizer')">
155
- <img src="avatars/crdt-synchronizer.svg" alt="CRDT Synchronizer" loading="lazy"/>
156
- <span>CRDT Synchronizer</span>
157
- <span class="cat-badge">consensus</span>
158
- </div>
159
147
  <div class="card" data-label="quorum manager" data-cat="consensus"
160
148
  onclick="copy('quorum-manager')">
161
149
  <img src="avatars/quorum-manager.svg" alt="Quorum Manager" loading="lazy"/>
@@ -101,7 +101,7 @@
101
101
  {
102
102
  "id": "hierarchical-coord",
103
103
  "label": "Hierarchical Coord.",
104
- "category": "swarm",
104
+ "category": "monoswarm",
105
105
  "icon": "🏛️",
106
106
  "file": "avatars/hierarchical-coord.svg",
107
107
  "index": 12
@@ -109,7 +109,7 @@
109
109
  {
110
110
  "id": "mesh-coordinator",
111
111
  "label": "Mesh Coordinator",
112
- "category": "swarm",
112
+ "category": "monoswarm",
113
113
  "icon": "🕸️",
114
114
  "file": "avatars/mesh-coordinator.svg",
115
115
  "index": 13
@@ -117,7 +117,7 @@
117
117
  {
118
118
  "id": "adaptive-coordinator",
119
119
  "label": "Adaptive Coordinator",
120
- "category": "swarm",
120
+ "category": "monoswarm",
121
121
  "icon": "🔄",
122
122
  "file": "avatars/adaptive-coordinator.svg",
123
123
  "index": 14
@@ -125,7 +125,7 @@
125
125
  {
126
126
  "id": "collective-coord",
127
127
  "label": "Collective Intel.",
128
- "category": "swarm",
128
+ "category": "monoswarm",
129
129
  "icon": "🧠",
130
130
  "file": "avatars/collective-coord.svg",
131
131
  "index": 15
@@ -133,7 +133,7 @@
133
133
  {
134
134
  "id": "queen-coordinator",
135
135
  "label": "Queen Coordinator",
136
- "category": "swarm",
136
+ "category": "monoswarm",
137
137
  "icon": "👑",
138
138
  "file": "avatars/queen-coordinator.svg",
139
139
  "index": 16
@@ -141,7 +141,7 @@
141
141
  {
142
142
  "id": "worker-specialist",
143
143
  "label": "Worker Specialist",
144
- "category": "swarm",
144
+ "category": "monoswarm",
145
145
  "icon": "⚙️",
146
146
  "file": "avatars/worker-specialist.svg",
147
147
  "index": 17
@@ -162,22 +162,6 @@
162
162
  "file": "avatars/raft-manager.svg",
163
163
  "index": 19
164
164
  },
165
- {
166
- "id": "gossip-coordinator",
167
- "label": "Gossip Coordinator",
168
- "category": "consensus",
169
- "icon": "💬",
170
- "file": "avatars/gossip-coordinator.svg",
171
- "index": 20
172
- },
173
- {
174
- "id": "crdt-synchronizer",
175
- "label": "CRDT Synchronizer",
176
- "category": "consensus",
177
- "icon": "🔗",
178
- "file": "avatars/crdt-synchronizer.svg",
179
- "index": 21
180
- },
181
165
  {
182
166
  "id": "quorum-manager",
183
167
  "label": "Quorum Manager",
@@ -251,11 +235,11 @@
251
235
  "index": 30
252
236
  },
253
237
  {
254
- "id": "code-review-swarm",
255
- "label": "Code Review Swarm",
238
+ "id": "monoswarm-code-review",
239
+ "label": "Monoswarm Code Review",
256
240
  "category": "github",
257
241
  "icon": "👁️",
258
- "file": "avatars/code-review-swarm.svg",
242
+ "file": "avatars/monoswarm-code-review.svg",
259
243
  "index": 31
260
244
  },
261
245
  {
@@ -949,7 +933,7 @@
949
933
  {
950
934
  "id": "scout-explorer",
951
935
  "label": "Scout Explorer",
952
- "category": "swarm",
936
+ "category": "monoswarm",
953
937
  "icon": "🧭",
954
938
  "file": "avatars/scout-explorer.svg",
955
939
  "index": 118
@@ -1406,7 +1406,14 @@ function renderTab(tab) {
1406
1406
  function renderChart() {
1407
1407
  const d = orgDetailData;
1408
1408
  const roles = Array.isArray(d.roles) ? d.roles : [];
1409
- const comms = Array.isArray(d.communication) ? d.communication : [];
1409
+ // Structural report lines come straight from each role's reports_to (the
1410
+ // authoritative chain also shown in the Roles tab) — declared communication
1411
+ // edges (command/feedback/handoff busses) don't reflect who actually reports
1412
+ // to whom, e.g. a hierarchical topology's queen commanding every worker directly.
1413
+ const reportEdges = roles
1414
+ .filter(r => r.reports_to && r.reports_to !== r.id)
1415
+ .map(r => ({ from: r.id, to: r.reports_to, type: 'report' }));
1416
+ const comms = reportEdges.concat(Array.isArray(d.communication) ? d.communication : []);
1410
1417
  const running = !!(allOrgs.find(o => o.name === selectedOrg) || {}).running;
1411
1418
 
1412
1419
  // Meta bar
@@ -230,8 +230,11 @@ if (req.method === 'GET' && /^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/activity$/i.
230
230
  if (cfg) {
231
231
  const createdMs = cfg.created_at ? Date.parse(cfg.created_at) : null;
232
232
  if (createdMs) events.push({ type: 'org:create', ts: createdMs, msg: String(cfg.goal || 'Org created').slice(0, 80) });
233
- (cfg.roles || []).forEach((r, i) => {
234
- events.push({ type: 'role:defined', ts: createdMs ? createdMs + (i + 1) * 1000 : null, role: r.title || r.id, msg: r.agent_type || '' });
233
+ // Roles are defined atomically at org creation — there is no per-role
234
+ // timestamp in the config, so every role:defined event uses the org's
235
+ // real created_at instead of a fabricated per-index offset.
236
+ (cfg.roles || []).forEach((r) => {
237
+ events.push({ type: 'role:defined', ts: createdMs, role: r.title || r.id, msg: r.agent_type || '' });
235
238
  });
236
239
  }
237
240
  const goals = readJ(path.join(orgsDir, `${orgName}-goals.json`));
@@ -308,10 +311,30 @@ if (req.method === 'GET' && /^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/adapters$/i.
308
311
  let defaultAdapter = 'claude-sonnet-4-6';
309
312
  try { defaultAdapter = JSON.parse(fs.readFileSync(orgFile, 'utf8'))?.run_config?.ceo_adapter || defaultAdapter; } catch(_) {}
310
313
  res.writeHead(200, { 'Content-Type': 'application/json', ...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}) });
314
+ // This list mirrors the runtimes orgrt/daemon.ts actually registers
315
+ // (resolveRunner()'s if-chain + the ClaudeAgentRunner default it falls
316
+ // through to) rather than an independent, hand-maintained catalog — a
317
+ // standalone 'gemini-local' entry used to be advertised here even
318
+ // though no runner is ever registered for it (autoRuntimeFromProvider
319
+ // has no 'gemini' case, so a role requesting it silently falls back to
320
+ // Claude — see daemon.ts#startOrg's fail-fast warning). Gemini is only
321
+ // actually reachable via the 'vercel' runtime (vendor: 'google') or via
322
+ // 'antigravity' (Google-account CLI), both listed below. 'http' maps to
323
+ // provider.kind === 'base-url' (ANTHROPIC_BASE_URL + optional auth
324
+ // token) — a real, usable path, not disabled.
311
325
  res.end(JSON.stringify({ default_adapter: defaultAdapter, adapters: [
312
326
  { type: 'claude-local', label: 'Claude (local CLI)', source: 'built-in', disabled: false, modelsCount: 3 },
313
- { type: 'gemini-local', label: 'Gemini (local)', source: 'built-in', disabled: false, modelsCount: 1 },
314
- { type: 'http', label: 'HTTP Adapter', source: 'built-in', disabled: true, modelsCount: 0 },
327
+ { type: 'codex-local', label: 'Codex CLI', source: 'built-in', disabled: false, modelsCount: 1 },
328
+ { type: 'antigravity', label: 'Antigravity (Google CLI)', source: 'built-in', disabled: false, modelsCount: 1 },
329
+ { type: 'grok', label: 'Grok CLI', source: 'built-in', disabled: false, modelsCount: 1 },
330
+ { type: 'qwen', label: 'Qwen CLI', source: 'built-in', disabled: false, modelsCount: 1 },
331
+ { type: 'crush', label: 'Crush CLI', source: 'built-in', disabled: false, modelsCount: 1 },
332
+ { type: 'copilot', label: 'GitHub Copilot CLI', source: 'built-in', disabled: false, modelsCount: 1 },
333
+ { type: 'pi', label: 'Pi CLI', source: 'built-in', disabled: false, modelsCount: 1 },
334
+ { type: 'opencode', label: 'OpenCode CLI', source: 'built-in', disabled: false, modelsCount: 1 },
335
+ { type: 'kimicode', label: 'KimiCode CLI', source: 'built-in', disabled: false, modelsCount: 1 },
336
+ { type: 'vercel', label: 'Vercel AI SDK (multi-vendor, incl. Gemini/OpenAI)', source: 'built-in', disabled: false, modelsCount: 14 },
337
+ { type: 'http', label: 'Custom HTTP (base-url provider)', source: 'built-in', disabled: false, modelsCount: 0 },
315
338
  ]}));
316
339
  return true;
317
340
  }
@@ -878,6 +901,32 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/ap
878
901
  return true;
879
902
  }
880
903
 
904
+ // GET /api/org/:name/gates — decision gate log (read-only explorer; resolving stays
905
+ // CLI-only via `org gate-approve`/`gate-reject`, which needs the daemon's
906
+ // x-monomind-cred auth header for live delivery — out of scope for a read-only view)
907
+ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/gates(\?.*)?$/i)) {
908
+ try {
909
+ const orgName = decodeURIComponent(url.split('/')[3].split('?')[0]);
910
+ if (orgName.length > 64 || !/^[a-z0-9][a-z0-9_-]*$/i.test(orgName)) { res.writeHead(400); res.end('Invalid org name'); return true; }
911
+ const _gatesQs = new URL(req.url, 'http://localhost').searchParams;
912
+ const base = path.join(path.resolve(_gatesQs.get('dir') || ctx.projectDir || process.cwd()), '.monomind', 'orgs');
913
+ const readJsonSafe = (f) => { try { return JSON.parse(fs.readFileSync(f, 'utf8')); } catch(_) { return null; } };
914
+ const data = readJsonSafe(path.join(base, orgName, 'gates.json')) || { gates: [] };
915
+ const gates = (data.gates || [])
916
+ .sort((a, b) => (b.createdAt || 0) - (a.createdAt || 0))
917
+ .map(g => ({
918
+ id: g.id, name: g.name, description: g.description, roleId: g.roleId,
919
+ status: g.status || 'pending', createdAt: g.createdAt || null,
920
+ resolvedBy: g.resolvedBy || null, resolvedAt: g.resolvedAt || null,
921
+ resolution: g.resolution || null,
922
+ }));
923
+ const pending = gates.filter(g => g.status === 'pending').length;
924
+ res.writeHead(200, { 'Content-Type': 'application/json', ...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}) });
925
+ res.end(JSON.stringify({ gates, pending }));
926
+ } catch(_) { res.writeHead(500); res.end('{"gates":[],"pending":0}'); }
927
+ return true;
928
+ }
929
+
881
930
  // GET /api/questions?dir=<ctx.projectDir> — list ask_human questions (pending and
882
931
  // answered) for every org in one project. Mirrors the existing -approvals.json
883
932
  // sidecar convention, but reads this feature's .monomind/orgs/<org>/questions.json
@@ -1109,13 +1158,29 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
1109
1158
  total_cost_usd: s.total_cost_usd || 0,
1110
1159
  }));
1111
1160
  } catch(_) {}
1112
- // Scan org run jsonl files for agent:usage events (fallback when state.json has no token data)
1161
+ // Scan org run jsonl files for usage events (fallback when state.json has no token data).
1162
+ // Two event-type variants show up here in practice and must BOTH be matched, each with its
1163
+ // own field mapping — matching only one silently drops real v2 cost data from the UI:
1164
+ // - 'agent:usage': flattened { role, tokens_in, tokens_out, cost_usd } (legacy/direct writers).
1165
+ // - 'org:usage': orgrt's actual forwarded shape (attachForwarder's translate() default case
1166
+ // for a raw OrgBus 'usage' event) — { from, data: { tokens, cost_usd } }. orgrt never emits
1167
+ // 'agent:usage' itself, so scanning for that alone means this fallback never fires for real runs.
1113
1168
  const _hasTokenData = agents.some(a => a.tokens_in > 0 || a.tokens_out > 0 || a.total_cost_usd > 0);
1114
1169
  if (!_hasTokenData) {
1115
1170
  try {
1116
1171
  const _runsDir = path.join(base, orgName, 'runs');
1117
1172
  if (fs.existsSync(_runsDir)) {
1118
1173
  const _usageByRole = {};
1174
+ const _bump = (role, tokensIn, tokensOut, tokensTotal, costUsd) => {
1175
+ if (!role) return;
1176
+ role = String(role).trim();
1177
+ if (!role) return;
1178
+ if (!_usageByRole[role]) _usageByRole[role] = { tokens_in: 0, tokens_out: 0, tokens_used: 0, total_cost_usd: 0 };
1179
+ _usageByRole[role].tokens_in += tokensIn;
1180
+ _usageByRole[role].tokens_out += tokensOut;
1181
+ _usageByRole[role].tokens_used += tokensIn + tokensOut + tokensTotal;
1182
+ _usageByRole[role].total_cost_usd += costUsd;
1183
+ };
1119
1184
  for (const f of fs.readdirSync(_runsDir)) {
1120
1185
  if (!f.endsWith('.jsonl') || f.startsWith('._')) continue;
1121
1186
  const lines = fs.readFileSync(path.join(_runsDir, f), 'utf8').split('\n').filter(Boolean);
@@ -1123,11 +1188,9 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
1123
1188
  try {
1124
1189
  const ev = JSON.parse(l);
1125
1190
  if (ev.type === 'agent:usage' && ev.role) {
1126
- const role = String(ev.role).trim();
1127
- if (!_usageByRole[role]) _usageByRole[role] = { tokens_in: 0, tokens_out: 0, total_cost_usd: 0 };
1128
- _usageByRole[role].tokens_in += Number(ev.tokens_in) || 0;
1129
- _usageByRole[role].tokens_out += Number(ev.tokens_out) || 0;
1130
- _usageByRole[role].total_cost_usd += Number(ev.cost_usd) || 0;
1191
+ _bump(ev.role, Number(ev.tokens_in) || 0, Number(ev.tokens_out) || 0, 0, Number(ev.cost_usd) || 0);
1192
+ } else if (ev.type === 'org:usage' && ev.from) {
1193
+ _bump(ev.from, 0, 0, Number(ev.data?.tokens) || 0, Number(ev.data?.cost_usd) || 0);
1131
1194
  }
1132
1195
  } catch(_) {}
1133
1196
  }
@@ -1136,7 +1199,13 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
1136
1199
  // Merge usage into agents list; preserve role titles
1137
1200
  agents = agents.map(a => {
1138
1201
  const u = _usageByRole[a.id] || {};
1139
- return { ...a, tokens_in: u.tokens_in || 0, tokens_out: u.tokens_out || 0, total_cost_usd: u.total_cost_usd || 0 };
1202
+ return {
1203
+ ...a,
1204
+ tokens_in: u.tokens_in || 0,
1205
+ tokens_out: u.tokens_out || 0,
1206
+ tokens_used: u.tokens_used || ((u.tokens_in || 0) + (u.tokens_out || 0)),
1207
+ total_cost_usd: u.total_cost_usd || 0,
1208
+ };
1140
1209
  });
1141
1210
  // Add any roles that appeared in events but aren't in config
1142
1211
  for (const [role, u] of Object.entries(_usageByRole)) {
@@ -2172,21 +2241,21 @@ if (req.method === 'POST' && url === '/api/knowledge/search') {
2172
2241
  return true;
2173
2242
  }
2174
2243
 
2175
- // GET /api/mastermind/metrics — aggregate system metrics from token-summary and swarm-activity
2244
+ // GET /api/mastermind/metrics — aggregate system metrics from token-summary and monoswarm-activity
2176
2245
  if (req.method === 'GET' && url === '/api/mastermind/metrics') {
2177
2246
  try {
2178
2247
  const base = path.join(ctx.projectDir || process.cwd(), '.monomind', 'metrics');
2179
- let tokens = {}, swarm = {}, events = [];
2248
+ let tokens = {}, monoswarm = {}, events = [];
2180
2249
  try { tokens = JSON.parse(fs.readFileSync(path.join(base, 'token-summary.json'), 'utf8')); } catch(_) {}
2181
- try { swarm = JSON.parse(fs.readFileSync(path.join(base, 'swarm-activity.json'), 'utf8')); } catch(_) {}
2250
+ try { monoswarm = JSON.parse(fs.readFileSync(path.join(base, 'monoswarm-activity.json'), 'utf8')); } catch(_) {}
2182
2251
  try {
2183
2252
  const evPath = path.join(ctx.projectDir || process.cwd(), 'data', 'mastermind-events.jsonl');
2184
2253
  const lines = fs.readFileSync(evPath, 'utf8').split('\n').filter(l => l.trim()).slice(-20);
2185
2254
  events = lines.map(l => { try { return JSON.parse(l); } catch(_) { return null; } }).filter(Boolean);
2186
2255
  } catch(_) {}
2187
2256
  res.writeHead(200, { 'Content-Type': 'application/json' });
2188
- res.end(JSON.stringify({ tokens, swarm, recentEvents: events }));
2189
- } catch(_) { res.writeHead(500); res.end('{"tokens":{},"swarm":{},"recentEvents":[]}'); }
2257
+ res.end(JSON.stringify({ tokens, monoswarm, recentEvents: events }));
2258
+ } catch(_) { res.writeHead(500); res.end('{"tokens":{},"monoswarm":{},"recentEvents":[]}'); }
2190
2259
  return true;
2191
2260
  }
2192
2261