@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,272 @@
1
+ // packages/@monomind/cli/src/commands/org-observe-logs.ts
2
+ //
3
+ // `monomind org logs | watch | events` — formatted, per-role and NDJSON
4
+ // tails of a run's bus events.
5
+ import { existsSync, readFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { formatEvent } from '../orgrt/reporting.js';
8
+ import { ORG_DIR } from '../orgrt/types.js';
9
+ import { output } from '../output.js';
10
+ import { orgJson, printOrgJson, resolveRun } from './org-observe-shared.js';
11
+ const log = (text) => {
12
+ console.log(text);
13
+ };
14
+ /** `org logs <name> [--run id] [--role r] [--filter-tool t] [--filter-role r] [--tools-only] [--audit-filter allow|deny] [--follow]` — formatted bus.jsonl tail. */
15
+ export const logsAction = async (ctx, name) => {
16
+ const run = resolveRun(ctx.cwd, name, ctx.flags.run);
17
+ if (!run)
18
+ return {
19
+ success: false,
20
+ message: `no runs found for org ${name} — start one with: monomind org run ${name}`,
21
+ };
22
+ const file = join(ctx.cwd, ORG_DIR, name, run, 'bus.jsonl');
23
+ const roleFilter = typeof ctx.flags.role === 'string' ? ctx.flags.role : null;
24
+ const filterTool = typeof ctx.flags['filter-tool'] === 'string' ? ctx.flags['filter-tool'] : null;
25
+ const filterRole = typeof ctx.flags['filter-role'] === 'string' ? ctx.flags['filter-role'] : null;
26
+ const auditFilter = typeof ctx.flags['audit-filter'] === 'string' ? ctx.flags['audit-filter'] : null;
27
+ const toolsOnly = ctx.flags['tools-only'] === true;
28
+ // Protocol JSON mode: full filtered event array, no live tail (§7.2 — the
29
+ // streaming form is `org events --ndjson --follow`).
30
+ if (orgJson(ctx)) {
31
+ if (ctx.flags.follow === true)
32
+ return { success: false, message: 'json output cannot --follow — use: org events --ndjson' };
33
+ const items = [];
34
+ const accept = (e) => (!toolsOnly || e.type === 'tool') &&
35
+ (!roleFilter || e.from === roleFilter || e.to === roleFilter) &&
36
+ (!filterTool || e.tool === filterTool) &&
37
+ (!filterRole || e.from === filterRole) &&
38
+ (!auditFilter || e.type !== 'tool' || e.decision === auditFilter);
39
+ if (existsSync(file)) {
40
+ for (const line of readFileSync(file, 'utf8').split('\n').filter(Boolean)) {
41
+ try {
42
+ const e = JSON.parse(line);
43
+ if (accept(e))
44
+ items.push(e);
45
+ }
46
+ catch {
47
+ /* skip corrupt interior lines — same policy as the tail drain */
48
+ }
49
+ }
50
+ }
51
+ return printOrgJson({ v: 1, org: name, run, items });
52
+ }
53
+ const show = (e) => {
54
+ if (toolsOnly && e.type !== 'tool')
55
+ return;
56
+ if (roleFilter && e.from !== roleFilter && e.to !== roleFilter)
57
+ return;
58
+ if (filterTool && e.tool !== filterTool)
59
+ return;
60
+ if (filterRole && e.from !== filterRole)
61
+ return;
62
+ if (auditFilter && e.type === 'tool' && e.decision !== auditFilter)
63
+ return;
64
+ log(formatEvent(e));
65
+ };
66
+ log(output.info(`org ${name} — ${run}${roleFilter ? ` (role: ${roleFilter})` : ''}${filterTool ? ` (tool: ${filterTool})` : ''}${filterRole ? ` (filter-role: ${filterRole})` : ''}${auditFilter ? ` (audit-filter: ${auditFilter})` : ''}`));
67
+ let seenLines = 0;
68
+ const drain = () => {
69
+ if (!existsSync(file))
70
+ return;
71
+ const lines = readFileSync(file, 'utf8').split('\n').filter(Boolean);
72
+ for (let i = seenLines; i < lines.length; i++) {
73
+ try {
74
+ show(JSON.parse(lines[i]));
75
+ seenLines = i + 1;
76
+ }
77
+ catch {
78
+ // Only the FINAL line can be a partial mid-append write worth
79
+ // retrying; a corrupt interior line would otherwise stall the tail
80
+ // forever — skip it and keep going.
81
+ if (i === lines.length - 1)
82
+ break;
83
+ seenLines = i + 1;
84
+ }
85
+ }
86
+ };
87
+ drain();
88
+ if (ctx.flags.follow !== true)
89
+ return { success: true };
90
+ log(output.info('following — Ctrl-C to stop'));
91
+ await new Promise((resolve) => {
92
+ const iv = setInterval(drain, 500);
93
+ process.once('SIGINT', () => {
94
+ clearInterval(iv);
95
+ resolve();
96
+ });
97
+ process.once('SIGTERM', () => {
98
+ clearInterval(iv);
99
+ resolve();
100
+ });
101
+ });
102
+ return { success: true };
103
+ };
104
+ /**
105
+ * `org watch <name> <role> [--verbose] [--stats]` — live-tail one role's
106
+ * assistant chat text.
107
+ *
108
+ * Every runner (Claude included — this isn't specific to the subprocess CLI
109
+ * runners) funnels through session.ts's shared message loop, which emits
110
+ * each assistant-text chunk onto the bus as a `chat` event. This command is
111
+ * just `logsAction` pre-filtered to that event type + role and formatted as
112
+ * a plain transcript instead of the full annotated event line — a friendlier
113
+ * front door onto infrastructure that already exists and already covers
114
+ * every runtime uniformly. For the fuller event stream (tool calls, audit
115
+ * decisions) use `org logs <name> --role <role> --follow` directly.
116
+ *
117
+ * --verbose additionally interleaves that role's `status` events (session
118
+ * start/end, restart/crash/backoff, state changes) into the transcript, so
119
+ * a human watching sees WHY a role went quiet instead of just silence.
120
+ * --stats prints a running token/cost line off that role's `usage` events
121
+ * (emitted per turn by session.ts, same as --verbose: already-existing bus
122
+ * data, no new instrumentation).
123
+ */
124
+ export const watchAction = async (ctx, name) => {
125
+ const role = ctx.args[1];
126
+ if (!role)
127
+ return { success: false, message: 'usage: monomind org watch <org> <role>' };
128
+ const run = resolveRun(ctx.cwd, name, ctx.flags.run);
129
+ if (!run)
130
+ return {
131
+ success: false,
132
+ message: `no runs found for org ${name} — start one with: monomind org run ${name}`,
133
+ };
134
+ const file = join(ctx.cwd, ORG_DIR, name, run, 'bus.jsonl');
135
+ const verbose = ctx.flags.verbose === true;
136
+ const stats = ctx.flags.stats === true;
137
+ let totalTokens = 0;
138
+ let totalCostUsd = 0;
139
+ const show = (e) => {
140
+ if (e.from !== role)
141
+ return;
142
+ if (e.type === 'chat') {
143
+ log(`${output.info(`${role}:`)} ${e.msg ?? ''}`);
144
+ return;
145
+ }
146
+ if (verbose && e.type === 'status') {
147
+ log(output.warning(`[${e.reason ?? 'status'}] ${e.msg ?? ''}`));
148
+ return;
149
+ }
150
+ if (stats && e.type === 'usage') {
151
+ const tokens = typeof e.data?.tokens === 'number' ? e.data.tokens : 0;
152
+ const costDelta = typeof e.data?.cost_usd === 'number' ? e.data.cost_usd : 0;
153
+ totalTokens += tokens;
154
+ totalCostUsd += costDelta;
155
+ log(output.info(`[stats] +${tokens} tokens (total ${totalTokens}) · +$${costDelta.toFixed(4)} (total $${totalCostUsd.toFixed(4)})`));
156
+ }
157
+ };
158
+ log(output.info(`watching ${name}/${role} — ${run} (Ctrl-C to stop; org logs ${name} --role ${role} --follow for the full event stream)`));
159
+ let seenLines = 0;
160
+ const drain = () => {
161
+ if (!existsSync(file))
162
+ return;
163
+ const lines = readFileSync(file, 'utf8').split('\n').filter(Boolean);
164
+ for (let i = seenLines; i < lines.length; i++) {
165
+ try {
166
+ show(JSON.parse(lines[i]));
167
+ seenLines = i + 1;
168
+ }
169
+ catch {
170
+ if (i === lines.length - 1)
171
+ break; // only the final line may be a mid-append partial write
172
+ seenLines = i + 1;
173
+ }
174
+ }
175
+ };
176
+ drain();
177
+ if (ctx.flags.follow === false)
178
+ return { success: true }; // --follow=false opts out of the default live tail
179
+ await new Promise((resolve) => {
180
+ const iv = setInterval(drain, 500);
181
+ process.once('SIGINT', () => {
182
+ clearInterval(iv);
183
+ resolve();
184
+ });
185
+ process.once('SIGTERM', () => {
186
+ clearInterval(iv);
187
+ resolve();
188
+ });
189
+ });
190
+ return { success: true };
191
+ };
192
+ // ─── org events — the only genuinely new org command (plan D12) ─────────────
193
+ /** Resolve a `--since` cursor: an event id (skip everything at/before it) or
194
+ * an ISO-8601 timestamp (skip older events). Returns null when unusable. */
195
+ function parseSinceCursor(raw) {
196
+ if (typeof raw !== 'string' || !raw)
197
+ return null;
198
+ if (/^run-[A-Za-z0-9-]+/.test(raw))
199
+ return { id: raw };
200
+ const ts = Date.parse(raw);
201
+ return Number.isFinite(ts) ? { iso: raw } : null;
202
+ }
203
+ /** `org events <name> [--run id] [--follow] [--since <eventId|iso>] [--ndjson]`
204
+ * — live tail of a run's bus.jsonl as NDJSON, one BusEvent per line
205
+ * (protocol §7.3). This is the machine streaming surface; `org logs` stays
206
+ * the human one. NDJSON is the only output mode (--ndjson accepted for
207
+ * spec symmetry). */
208
+ export const eventsAction = async (ctx, name) => {
209
+ const run = resolveRun(ctx.cwd, name, ctx.flags.run);
210
+ if (!run)
211
+ return {
212
+ success: false,
213
+ message: `no runs found for org ${name} — start one with: monomind org run ${name}`,
214
+ };
215
+ const file = join(ctx.cwd, ORG_DIR, name, run, 'bus.jsonl');
216
+ const since = parseSinceCursor(ctx.flags.since);
217
+ let skippedPastId = !since?.id; // true = no id cursor, nothing to skip
218
+ let seenLines = 0;
219
+ const emitLine = (line) => {
220
+ let e;
221
+ try {
222
+ e = JSON.parse(line);
223
+ }
224
+ catch {
225
+ return; // corrupt interior line — skip, same policy as logsAction
226
+ }
227
+ if (since?.id) {
228
+ if (!skippedPastId) {
229
+ if (e.id === since.id)
230
+ skippedPastId = true;
231
+ return; // everything strictly before the cursor is replay-suppressed
232
+ }
233
+ }
234
+ if (since?.iso && Date.parse(since.iso) && new Date(e.ts).getTime() < Date.parse(since.iso))
235
+ return;
236
+ process.stdout.write(`${JSON.stringify(e)}\n`);
237
+ };
238
+ const drain = () => {
239
+ if (!existsSync(file))
240
+ return;
241
+ const lines = readFileSync(file, 'utf8').split('\n').filter(Boolean);
242
+ for (let i = seenLines; i < lines.length; i++) {
243
+ // Only the FINAL line can be a partial mid-append write worth retrying.
244
+ if (i === lines.length - 1) {
245
+ try {
246
+ JSON.parse(lines[i]);
247
+ }
248
+ catch {
249
+ break;
250
+ }
251
+ }
252
+ emitLine(lines[i]);
253
+ seenLines = i + 1;
254
+ }
255
+ };
256
+ drain();
257
+ if (ctx.flags.follow !== true)
258
+ return { success: true };
259
+ await new Promise((resolve) => {
260
+ const iv = setInterval(drain, 500);
261
+ process.once('SIGINT', () => {
262
+ clearInterval(iv);
263
+ resolve();
264
+ });
265
+ process.once('SIGTERM', () => {
266
+ clearInterval(iv);
267
+ resolve();
268
+ });
269
+ });
270
+ return { success: true };
271
+ };
272
+ //# sourceMappingURL=org-observe-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-observe-logs.js","sourceRoot":"","sources":["../../../src/commands/org-observe-logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CommandContext, CommandResult } from '../types.js';
2
+ /** `org questions <name> [--all]` — list pending (or all) ask_human questions. */
3
+ export declare const questionsAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
4
+ /** `org answer <name> <question-id> <answer...>` — answer a pending ask_human question.
5
+ * Delivers live via the hosting daemon's /api/answer-question when the org is running
6
+ * (broker lookup); otherwise records the answer and queues it for the next run. */
7
+ export declare const answerAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
8
+ //# sourceMappingURL=org-observe-questions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-observe-questions.d.ts","sourceRoot":"","sources":["../../../src/commands/org-observe-questions.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0CjE,kFAAkF;AAClF,eAAO,MAAM,eAAe,QACrB,cAAc,QACb,MAAM,KACX,OAAO,CAAC,aAAa,CAoCvB,CAAC;AAEF;;oFAEoF;AACpF,eAAO,MAAM,YAAY,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CAyJ3F,CAAC"}
@@ -0,0 +1,201 @@
1
+ // packages/@monomind/cli/src/commands/org-observe-questions.ts
2
+ //
3
+ // `monomind org questions | answer` — pending ask_human questions and
4
+ // their live-or-queued answers.
5
+ import { readFileSync, writeFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { utcDateMinute } from '../orgrt/reporting.js';
8
+ import { ORG_DIR } from '../orgrt/types.js';
9
+ import { output } from '../output.js';
10
+ import { orgJson, printOrgJson, resolverFlag } from './org-observe-shared.js';
11
+ const log = (text) => {
12
+ console.log(text);
13
+ };
14
+ /** Read questions.json. A MISSING file legitimately means "no questions" → [].
15
+ * Any other failure (unreadable, malformed — e.g. a partial daemon write) THROWS:
16
+ * answerAction rewrites this file from what this returns, so silently coercing a
17
+ * failed read to [] would atomically replace every recorded question with one. */
18
+ const readQuestions = (cwd, name) => {
19
+ const path = join(cwd, ORG_DIR, name, 'questions.json');
20
+ let raw;
21
+ try {
22
+ raw = readFileSync(path, 'utf8');
23
+ }
24
+ catch (err) {
25
+ if (err.code === 'ENOENT')
26
+ return [];
27
+ throw new Error(`cannot read ${path}: ${err instanceof Error ? err.message : String(err)}`);
28
+ }
29
+ let parsed;
30
+ try {
31
+ parsed = JSON.parse(raw);
32
+ }
33
+ catch (err) {
34
+ throw new Error(`${path} is not valid JSON (${err instanceof Error ? err.message : String(err)})`);
35
+ }
36
+ if (parsed?.questions === undefined || parsed.questions === null)
37
+ return [];
38
+ if (!Array.isArray(parsed.questions))
39
+ throw new Error(`${path}: "questions" is not an array`);
40
+ return parsed.questions;
41
+ };
42
+ /** `org questions <name> [--all]` — list pending (or all) ask_human questions. */
43
+ export const questionsAction = async (ctx, name) => {
44
+ let all;
45
+ try {
46
+ all = readQuestions(ctx.cwd, name);
47
+ }
48
+ catch (err) {
49
+ log(output.error(`Cannot read questions for org ${name}: ${err instanceof Error ? err.message : String(err)}`));
50
+ return { success: false, message: 'questions.json unreadable' };
51
+ }
52
+ const shown = ctx.flags.all === true ? all : all.filter((q) => q.answer === null);
53
+ if (orgJson(ctx))
54
+ return printOrgJson({ v: 1, org: name, items: shown });
55
+ if (!shown.length) {
56
+ log(output.info(all.length
57
+ ? `No pending questions for org ${name} (${all.length} answered — use --all).`
58
+ : `No questions recorded for org ${name}.`));
59
+ return { success: true };
60
+ }
61
+ for (const q of shown) {
62
+ const when = utcDateMinute(q.ts);
63
+ log(output.info(`${q.answer === null ? '❓' : '✓'} [${q.questionId}] ${when} ${q.role}: ${q.question}`));
64
+ if (q.answer !== null)
65
+ log(output.info(` ↳ ${q.answer}`));
66
+ }
67
+ if (shown.some((q) => q.answer === null))
68
+ log(output.info(`\nAnswer with: monomind org answer ${name} <question-id> "your answer"`));
69
+ return { success: true };
70
+ };
71
+ /** `org answer <name> <question-id> <answer...>` — answer a pending ask_human question.
72
+ * Delivers live via the hosting daemon's /api/answer-question when the org is running
73
+ * (broker lookup); otherwise records the answer and queues it for the next run. */
74
+ export const answerAction = async (ctx, name) => {
75
+ const questionId = ctx.args[1];
76
+ const answer = ctx.args.slice(2).join(' ').trim();
77
+ if (!questionId || !answer)
78
+ return {
79
+ success: false,
80
+ message: `usage: monomind org answer ${name} <question-id> "answer text"`,
81
+ };
82
+ let questions;
83
+ try {
84
+ questions = readQuestions(ctx.cwd, name);
85
+ }
86
+ catch (err) {
87
+ log(output.error(`Cannot read questions for org ${name}: ${err instanceof Error ? err.message : String(err)}`));
88
+ return { success: false, message: 'questions.json unreadable — answer not recorded' };
89
+ }
90
+ const q = questions.find((x) => x.questionId === questionId);
91
+ if (!q) {
92
+ log(output.error(`Question "${questionId}" not found for org ${name} — list with: monomind org questions ${name}`));
93
+ return { success: false, message: 'question not found' };
94
+ }
95
+ if (q.answer !== null)
96
+ return { success: false, message: `question "${questionId}" was already answered` };
97
+ const byFlag = await resolverFlag(ctx);
98
+ if (!byFlag.ok)
99
+ return { success: false, message: byFlag.message };
100
+ const resolvedBy = byFlag.by;
101
+ // Live path: the hosting daemon updates questions.json and pushes into the role's mailbox.
102
+ // SEC: answering a role's question is a human decision — authenticate with
103
+ // the operator credential, not the agent-facing one in the broker entry.
104
+ const { lookupOrg, readOperatorCredential } = await import('../orgrt/broker.js');
105
+ const remote = lookupOrg(name);
106
+ if (remote) {
107
+ const cred = readOperatorCredential(name);
108
+ try {
109
+ const res = await fetch(`${remote.url}/api/answer-question`, {
110
+ method: 'POST',
111
+ headers: {
112
+ 'Content-Type': 'application/json',
113
+ ...(cred ? { 'x-monomind-cred': cred } : {}),
114
+ },
115
+ body: JSON.stringify({ org: name, role: q.role, questionId, answer, resolvedBy }),
116
+ signal: AbortSignal.timeout(10_000),
117
+ });
118
+ const data = (await res.json().catch(() => ({})));
119
+ if (res.ok && data.ok) {
120
+ if (orgJson(ctx))
121
+ return printOrgJson({
122
+ v: 1,
123
+ org: name,
124
+ question_id: questionId,
125
+ role: q.role,
126
+ delivery: 'live',
127
+ answered: true,
128
+ resolvedBy,
129
+ });
130
+ log(output.success(`Answer delivered to ${name}:${q.role} (live).`));
131
+ return { success: true };
132
+ }
133
+ log(output.warning(`Live delivery rejected (${data.error ?? res.status}) — falling back to offline queue.`));
134
+ }
135
+ catch (err) {
136
+ log(output.warning(`Hosting daemon unreachable (${err instanceof Error ? err.message : 'error'}) — falling back to offline queue.`));
137
+ }
138
+ }
139
+ // Offline path: mirror daemon.answerQuestion's org-not-running branch.
140
+ // RE-READ and merge by questionId just before writing — the pre-fetch
141
+ // snapshot can be up to 10s stale (live-delivery timeout), and rewriting
142
+ // from it would delete questions the daemon appended meanwhile and revert
143
+ // answers it recorded (atomic rename prevents torn writes, not lost updates).
144
+ // A FAILED re-read must abort the write: rewriting from [] would atomically
145
+ // rename a single-question file over every other recorded question.
146
+ let fresh;
147
+ try {
148
+ fresh = readQuestions(ctx.cwd, name);
149
+ }
150
+ catch (err) {
151
+ log(output.error(`Refusing to rewrite questions.json — ${err instanceof Error ? err.message : String(err)}`));
152
+ log(output.warning(`The answer was NOT recorded. Fix or restore ${join(ctx.cwd, ORG_DIR, name, 'questions.json')}, then retry.`));
153
+ return { success: false, message: 'questions.json unreadable — answer not recorded' };
154
+ }
155
+ const freshQ = fresh.find((x) => x.questionId === questionId);
156
+ if (freshQ && freshQ.answer !== null) {
157
+ return {
158
+ success: false,
159
+ message: `question "${questionId}" was answered while this command was running`,
160
+ };
161
+ }
162
+ // Queue BEFORE marking answered (same rule as daemon.answerQuestion): if the
163
+ // append fails, the question must stay pending and answerable. Marking first meant
164
+ // a failed queueMessage recorded the answer as delivered while nothing was queued,
165
+ // and the `already answered` guard then rejected every retry.
166
+ const { queueMessage } = await import('../orgrt/inbox.js');
167
+ try {
168
+ queueMessage(ctx.cwd, name, {
169
+ fromQualified: 'human',
170
+ toRole: q.role,
171
+ subject: `answer:${questionId}`,
172
+ body: `question: ${q.question}\n\nanswer: ${answer}`,
173
+ ts: Date.now(),
174
+ });
175
+ }
176
+ catch (err) {
177
+ log(output.error(`Could not queue the answer for ${name}:${q.role} (${err instanceof Error ? err.message : String(err)}) — answer NOT recorded, retry it.`));
178
+ return { success: false, message: 'queueing failed — answer not recorded' };
179
+ }
180
+ const merged = fresh.some((x) => x.questionId === questionId)
181
+ ? fresh.map((x) => x.questionId === questionId ? { ...x, answer, answeredAt: Date.now(), resolvedBy } : x)
182
+ : [...fresh, { ...q, answer, answeredAt: Date.now(), resolvedBy }];
183
+ const dest = join(ctx.cwd, ORG_DIR, name, 'questions.json');
184
+ const tmp = `${dest}.${process.pid}.tmp`;
185
+ writeFileSync(tmp, JSON.stringify({ questions: merged }, null, 2));
186
+ const { renameSync } = await import('node:fs');
187
+ renameSync(tmp, dest);
188
+ if (orgJson(ctx))
189
+ return printOrgJson({
190
+ v: 1,
191
+ org: name,
192
+ question_id: questionId,
193
+ role: q.role,
194
+ delivery: 'queued',
195
+ answered: true,
196
+ resolvedBy,
197
+ });
198
+ log(output.success(`Answer recorded — ${name}:${q.role} receives it when the org next runs.`));
199
+ return { success: true };
200
+ };
201
+ //# sourceMappingURL=org-observe-questions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-observe-questions.js","sourceRoot":"","sources":["../../../src/commands/org-observe-questions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CommandContext, CommandResult } from '../types.js';
2
+ /** `org report <name> [--run id] [--all] [--by-role] [--format mermaid]` — summarize a run (or list run history). */
3
+ export declare const reportAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
4
+ /** `org costs <name> [--run id]` — show per-role cost tracking from runtime.json */
5
+ export declare const costsAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
6
+ /** `org flow <name> [--run id]` — export org flow as Mermaid diagram */
7
+ export declare const flowAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
8
+ //# sourceMappingURL=org-observe-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-observe-report.d.ts","sourceRoot":"","sources":["../../../src/commands/org-observe-report.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjE,qHAAqH;AACrH,eAAO,MAAM,YAAY,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CAwP3F,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,WAAW,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CAgI1F,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,UAAU,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CA6DzF,CAAC"}