@monoes/monomindcli 2.9.22 → 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 (486) 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/autopilot-state.d.ts +0 -16
  74. package/dist/src/autopilot-state.d.ts.map +1 -1
  75. package/dist/src/autopilot-state.js +0 -15
  76. package/dist/src/autopilot-state.js.map +1 -1
  77. package/dist/src/browser/dashboard/server.js +3 -3
  78. package/dist/src/browser/dashboard/server.js.map +1 -1
  79. package/dist/src/browser/dashboard/ui.html +2 -2
  80. package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
  81. package/dist/src/capabilities/cap-documents.js +49 -38
  82. package/dist/src/capabilities/cap-documents.js.map +1 -1
  83. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
  84. package/dist/src/commands/agent-lifecycle.js +4 -9
  85. package/dist/src/commands/agent-lifecycle.js.map +1 -1
  86. package/dist/src/commands/agent-ops.d.ts.map +1 -1
  87. package/dist/src/commands/agent-ops.js +37 -24
  88. package/dist/src/commands/agent-ops.js.map +1 -1
  89. package/dist/src/commands/analyze-ast.d.ts +1 -1
  90. package/dist/src/commands/analyze-ast.d.ts.map +1 -1
  91. package/dist/src/commands/analyze-ast.js +8 -27
  92. package/dist/src/commands/analyze-ast.js.map +1 -1
  93. package/dist/src/commands/analyze-imports.d.ts.map +1 -1
  94. package/dist/src/commands/analyze-imports.js +18 -17
  95. package/dist/src/commands/analyze-imports.js.map +1 -1
  96. package/dist/src/commands/analyze-symbols.d.ts.map +1 -1
  97. package/dist/src/commands/analyze-symbols.js +10 -24
  98. package/dist/src/commands/analyze-symbols.js.map +1 -1
  99. package/dist/src/commands/analyze.d.ts +19 -6
  100. package/dist/src/commands/analyze.d.ts.map +1 -1
  101. package/dist/src/commands/analyze.js +61 -15
  102. package/dist/src/commands/analyze.js.map +1 -1
  103. package/dist/src/commands/autopilot.d.ts.map +1 -1
  104. package/dist/src/commands/autopilot.js +4 -89
  105. package/dist/src/commands/autopilot.js.map +1 -1
  106. package/dist/src/commands/browse.d.ts +1 -1
  107. package/dist/src/commands/cleanup.d.ts.map +1 -1
  108. package/dist/src/commands/cleanup.js +4 -2
  109. package/dist/src/commands/cleanup.js.map +1 -1
  110. package/dist/src/commands/completions.d.ts.map +1 -1
  111. package/dist/src/commands/completions.js +0 -1
  112. package/dist/src/commands/completions.js.map +1 -1
  113. package/dist/src/commands/config.js +7 -7
  114. package/dist/src/commands/config.js.map +1 -1
  115. package/dist/src/commands/doctor-project-checks.d.ts +7 -0
  116. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  117. package/dist/src/commands/doctor-project-checks.js +37 -5
  118. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  119. package/dist/src/commands/doctor.d.ts.map +1 -1
  120. package/dist/src/commands/doctor.js +9 -3
  121. package/dist/src/commands/doctor.js.map +1 -1
  122. package/dist/src/commands/hooks-routing-commands.d.ts +1 -2
  123. package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -1
  124. package/dist/src/commands/hooks-routing-commands.js +1 -101
  125. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  126. package/dist/src/commands/hooks-workers.d.ts.map +1 -1
  127. package/dist/src/commands/hooks-workers.js +19 -71
  128. package/dist/src/commands/hooks-workers.js.map +1 -1
  129. package/dist/src/commands/hooks.d.ts +1 -1
  130. package/dist/src/commands/hooks.d.ts.map +1 -1
  131. package/dist/src/commands/hooks.js +4 -7
  132. package/dist/src/commands/hooks.js.map +1 -1
  133. package/dist/src/commands/index.d.ts +1 -1
  134. package/dist/src/commands/index.d.ts.map +1 -1
  135. package/dist/src/commands/index.js +2 -2
  136. package/dist/src/commands/index.js.map +1 -1
  137. package/dist/src/commands/init-subcommands.d.ts.map +1 -1
  138. package/dist/src/commands/init-subcommands.js +4 -0
  139. package/dist/src/commands/init-subcommands.js.map +1 -1
  140. package/dist/src/commands/init-wizard.d.ts.map +1 -1
  141. package/dist/src/commands/init-wizard.js +0 -8
  142. package/dist/src/commands/init-wizard.js.map +1 -1
  143. package/dist/src/commands/init.d.ts.map +1 -1
  144. package/dist/src/commands/init.js +53 -23
  145. package/dist/src/commands/init.js.map +1 -1
  146. package/dist/src/commands/mcp.d.ts +1 -0
  147. package/dist/src/commands/mcp.d.ts.map +1 -1
  148. package/dist/src/commands/mcp.js +111 -60
  149. package/dist/src/commands/mcp.js.map +1 -1
  150. package/dist/src/commands/memory-crud.d.ts.map +1 -1
  151. package/dist/src/commands/memory-crud.js +33 -20
  152. package/dist/src/commands/memory-crud.js.map +1 -1
  153. package/dist/src/commands/monoswarm.d.ts +8 -0
  154. package/dist/src/commands/monoswarm.d.ts.map +1 -0
  155. package/dist/src/commands/{swarm.js → monoswarm.js} +83 -297
  156. package/dist/src/commands/monoswarm.js.map +1 -0
  157. package/dist/src/commands/neural-core.d.ts.map +1 -1
  158. package/dist/src/commands/neural-core.js +9 -1
  159. package/dist/src/commands/neural-core.js.map +1 -1
  160. package/dist/src/commands/neural-optimize.d.ts.map +1 -1
  161. package/dist/src/commands/neural-optimize.js +30 -110
  162. package/dist/src/commands/neural-optimize.js.map +1 -1
  163. package/dist/src/commands/neural-registry.d.ts +1 -2
  164. package/dist/src/commands/neural-registry.d.ts.map +1 -1
  165. package/dist/src/commands/neural-registry.js +21 -168
  166. package/dist/src/commands/neural-registry.js.map +1 -1
  167. package/dist/src/commands/org-observe.d.ts +13 -3
  168. package/dist/src/commands/org-observe.d.ts.map +1 -1
  169. package/dist/src/commands/org-observe.js +134 -45
  170. package/dist/src/commands/org-observe.js.map +1 -1
  171. package/dist/src/commands/org.d.ts +14 -0
  172. package/dist/src/commands/org.d.ts.map +1 -1
  173. package/dist/src/commands/org.js +98 -20
  174. package/dist/src/commands/org.js.map +1 -1
  175. package/dist/src/commands/performance.d.ts.map +1 -1
  176. package/dist/src/commands/performance.js +38 -31
  177. package/dist/src/commands/performance.js.map +1 -1
  178. package/dist/src/commands/security-misc.d.ts.map +1 -1
  179. package/dist/src/commands/security-misc.js +220 -90
  180. package/dist/src/commands/security-misc.js.map +1 -1
  181. package/dist/src/commands/security-scan.d.ts +13 -0
  182. package/dist/src/commands/security-scan.d.ts.map +1 -1
  183. package/dist/src/commands/security-scan.js +96 -27
  184. package/dist/src/commands/security-scan.js.map +1 -1
  185. package/dist/src/commands/security.js +1 -1
  186. package/dist/src/commands/security.js.map +1 -1
  187. package/dist/src/commands/start.d.ts.map +1 -1
  188. package/dist/src/commands/start.js +17 -96
  189. package/dist/src/commands/start.js.map +1 -1
  190. package/dist/src/commands/status.d.ts.map +1 -1
  191. package/dist/src/commands/status.js +72 -64
  192. package/dist/src/commands/status.js.map +1 -1
  193. package/dist/src/commands/tokens.d.ts.map +1 -1
  194. package/dist/src/commands/tokens.js +4 -5
  195. package/dist/src/commands/tokens.js.map +1 -1
  196. package/dist/src/consensus/audit-writer.d.ts +2 -2
  197. package/dist/src/consensus/audit-writer.d.ts.map +1 -1
  198. package/dist/src/consensus/audit-writer.js +1 -1
  199. package/dist/src/index.d.ts +2 -2
  200. package/dist/src/index.d.ts.map +1 -1
  201. package/dist/src/index.js +12 -10
  202. package/dist/src/index.js.map +1 -1
  203. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  204. package/dist/src/init/claudemd-generator.js +32 -31
  205. package/dist/src/init/claudemd-generator.js.map +1 -1
  206. package/dist/src/init/codex-generator.d.ts +10 -0
  207. package/dist/src/init/codex-generator.d.ts.map +1 -0
  208. package/dist/src/init/codex-generator.js +67 -0
  209. package/dist/src/init/codex-generator.js.map +1 -0
  210. package/dist/src/init/copy-assets.d.ts.map +1 -1
  211. package/dist/src/init/copy-assets.js +4 -8
  212. package/dist/src/init/copy-assets.js.map +1 -1
  213. package/dist/src/init/executor.d.ts.map +1 -1
  214. package/dist/src/init/executor.js +9 -2
  215. package/dist/src/init/executor.js.map +1 -1
  216. package/dist/src/init/helpers-generator.js +1 -1
  217. package/dist/src/init/index.d.ts +1 -0
  218. package/dist/src/init/index.d.ts.map +1 -1
  219. package/dist/src/init/index.js +1 -0
  220. package/dist/src/init/index.js.map +1 -1
  221. package/dist/src/init/opencode-generator.js +2 -2
  222. package/dist/src/init/opencode-generator.js.map +1 -1
  223. package/dist/src/init/settings-generator.d.ts.map +1 -1
  224. package/dist/src/init/settings-generator.js +1 -2
  225. package/dist/src/init/settings-generator.js.map +1 -1
  226. package/dist/src/init/shared.d.ts.map +1 -1
  227. package/dist/src/init/shared.js +3 -7
  228. package/dist/src/init/shared.js.map +1 -1
  229. package/dist/src/init/statusline-generator.js +19 -19
  230. package/dist/src/init/types.d.ts +9 -10
  231. package/dist/src/init/types.d.ts.map +1 -1
  232. package/dist/src/init/types.js +8 -6
  233. package/dist/src/init/types.js.map +1 -1
  234. package/dist/src/init/upgrade.js +5 -5
  235. package/dist/src/init/upgrade.js.map +1 -1
  236. package/dist/src/init/write-capabilities.d.ts.map +1 -1
  237. package/dist/src/init/write-capabilities.js +36 -49
  238. package/dist/src/init/write-capabilities.js.map +1 -1
  239. package/dist/src/init/write-claude.js +1 -1
  240. package/dist/src/init/write-claude.js.map +1 -1
  241. package/dist/src/init/write-codex.d.ts +4 -0
  242. package/dist/src/init/write-codex.d.ts.map +1 -0
  243. package/dist/src/init/write-codex.js +57 -0
  244. package/dist/src/init/write-codex.js.map +1 -0
  245. package/dist/src/init/write-runtime-config.d.ts.map +1 -1
  246. package/dist/src/init/write-runtime-config.js +4 -5
  247. package/dist/src/init/write-runtime-config.js.map +1 -1
  248. package/dist/src/knowledge/eval/golden-set.js +15 -15
  249. package/dist/src/knowledge/eval/golden-set.js.map +1 -1
  250. package/dist/src/mcp-client.d.ts.map +1 -1
  251. package/dist/src/mcp-client.js +1 -2
  252. package/dist/src/mcp-client.js.map +1 -1
  253. package/dist/src/mcp-server.js +1 -1
  254. package/dist/src/mcp-server.js.map +1 -1
  255. package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
  256. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  257. package/dist/src/mcp-tools/agent-tools.js +3 -3
  258. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  259. package/dist/src/mcp-tools/autopilot-tools.d.ts +1 -1
  260. package/dist/src/mcp-tools/autopilot-tools.d.ts.map +1 -1
  261. package/dist/src/mcp-tools/autopilot-tools.js +4 -62
  262. package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
  263. package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
  264. package/dist/src/mcp-tools/guidance-tools.js +21 -31
  265. package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
  266. package/dist/src/mcp-tools/hooks-intelligence.d.ts +0 -1
  267. package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
  268. package/dist/src/mcp-tools/hooks-intelligence.js +56 -103
  269. package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
  270. package/dist/src/mcp-tools/hooks-routing.d.ts +1 -2
  271. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  272. package/dist/src/mcp-tools/hooks-routing.js +78 -152
  273. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  274. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  275. package/dist/src/mcp-tools/hooks-tools.js +2 -4
  276. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  277. package/dist/src/mcp-tools/index.d.ts +1 -2
  278. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  279. package/dist/src/mcp-tools/index.js +1 -2
  280. package/dist/src/mcp-tools/index.js.map +1 -1
  281. package/dist/src/mcp-tools/memory-tools.js +10 -10
  282. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  283. package/dist/src/mcp-tools/monograph/query-tools.js +9 -9
  284. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
  285. package/dist/src/mcp-tools/monoswarm-tools.d.ts +17 -0
  286. package/dist/src/mcp-tools/monoswarm-tools.d.ts.map +1 -0
  287. package/dist/src/mcp-tools/monoswarm-tools.js +1153 -0
  288. package/dist/src/mcp-tools/monoswarm-tools.js.map +1 -0
  289. package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
  290. package/dist/src/mcp-tools/performance-tools.js +32 -25
  291. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  292. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  293. package/dist/src/mcp-tools/system-tools.js +30 -13
  294. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  295. package/dist/src/mcp-tools/transfer-tools.d.ts +8 -12
  296. package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
  297. package/dist/src/mcp-tools/transfer-tools.js +9 -13
  298. package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
  299. package/dist/src/memory/embedding-operations.d.ts.map +1 -1
  300. package/dist/src/memory/embedding-operations.js +0 -37
  301. package/dist/src/memory/embedding-operations.js.map +1 -1
  302. package/dist/src/memory/hnsw-operations.d.ts +14 -74
  303. package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
  304. package/dist/src/memory/hnsw-operations.js +22 -262
  305. package/dist/src/memory/hnsw-operations.js.map +1 -1
  306. package/dist/src/memory/intelligence.d.ts +2 -2
  307. package/dist/src/memory/intelligence.d.ts.map +1 -1
  308. package/dist/src/memory/intelligence.js +8 -7
  309. package/dist/src/memory/intelligence.js.map +1 -1
  310. package/dist/src/memory/memory-bridge.d.ts +24 -24
  311. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  312. package/dist/src/memory/memory-bridge.js +33 -34
  313. package/dist/src/memory/memory-bridge.js.map +1 -1
  314. package/dist/src/memory/memory-crud.d.ts.map +1 -1
  315. package/dist/src/memory/memory-crud.js +0 -20
  316. package/dist/src/memory/memory-crud.js.map +1 -1
  317. package/dist/src/memory/memory-initializer.d.ts +2 -3
  318. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  319. package/dist/src/memory/memory-initializer.js +2 -3
  320. package/dist/src/memory/memory-initializer.js.map +1 -1
  321. package/dist/src/memory/memory-read.d.ts.map +1 -1
  322. package/dist/src/memory/memory-read.js +5 -14
  323. package/dist/src/memory/memory-read.js.map +1 -1
  324. package/dist/src/memory/sona-optimizer.d.ts +1 -1
  325. package/dist/src/memory/sona-optimizer.js +1 -1
  326. package/dist/src/monovector/model-outcomes.d.ts +25 -0
  327. package/dist/src/monovector/model-outcomes.d.ts.map +1 -0
  328. package/dist/src/monovector/model-outcomes.js +113 -0
  329. package/dist/src/monovector/model-outcomes.js.map +1 -0
  330. package/dist/src/orgrt/agent-runner.d.ts +8 -2
  331. package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
  332. package/dist/src/orgrt/agent-runner.js.map +1 -1
  333. package/dist/src/orgrt/antigravity-runner.d.ts +25 -2
  334. package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
  335. package/dist/src/orgrt/antigravity-runner.js +265 -124
  336. package/dist/src/orgrt/antigravity-runner.js.map +1 -1
  337. package/dist/src/orgrt/approvals.d.ts.map +1 -1
  338. package/dist/src/orgrt/approvals.js +8 -0
  339. package/dist/src/orgrt/approvals.js.map +1 -1
  340. package/dist/src/orgrt/checkpoint-ops.d.ts +10 -16
  341. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
  342. package/dist/src/orgrt/checkpoint-ops.js +12 -18
  343. package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
  344. package/dist/src/orgrt/checkpoint.d.ts +12 -1
  345. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  346. package/dist/src/orgrt/checkpoint.js +19 -3
  347. package/dist/src/orgrt/checkpoint.js.map +1 -1
  348. package/dist/src/orgrt/codex-runner.d.ts +26 -2
  349. package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
  350. package/dist/src/orgrt/codex-runner.js +359 -128
  351. package/dist/src/orgrt/codex-runner.js.map +1 -1
  352. package/dist/src/orgrt/copilot-runner.d.ts.map +1 -1
  353. package/dist/src/orgrt/copilot-runner.js +12 -2
  354. package/dist/src/orgrt/copilot-runner.js.map +1 -1
  355. package/dist/src/orgrt/cross-org.d.ts.map +1 -1
  356. package/dist/src/orgrt/cross-org.js +11 -0
  357. package/dist/src/orgrt/cross-org.js.map +1 -1
  358. package/dist/src/orgrt/crush-runner.d.ts +4 -1
  359. package/dist/src/orgrt/crush-runner.d.ts.map +1 -1
  360. package/dist/src/orgrt/crush-runner.js +42 -30
  361. package/dist/src/orgrt/crush-runner.js.map +1 -1
  362. package/dist/src/orgrt/daemon.d.ts +38 -25
  363. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  364. package/dist/src/orgrt/daemon.js +150 -28
  365. package/dist/src/orgrt/daemon.js.map +1 -1
  366. package/dist/src/orgrt/decisions.d.ts +1 -0
  367. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  368. package/dist/src/orgrt/decisions.js +20 -0
  369. package/dist/src/orgrt/decisions.js.map +1 -1
  370. package/dist/src/orgrt/grok-runner.d.ts.map +1 -1
  371. package/dist/src/orgrt/grok-runner.js +39 -14
  372. package/dist/src/orgrt/grok-runner.js.map +1 -1
  373. package/dist/src/orgrt/kimicode-runner.d.ts +53 -7
  374. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  375. package/dist/src/orgrt/kimicode-runner.js +246 -144
  376. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  377. package/dist/src/orgrt/mailbox.d.ts +26 -1
  378. package/dist/src/orgrt/mailbox.d.ts.map +1 -1
  379. package/dist/src/orgrt/mailbox.js +74 -2
  380. package/dist/src/orgrt/mailbox.js.map +1 -1
  381. package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
  382. package/dist/src/orgrt/pi-rpc-runner.js +76 -91
  383. package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
  384. package/dist/src/orgrt/policy.d.ts +11 -0
  385. package/dist/src/orgrt/policy.d.ts.map +1 -1
  386. package/dist/src/orgrt/policy.js +25 -2
  387. package/dist/src/orgrt/policy.js.map +1 -1
  388. package/dist/src/orgrt/provider.d.ts +29 -1
  389. package/dist/src/orgrt/provider.d.ts.map +1 -1
  390. package/dist/src/orgrt/provider.js +62 -2
  391. package/dist/src/orgrt/provider.js.map +1 -1
  392. package/dist/src/orgrt/qwen-rpc-runner.d.ts +56 -0
  393. package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -0
  394. package/dist/src/orgrt/qwen-rpc-runner.js +346 -0
  395. package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -0
  396. package/dist/src/orgrt/qwen-runner.d.ts.map +1 -1
  397. package/dist/src/orgrt/qwen-runner.js +11 -8
  398. package/dist/src/orgrt/qwen-runner.js.map +1 -1
  399. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
  400. package/dist/src/orgrt/scheduler-integration.js +7 -0
  401. package/dist/src/orgrt/scheduler-integration.js.map +1 -1
  402. package/dist/src/orgrt/session.d.ts +29 -1
  403. package/dist/src/orgrt/session.d.ts.map +1 -1
  404. package/dist/src/orgrt/session.js +87 -18
  405. package/dist/src/orgrt/session.js.map +1 -1
  406. package/dist/src/orgrt/task-dag.d.ts +29 -1
  407. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  408. package/dist/src/orgrt/task-dag.js +54 -0
  409. package/dist/src/orgrt/task-dag.js.map +1 -1
  410. package/dist/src/orgrt/test-loop.d.ts.map +1 -1
  411. package/dist/src/orgrt/test-loop.js +86 -9
  412. package/dist/src/orgrt/test-loop.js.map +1 -1
  413. package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
  414. package/dist/src/orgrt/tool-fence.js +15 -0
  415. package/dist/src/orgrt/tool-fence.js.map +1 -1
  416. package/dist/src/orgrt/types.d.ts +32 -1
  417. package/dist/src/orgrt/types.d.ts.map +1 -1
  418. package/dist/src/orgrt/types.js +47 -4
  419. package/dist/src/orgrt/types.js.map +1 -1
  420. package/dist/src/pricing/model-pricing.d.ts.map +1 -1
  421. package/dist/src/pricing/model-pricing.js +0 -4
  422. package/dist/src/pricing/model-pricing.js.map +1 -1
  423. package/dist/src/security/audit-log.d.ts +47 -0
  424. package/dist/src/security/audit-log.d.ts.map +1 -0
  425. package/dist/src/security/audit-log.js +84 -0
  426. package/dist/src/security/audit-log.js.map +1 -0
  427. package/dist/src/services/config-file-manager.d.ts +2 -2
  428. package/dist/src/services/config-file-manager.d.ts.map +1 -1
  429. package/dist/src/services/config-file-manager.js +6 -7
  430. package/dist/src/services/config-file-manager.js.map +1 -1
  431. package/dist/src/suggest.d.ts.map +1 -1
  432. package/dist/src/suggest.js +4 -5
  433. package/dist/src/suggest.js.map +1 -1
  434. package/dist/src/transfer/anonymization/index.d.ts +1 -1
  435. package/dist/src/transfer/anonymization/index.js +1 -1
  436. package/dist/src/types.d.ts +3 -3
  437. package/dist/src/types.d.ts.map +1 -1
  438. package/dist/src/ui/collector.mjs +9 -13
  439. package/dist/src/ui/dashboard.html +30 -10
  440. package/dist/src/ui/data/agent-avatars.html +0 -12
  441. package/dist/src/ui/data/agent-avatars.json +10 -26
  442. package/dist/src/ui/routes-org.mjs +59 -16
  443. package/dist/src/ui/server.mjs +50 -23
  444. package/dist/src/utils/json-file.d.ts +12 -0
  445. package/dist/src/utils/json-file.d.ts.map +1 -1
  446. package/dist/src/utils/json-file.js +11 -0
  447. package/dist/src/utils/json-file.js.map +1 -1
  448. package/dist/tsconfig.tsbuildinfo +1 -1
  449. package/package.json +4 -4
  450. package/.claude/agents/consensus/crdt-synchronizer.md +0 -977
  451. package/.claude/commands/hive-mind/README.md +0 -42
  452. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
  453. package/.claude/commands/hive-mind/hive-mind-init.md +0 -68
  454. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
  455. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
  456. package/.claude/commands/hive-mind/hive-mind-status.md +0 -56
  457. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
  458. package/.claude/commands/hive-mind/hive-mind.md +0 -87
  459. package/.claude/commands/swarm/README.md +0 -40
  460. package/.claude/commands/swarm/swarm.md +0 -79
  461. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -347
  462. package/.claude/skills/swarm-advanced/SKILL.md +0 -936
  463. package/dist/src/commands/swarm.d.ts +0 -8
  464. package/dist/src/commands/swarm.d.ts.map +0 -1
  465. package/dist/src/commands/swarm.js.map +0 -1
  466. package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -17
  467. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +0 -1
  468. package/dist/src/mcp-tools/hive-mind-tools.js +0 -1239
  469. package/dist/src/mcp-tools/hive-mind-tools.js.map +0 -1
  470. package/dist/src/mcp-tools/swarm-tools.d.ts +0 -9
  471. package/dist/src/mcp-tools/swarm-tools.d.ts.map +0 -1
  472. package/dist/src/mcp-tools/swarm-tools.js +0 -411
  473. package/dist/src/mcp-tools/swarm-tools.js.map +0 -1
  474. package/dist/src/ui/data/avatars/crdt-synchronizer.svg +0 -53
  475. package/dist/src/ui/data/avatars/gossip-coordinator.svg +0 -54
  476. package/scripts/deploy-ipfs-node.sh +0 -153
  477. package/scripts/setup-ipfs-registry.md +0 -365
  478. /package/.claude/agents/{hive-mind → monoswarm}/scout-explorer.md +0 -0
  479. /package/.claude/agents/{hive-mind → monoswarm}/worker-specialist.md +0 -0
  480. /package/.claude/commands/{swarm → monoswarm}/analysis.md +0 -0
  481. /package/.claude/commands/{swarm → monoswarm}/development.md +0 -0
  482. /package/.claude/commands/{swarm → monoswarm}/examples.md +0 -0
  483. /package/.claude/commands/{swarm → monoswarm}/maintenance.md +0 -0
  484. /package/.claude/commands/{swarm → monoswarm}/optimization.md +0 -0
  485. /package/.claude/commands/{swarm → monoswarm}/testing.md +0 -0
  486. /package/dist/src/ui/data/avatars/{code-review-swarm.svg → monoswarm-code-review.svg} +0 -0
