@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
@@ -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
@@ -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
  }
@@ -1135,13 +1158,29 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
1135
1158
  total_cost_usd: s.total_cost_usd || 0,
1136
1159
  }));
1137
1160
  } catch(_) {}
1138
- // 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.
1139
1168
  const _hasTokenData = agents.some(a => a.tokens_in > 0 || a.tokens_out > 0 || a.total_cost_usd > 0);
1140
1169
  if (!_hasTokenData) {
1141
1170
  try {
1142
1171
  const _runsDir = path.join(base, orgName, 'runs');
1143
1172
  if (fs.existsSync(_runsDir)) {
1144
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
+ };
1145
1184
  for (const f of fs.readdirSync(_runsDir)) {
1146
1185
  if (!f.endsWith('.jsonl') || f.startsWith('._')) continue;
1147
1186
  const lines = fs.readFileSync(path.join(_runsDir, f), 'utf8').split('\n').filter(Boolean);
@@ -1149,11 +1188,9 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
1149
1188
  try {
1150
1189
  const ev = JSON.parse(l);
1151
1190
  if (ev.type === 'agent:usage' && ev.role) {
1152
- const role = String(ev.role).trim();
1153
- if (!_usageByRole[role]) _usageByRole[role] = { tokens_in: 0, tokens_out: 0, total_cost_usd: 0 };
1154
- _usageByRole[role].tokens_in += Number(ev.tokens_in) || 0;
1155
- _usageByRole[role].tokens_out += Number(ev.tokens_out) || 0;
1156
- _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);
1157
1194
  }
1158
1195
  } catch(_) {}
1159
1196
  }
@@ -1162,7 +1199,13 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
1162
1199
  // Merge usage into agents list; preserve role titles
1163
1200
  agents = agents.map(a => {
1164
1201
  const u = _usageByRole[a.id] || {};
1165
- 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
+ };
1166
1209
  });
1167
1210
  // Add any roles that appeared in events but aren't in config
