@monoes/monomindcli 2.16.12 → 2.16.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/engineering/engineering-devops-automator.md +1 -1
  3. package/.claude/agents/github/repo-architect.md +1 -1
  4. package/.claude/agents/testing/production-validator.md +1 -1
  5. package/.claude/agents/testing/testing-tool-evaluator.md +1 -1
  6. package/.claude/commands/github/pr-manager.md +1 -1
  7. package/.claude/helpers/pick-rank.cjs +34 -4
  8. package/.claude/skills/monolean-audit/SKILL.md +1 -1
  9. package/README.md +1 -1
  10. package/dist/src/commands/cleanup-data.d.ts +30 -0
  11. package/dist/src/commands/cleanup-data.d.ts.map +1 -0
  12. package/dist/src/commands/cleanup-data.js +138 -0
  13. package/dist/src/commands/cleanup-data.js.map +1 -0
  14. package/dist/src/commands/cleanup-scratch.d.ts +43 -0
  15. package/dist/src/commands/cleanup-scratch.d.ts.map +1 -0
  16. package/dist/src/commands/cleanup-scratch.js +125 -0
  17. package/dist/src/commands/cleanup-scratch.js.map +1 -0
  18. package/dist/src/commands/cleanup.d.ts +2 -39
  19. package/dist/src/commands/cleanup.d.ts.map +1 -1
  20. package/dist/src/commands/cleanup.js +5 -247
  21. package/dist/src/commands/cleanup.js.map +1 -1
  22. package/dist/src/commands/doctor-gitignore-checks.d.ts +10 -0
  23. package/dist/src/commands/doctor-gitignore-checks.d.ts.map +1 -0
  24. package/dist/src/commands/doctor-gitignore-checks.js +141 -0
  25. package/dist/src/commands/doctor-gitignore-checks.js.map +1 -0
  26. package/dist/src/commands/doctor-helpers-checks.d.ts +10 -0
  27. package/dist/src/commands/doctor-helpers-checks.d.ts.map +1 -0
  28. package/dist/src/commands/doctor-helpers-checks.js +292 -0
  29. package/dist/src/commands/doctor-helpers-checks.js.map +1 -0
  30. package/dist/src/commands/doctor-memory-checks.d.ts +47 -0
  31. package/dist/src/commands/doctor-memory-checks.d.ts.map +1 -0
  32. package/dist/src/commands/doctor-memory-checks.js +298 -0
  33. package/dist/src/commands/doctor-memory-checks.js.map +1 -0
  34. package/dist/src/commands/doctor-monograph-checks.d.ts +9 -0
  35. package/dist/src/commands/doctor-monograph-checks.d.ts.map +1 -0
  36. package/dist/src/commands/doctor-monograph-checks.js +331 -0
  37. package/dist/src/commands/doctor-monograph-checks.js.map +1 -0
  38. package/dist/src/commands/doctor-project-checks.d.ts +7 -66
  39. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  40. package/dist/src/commands/doctor-project-checks.js +10 -1331
  41. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  42. package/dist/src/commands/doctor-routing-checks.d.ts +10 -0
  43. package/dist/src/commands/doctor-routing-checks.d.ts.map +1 -0
  44. package/dist/src/commands/doctor-routing-checks.js +194 -0
  45. package/dist/src/commands/doctor-routing-checks.js.map +1 -0
  46. package/dist/src/commands/doctor-worker-checks.d.ts +17 -0
  47. package/dist/src/commands/doctor-worker-checks.d.ts.map +1 -0
  48. package/dist/src/commands/doctor-worker-checks.js +122 -0
  49. package/dist/src/commands/doctor-worker-checks.js.map +1 -0
  50. package/dist/src/commands/hooks-routing-commands.js +1 -1
  51. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  52. package/dist/src/commands/init.d.ts.map +1 -1
  53. package/dist/src/commands/init.js +6 -15
  54. package/dist/src/commands/init.js.map +1 -1
  55. package/dist/src/commands/org-control.d.ts +117 -0
  56. package/dist/src/commands/org-control.d.ts.map +1 -0
  57. package/dist/src/commands/org-control.js +274 -0
  58. package/dist/src/commands/org-control.js.map +1 -0
  59. package/dist/src/commands/org-lifecycle.d.ts +7 -0
  60. package/dist/src/commands/org-lifecycle.d.ts.map +1 -0
  61. package/dist/src/commands/org-lifecycle.js +298 -0
  62. package/dist/src/commands/org-lifecycle.js.map +1 -0
  63. package/dist/src/commands/org-manage.d.ts +7 -0
  64. package/dist/src/commands/org-manage.d.ts.map +1 -0
  65. package/dist/src/commands/org-manage.js +357 -0
  66. package/dist/src/commands/org-manage.js.map +1 -0
  67. package/dist/src/commands/org-memory-command.d.ts +3 -0
  68. package/dist/src/commands/org-memory-command.d.ts.map +1 -0
  69. package/dist/src/commands/org-memory-command.js +178 -0
  70. package/dist/src/commands/org-memory-command.js.map +1 -0
  71. package/dist/src/commands/org-observe-approvals.d.ts +8 -0
  72. package/dist/src/commands/org-observe-approvals.d.ts.map +1 -0
  73. package/dist/src/commands/org-observe-approvals.js +211 -0
  74. package/dist/src/commands/org-observe-approvals.js.map +1 -0
  75. package/dist/src/commands/org-observe-checkpoint.d.ts +26 -0
  76. package/dist/src/commands/org-observe-checkpoint.d.ts.map +1 -0
  77. package/dist/src/commands/org-observe-checkpoint.js +180 -0
  78. package/dist/src/commands/org-observe-checkpoint.js.map +1 -0
  79. package/dist/src/commands/org-observe-config.d.ts +8 -0
  80. package/dist/src/commands/org-observe-config.d.ts.map +1 -0
  81. package/dist/src/commands/org-observe-config.js +160 -0
  82. package/dist/src/commands/org-observe-config.js.map +1 -0
  83. package/dist/src/commands/org-observe-gates.d.ts +4 -0
  84. package/dist/src/commands/org-observe-gates.d.ts.map +1 -0
  85. package/dist/src/commands/org-observe-gates.js +182 -0
  86. package/dist/src/commands/org-observe-gates.js.map +1 -0
  87. package/dist/src/commands/org-observe-inbox.d.ts +18 -0
  88. package/dist/src/commands/org-observe-inbox.d.ts.map +1 -0
  89. package/dist/src/commands/org-observe-inbox.js +154 -0
  90. package/dist/src/commands/org-observe-inbox.js.map +1 -0
  91. package/dist/src/commands/org-observe-logs.d.ts +31 -0
  92. package/dist/src/commands/org-observe-logs.d.ts.map +1 -0
  93. package/dist/src/commands/org-observe-logs.js +272 -0
  94. package/dist/src/commands/org-observe-logs.js.map +1 -0
  95. package/dist/src/commands/org-observe-questions.d.ts +8 -0
  96. package/dist/src/commands/org-observe-questions.d.ts.map +1 -0
  97. package/dist/src/commands/org-observe-questions.js +201 -0
  98. package/dist/src/commands/org-observe-questions.js.map +1 -0
  99. package/dist/src/commands/org-observe-report.d.ts +8 -0
  100. package/dist/src/commands/org-observe-report.d.ts.map +1 -0
  101. package/dist/src/commands/org-observe-report.js +366 -0
  102. package/dist/src/commands/org-observe-report.js.map +1 -0
  103. package/dist/src/commands/org-observe-shared.d.ts +20 -0
  104. package/dist/src/commands/org-observe-shared.d.ts.map +1 -0
  105. package/dist/src/commands/org-observe-shared.js +55 -0
  106. package/dist/src/commands/org-observe-shared.js.map +1 -0
  107. package/dist/src/commands/org-observe.d.ts +9 -101
  108. package/dist/src/commands/org-observe.d.ts.map +1 -1
  109. package/dist/src/commands/org-observe.js +12 -1675
  110. package/dist/src/commands/org-observe.js.map +1 -1
  111. package/dist/src/commands/org-poll.d.ts +57 -0
  112. package/dist/src/commands/org-poll.d.ts.map +1 -0
  113. package/dist/src/commands/org-poll.js +194 -0
  114. package/dist/src/commands/org-poll.js.map +1 -0
  115. package/dist/src/commands/org-run.d.ts +3 -0
  116. package/dist/src/commands/org-run.d.ts.map +1 -0
  117. package/dist/src/commands/org-run.js +449 -0
  118. package/dist/src/commands/org-run.js.map +1 -0
  119. package/dist/src/commands/org-serve.d.ts +19 -0
  120. package/dist/src/commands/org-serve.d.ts.map +1 -0
  121. package/dist/src/commands/org-serve.js +395 -0
  122. package/dist/src/commands/org-serve.js.map +1 -0
  123. package/dist/src/commands/org-subcommands-config.d.ts +8 -0
  124. package/dist/src/commands/org-subcommands-config.d.ts.map +1 -0
  125. package/dist/src/commands/org-subcommands-config.js +93 -0
  126. package/dist/src/commands/org-subcommands-config.js.map +1 -0
  127. package/dist/src/commands/org-subcommands-hil.d.ts +11 -0
  128. package/dist/src/commands/org-subcommands-hil.d.ts.map +1 -0
  129. package/dist/src/commands/org-subcommands-hil.js +216 -0
  130. package/dist/src/commands/org-subcommands-hil.js.map +1 -0
  131. package/dist/src/commands/org-subcommands-observe.d.ts +12 -0
  132. package/dist/src/commands/org-subcommands-observe.d.ts.map +1 -0
  133. package/dist/src/commands/org-subcommands-observe.js +249 -0
  134. package/dist/src/commands/org-subcommands-observe.js.map +1 -0
  135. package/dist/src/commands/org-subcommands-runtime.d.ts +12 -0
  136. package/dist/src/commands/org-subcommands-runtime.d.ts.map +1 -0
  137. package/dist/src/commands/org-subcommands-runtime.js +163 -0
  138. package/dist/src/commands/org-subcommands-runtime.js.map +1 -0
  139. package/dist/src/commands/org.d.ts +3 -151
  140. package/dist/src/commands/org.d.ts.map +1 -1
  141. package/dist/src/commands/org.js +43 -2735
  142. package/dist/src/commands/org.js.map +1 -1
  143. package/dist/src/index.js +2 -2
  144. package/dist/src/index.js.map +1 -1
  145. package/dist/src/init/never-commit.d.ts +3 -3
  146. package/dist/src/init/types.d.ts +1 -1
  147. package/dist/src/init/types.js +1 -1
  148. package/dist/src/knowledge/document-store.js +1 -1
  149. package/dist/src/knowledge/document-store.js.map +1 -1
  150. package/dist/src/mcp-tools/hooks-edit-command.d.ts +10 -0
  151. package/dist/src/mcp-tools/hooks-edit-command.d.ts.map +1 -0
  152. package/dist/src/mcp-tools/hooks-edit-command.js +247 -0
  153. package/dist/src/mcp-tools/hooks-edit-command.js.map +1 -0
  154. package/dist/src/mcp-tools/hooks-learning.d.ts +9 -0
  155. package/dist/src/mcp-tools/hooks-learning.d.ts.map +1 -0
  156. package/dist/src/mcp-tools/hooks-learning.js +408 -0
  157. package/dist/src/mcp-tools/hooks-learning.js.map +1 -0
  158. package/dist/src/mcp-tools/hooks-metrics-list.d.ts +8 -0
  159. package/dist/src/mcp-tools/hooks-metrics-list.d.ts.map +1 -0
  160. package/dist/src/mcp-tools/hooks-metrics-list.js +205 -0
  161. package/dist/src/mcp-tools/hooks-metrics-list.js.map +1 -0
  162. package/dist/src/mcp-tools/hooks-route.d.ts +12 -0
  163. package/dist/src/mcp-tools/hooks-route.d.ts.map +1 -0
  164. package/dist/src/mcp-tools/hooks-route.js +251 -0
  165. package/dist/src/mcp-tools/hooks-route.js.map +1 -0
  166. package/dist/src/mcp-tools/hooks-routing.d.ts +6 -27
  167. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  168. package/dist/src/mcp-tools/hooks-routing.js +6 -1727
  169. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  170. package/dist/src/mcp-tools/hooks-session.d.ts +9 -0
  171. package/dist/src/mcp-tools/hooks-session.d.ts.map +1 -0
  172. package/dist/src/mcp-tools/hooks-session.js +243 -0
  173. package/dist/src/mcp-tools/hooks-session.js.map +1 -0
  174. package/dist/src/mcp-tools/hooks-task.d.ts +17 -0
  175. package/dist/src/mcp-tools/hooks-task.d.ts.map +1 -0
  176. package/dist/src/mcp-tools/hooks-task.js +427 -0
  177. package/dist/src/mcp-tools/hooks-task.js.map +1 -0
  178. package/dist/src/mcp-tools/hooks-tools.d.ts +2 -1
  179. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  180. package/dist/src/mcp-tools/hooks-tools.js +2 -1
  181. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  182. package/dist/src/mcp-tools/memory-tools.js +1 -1
  183. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  184. package/dist/src/memory/bm25-index.d.ts +2 -2
  185. package/dist/src/memory/bm25-index.js +2 -2
  186. package/dist/src/memory/embedding-operations.js +2 -2
  187. package/dist/src/memory/embedding-operations.js.map +1 -1
  188. package/dist/src/memory/entity-name-key.d.ts +1 -1
  189. package/dist/src/memory/entity-name-key.js +1 -1
  190. package/dist/src/memory/hnsw-operations.d.ts +1 -1
  191. package/dist/src/memory/hnsw-operations.js +1 -1
  192. package/dist/src/memory/memory-bridge-backend.d.ts +43 -0
  193. package/dist/src/memory/memory-bridge-backend.d.ts.map +1 -0
  194. package/dist/src/memory/memory-bridge-backend.js +363 -0
  195. package/dist/src/memory/memory-bridge-backend.js.map +1 -0
  196. package/dist/src/memory/memory-bridge-core.d.ts +42 -0
  197. package/dist/src/memory/memory-bridge-core.d.ts.map +1 -0
  198. package/dist/src/memory/memory-bridge-core.js +126 -0
  199. package/dist/src/memory/memory-bridge-core.js.map +1 -0
  200. package/dist/src/memory/memory-bridge-entries.d.ts +131 -0
  201. package/dist/src/memory/memory-bridge-entries.d.ts.map +1 -0
  202. package/dist/src/memory/memory-bridge-entries.js +227 -0
  203. package/dist/src/memory/memory-bridge-entries.js.map +1 -0
  204. package/dist/src/memory/memory-bridge-feedback.d.ts +60 -0
  205. package/dist/src/memory/memory-bridge-feedback.d.ts.map +1 -0
  206. package/dist/src/memory/memory-bridge-feedback.js +118 -0
  207. package/dist/src/memory/memory-bridge-feedback.js.map +1 -0
  208. package/dist/src/memory/memory-bridge-paths.d.ts +123 -0
  209. package/dist/src/memory/memory-bridge-paths.d.ts.map +1 -0
  210. package/dist/src/memory/memory-bridge-paths.js +335 -0
  211. package/dist/src/memory/memory-bridge-paths.js.map +1 -0
  212. package/dist/src/memory/memory-bridge-search.d.ts +48 -0
  213. package/dist/src/memory/memory-bridge-search.d.ts.map +1 -0
  214. package/dist/src/memory/memory-bridge-search.js +383 -0
  215. package/dist/src/memory/memory-bridge-search.js.map +1 -0
  216. package/dist/src/memory/memory-bridge-sessions.d.ts +38 -0
  217. package/dist/src/memory/memory-bridge-sessions.d.ts.map +1 -0
  218. package/dist/src/memory/memory-bridge-sessions.js +109 -0
  219. package/dist/src/memory/memory-bridge-sessions.js.map +1 -0
  220. package/dist/src/memory/memory-bridge-store.d.ts +58 -0
  221. package/dist/src/memory/memory-bridge-store.d.ts.map +1 -0
  222. package/dist/src/memory/memory-bridge-store.js +201 -0
  223. package/dist/src/memory/memory-bridge-store.js.map +1 -0
  224. package/dist/src/memory/memory-bridge.d.ts +10 -438
  225. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  226. package/dist/src/memory/memory-bridge.js +14 -1787
  227. package/dist/src/memory/memory-bridge.js.map +1 -1
  228. package/dist/src/memory/memory-kg-claims.d.ts +52 -0
  229. package/dist/src/memory/memory-kg-claims.d.ts.map +1 -0
  230. package/dist/src/memory/memory-kg-claims.js +99 -0
  231. package/dist/src/memory/memory-kg-claims.js.map +1 -0
  232. package/dist/src/memory/memory-kg-index.d.ts +86 -0
  233. package/dist/src/memory/memory-kg-index.d.ts.map +1 -0
  234. package/dist/src/memory/memory-kg-index.js +256 -0
  235. package/dist/src/memory/memory-kg-index.js.map +1 -0
  236. package/dist/src/memory/memory-kg-ingest.d.ts +44 -0
  237. package/dist/src/memory/memory-kg-ingest.d.ts.map +1 -0
  238. package/dist/src/memory/memory-kg-ingest.js +361 -0
  239. package/dist/src/memory/memory-kg-ingest.js.map +1 -0
  240. package/dist/src/memory/memory-kg-model.d.ts +168 -0
  241. package/dist/src/memory/memory-kg-model.d.ts.map +1 -0
  242. package/dist/src/memory/memory-kg-model.js +158 -0
  243. package/dist/src/memory/memory-kg-model.js.map +1 -0
  244. package/dist/src/memory/memory-kg-names.d.ts +64 -0
  245. package/dist/src/memory/memory-kg-names.d.ts.map +1 -0
  246. package/dist/src/memory/memory-kg-names.js +187 -0
  247. package/dist/src/memory/memory-kg-names.js.map +1 -0
  248. package/dist/src/memory/memory-kg-promote.d.ts +79 -0
  249. package/dist/src/memory/memory-kg-promote.d.ts.map +1 -0
  250. package/dist/src/memory/memory-kg-promote.js +248 -0
  251. package/dist/src/memory/memory-kg-promote.js.map +1 -0
  252. package/dist/src/memory/memory-kg-rebuild.d.ts +77 -0
  253. package/dist/src/memory/memory-kg-rebuild.d.ts.map +1 -0
  254. package/dist/src/memory/memory-kg-rebuild.js +299 -0
  255. package/dist/src/memory/memory-kg-rebuild.js.map +1 -0
  256. package/dist/src/memory/memory-kg-rollback.d.ts +47 -0
  257. package/dist/src/memory/memory-kg-rollback.d.ts.map +1 -0
  258. package/dist/src/memory/memory-kg-rollback.js +193 -0
  259. package/dist/src/memory/memory-kg-rollback.js.map +1 -0
  260. package/dist/src/memory/memory-kg-rules.d.ts +64 -0
  261. package/dist/src/memory/memory-kg-rules.d.ts.map +1 -0
  262. package/dist/src/memory/memory-kg-rules.js +251 -0
  263. package/dist/src/memory/memory-kg-rules.js.map +1 -0
  264. package/dist/src/memory/memory-kg-scan.d.ts +118 -0
  265. package/dist/src/memory/memory-kg-scan.d.ts.map +1 -0
  266. package/dist/src/memory/memory-kg-scan.js +209 -0
  267. package/dist/src/memory/memory-kg-scan.js.map +1 -0
  268. package/dist/src/memory/memory-kg-search.d.ts +80 -0
  269. package/dist/src/memory/memory-kg-search.d.ts.map +1 -0
  270. package/dist/src/memory/memory-kg-search.js +239 -0
  271. package/dist/src/memory/memory-kg-search.js.map +1 -0
  272. package/dist/src/memory/memory-kg.d.ts +19 -547
  273. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  274. package/dist/src/memory/memory-kg.js +10 -2389
  275. package/dist/src/memory/memory-kg.js.map +1 -1
  276. package/dist/src/orgrt/daemon-types.d.ts +196 -0
  277. package/dist/src/orgrt/daemon-types.d.ts.map +1 -0
  278. package/dist/src/orgrt/daemon-types.js +38 -0
  279. package/dist/src/orgrt/daemon-types.js.map +1 -0
  280. package/dist/src/orgrt/daemon.d.ts +70 -300
  281. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  282. package/dist/src/orgrt/daemon.js +41 -2536
  283. package/dist/src/orgrt/daemon.js.map +1 -1
  284. package/dist/src/orgrt/idle-watchdog.d.ts +39 -0
  285. package/dist/src/orgrt/idle-watchdog.d.ts.map +1 -0
  286. package/dist/src/orgrt/idle-watchdog.js +289 -0
  287. package/dist/src/orgrt/idle-watchdog.js.map +1 -0
  288. package/dist/src/orgrt/org-reload.d.ts +7 -0
  289. package/dist/src/orgrt/org-reload.d.ts.map +1 -0
  290. package/dist/src/orgrt/org-reload.js +111 -0
  291. package/dist/src/orgrt/org-reload.js.map +1 -0
  292. package/dist/src/orgrt/org-start-steps.d.ts +21 -0
  293. package/dist/src/orgrt/org-start-steps.d.ts.map +1 -0
  294. package/dist/src/orgrt/org-start-steps.js +305 -0
  295. package/dist/src/orgrt/org-start-steps.js.map +1 -0
  296. package/dist/src/orgrt/org-start.d.ts +7 -0
  297. package/dist/src/orgrt/org-start.d.ts.map +1 -0
  298. package/dist/src/orgrt/org-start.js +435 -0
  299. package/dist/src/orgrt/org-start.js.map +1 -0
  300. package/dist/src/orgrt/org-state-file.d.ts +8 -0
  301. package/dist/src/orgrt/org-state-file.d.ts.map +1 -0
  302. package/dist/src/orgrt/org-state-file.js +116 -0
  303. package/dist/src/orgrt/org-state-file.js.map +1 -0
  304. package/dist/src/orgrt/org-stop.d.ts +6 -0
  305. package/dist/src/orgrt/org-stop.d.ts.map +1 -0
  306. package/dist/src/orgrt/org-stop.js +332 -0
  307. package/dist/src/orgrt/org-stop.js.map +1 -0
  308. package/dist/src/orgrt/org-tools.d.ts +11 -0
  309. package/dist/src/orgrt/org-tools.d.ts.map +1 -0
  310. package/dist/src/orgrt/org-tools.js +305 -0
  311. package/dist/src/orgrt/org-tools.js.map +1 -0
  312. package/dist/src/orgrt/role-incarnation.d.ts +18 -0
  313. package/dist/src/orgrt/role-incarnation.d.ts.map +1 -0
  314. package/dist/src/orgrt/role-incarnation.js +374 -0
  315. package/dist/src/orgrt/role-incarnation.js.map +1 -0
  316. package/dist/src/orgrt/role-respawn.d.ts +7 -0
  317. package/dist/src/orgrt/role-respawn.d.ts.map +1 -0
  318. package/dist/src/orgrt/role-respawn.js +318 -0
  319. package/dist/src/orgrt/role-respawn.js.map +1 -0
  320. package/dist/src/orgrt/role-session-opts.d.ts +389 -0
  321. package/dist/src/orgrt/role-session-opts.d.ts.map +1 -0
  322. package/dist/src/orgrt/role-session-opts.js +289 -0
  323. package/dist/src/orgrt/role-session-opts.js.map +1 -0
  324. package/dist/src/orgrt/runner-resolve.d.ts +43 -0
  325. package/dist/src/orgrt/runner-resolve.d.ts.map +1 -0
  326. package/dist/src/orgrt/runner-resolve.js +77 -0
  327. package/dist/src/orgrt/runner-resolve.js.map +1 -0
  328. package/dist/src/orgrt/session-gate.d.ts +34 -0
  329. package/dist/src/orgrt/session-gate.d.ts.map +1 -0
  330. package/dist/src/orgrt/session-gate.js +74 -0
  331. package/dist/src/orgrt/session-gate.js.map +1 -0
  332. package/dist/src/orgrt/session-prompt.d.ts +31 -0
  333. package/dist/src/orgrt/session-prompt.d.ts.map +1 -0
  334. package/dist/src/orgrt/session-prompt.js +115 -0
  335. package/dist/src/orgrt/session-prompt.js.map +1 -0
  336. package/dist/src/orgrt/session-run.d.ts +18 -0
  337. package/dist/src/orgrt/session-run.d.ts.map +1 -0
  338. package/dist/src/orgrt/session-run.js +429 -0
  339. package/dist/src/orgrt/session-run.js.map +1 -0
  340. package/dist/src/orgrt/session-stream.d.ts +21 -0
  341. package/dist/src/orgrt/session-stream.d.ts.map +1 -0
  342. package/dist/src/orgrt/session-stream.js +173 -0
  343. package/dist/src/orgrt/session-stream.js.map +1 -0
  344. package/dist/src/orgrt/session-types.d.ts +219 -0
  345. package/dist/src/orgrt/session-types.d.ts.map +1 -0
  346. package/dist/src/orgrt/session-types.js +2 -0
  347. package/dist/src/orgrt/session-types.js.map +1 -0
  348. package/dist/src/orgrt/session-usage.d.ts +29 -0
  349. package/dist/src/orgrt/session-usage.d.ts.map +1 -0
  350. package/dist/src/orgrt/session-usage.js +64 -0
  351. package/dist/src/orgrt/session-usage.js.map +1 -0
  352. package/dist/src/orgrt/session.d.ts +5 -281
  353. package/dist/src/orgrt/session.d.ts.map +1 -1
  354. package/dist/src/orgrt/session.js +8 -1117
  355. package/dist/src/orgrt/session.js.map +1 -1
  356. package/dist/src/ui/org-hil.mjs +1 -1
  357. package/dist/src/ui/routes-org-agents.mjs +318 -0
  358. package/dist/src/ui/routes-org-approvals.mjs +133 -0
  359. package/dist/src/ui/routes-org-config.mjs +459 -0
  360. package/dist/src/ui/routes-org-control.mjs +300 -0
  361. package/dist/src/ui/routes-org-files.mjs +172 -0
  362. package/dist/src/ui/routes-org-helpers.mjs +84 -0
  363. package/dist/src/ui/routes-org-knowledge.mjs +262 -0
  364. package/dist/src/ui/routes-org-lifecycle.mjs +224 -0
  365. package/dist/src/ui/routes-org-live.mjs +278 -0
  366. package/dist/src/ui/routes-org-mastermind.mjs +346 -0
  367. package/dist/src/ui/routes-org-planning.mjs +398 -0
  368. package/dist/src/ui/routes-org-runs.mjs +430 -0
  369. package/dist/src/ui/routes-org-status.mjs +342 -0
  370. package/dist/src/ui/routes-org-workflows.mjs +212 -0
  371. package/dist/src/ui/routes-org.mjs +26 -3847
  372. package/dist/src/ui/server.mjs +1 -1
  373. package/dist/src/utils/native-error.d.ts +1 -1
  374. package/dist/src/utils/native-error.js +1 -1
  375. package/dist/src/utils/paths.d.ts +2 -1
  376. package/dist/src/utils/paths.d.ts.map +1 -1
  377. package/dist/src/utils/paths.js +2 -1
  378. package/dist/src/utils/paths.js.map +1 -1
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/org-skills/adversarial-reviewer/SKILL.md +1 -1
  381. package/org-skills/board-deck-builder/SKILL.md +1 -1
  382. package/org-skills/code-reviewer/SKILL.md +1 -1
  383. package/org-skills/debugging-wizard/SKILL.md +1 -1
  384. package/org-skills/scientific-thinking-literature-review/SKILL.md +1 -1
  385. package/org-skills/scientific-thinking-scholar-evaluation/SKILL.md +1 -1
  386. package/package.json +5 -5