@@ -1,4 +1,4 @@
1
- import type { ProviderConfig } from './types.js';
1
+ import type { ProviderConfig, OrgRole } from './types.js';
2
2
  /**
3
3
  * Builds the child-process env for one agent session.
4
4
  * Default (no provider block) = subscription: remove the API key var so the
@@ -6,4 +6,32 @@ import type { ProviderConfig } from './types.js';
6
6
  * Never stores secrets in org JSON — only env var NAMES.
7
7
  */
8
8
  export declare function resolveProviderEnv(cfg: ProviderConfig | undefined, parentEnv?: Record<string, string | undefined>): Record<string, string>;
9
+ /** One entry of `agents.providers` as written by `monomind providers configure`. */
10
+ export interface ConfiguredProviderEntry {
11
+ name: string;
12
+ apiKey?: string;
13
+ model?: string;
14
+ baseUrl?: string;
15
+ }
16
+ /** Look up a named provider from the project config (`agents.providers`,
17
+ * written by `monomind providers configure`). Fresh disk read — the daemon is
18
+ * long-lived and a cached config would miss keys configured after start. */
19
+ export declare function lookupConfiguredProvider(name: string, searchFrom?: string): ConfiguredProviderEntry | undefined;
20
+ /** Effective provider config for a role. Precedence:
21
+ * 1. explicit role-level `provider` block (unchanged behaviour),
22
+ * 2. `adapter_config.provider` — a named provider resolved from
23
+ * `monomind providers configure` (baseUrl+apiKey → base-url kind,
24
+ * apiKey only → api-key kind),
25
+ * 3. none (subscription login).
26
+ *
27
+ * `defaultModel` carries the named provider's configured default model so
28
+ * roles without an explicit adapter_config.model still get a sensible one.
29
+ * Throws with an actionable message when the named provider is missing or
30
+ * carries neither key nor endpoint — before this, the reference was silently
31
+ * stripped by the schema and the run died ten minutes later with an opaque
32
+ * "issue with the selected model" from the engine. */
33
+ export declare function resolveRoleProvider(role: Pick<OrgRole, 'provider' | 'adapter_config'>, searchFrom?: string): {
34
+ cfg?: ProviderConfig;
35
+ defaultModel?: string;
36
+ };
9
37
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,GAAG,SAAS,EAC/B,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAC1D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2ExB"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAK1D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,GAAG,SAAS,EAC/B,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAC1D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+ExB;AAED,oFAAoF;AACpF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;6EAE6E;AAC7E,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAsB,GACjC,uBAAuB,GAAG,SAAS,CAerC;AAED;;;;;;;;;;;;uDAYuD;AACvD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAAC,EAClD,UAAU,GAAE,MAAsB,GACjC;IAAE,GAAG,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAuBjD"}
@@ -1,3 +1,4 @@
1
+ import { configManager } from '../services/config-file-manager.js';
1
2
  const KEY_VAR = ['ANTHROPIC', 'API', 'KEY'].join('_');