1168
1211
  for (const [role, u] of Object.entries(_usageByRole)) {
@@ -2198,21 +2241,21 @@ if (req.method === 'POST' && url === '/api/knowledge/search') {
2198
2241
  return true;
2199
2242
  }
2200
2243
 
2201
- // 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
2202
2245
  if (req.method === 'GET' && url === '/api/mastermind/metrics') {
2203
2246
  try {
2204
2247
  const base = path.join(ctx.projectDir || process.cwd(), '.monomind', 'metrics');
2205
- let tokens = {}, swarm = {}, events = [];
2248
+ let tokens = {}, monoswarm = {}, events = [];
2206
2249
  try { tokens = JSON.parse(fs.readFileSync(path.join(base, 'token-summary.json'), 'utf8')); } catch(_) {}
2207
- 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(_) {}
2208
2251
  try {
2209
2252
  const evPath = path.join(ctx.projectDir || process.cwd(), 'data', 'mastermind-events.jsonl');
2210
2253
  const lines = fs.readFileSync(evPath, 'utf8').split('\n').filter(l => l.trim()).slice(-20);
2211
2254
  events = lines.map(l => { try { return JSON.parse(l); } catch(_) { return null; } }).filter(Boolean);
2212
2255
  } catch(_) {}
2213
2256
  res.writeHead(200, { 'Content-Type': 'application/json' });
2214
- res.end(JSON.stringify({ tokens, swarm, recentEvents: events }));
2215
- } 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":[]}'); }
2216
2259
  return true;
2217
2260
  }
2218
2261
 
@@ -43,10 +43,7 @@ const buildDocsState = new Map();
43
43
 
44
44
  // Pricing per token (mirrors token-tracker.cjs FALLBACK_PRICING)
45
45
  const _SJ_PRICING = {
46
- 'claude-fable-5': { in: 10e-6, out: 50e-6, cw: 12.5e-6, cr: 1e-6 },
47
- 'claude-mythos-5': { in: 10e-6, out: 50e-6, cw: 12.5e-6, cr: 1e-6 },
48
46
  'claude-opus-5': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
49
- 'claude-opus-4-8': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
50
47
  'claude-opus-4-7': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
51
48
  'claude-opus-4-6': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
52
49
  'claude-opus-4-5': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
@@ -873,6 +870,15 @@ function bindServer(server, port) {
873
870
  const _slugPathCache = new Map();
874
871
  const _MAX_SLUG_CACHE = 200;
875
872
 
873
+ // Inverse of resolveSlugToPath: absolute path -> ~/.claude/projects/<slug>
874
+ // dir name. Claude Code's slug replaces every path separator AND the
875
+ // Windows drive-letter colon with '-' (e.g. "C:\Users\x" -> "C--Users-x")
876
+ // — replacing only '/' leaves Windows paths (all-backslash) completely
877
+ // untouched, so every dir= lookup 404s and every project shows 0 sessions.
878
+ function pathToSlug(d) {
879
+ return String(d).replace(/[\\/:]/g, '-');
880
+ }
881
+
876
882
  function resolveSlugToPath(slug, projDir) {
877
883
  if (_slugPathCache.has(slug)) return _slugPathCache.get(slug);
878
884
  const resolved = _resolveSlugToPathUncached(slug, projDir);
@@ -924,7 +930,10 @@ function _resolveSlugToPathUncached(slug, projDir) {
924
930
  .find((l) => l.includes('"cwd"'));
925
931
  if (line) {
926
932
  const m = line.match(/"cwd"\s*:\s*"([^"]+)"/);
927
- if (m?.[1]) return m[1];
933
+ // m[1] is the raw JSON-escaped text between the quotes (e.g. a
934
+ // Windows path's backslashes still escaped as \\) — unescape it
935
+ // properly instead of returning the escaped literal.
936
+ if (m?.[1]) { try { return JSON.parse(`"${m[1]}"`); } catch { return m[1]; } }
928
937
  }
929
938
  } catch {}
930
939
  }
@@ -1278,10 +1287,19 @@ export async function startServer({
1278
1287
  fs.mkdirSync(_runDir, { recursive: true });
1279
1288
  await appendToFile(path.join(_runDir, `${_rid}.jsonl`), JSON.stringify(event) + '\n');
1280
1289
  _insertRunEvent(event, 'http');
1281
- // agent:usage — persist per-role token/cost data to state.json (accumulated across runs)
1282
- if (event.type === 'agent:usage' && event.role) {
1290
+ // Usage accumulation — persist per-role token/cost data to state.json (accumulated
1291
+ // across runs). Real producers emit two distinct shapes and both must be handled:
1292
+ // - 'agent:usage': flattened { role, tokens_in, tokens_out, cost_usd } (legacy/direct).
1293
+ // - 'org:usage': orgrt's actual forwarded shape (attachForwarder's translate(), the
1294
+ // default case for a raw OrgBus 'usage' event) — { from, data: { tokens, cost_usd } }.
1295
+ // orgrt never emits 'agent:usage' itself, so without this branch real v2 cost data
1296
+ // never reaches state.json even though the UI displays it as if it did.
1297
+ const _usageRole = event.type === 'agent:usage' ? event.role
1298
+ : event.type === 'org:usage' ? event.from
1299
+ : null;
1300
+ if (_usageRole) {
1283
1301
  try {
1284
- const _arole = String(event.role).trim();
1302
+ const _arole = String(_usageRole).trim();
1285
1303
  if (
1286
1304
  _arole.length > 0 &&
1287
1305
  _arole.length <= 64 &&
@@ -1294,11 +1312,20 @@ export async function startServer({
1294
1312
  } catch (_e) {}
1295
1313
  if (!_st.agents) _st.agents = {};
1296
1314
  const _ex = _st.agents[_arole] || {};
1315
+ const _tokensIn = event.type === 'agent:usage' ? (Number(event.tokens_in) || 0) : 0;
1316
+ const _tokensOut = event.type === 'agent:usage' ? (Number(event.tokens_out) || 0) : 0;
1317
+ // 'org:usage' carries a single total (data.tokens), not an in/out split —
1318
+ // counted toward tokens_used so the budget total still reflects it honestly.
1319
+ const _tokensTotal = event.type === 'org:usage' ? (Number(event.data?.tokens) || 0) : 0;
1320
+ const _costUsd = event.type === 'agent:usage'
1321
+ ? (Number(event.cost_usd) || 0)
1322
+ : (Number(event.data?.cost_usd) || 0);
1297
1323
  _st.agents[_arole] = {
1298
1324
  ..._ex,
1299
- tokens_in: (_ex.tokens_in || 0) + (Number(event.tokens_in) || 0),
1300
- tokens_out: (_ex.tokens_out || 0) + (Number(event.tokens_out) || 0),
1301
- total_cost_usd: (_ex.total_cost_usd || 0) + (Number(event.cost_usd) || 0),
1325
+ tokens_in: (_ex.tokens_in || 0) + _tokensIn,
1326
+ tokens_out: (_ex.tokens_out || 0) + _tokensOut,
1327
+ tokens_used: (_ex.tokens_used || 0) + _tokensIn + _tokensOut + _tokensTotal,
1328
+ total_cost_usd: (_ex.total_cost_usd || 0) + _costUsd,
1302
1329
  lastUpdated: event.ts,
1303
1330
  };
1304
1331
  fs.writeFileSync(_stateFile, JSON.stringify(_st, null, 2));
@@ -1989,7 +2016,7 @@ export async function startServer({
1989
2016
  const qs = new URL(req.url, 'http://localhost').searchParams;
1990
2017
  const dir = qs.get('dir') || projectDir || process.cwd();
1991
2018
  const d = path.resolve(dir || process.cwd());
1992
- const slug = d.replace(/\//g, '-');
2019
+ const slug = pathToSlug(d);
1993
2020
  const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
1994
2021
 
1995
2022
  let sessionFiles = [];
@@ -2162,7 +2189,7 @@ export async function startServer({
2162
2189
  }
2163
2190
  try {
2164
2191
  const d = path.resolve(dir || process.cwd());
2165
- const slug = d.replace(/\//g, '-');
2192
+ const slug = pathToSlug(d);
2166
2193
  const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
2167
2194
  let sessionFiles = [];
2168
2195
  try {
@@ -2236,7 +2263,7 @@ export async function startServer({
2236
2263
  const dir = qs.get('dir') || projectDir || process.cwd();
2237
2264
  const limit = Math.min(parseInt(qs.get('limit') || '50', 10), 200);
2238
2265
  const d = path.resolve(dir || process.cwd());
2239
- const slug = d.replace(/\//g, '-');
2266
+ const slug = pathToSlug(d);
2240
2267
  const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
2241
2268
  let sessionFiles = [];
2242
2269
  try {
@@ -2327,7 +2354,7 @@ export async function startServer({
2327
2354
  const qs = new URL(req.url, 'http://localhost').searchParams;
2328
2355
  const dir = qs.get('dir') || projectDir || process.cwd();
2329
2356
  const d = path.resolve(dir || process.cwd());
2330
- const slug = d.replace(/\//g, '-');
2357
+ const slug = pathToSlug(d);
2331
2358
  const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
2332
2359
  let sessionFiles = [];
2333
2360
  try {
@@ -2401,7 +2428,7 @@ export async function startServer({
2401
2428
  const qs = new URL(req.url, 'http://localhost').searchParams;
2402
2429
  const dir = qs.get('dir') || projectDir || process.cwd();
2403
2430
  const d = path.resolve(dir || process.cwd());
2404
- const slug = d.replace(/\//g, '-');
2431
+ const slug = pathToSlug(d);
2405
2432
  const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
2406
2433
  let sessionFiles = [];
2407
2434
  try {
@@ -2554,7 +2581,7 @@ export async function startServer({
2554
2581
  const projDir = path.join(projectsBase, slug);
2555
2582
  const projPath = resolveSlugToPath(slug, projDir);
2556
2583
  const name =
2557
- projPath.split('/').filter(Boolean).pop() ||
2584
+ path.basename(projPath) ||
2558
2585
  slug.split('-').filter(Boolean).pop() ||
2559
2586
  slug;
2560
2587
  let sessionCount = 0;
@@ -2925,7 +2952,7 @@ export async function startServer({
2925
2952
  const dir = qs.get('dir') || projectDir || process.cwd();
2926
2953
  const d = path.resolve(dir || process.cwd());
2927
2954
  const homeDir = os.homedir();
2928
- const slug = d.replace(/\//g, '-');
2955
+ const slug = pathToSlug(d);
2929
2956
  const memDir = path.join(homeDir, '.claude', 'projects', slug, 'memory');
2930
2957
 
2931
2958
  let files = [];
@@ -3027,7 +3054,7 @@ export async function startServer({
3027
3054
  try {
3028
3055
  const qs = new URL(req.url, 'http://localhost').searchParams;
3029
3056
  const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
3030
- const slug = d.replace(/\//g, '-');
3057
+ const slug = pathToSlug(d);
3031
3058
  const memDir = path.join(os.homedir(), '.claude', 'projects', slug, 'memory');
3032
3059
  const { filename, content } = JSON.parse(body);
3033
3060
  if (
@@ -3075,7 +3102,7 @@ export async function startServer({
3075
3102
  try {
3076
3103
  const qs = new URL(req.url, 'http://localhost').searchParams;
3077
3104
  const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
3078
- const slug = d.replace(/\//g, '-');
3105
+ const slug = pathToSlug(d);
3079
3106
  const memDir = path.join(os.homedir(), '.claude', 'projects', slug, 'memory');
3080
3107
  const { filename } = JSON.parse(body);
3081
3108
  if (
@@ -3146,7 +3173,7 @@ export async function startServer({
3146
3173
  try {
3147
3174
  const qs = new URL(req.url, 'http://localhost').searchParams;
3148
3175
  const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
3149
- const slug = d.replace(/\//g, '-');
3176
+ const slug = pathToSlug(d);
3150
3177
  const memDir = path.join(os.homedir(), '.claude', 'projects', slug, 'memory');
3151
3178
 
3152
3179
  let total = 0,
@@ -3452,7 +3479,7 @@ export async function startServer({
3452
3479
  // Try to extract ScheduleWakeup context from session JSONL
3453
3480
  let loopEntry = null;
3454
3481
  try {
3455
- const escaped = cwd.replace(/\//g, '-');
3482
+ const escaped = pathToSlug(cwd);
3456
3483
  const sessionFile = path.join(
3457
3484
  os.homedir(),
3458
3485
  '.claude',
@@ -3681,7 +3708,7 @@ export async function startServer({
3681
3708
  // match against every filename when sessionId is a very long string.
3682
3709
  const _rawSessId = qs.get('id') || '';
3683
3710
  const sessionId = _rawSessId.slice(0, 256);
3684
- const slug = d.replace(/\//g, '-');
3711
+ const slug = pathToSlug(d);
3685
3712
  const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
3686
3713
  try {
3687
3714
  const files = fs
@@ -3753,7 +3780,7 @@ export async function startServer({
3753
3780
  if (req.method === 'GET' && url.startsWith('/api/events-stream')) {
3754
3781
  const qs = new URL(req.url, 'http://localhost').searchParams;
3755
3782
  const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
3756
- const slug = d.replace(/\//g, '-');
3783
+ const slug = pathToSlug(d);
3757
3784
  const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
3758
3785
  res.writeHead(200, {
3759
3786
  'Content-Type': 'text/event-stream',
@@ -41,4 +41,16 @@ export declare function readJsonStoreOrNull<T>(filePath: string, emptyDefault: T
41
41
  * collisions), then renames into place. Ensures the directory exists.
42
42
  */
43
43
  export declare function writeJsonFileAtomic(filePath: string, data: unknown, pretty?: boolean): void;
44
+ /**
45
+ * Merge `incoming` records into `existing` by `id`, keeping existing records
46
+ * in place and appending only the ones not already present. Shared by
47
+ * `hooks intelligence import` (file pattern import) and `hooks transfer`
48
+ * (cross-project pattern transfer) so both use one dedupe rule.
49
+ */
50
+ export declare function mergeRecordsById<T extends {
51
+ id: string;
52
+ }>(existing: T[], incoming: T[]): {
53
+ merged: T[];
54
+ added: T[];
55
+ };
44
56
  //# sourceMappingURL=json-file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,EACX,QAAQ,SAAmB,GAC1B,CAAC,CAUH;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,CAAC,GAAG,IAAI,CAWV;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,UAAO,GACZ,IAAI,CASN"}
1
+ {"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,EACX,QAAQ,SAAmB,GAC1B,CAAC,CAUH;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,CAAC,GAAG,IAAI,CAWV;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,UAAO,GACZ,IAAI,CASN;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACvD,QAAQ,EAAE,CAAC,EAAE,EACb,QAAQ,EAAE,CAAC,EAAE,GACZ;IAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAA;CAAE,CAI7B"}
@@ -81,4 +81,15 @@ export function writeJsonFileAtomic(filePath, data, pretty = true) {
81
81
  writeFileSync(tmp, content, 'utf-8');
82
82
  renameSync(tmp, filePath);
83
83
  }
84
+ /**
85
+ * Merge `incoming` records into `existing` by `id`, keeping existing records
86
+ * in place and appending only the ones not already present. Shared by
87
+ * `hooks intelligence import` (file pattern import) and `hooks transfer`
88
+ * (cross-project pattern transfer) so both use one dedupe rule.
89
+ */
90
+ export function mergeRecordsById(existing, incoming) {
91
+ const existingIds = new Set(existing.map((r) => r.id));
92
+ const added = incoming.filter((r) => !existingIds.has(r.id));
93
+ return { merged: [...existing, ...added], added };
94
+ }
84
95
  //# sourceMappingURL=json-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAQ,MAAM,MAAM,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,QAAW,EACX,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,YAAe,EACf,KAAa,EACb,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,YAAY,CAAC;QAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAC;QAChE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACnH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,mDAAmD,EAAE,CAAC,CAAC,CAAC;QACpI,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,IAAa,EACb,MAAM,GAAG,IAAI;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAC3D,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAQ,MAAM,MAAM,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,QAAW,EACX,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,YAAe,EACf,KAAa,EACb,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,YAAY,CAAC;QAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAC;QAChE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACnH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,mDAAmD,EAAE,CAAC,CAAC,CAAC;QACpI,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,IAAa,EACb,MAAM,GAAG,IAAI;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAC3D,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAa,EACb,QAAa;IAEb,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AACpD,CAAC"}