@@ -0,0 +1,398 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+
4
+ // Org dashboard routes: budgets, threads, routines and goals.
5
+ // Registered, in order, by handleOrgRoutes in routes-org.mjs.
6
+ export async function handleOrgPlanningRoutes(req, res, url, corsOrigin, ctx) {
7
+ // GET /api/org/:name/budgets — org and per-agent budget data
8
+ // Returns: { org_budget: {limit_tokens, limit_usd}, agent_budgets: {agentId: {limit_usd}}, agents: [{id, title, tokens_in, tokens_out, total_cost_usd}] }
9
+ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/budgets$/i)) {
10
+ try {
11
+ const orgName = decodeURIComponent(url.split('/')[3]);
12
+ if (orgName.length > 64 || !/^[a-z0-9][a-z0-9_-]*$/i.test(orgName)) {
13
+ res.writeHead(400);
14
+ res.end('Invalid org name');
15
+ return true;
16
+ }
17
+ const _budgetsQs = new URL(req.url, 'http://localhost').searchParams;
18
+ const base = path.join(
19
+ path.resolve(_budgetsQs.get('dir') || ctx.projectDir || process.cwd()),
20
+ '.monomind',
21
+ 'orgs',
22
+ );
23
+ let budgetData = { org_budget: {}, agent_budgets: {}, period: 'monthly', currency: 'USD' };
24
+ try {
25
+ budgetData = JSON.parse(
26
+ fs.readFileSync(path.join(base, `${orgName}-budgets.json`), 'utf8'),
27
+ );
28
+ } catch (_) {}
29
+ // Enrich with per-agent spend from state file.
30
+ // State file format: { agents: { "<role_id>": { tokens_in, tokens_out, ... } } }
31
+ let agents = [];
32
+ try {
33
+ const state = JSON.parse(fs.readFileSync(path.join(base, `${orgName}-state.json`), 'utf8'));
34
+ const agentMap = state.agents || {};
35
+ // Also load role titles from org config for enrichment
36
+ const roleMap = {};
37
+ try {
38
+ const cfg = JSON.parse(fs.readFileSync(path.join(base, `${orgName}.json`), 'utf8'));
39
+ (cfg.roles || []).forEach((r) => {
40
+ roleMap[r.id] = r.title || r.id;
41
+ });
42
+ } catch (_) {}
43
+ agents = Object.entries(agentMap).map(([id, s]) => ({
44
+ id,
45
+ title: roleMap[id] || s.title || id,
46
+ tokens_in: s.tokens_in || 0,
47
+ tokens_out: s.tokens_out || 0,
48
+ tokens_used: s.tokens_used || (s.tokens_in || 0) + (s.tokens_out || 0),
49
+ total_cost_usd: s.total_cost_usd || 0,
50
+ }));
51
+ } catch (_) {}
52
+ // Scan org run jsonl files for usage events (fallback when state.json has no token data).
53
+ // Two event-type variants show up here in practice and must BOTH be matched, each with its
54
+ // own field mapping — matching only one silently drops real v2 cost data from the UI:
55
+ // - 'agent:usage': flattened { role, tokens_in, tokens_out, cost_usd } (legacy/direct writers).
56
+ // - 'org:usage': orgrt's actual forwarded shape (attachForwarder's translate() default case
57
+ // for a raw OrgBus 'usage' event) — { from, data: { tokens, cost_usd } }. orgrt never emits
58
+ // 'agent:usage' itself, so scanning for that alone means this fallback never fires for real runs.
59
+ const _hasTokenData = agents.some(
60
+ (a) => a.tokens_in > 0 || a.tokens_out > 0 || a.total_cost_usd > 0,
61
+ );
62
+ if (!_hasTokenData) {
63
+ try {
64
+ const _runsDir = path.join(base, orgName, 'runs');
65
+ if (fs.existsSync(_runsDir)) {
66
+ const _usageByRole = {};
67
+ const _bump = (role, tokensIn, tokensOut, tokensTotal, costUsd) => {
68
+ if (!role) return;
69
+ role = String(role).trim();
70
+ if (!role) return;
71
+ if (!_usageByRole[role])
72
+ _usageByRole[role] = {
73
+ tokens_in: 0,
74
+ tokens_out: 0,
75
+ tokens_used: 0,
76
+ total_cost_usd: 0,
77
+ };
78
+ _usageByRole[role].tokens_in += tokensIn;
79
+ _usageByRole[role].tokens_out += tokensOut;
80
+ _usageByRole[role].tokens_used += tokensIn + tokensOut + tokensTotal;
81
+ _usageByRole[role].total_cost_usd += costUsd;
82
+ };
83
+ for (const f of fs.readdirSync(_runsDir)) {
84
+ if (!f.endsWith('.jsonl') || f.startsWith('._')) continue;
85
+ const lines = fs
86
+ .readFileSync(path.join(_runsDir, f), 'utf8')
87
+ .split('\n')
88
+ .filter(Boolean);
89
+ for (const l of lines) {
90
+ try {
91
+ const ev = JSON.parse(l);
92
+ if (ev.type === 'agent:usage' && ev.role) {
93
+ _bump(
94
+ ev.role,
95
+ Number(ev.tokens_in) || 0,
96
+ Number(ev.tokens_out) || 0,
97
+ 0,
98
+ Number(ev.cost_usd) || 0,
99
+ );
100
+ } else if (ev.type === 'org:usage' && ev.from) {
101
+ _bump(
102
+ ev.from,
103
+ 0,
104
+ 0,
105
+ Number(ev.data?.tokens) || 0,
106
+ Number(ev.data?.cost_usd) || 0,
107
+ );
108
+ }
109
+ } catch (_) {}
110
+ }
111
+ }
112
+ if (Object.keys(_usageByRole).length > 0) {
113
+ // Merge usage into agents list; preserve role titles
114
+ agents = agents.map((a) => {
115
+ const u = _usageByRole[a.id] || {};
116
+ return {
117
+ ...a,
118
+ tokens_in: u.tokens_in || 0,
119
+ tokens_out: u.tokens_out || 0,
120
+ tokens_used: u.tokens_used || (u.tokens_in || 0) + (u.tokens_out || 0),
121
+ total_cost_usd: u.total_cost_usd || 0,
122
+ };
123
+ });
124
+ // Add any roles that appeared in events but aren't in config
125
+ for (const [role, u] of Object.entries(_usageByRole)) {
126
+ if (!agents.find((a) => a.id === role))
127
+ agents.push({ id: role, title: role, ...u });
128
+ }
129
+ }
130
+ }
131
+ } catch (_) {}
132
+ }
133
+ // Do NOT fall back to zero-value role stubs — empty agents array is the honest signal
134
+ // that no usage has been tracked yet; the UI shows "No cost data" rather than $0.0000 rows.
135
+ res.writeHead(200, { 'Content-Type': 'application/json' });
136
+ res.end(JSON.stringify({ ...budgetData, agents }));
137
+ } catch (_) {
138
+ res.writeHead(500);
139
+ res.end('{"org_budget":{},"agent_budgets":{},"agents":[]}');
140
+ }
141
+ return true;
142
+ }
143
+
144
+ // GET /api/org/:name/threads — conversation threads from threads.jsonl
145
+ // Returns: { threads: [{id, subject, authorId, authorName, issueId, createdAt, messages:[]}] }
146
+ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/threads$/i)) {
147
+ try {
148
+ const orgName = decodeURIComponent(url.split('/')[3]);
149
+ if (orgName.length > 64 || !/^[a-z0-9][a-z0-9_-]*$/i.test(orgName)) {
150
+ res.writeHead(400);
151
+ res.end('Invalid org name');
152
+ return true;
153
+ }
154
+ const _threadsQs = new URL(req.url, 'http://localhost').searchParams;
155
+ const _threadsRoot = path.resolve(_threadsQs.get('dir') || ctx.projectDir || process.cwd());
156
+ const _threadsProjDir = ctx._resolveOrgProjectDir(orgName, _threadsRoot) || _threadsRoot;
157
+ const threadsFile = path.join(
158
+ _threadsProjDir,
159
+ '.monomind',
160
+ 'orgs',
161
+ `${orgName}-threads.jsonl`,
162
+ );
163
+ let threads = [];
164
+ try {
165
+ const lines = fs
166
+ .readFileSync(threadsFile, 'utf8')
167
+ .split('\n')
168
+ .filter((l) => l.trim());
169
+ threads = lines
170
+ .map((l) => {
171
+ try {
172
+ return JSON.parse(l);
173
+ } catch (_) {
174
+ return null;
175
+ }
176
+ })
177
+ .filter(Boolean);
178
+ // Group 'message' entries (from org:comms) by run_id into synthetic thread objects
179
+ const msgsByRun = {};
180
+ threads
181
+ .filter((t) => t.type === 'message')
182
+ .forEach((m) => {
183
+ const rid = m.run_id || 'unknown';
184
+ if (!msgsByRun[rid])
185
+ msgsByRun[rid] = {
186
+ id: `thread-${rid}`,
187
+ type: 'thread',
188
+ subject: `Run ${rid}`,
189
+ run_id: rid,
190
+ createdAt: m.ts,
191
+ messages: [],
192
+ };
193
+ msgsByRun[rid].messages.push({ from: m.from, to: m.to, msg: m.msg, ts: m.ts });
194
+ });
195
+ const syntheticThreads = Object.values(msgsByRun).map((t) => ({
196
+ ...t,
197
+ messageCount: t.messages.length,
198
+ author: t.messages[0]?.from || null,
199
+ }));
200
+ threads = threads
201
+ .filter((t) => t.type === 'thread' || !t.type)
202
+ .map((t) => ({
203
+ ...t,
204
+ author: t.author || t.authorName || t.createdBy || t.authorId || null,
205
+ messageCount:
206
+ t.messageCount != null
207
+ ? t.messageCount
208
+ : Array.isArray(t.messages)
209
+ ? t.messages.length
210
+ : typeof t.messages === 'number'
211
+ ? t.messages
212
+ : null,
213
+ }));
214
+ threads = [...threads, ...syntheticThreads];
215
+ } catch (_) {}
216
+ res.writeHead(200, { 'Content-Type': 'application/json' });
217
+ res.end(JSON.stringify({ threads }));
218
+ } catch (_) {
219
+ res.writeHead(500);
220
+ res.end('{"threads":[]}');
221
+ }
222
+ return true;
223
+ }
224
+
225
+ // GET /api/org/:name/routines — read org routines (falls back to synthesizing from org config's loop object)
226
+ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/routines$/i)) {
227
+ try {
228
+ const orgName = decodeURIComponent(url.split('/')[3]);
229
+ if (orgName.length > 64 || !/^[a-z0-9][a-z0-9_-]*$/i.test(orgName)) {
230
+ res.writeHead(400);
231
+ res.end('Invalid org name');
232
+ return true;
233
+ }
234
+ const _routinesQs = new URL(req.url, 'http://localhost').searchParams;
235
+ const _routinesBase = path.resolve(_routinesQs.get('dir') || ctx.projectDir || process.cwd());
236
+ const _routinesProjDir = ctx._resolveOrgProjectDir(orgName, _routinesBase) || _routinesBase;
237
+ const routinesFile = path.join(
238
+ _routinesProjDir,
239
+ '.monomind',
240
+ 'orgs',
241
+ `${orgName}-routines.json`,
242
+ );
243
+ let data = { routines: [] };
244
+ try {
245
+ data = JSON.parse(fs.readFileSync(routinesFile, 'utf8'));
246
+ } catch (_) {}
247
+ // Synthesize routines from org config's loop/schedule settings when no explicit routines are defined
248
+ if (!data.routines?.length) {
249
+ try {
250
+ const orgCfg = JSON.parse(
251
+ fs.readFileSync(
252
+ path.join(_routinesProjDir, '.monomind', 'orgs', `${orgName}.json`),
253
+ 'utf8',
254
+ ),
255
+ );
256
+ const loop = orgCfg.loop;
257
+ if (loop && (loop.poll_interval_minutes || loop.interval_minutes)) {
258
+ const intervalMin = loop.poll_interval_minutes || loop.interval_minutes;
259
+ data.routines = [
260
+ {
261
+ name: `${orgName}-cycle`,
262
+ description: orgCfg.goal ? orgCfg.goal.slice(0, 120) : 'Org iteration cycle',
263
+ schedule: `every ${intervalMin}m`,
264
+ cron: null,
265
+ enabled: orgCfg.status === 'active',
266
+ status: orgCfg.status || 'stopped',
267
+ prompt_file: loop.run_prompt_file || null,
268
+ source: 'loop-config',
269
+ lastRun: null,
270
+ },
271
+ ];
272
+ } else if (orgCfg.schedule) {
273
+ data.routines = [
274
+ {
275
+ name: `${orgName}-schedule`,
276
+ description: orgCfg.goal ? orgCfg.goal.slice(0, 120) : 'Org scheduled run',
277
+ schedule: String(orgCfg.schedule),
278
+ cron: null,
279
+ enabled: orgCfg.status === 'active',
280
+ status: orgCfg.status || 'stopped',
281
+ source: 'schedule-config',
282
+ lastRun: null,
283
+ },
284
+ ];
285
+ }
286
+ } catch (_) {}
287
+ }
288
+ res.writeHead(200, {
289
+ 'Content-Type': 'application/json',
290
+ ...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}),
291
+ });
292
+ res.end(JSON.stringify({ routines: data.routines || [] }));
293
+ } catch (_) {
294
+ res.writeHead(500);
295
+ res.end('{"routines":[]}');
296
+ }
297
+ return true;
298
+ }
299
+
300
+ // POST /api/org/:name/goals — upsert the org goals file
301
+ // Body: { goals: [{id, title, description, status, priority, assignee_id, created_at}] }
302
+ if (req.method === 'POST' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/goals$/i)) {
303
+ let body = '';
304
+ for await (const chunk of req) {
305
+ body += chunk;
306
+ if (body.length > 2097152) {
307
+ req.destroy();
308
+ break;
309
+ }
310
+ }
311
+ try {
312
+ const orgName = decodeURIComponent(url.split('/')[3]);
313
+ if (orgName.length > 64 || !/^[a-z0-9][a-z0-9_-]*$/i.test(orgName)) {
314
+ res.writeHead(400);
315
+ res.end('Invalid org name');
316
+ return true;
317
+ }
318
+ const parsed = JSON.parse(body);
319
+ if (!parsed || !Array.isArray(parsed.goals)) {
320
+ res.writeHead(400);
321
+ res.end('{"error":"goals array required"}');
322
+ return true;
323
+ }
324
+ const _postGoalsQs = new URL(req.url, 'http://localhost').searchParams;
325
+ const goalsFile = path.join(
326
+ path.resolve(_postGoalsQs.get('dir') || ctx.projectDir || process.cwd()),
327
+ '.monomind',
328
+ 'orgs',
329
+ `${orgName}-goals.json`,
330
+ );
331
+ const tmp = `${goalsFile}.tmp`;
332
+ const payload = { org: orgName, updated_at: new Date().toISOString(), goals: parsed.goals };
333
+ fs.writeFileSync(tmp, JSON.stringify(payload, null, 2), 'utf-8');
334
+ fs.renameSync(tmp, goalsFile);
335
+ res.writeHead(200, {
336
+ 'Content-Type': 'application/json',
337
+ ...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}),
338
+ });
339
+ res.end(JSON.stringify({ ok: true, count: parsed.goals.length }));
340
+ } catch (_) {
341
+ res.writeHead(500);
342
+ res.end(`{"error":"${String(_).replace(/"/g, '\\"')}"}`);
343
+ }
344
+ return true;
345
+ }
346
+
347
+ // POST /api/org/:name/routines — upsert the org routines file
348
+ // Body: { routines: [{name, description, schedule, enabled, last_run, next_run}] }
349
+ if (req.method === 'POST' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/routines$/i)) {
350
+ let body = '';
351
+ for await (const chunk of req) {
352
+ body += chunk;
353
+ if (body.length > 2097152) {
354
+ req.destroy();
355
+ break;
356
+ }
357
+ }
358
+ try {
359
+ const orgName = decodeURIComponent(url.split('/')[3]);
360
+ if (orgName.length > 64 || !/^[a-z0-9][a-z0-9_-]*$/i.test(orgName)) {
361
+ res.writeHead(400);
362
+ res.end('Invalid org name');
363
+ return true;
364
+ }
365
+ const parsed = JSON.parse(body);
366
+ if (!parsed || !Array.isArray(parsed.routines)) {
367
+ res.writeHead(400);
368
+ res.end('{"error":"routines array required"}');
369
+ return true;
370
+ }
371
+ const _postRoutinesQs = new URL(req.url, 'http://localhost').searchParams;
372
+ const routinesFile = path.join(
373
+ path.resolve(_postRoutinesQs.get('dir') || ctx.projectDir || process.cwd()),
374
+ '.monomind',
375
+ 'orgs',
376
+ `${orgName}-routines.json`,
377
+ );
378
+ const tmp = `${routinesFile}.tmp`;
379
+ const payload = {
380
+ org: orgName,
381
+ updated_at: new Date().toISOString(),
382
+ routines: parsed.routines,
383
+ };
384
+ fs.writeFileSync(tmp, JSON.stringify(payload, null, 2), 'utf-8');
385
+ fs.renameSync(tmp, routinesFile);
386
+ res.writeHead(200, {
387
+ 'Content-Type': 'application/json',
388
+ ...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}),
389
+ });
390
+ res.end(JSON.stringify({ ok: true, count: parsed.routines.length }));
391
+ } catch (_) {
392
+ res.writeHead(500);
393
+ res.end(`{"error":"${String(_).replace(/"/g, '\\"')}"}`);
394
+ }
395
+ return true;
396
+ }
397
+ return false;
398
+ }