2
3
  /**
3
4
  * Builds the child-process env for one agent session.
@@ -19,7 +20,8 @@ export function resolveProviderEnv(cfg, parentEnv = process.env) {
19
20
  break;
20
21
  case 'api-key': {
21
22
  const name = cfg?.apiKeyEnv ?? KEY_VAR;
22
- const key = parentEnv[name];
23
+ // Direct value (named-provider config) takes precedence over the env var.
24
+ const key = cfg?.apiKey ?? parentEnv[name];
23
25
  if (!key)
24
26
  throw new Error(`provider api-key: env var ${name} is not set`);
25
27
  env[KEY_VAR] = key;
@@ -31,7 +33,11 @@ export function resolveProviderEnv(cfg, parentEnv = process.env) {
31
33
  throw new Error('provider base-url: baseUrl is required');
32
34
  env.ANTHROPIC_BASE_URL = cfg.baseUrl;
33
35
  delete env[KEY_VAR];
34
- if (cfg.authTokenEnv) {
36
+ // Direct value (named-provider config) first, then the named env var.
37
+ if (cfg.authToken) {
38
+ env.ANTHROPIC_AUTH_TOKEN = cfg.authToken;
39
+ }
40
+ else if (cfg.authTokenEnv) {
35
41
  const tok = parentEnv[cfg.authTokenEnv];
36
42
  if (!tok)
37
43
  throw new Error(`provider base-url: env var ${cfg.authTokenEnv} is not set`);
@@ -96,4 +102,58 @@ export function resolveProviderEnv(cfg, parentEnv = process.env) {
96
102
  }
97
103
  return env;
98
104
  }
105
+ /** Look up a named provider from the project config (`agents.providers`,
106
+ * written by `monomind providers configure`). Fresh disk read — the daemon is
107
+ * long-lived and a cached config would miss keys configured after start. */
108
+ export function lookupConfiguredProvider(name, searchFrom = process.cwd()) {
109
+ if (!name)
110
+ return undefined;
111
+ const config = configManager.load(searchFrom);
112
+ const agents = (config?.agents ?? {});
113
+ const providers = (agents.providers ?? []);
114
+ const entry = providers.find((p) => typeof p.name === 'string' && p.name.toLowerCase() === name.toLowerCase());
115
+ if (!entry)
116
+ return undefined;
117
+ return {
118
+ name: entry.name,
119
+ apiKey: typeof entry.apiKey === 'string' ? entry.apiKey : undefined,
120
+ model: typeof entry.model === 'string' ? entry.model : undefined,
121
+ baseUrl: typeof entry.baseUrl === 'string' ? entry.baseUrl : undefined,
122
+ };
123
+ }
124
+ /** Effective provider config for a role. Precedence:
125
+ * 1. explicit role-level `provider` block (unchanged behaviour),
126
+ * 2. `adapter_config.provider` — a named provider resolved from
127
+ * `monomind providers configure` (baseUrl+apiKey → base-url kind,
128
+ * apiKey only → api-key kind),
129
+ * 3. none (subscription login).
130
+ *
131
+ * `defaultModel` carries the named provider's configured default model so
132
+ * roles without an explicit adapter_config.model still get a sensible one.
133
+ * Throws with an actionable message when the named provider is missing or
134
+ * carries neither key nor endpoint — before this, the reference was silently
135
+ * stripped by the schema and the run died ten minutes later with an opaque
136
+ * "issue with the selected model" from the engine. */
137
+ export function resolveRoleProvider(role, searchFrom = process.cwd()) {
138
+ if (role.provider)
139
+ return { cfg: role.provider };
140
+ const name = role.adapter_config?.provider;
141
+ if (!name)
142
+ return {};
143
+ const entry = lookupConfiguredProvider(name, searchFrom);
144
+ const hint = `run: monomind providers configure -p ${name} -k <api-key> -e <endpoint-url>`;
145
+ if (!entry) {
146
+ throw new Error(`adapter_config.provider "${name}" is not configured in this project (${hint})`);
147
+ }
148
+ if (entry.baseUrl && entry.apiKey) {
149
+ return {
150
+ cfg: { kind: 'base-url', baseUrl: entry.baseUrl, authToken: entry.apiKey },
151
+ defaultModel: entry.model,
152
+ };
153
+ }
154
+ if (entry.apiKey) {
155
+ return { cfg: { kind: 'api-key', apiKey: entry.apiKey }, defaultModel: entry.model };
156
+ }
157
+ throw new Error(`provider "${name}" has neither an API key nor an endpoint configured (${hint})`);
158
+ }
99
159
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { AgentRunner, AgentRunArgs, AgentMessage } from './agent-runner.js';
2
+ interface QwenRpcContentBlock {
3
+ type: string;
4
+ text?: string;
5
+ thinking?: string;
6
+ }
7
+ interface QwenRpcMessage {
8
+ content?: QwenRpcContentBlock[];
9
+ }
10
+ /** Pure, transport-independent JSONL line decoder — same shape as
11
+ * pi-rpc-runner.ts's JsonlDecoder. Exported for unit testing without a
12
+ * real subprocess. */
13
+ export declare class QwenJsonlDecoder {
14
+ private buf;
15
+ feed(chunk: string): Record<string, unknown>[];
16
+ }
17
+ /** Encode a client→server `user` message as one LF-terminated JSON line —
18
+ * the plain-string content form (see file header for why the
19
+ * content-block-array form isn't used). Exported for unit testing the
20
+ * exact wire format. */
21
+ export declare function encodeQwenRpcUserMessage(text: string): string;
22
+ /** Extract assistant-visible text from an `assistant` event's
23
+ * `message.content` array. `thinking` blocks are dropped (internal
24
+ * reasoning, not meant for the bus). Exported for unit testing against
25
+ * fixture content arrays. */
26
+ export declare function extractQwenRpcText(message: QwenRpcMessage): string;
27
+ /** The subset of a spawned child process this runner needs — same
28
+ * duck-typed seam as pi-rpc-runner.ts's PiRpcProcess, so tests can supply
29
+ * a fake implementation to exercise the full turn-completion state
30
+ * machine without a real `qwen` binary. */
31
+ export interface QwenRpcProcess {
32
+ stdin: {
33
+ write(data: string): void;
34
+ } | null;
35
+ stdout: {
36
+ on(event: 'data', cb: (chunk: Buffer) => void): void;
37
+ } | null;
38
+ stderr: {
39
+ on(event: 'data', cb: (chunk: Buffer) => void): void;
40
+ } | null;
41
+ on(event: 'close', cb: (code: number | null) => void): void;
42
+ on(event: 'error', cb: (err: Error) => void): void;
43
+ kill(signal?: string): void;
44
+ }
45
+ export type SpawnQwenRpc = (bin: string, args: string[], opts: {
46
+ cwd: string;
47
+ env: Record<string, string | undefined>;
48
+ }) => QwenRpcProcess;
49
+ export declare class QwenRpcAgentRunner implements AgentRunner {
50
+ private qwenBin?;
51
+ private spawnFn;
52
+ constructor(qwenBin?: string | undefined, spawnFn?: SpawnQwenRpc);
53
+ run(args: AgentRunArgs): AsyncIterable<AgentMessage>;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=qwen-rpc-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-rpc-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/qwen-rpc-runner.ts"],"names":[],"mappings":"AA+EA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQjF,UAAU,mBAAmB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAAE;AACjF,UAAU,cAAc;IAAG,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAAE;AAE7D;;uBAEuB;AACvB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAM;IACjB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAW7C;CACF;AAED;;;yBAGyB;AACzB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;8BAG8B;AAC9B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAKlE;AAED;;;4CAG4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,EAAE;QAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,MAAM,EAAE;QAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAE,KAAK,cAAc,CAAC;AAK3I,qBAAa,kBAAmB,YAAW,WAAW;IACxC,OAAO,CAAC,OAAO,CAAC;IAAU,OAAO,CAAC,OAAO;IAArD,YAAoB,OAAO,CAAC,EAAE,MAAM,YAAA,EAAU,OAAO,GAAE,YAAkC,EAAI;IAEtF,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAgN1D;CACF"}
@@ -0,0 +1,346 @@
1
+ // packages/@monomind/cli/src/orgrt/qwen-rpc-runner.ts
2
+ /**
3
+ * QwenRpcAgentRunner — AgentRunner impl backed by the Qwen Code CLI's
4
+ * bidirectional `--input-format stream-json --output-format stream-json`
5
+ * mode (session-lifetime), instead of the default QwenAgentRunner
6
+ * (qwen-runner.ts), which spawns a fresh `qwen -p "<prompt>"` process per
7
+ * mailbox turn.
8
+ *
9
+ * OPT-IN, not the default. Select via role/org `runtime: 'qwen-rpc'`.
10
+ * Prefer plain `runtime: 'qwen'` (QwenAgentRunner) unless you specifically
11
+ * want the benefit this buys: the subprocess stays alive for the WHOLE
12
+ * mailbox session, so conversational context carries naturally (no
13
+ * `--resume <sessionId>` round-trip per turn) and there's no per-turn
14
+ * spawn/bootstrap cost.
15
+ *
16
+ * Protocol — LIVE-VERIFIED against qwen-code v0.21.13 (issue #182). The
17
+ * flag exists but is hidden from `qwen --help`; found by reading the
18
+ * bundled minified source (`packages/cli`'s yargs config,
19
+ * `.option("input-format", { choices: ["text","stream-json"] })`) and
20
+ * confirmed the exact message schema from the CLI's own bundled source
21
+ * (`packages/cli/src/nonInteractive/types.ts`, compiled into
22
+ * `chunks/session-*.js`) — the `isCLIUserMessage`/`extractUserMessageText`
23
+ * predicates there define the client→server shape literally, not from
24
+ * prose docs. Then confirmed LIVE: sent both message forms below on the
25
+ * same persistent subprocess against a z.ai/GLM-5.3 backend — both
26
+ * answered correctly, on the SAME session_id, proving session-lifetime
27
+ * persistence:
28
+ *
29
+ * Client → server (this runner sends):
30
+ * {"type":"user","message":{"content":"<text>"}}
31
+ * (a content-block-array form is also accepted —
32
+ * {"type":"user","message":{"content":[{"type":"text","text":"..."}]}}
33
+ * — but the plain-string form is simpler and was used for all live
34
+ * verification, so this runner sticks to it)
35
+ *
36
+ * Server → client (same vocabulary as QwenAgentRunner's per-spawn
37
+ * stream-json, confirmed identical live under RPC mode too):
38
+ * {"type":"system","subtype":"init","session_id":"...",...}
39
+ * {"type":"assistant","session_id":"...",
40
+ * "message":{"content":[{"type":"text","text":"..."},
41
+ * {"type":"thinking","thinking":"..."}]}}
42
+ * {"type":"result","subtype":"success"|"error","session_id":"...",
43
+ * "usage":{"input_tokens":N,"output_tokens":N,...},
44
+ * "error":{"message":"..."}|"<string>"}
45
+ * `result` is a single-fire-per-turn completion signal — confirmed live
46
+ * (same as the non-RPC QwenAgentRunner already relies on for its
47
+ * per-spawn invocations). A `system`/`init` event was also observed
48
+ * re-emitted at the start of a SECOND turn on the same subprocess — not
49
+ * treated as a new-session signal here, since session_id stayed
50
+ * identical across it in the live test.
51
+ *
52
+ * NOT verified live: a turn where qwen runs multiple of its OWN native
53
+ * tools (read/edit/bash) in sequence before responding — same class of gap
54
+ * pi-rpc-runner.ts disclosed for pi before its own live verification
55
+ * confirmed a single fire-once completion signal there too. `result`
56
+ * firing exactly once per submitted `user` message (not once per internal
57
+ * tool-use cycle) is inferred by symmetry with the non-RPC QwenAgentRunner
58
+ * (which already treats `result` this way across a `-p` invocation that
59
+ * CAN involve multiple internal tool calls) rather than independently
60
+ * re-confirmed here. Revalidate if this runner ends a turn early or hangs
61
+ * on a heavily tool-call-heavy prompt; fall back to plain `runtime: 'qwen'`
62
+ * if it misbehaves.
63
+ *
64
+ * Auth: inherited from the CLI's own login flow — same as QwenAgentRunner.
65
+ * No env vars set here. (Live verification against a custom
66
+ * OpenAI-compatible backend needed `--auth-type openai` plus
67
+ * `OPENAI_API_KEY`/`OPENAI_BASE_URL`/`OPENAI_MODEL` env vars, per
68
+ * qwen-runner.ts's own header — not something this runner forces, since a
69
+ * real deployment's own qwen config/subscription should already be set up
70
+ * the way its operator wants.)
71
+ *
72
+ * Org tools (org_send, knowledge_search, ask_human, …) — FENCE PROTOCOL:
73
+ * Qwen's own native tools (read/edit/bash) execute autonomously inside
74
+ * qwen itself and never reach this runner — only org tools ride the
75
+ * shared tool-fence protocol (tool-fence.ts), extracted from assistant
76
+ * text collected before `result` and fed back as a new `user` message in
77
+ * the SAME session.
78
+ */
79
+ import { spawn } from 'node:child_process';
80
+ import { buildToolProtocol, parseToolCalls, executeToolCall, formatToolResults, MAX_TOOL_ROUNDS, TOOL_CALL_RE } from './tool-fence.js';
81
+ /** Upper bound on how long a single turn's wait for `result` may run before
82
+ * the mid-session silence watchdog (below) considers qwen wedged. */
83
+ const SETTLE_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
84
+ const STARTUP_GRACE_MS = 45_000;
85
+ /** Pure, transport-independent JSONL line decoder — same shape as
86
+ * pi-rpc-runner.ts's JsonlDecoder. Exported for unit testing without a
87
+ * real subprocess. */
88
+ export class QwenJsonlDecoder {
89
+ buf = '';
90
+ feed(chunk) {
91
+ this.buf += chunk;
92
+ const parts = this.buf.split('\n');
93
+ this.buf = parts.pop() ?? '';
94
+ const out = [];
95
+ for (const line of parts) {
96
+ const trimmed = line.trim();
97
+ if (!trimmed)
98
+ continue;
99
+ try {
100
+ out.push(JSON.parse(trimmed));
101
+ }
102
+ catch { /* skip malformed line */ }
103
+ }
104
+ return out;
105
+ }
106
+ }
107
+ /** Encode a client→server `user` message as one LF-terminated JSON line —
108
+ * the plain-string content form (see file header for why the
109
+ * content-block-array form isn't used). Exported for unit testing the
110
+ * exact wire format. */
111
+ export function encodeQwenRpcUserMessage(text) {
112
+ return JSON.stringify({ type: 'user', message: { content: text } }) + '\n';
113
+ }
114
+ /** Extract assistant-visible text from an `assistant` event's
115
+ * `message.content` array. `thinking` blocks are dropped (internal
116
+ * reasoning, not meant for the bus). Exported for unit testing against
117
+ * fixture content arrays. */
118
+ export function extractQwenRpcText(message) {
119
+ return (message.content ?? [])
120
+ .filter((b) => b.type === 'text' && typeof b.text === 'string')
121
+ .map((b) => b.text)
122
+ .join('\n');
123
+ }
124
+ const defaultSpawnQwenRpc = (bin, args, opts) => spawn(bin, args, { cwd: opts.cwd, env: opts.env, stdio: ['pipe', 'pipe', 'pipe'] });
125
+ export class QwenRpcAgentRunner {
126
+ qwenBin;
127
+ spawnFn;
128
+ constructor(qwenBin, spawnFn = defaultSpawnQwenRpc) {
129
+ this.qwenBin = qwenBin;
130
+ this.spawnFn = spawnFn;
131
+ }
132
+ async *run(args) {
133
+ const bin = this.qwenBin || process.env.QWEN_CLI_BIN || 'qwen';
134
+ const cliArgs = ['--input-format', 'stream-json', '--output-format', 'stream-json', '--yolo'];
135
+ if (args.model)
136
+ cliArgs.push('-m', args.model);
137
+ const child = this.spawnFn(bin, cliArgs, {
138
+ cwd: args.cwd,
139
+ env: { ...process.env, ...args.env },
140
+ });
141
+ let stderrTail = '';
142
+ child.stderr?.on('data', (c) => { stderrTail = (stderrTail + c.toString()).slice(-4000); });
143
+ const decoder = new QwenJsonlDecoder();
144
+ const eventQueue = [];
145
+ const waiters = [];
146
+ let closed = false;
147
+ let closeCode = null;
148
+ let lastEventAt = Date.now();
149
+ const pushEvents = (evs) => {
150
+ for (const ev of evs) {
151
+ const waiter = waiters.shift();
152
+ if (waiter)
153
+ waiter(ev);
154
+ else
155
+ eventQueue.push(ev);
156
+ }
157
+ };
158
+ child.stdout?.on('data', (c) => { lastEventAt = Date.now(); pushEvents(decoder.feed(c.toString())); });
159
+ let processExited = false;
160
+ child.on('close', (code) => { closed = true; processExited = true; closeCode = code; pushEvents([{ type: '__closed__', code }]); });
161
+ child.on('error', (err) => { closed = true; pushEvents([{ type: '__error__', error: err }]); });
162
+ const nextEvent = () => {
163
+ const queued = eventQueue.shift();
164
+ if (queued)
165
+ return Promise.resolve(queued);
166
+ if (closed)
167
+ return Promise.resolve({ type: '__closed__', code: closeCode });
168
+ return new Promise((resolve) => waiters.push(resolve));
169
+ };
170
+ const send = (text) => {
171
+ child.stdin?.write(encodeQwenRpcUserMessage(text));
172
+ };
173
+ const KILL_GRACE_MS = 5000;
174
+ let killTimer;
175
+ const killChild = () => {
176
+ try {
177
+ child.kill('SIGTERM');
178
+ }
179
+ catch { /* already gone */ }
180
+ killTimer = setTimeout(() => { try {
181
+ child.kill('SIGKILL');
182
+ }
183
+ catch { /* already gone */ } }, KILL_GRACE_MS);
184
+ killTimer.unref?.();
185
+ };
186
+ let sawAnyEvent = false;
187
+ let hangTimer = setTimeout(() => {
188
+ if (!sawAnyEvent) {
189
+ closed = true;
190
+ killChild();
191
+ pushEvents([{ type: '__hang__' }]);
192
+ }
193
+ }, STARTUP_GRACE_MS);
194
+ const disarmHang = () => { if (!sawAnyEvent) {
195
+ sawAnyEvent = true;
196
+ if (hangTimer) {
197
+ clearTimeout(hangTimer);
198
+ hangTimer = undefined;
199
+ }
200
+ } };
201
+ // Rolling watchdog — same rationale/pause logic as pi-rpc-runner.ts:
202
+ // paused whenever an org tool call is in flight (ask_human can
203
+ // legitimately block far longer than the silence window) or there's no
204
+ // turn in flight at all (idling on the role's own mailbox is normal).
205
+ let toolCallInFlight = false;
206
+ let turnInFlight = false;
207
+ const MID_SESSION_SILENCE_MS = SETTLE_TIMEOUT_MS;
208
+ const silenceWatchdog = setInterval(() => {
209
+ if (closed || toolCallInFlight || !turnInFlight)
210
+ return;
211
+ if (Date.now() - lastEventAt > MID_SESSION_SILENCE_MS) {
212
+ closed = true;
213
+ killChild();
214
+ pushEvents([{ type: '__hang__' }]);
215
+ }
216
+ }, 30_000);
217
+ silenceWatchdog.unref?.();
218
+ let sessionId;
219
+ try {
220
+ let first = true;
221
+ for await (const p of args.prompt) {
222
+ const text = typeof p === 'string' ? p : (p?.message?.content ?? String(p ?? ''));
223
+ let nextMessage = first ? `${args.systemPrompt}${buildToolProtocol(args.tools)}\n\n---\n\n${text}` : text;
224
+ first = false;
225
+ let turnInputTokens = 0;
226
+ let turnOutputTokens = 0;
227
+ let round = 0;
228
+ turnInFlight = true;
229
+ try {
230
+ turnLoop: for (;;) {
231
+ send(nextMessage);
232
+ const collectedText = [];
233
+ let sawResult = false;
234
+ let resultError;
235
+ for (;;) {
236
+ const ev = await nextEvent();
237
+ disarmHang();
238
+ const kind = ev.type;
239
+ if (kind === '__closed__' || kind === '__error__' || kind === '__hang__') {
240
+ if (kind === '__error__') {
241
+ throw ev.error;
242
+ }
243
+ const hangSuspected = kind === '__hang__';
244
+ throw new Error(hangSuspected
245
+ ? `QwenRpcAgentRunner: qwen produced no output within ${STARTUP_GRACE_MS / 1000}s and was killed. ` +
246
+ 'This usually means it is stuck on a prompt headless mode has no way to answer. Run `qwen` ' +
247
+ `once manually in a real terminal in this project to check, then retry.${stderrTail ? `\nstderr: ${stderrTail.slice(-500)}` : ''}`
248
+ : `QwenRpcAgentRunner: qwen rpc process ended unexpectedly (${kind})` +
249
+ (stderrTail ? `\nstderr: ${stderrTail.slice(-500)}` : ''));
250
+ }
251
+ const evSessionId = ev.session_id;
252
+ if (evSessionId)
253
+ sessionId = evSessionId;
254
+ if (kind === 'assistant') {
255
+ const message = ev.message;
256
+ if (message) {
257
+ const t = extractQwenRpcText(message);
258
+ if (t)
259
+ collectedText.push(t);
260
+ }
261
+ continue;
262
+ }
263
+ if (kind === 'result') {
264
+ sawResult = true;
265
+ const usage = ev.usage;
266
+ if (usage) {
267
+ turnInputTokens += usage.input_tokens ?? 0;
268
+ turnOutputTokens += usage.output_tokens ?? 0;
269
+ }
270
+ if (ev.subtype === 'error') {
271
+ const err = ev.error;
272
+ resultError = typeof err === 'string' ? err : err?.message ?? 'qwen result: error';
273
+ }
274
+ break;
275
+ }
276
+ // system/init and anything else — drained and ignored.
277
+ }
278
+ if (resultError) {
279
+ throw new Error(`QwenRpcAgentRunner: qwen turn failed: ${resultError}` + (stderrTail ? `\nstderr: ${stderrTail.slice(-500)}` : ''));
280
+ }
281
+ if (!sawResult)
282
+ break turnLoop; // process closed before result — nothing to extract this round
283
+ const rawText = collectedText.join('\n');
284
+ const visibleText = rawText.replace(TOOL_CALL_RE, '').trim();
285
+ if (visibleText)
286
+ yield { type: 'assistant', session_id: sessionId, text: visibleText };
287
+ const malformed = [];
288
+ const calls = parseToolCalls([rawText], (raw, err) => malformed.push(`[monomind] ignored malformed tool_call fence (${err}): ${raw.slice(0, 200)}`));
289
+ for (const note of malformed)
290
+ yield { type: 'assistant', session_id: sessionId, text: note };
291
+ if (calls.length === 0)
292
+ break turnLoop;
293
+ round += 1;
294
+ if (round > MAX_TOOL_ROUNDS) {
295
+ yield { type: 'assistant', session_id: sessionId, text: `[monomind] tool-call round cap (${MAX_TOOL_ROUNDS}) reached — dropping ${calls.length} pending tool call(s)` };
296
+ break turnLoop;
297
+ }
298
+ toolCallInFlight = true;
299
+ const results = [];
300
+ try {
301
+ for (const call of calls)
302
+ results.push(await executeToolCall(args.tools, call, args.canUseTool));
303
+ }
304
+ finally {
305
+ toolCallInFlight = false;
306
+ lastEventAt = Date.now();
307
+ }
308
+ nextMessage = formatToolResults(calls, results);
309
+ }
310
+ }
311
+ finally {
312
+ turnInFlight = false;
313
+ }
314
+ yield {
315
+ type: 'result',
316
+ session_id: sessionId,
317
+ subtype: 'success',
318
+ input_tokens: turnInputTokens,
319
+ output_tokens: turnOutputTokens,
320
+ };
321
+ }
322
+ }
323
+ catch (err) {
324
+ if (err.code === 'ENOENT') {
325
+ throw new Error('QwenRpcAgentRunner requires the Qwen Code CLI (qwen) on PATH. ' +
326
+ 'Install it: npm install -g @qwen-code/qwen-code, then run `qwen` once ' +
327
+ 'to authenticate. Or unset the runtime to use Claude.');
328
+ }
329
+ throw err;
330
+ }
331
+ finally {
332
+ if (hangTimer)
333
+ clearTimeout(hangTimer);
334
+ clearInterval(silenceWatchdog);
335
+ if (processExited) {
336
+ if (killTimer)
337
+ clearTimeout(killTimer);
338
+ }
339
+ else {
340
+ if (!killTimer)
341
+ killChild();
342
+ }
343
+ }
344
+ }
345
+ }
346
+ //# sourceMappingURL=qwen-rpc-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-rpc-runner.js","sourceRoot":"","sources":["../../../src/orgrt/qwen-rpc-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/qwen-runner.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAqCjF;4EAC4E;AAC5E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACpH,CAqCA;AAED,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,OAAO,CAAC;IAA5B,YAAoB,OAAO,CAAC,EAAE,MAAM,YAAA,EAAI;IAEjC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAsF1D;IAED,OAAO,CAAC,OAAO;CAgGhB"}
1
+ {"version":3,"file":"qwen-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/qwen-runner.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAyCjF;4EAC4E;AAC5E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACpH,CAoCA;AAED,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,OAAO,CAAC;IAA5B,YAAoB,OAAO,CAAC,EAAE,MAAM,YAAA,EAAI;IAEjC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAsF1D;IAED,OAAO,CAAC,OAAO;CAgGhB"}
@@ -12,14 +12,18 @@
12
12
  * Org tools — FENCE PROTOCOL: same approach as the other subprocess runners
13
13
  * (see tool-fence.ts).
14
14
  *
15
- * Subprocess protocol — per Qwen Code's public "Headless Mode" docs, NOT
16
- * byte-verified against a running binary:
15
+ * Subprocess protocol — LIVE-VERIFIED against qwen-code v0.21.13 (issue
16
+ * #182 investigation; z.ai/GLM-5.3 as the OpenAI-compatible backend, `qwen
17
+ * --auth-type openai` + `OPENAI_API_KEY`/`OPENAI_BASE_URL`/`OPENAI_MODEL`):
17
18
  * - Invocation: `qwen -p "<prompt>" --output-format stream-json --yolo
18
19
  * [-m <model>] [--resume <sessionId> | --continue]`
19
- * - stream-json emits one JSON object per line; documented shape:
20
+ * - stream-json emits one JSON object per line; CONFIRMED shape (the
21
+ * public docs' `usage.tokens.{input,output}` nesting does NOT match
22
+ * live output — real usage fields are flat):
20
23
  * { type: 'system'|'assistant'|'result', subtype, uuid, session_id,
21
24
  * role: 'assistant',
22
- * message: { content: [{type:'text', text}], usage: { tokens: { input, output, total } } } }
25
+ * message: { content: [{type:'text', text}],
26
+ * usage: { input_tokens, output_tokens, cache_read_input_tokens, total_tokens } } }
23
27
  * - Session continuity: `--resume [sessionId]` resumes a specific session,
24
28
  * `--continue` resumes the most recent one; `session_id` is carried on
25
29
  * every event.
@@ -65,10 +69,9 @@ export function parseQwenEvents(lines) {
65
69
  rawTexts.push(text);
66
70
  }
67
71
  if (ev.type === 'result') {
68
- const tokens = ev.message?.usage?.tokens;
69
- if (tokens) {
70
- inputTokens = tokens.input ?? 0;
71
- outputTokens = tokens.output ?? 0;
72
+ if (ev.usage) {
73
+ inputTokens = ev.usage.input_tokens ?? 0;
74
+ outputTokens = ev.usage.output_tokens ?? 0;
72
75
  }
73
76
  if (ev.subtype === 'error') {
74
77
  error = typeof ev.error === 'string' ? ev.error : ev.error?.message ?? 'qwen result: error';