@monoes/monomindcli 2.5.1 → 2.5.3

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 (371) hide show
  1. package/.claude/agents/design/design-monodesign.md +6 -6
  2. package/.claude/agents/github/repo-architect.md +3 -3
  3. package/.claude/agents/github/sync-coordinator.md +2 -2
  4. package/.claude/agents/specialists/integration-architect.md +4 -4
  5. package/.claude/commands/github/repo-architect.md +4 -4
  6. package/.claude/commands/github/sync-coordinator.md +2 -2
  7. package/.claude/commands/mastermind/_repeat.md +4 -4
  8. package/.claude/commands/mastermind/approvev1.md +4 -4
  9. package/.claude/commands/mastermind/architect.md +6 -6
  10. package/.claude/commands/mastermind/autodev.md +5 -5
  11. package/.claude/commands/mastermind/brain.md +2 -2
  12. package/.claude/commands/mastermind/build.md +6 -6
  13. package/.claude/commands/mastermind/code-review.md +2 -2
  14. package/.claude/commands/mastermind/content.md +6 -6
  15. package/.claude/commands/mastermind/createorg.md +4 -4
  16. package/.claude/commands/mastermind/createtask.md +3 -3
  17. package/.claude/commands/mastermind/debug.md +5 -5
  18. package/.claude/commands/mastermind/design.md +5 -5
  19. package/.claude/commands/mastermind/do.md +2 -2
  20. package/.claude/commands/mastermind/execute.md +5 -5
  21. package/.claude/commands/mastermind/finance.md +6 -6
  22. package/.claude/commands/mastermind/finish.md +5 -5
  23. package/.claude/commands/mastermind/idea.md +6 -6
  24. package/.claude/commands/mastermind/ideate.md +5 -5
  25. package/.claude/commands/mastermind/improve.md +6 -6
  26. package/.claude/commands/mastermind/marketing.md +6 -6
  27. package/.claude/commands/mastermind/master.md +54 -54
  28. package/.claude/commands/mastermind/ops.md +6 -6
  29. package/.claude/commands/mastermind/orgs.md +2 -2
  30. package/.claude/commands/mastermind/orgstatus.md +2 -2
  31. package/.claude/commands/mastermind/plan.md +5 -5
  32. package/.claude/commands/mastermind/receive-review.md +5 -5
  33. package/.claude/commands/mastermind/release.md +6 -6
  34. package/.claude/commands/mastermind/research.md +6 -6
  35. package/.claude/commands/mastermind/review.md +6 -6
  36. package/.claude/commands/mastermind/runorg.md +4 -4
  37. package/.claude/commands/mastermind/runorgv1.md +5 -5
  38. package/.claude/commands/mastermind/sales.md +6 -6
  39. package/.claude/commands/mastermind/skill-builder.md +5 -5
  40. package/.claude/commands/mastermind/stoporg.md +3 -3
  41. package/.claude/commands/mastermind/taskdev.md +5 -5
  42. package/.claude/commands/mastermind/tdd.md +5 -5
  43. package/.claude/commands/mastermind/techport.md +5 -5
  44. package/.claude/commands/mastermind/verify.md +5 -5
  45. package/.claude/commands/mastermind/worktree.md +5 -5
  46. package/.claude/helpers/control-start.cjs +30 -0
  47. package/.claude/helpers/event-logger.cjs +2 -2
  48. package/.claude/helpers/extras-registry.json +1 -1
  49. package/.claude/helpers/handlers/agent-start-handler.cjs +2 -2
  50. package/.claude/helpers/handlers/edit-handler.cjs +2 -2
  51. package/.claude/helpers/handlers/gates-handler.cjs +1 -1
  52. package/.claude/helpers/handlers/route-handler.cjs +1 -1
  53. package/.claude/helpers/handlers/session-handler.cjs +1 -1
  54. package/.claude/helpers/handlers/session-restore-handler.cjs +11 -11
  55. package/.claude/helpers/handlers/task-handler.cjs +2 -2
  56. package/.claude/helpers/hook-handler.cjs +8 -8
  57. package/.claude/helpers/utils/monograph.cjs +44 -12
  58. package/.claude/skills/{mastermind-skills/access.md → mastermind-access/SKILL.md} +2 -2
  59. package/.claude/skills/{mastermind-skills/activity.md → mastermind-activity/SKILL.md} +2 -2
  60. package/.claude/skills/{mastermind-skills/adapter-manager.md → mastermind-adapter-manager/SKILL.md} +2 -2
  61. package/.claude/skills/{mastermind-skills/adapters.md → mastermind-adapters/SKILL.md} +2 -2
  62. package/.claude/skills/{mastermind-skills/agent-detail.md → mastermind-agent-detail/SKILL.md} +2 -2
  63. package/.claude/skills/{mastermind-skills/agents.md → mastermind-agents/SKILL.md} +2 -2
  64. package/.claude/skills/{mastermind-skills/approval-detail.md → mastermind-approval-detail/SKILL.md} +2 -2
  65. package/.claude/skills/{mastermind-skills/approvev1.md → mastermind-approvev1/SKILL.md} +2 -2
  66. package/.claude/skills/{mastermind-skills/architect.md → mastermind-architect/SKILL.md} +7 -7
  67. package/.claude/skills/{mastermind-skills/autodev.md → mastermind-autodev/SKILL.md} +10 -10
  68. package/.claude/skills/{mastermind-skills/backup.md → mastermind-backup/SKILL.md} +2 -2
  69. package/.claude/skills/{mastermind-skills/bootstrap.md → mastermind-bootstrap/SKILL.md} +2 -2
  70. package/.claude/skills/{mastermind-skills/budgets.md → mastermind-budgets/SKILL.md} +2 -2
  71. package/.claude/skills/{mastermind-skills/build.md → mastermind-build/SKILL.md} +5 -5
  72. package/.claude/skills/{mastermind-skills/companies.md → mastermind-companies/SKILL.md} +2 -2
  73. package/.claude/skills/{mastermind-skills/content.md → mastermind-content/SKILL.md} +5 -5
  74. package/.claude/skills/{mastermind-skills/costs.md → mastermind-costs/SKILL.md} +2 -2
  75. package/.claude/skills/{mastermind-skills/createorg.md → mastermind-createorg/SKILL.md} +3 -3
  76. package/.claude/skills/{mastermind-skills/debug.md → mastermind-debug/SKILL.md} +4 -4
  77. package/.claude/skills/{mastermind-skills/_delegation.md → mastermind-delegation/SKILL.md} +1 -1
  78. package/.claude/skills/{mastermind-skills/design.md → mastermind-design/SKILL.md} +9 -9
  79. package/.claude/skills/{mastermind-skills/diagnose.md → mastermind-diagnose/SKILL.md} +2 -2
  80. package/.claude/skills/{mastermind-skills/env.md → mastermind-env/SKILL.md} +2 -2
  81. package/.claude/skills/{mastermind-skills/environments.md → mastermind-environments/SKILL.md} +2 -2
  82. package/.claude/skills/{mastermind-skills/execute.md → mastermind-execute/SKILL.md} +10 -10
  83. package/.claude/skills/{mastermind-skills/export.md → mastermind-export/SKILL.md} +2 -2
  84. package/.claude/skills/{mastermind-skills/finance.md → mastermind-finance/SKILL.md} +5 -5
  85. package/.claude/skills/{mastermind-skills/goal-detail.md → mastermind-goal-detail/SKILL.md} +2 -2
  86. package/.claude/skills/{mastermind-skills/goals.md → mastermind-goals/SKILL.md} +2 -2
  87. package/.claude/skills/{mastermind-skills/heartbeatv1.md → mastermind-heartbeatv1/SKILL.md} +2 -2
  88. package/.claude/skills/{mastermind-skills/idea.md → mastermind-idea/SKILL.md} +7 -7
  89. package/.claude/skills/{mastermind-skills/import.md → mastermind-import/SKILL.md} +2 -2
  90. package/.claude/skills/{mastermind-skills/inbox.md → mastermind-inbox/SKILL.md} +2 -2
  91. package/.claude/skills/{mastermind-skills/instance.md → mastermind-instance/SKILL.md} +2 -2
  92. package/.claude/skills/{mastermind-skills/instance-settings.md → mastermind-instance-settings/SKILL.md} +2 -2
  93. package/.claude/skills/{mastermind-skills/invite-landing.md → mastermind-invite-landing/SKILL.md} +2 -2
  94. package/.claude/skills/{mastermind-skills/invites.md → mastermind-invites/SKILL.md} +2 -2
  95. package/.claude/skills/{mastermind-skills/issue-detail.md → mastermind-issue-detail/SKILL.md} +2 -2
  96. package/.claude/skills/{mastermind-skills/issues.md → mastermind-issues/SKILL.md} +2 -2
  97. package/.claude/skills/{mastermind-skills/join-queue.md → mastermind-join-queue/SKILL.md} +2 -2
  98. package/.claude/skills/{mastermind-skills/liveness.md → mastermind-liveness/SKILL.md} +2 -2
  99. package/.claude/skills/{mastermind-skills/marketing.md → mastermind-marketing/SKILL.md} +8 -8
  100. package/.claude/skills/{mastermind-skills/memory.md → mastermind-memory/SKILL.md} +2 -2
  101. package/.claude/skills/{mastermind-skills/monitor.md → mastermind-monitor/SKILL.md} +2 -2
  102. package/.claude/skills/{mastermind-skills/my-issues.md → mastermind-my-issues/SKILL.md} +2 -2
  103. package/.claude/skills/{mastermind-skills/new-agent.md → mastermind-new-agent/SKILL.md} +2 -2
  104. package/.claude/skills/{mastermind-skills/ops.md → mastermind-ops/SKILL.md} +5 -5
  105. package/.claude/skills/{mastermind-skills/org-chart.md → mastermind-org-chart/SKILL.md} +2 -2
  106. package/.claude/skills/{mastermind-skills/org-settings.md → mastermind-org-settings/SKILL.md} +2 -2
  107. package/.claude/skills/{mastermind-skills/orgs.md → mastermind-orgs/SKILL.md} +1 -1
  108. package/.claude/skills/{mastermind-skills/orgstatus.md → mastermind-orgstatus/SKILL.md} +2 -2
  109. package/.claude/skills/{mastermind-skills/plan.md → mastermind-plan/SKILL.md} +7 -7
  110. package/.claude/skills/{mastermind-skills/plan-to-tasks.md → mastermind-plan-to-tasks/SKILL.md} +2 -2
  111. package/.claude/skills/{mastermind-skills/plugin-manager.md → mastermind-plugin-manager/SKILL.md} +2 -2
  112. package/.claude/skills/{mastermind-skills/plugin-settings.md → mastermind-plugin-settings/SKILL.md} +2 -2
  113. package/.claude/skills/{mastermind-skills/plugins.md → mastermind-plugins/SKILL.md} +2 -2
  114. package/.claude/skills/{mastermind-skills/profile.md → mastermind-profile/SKILL.md} +2 -2
  115. package/.claude/skills/{mastermind-skills/project-detail.md → mastermind-project-detail/SKILL.md} +2 -2
  116. package/.claude/skills/{mastermind-skills/project-workspace.md → mastermind-project-workspace/SKILL.md} +2 -2
  117. package/.claude/skills/{mastermind-skills/projects.md → mastermind-projects/SKILL.md} +2 -2
  118. package/.claude/skills/{mastermind-skills/_protocol.md → mastermind-protocol/SKILL.md} +3 -3
  119. package/.claude/skills/{mastermind-skills/release.md → mastermind-release/SKILL.md} +5 -5
  120. package/.claude/skills/{mastermind-skills/_repeat.md → mastermind-repeat/SKILL.md} +2 -2
  121. package/.claude/skills/{mastermind-skills/research.md → mastermind-research/SKILL.md} +5 -5
  122. package/.claude/skills/{mastermind-skills/review.md → mastermind-review/SKILL.md} +5 -5
  123. package/.claude/skills/{mastermind-skills/routine-detail.md → mastermind-routine-detail/SKILL.md} +2 -2
  124. package/.claude/skills/{mastermind-skills/routines.md → mastermind-routines/SKILL.md} +2 -2
  125. package/.claude/skills/{mastermind-skills/runorgv1.md → mastermind-runorgv1/SKILL.md} +2 -2
  126. package/.claude/skills/{mastermind-skills/sales.md → mastermind-sales/SKILL.md} +5 -5
  127. package/.claude/skills/{mastermind-skills/search.md → mastermind-search/SKILL.md} +2 -2
  128. package/.claude/skills/{mastermind-skills/secrets.md → mastermind-secrets/SKILL.md} +2 -2
  129. package/.claude/skills/{mastermind-skills/skill-builder.md → mastermind-skill-builder/SKILL.md} +16 -14
  130. package/.claude/skills/mastermind-skills/{skills.md → SKILL.md} +2 -2
  131. package/.claude/skills/{mastermind-skills/stoporg.md → mastermind-stoporg/SKILL.md} +2 -2
  132. package/.claude/skills/{mastermind-skills/taskdev.md → mastermind-taskdev/SKILL.md} +6 -6
  133. package/.claude/skills/{mastermind-skills → mastermind-taskdev}/implementer-prompt.md +1 -1
  134. package/.claude/skills/{mastermind-skills/tasks.md → mastermind-tasks/SKILL.md} +2 -2
  135. package/.claude/skills/{mastermind-skills/tdd.md → mastermind-tdd/SKILL.md} +4 -4
  136. package/.claude/skills/{mastermind-skills/techport.md → mastermind-techport/SKILL.md} +6 -6
  137. package/.claude/skills/{mastermind-skills/threads.md → mastermind-threads/SKILL.md} +2 -2
  138. package/.claude/skills/{mastermind-skills/tree-control.md → mastermind-tree-control/SKILL.md} +2 -2
  139. package/.claude/skills/{mastermind-skills/verify.md → mastermind-verify/SKILL.md} +1 -1
  140. package/.claude/skills/{mastermind-skills/wiki.md → mastermind-wiki/SKILL.md} +2 -2
  141. package/.claude/skills/{mastermind-skills/workspace-detail.md → mastermind-workspace-detail/SKILL.md} +2 -2
  142. package/.claude/skills/{mastermind-skills/workspaces.md → mastermind-workspaces/SKILL.md} +2 -2
  143. package/.claude/skills/monodesign/SKILL.md +114 -190
  144. package/.claude/skills/monodesign/adapt.md +1 -1
  145. package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +4 -4
  146. package/.claude/skills/monodesign/agents/monodesign-manual-edit-applier.md +103 -0
  147. package/.claude/skills/monodesign/audit.md +1 -1
  148. package/.claude/skills/monodesign/craft.md +2 -2
  149. package/.claude/skills/monodesign/critique.md +1 -1
  150. package/.claude/skills/monodesign/init.md +30 -0
  151. package/.claude/skills/monodesign/layout.md +36 -0
  152. package/.claude/skills/monodesign/live.md +19 -44
  153. package/.claude/skills/monodesign/reference/adapt.md +122 -0
  154. package/.claude/skills/monodesign/reference/adapt.native.md +58 -0
  155. package/.claude/skills/monodesign/reference/android.md +40 -0
  156. package/.claude/skills/monodesign/reference/animate.md +39 -11
  157. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +67 -16
  158. package/.claude/skills/monodesign/reference/audit.md +5 -3
  159. package/.claude/skills/monodesign/reference/audit.native.md +139 -0
  160. package/.claude/skills/monodesign/reference/bolder.md +71 -64
  161. package/.claude/skills/monodesign/reference/brand.md +12 -18
  162. package/.claude/skills/monodesign/reference/clarify.md +114 -0
  163. package/.claude/skills/monodesign/reference/codex.md +4 -6
  164. package/.claude/skills/monodesign/reference/colorize.md +108 -5
  165. package/.claude/skills/monodesign/reference/craft.md +70 -143
  166. package/.claude/skills/monodesign/reference/critique.md +635 -68
  167. package/.claude/skills/monodesign/reference/delight.md +1 -1
  168. package/.claude/skills/monodesign/reference/distill.md +1 -1
  169. package/.claude/skills/monodesign/reference/document.md +24 -22
  170. package/.claude/skills/monodesign/reference/extract.md +1 -1
  171. package/.claude/skills/monodesign/reference/hooks.md +22 -29
  172. package/.claude/skills/monodesign/reference/init.md +221 -0
  173. package/.claude/skills/monodesign/reference/interaction-design.md +0 -6
  174. package/.claude/skills/monodesign/reference/ios.md +45 -0
  175. package/.claude/skills/monodesign/reference/layout.md +57 -13
  176. package/.claude/skills/monodesign/reference/live.md +159 -71
  177. package/.claude/skills/monodesign/reference/overdrive.md +1 -1
  178. package/.claude/skills/monodesign/reference/personas.md +1 -1
  179. package/.claude/skills/monodesign/reference/polish.md +16 -8
  180. package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +1 -1
  181. package/.claude/skills/monodesign/reference/product.md +1 -3
  182. package/.claude/skills/monodesign/reference/quieter.md +1 -1
  183. package/.claude/skills/monodesign/reference/shape.md +27 -13
  184. package/.claude/skills/monodesign/reference/teach.md +6 -152
  185. package/.claude/skills/monodesign/reference/typeset.md +180 -3
  186. package/.claude/skills/monodesign/scripts/command-metadata.json +94 -0
  187. package/.claude/skills/monodesign/scripts/context-signals.mjs +260 -0
  188. package/.claude/skills/monodesign/scripts/context.mjs +1061 -0
  189. package/.claude/skills/monodesign/scripts/critique-storage.mjs +416 -0
  190. package/.claude/skills/monodesign/scripts/detect-csp.mjs +198 -0
  191. package/.claude/skills/monodesign/scripts/detect.mjs +33 -0
  192. package/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +1962 -0
  193. package/.claude/skills/monodesign/scripts/detector/cli/main.mjs +321 -0
  194. package/.claude/skills/monodesign/scripts/detector/design-system.mjs +814 -0
  195. package/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +5601 -0
  196. package/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +50 -0
  197. package/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +259 -0
  198. package/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +258 -0
  199. package/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +636 -0
  200. package/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +1015 -0
  201. package/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +253 -0
  202. package/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +198 -0
  203. package/.claude/skills/monodesign/scripts/detector/findings.mjs +12 -0
  204. package/.claude/skills/monodesign/scripts/detector/fix/css-regions.mjs +181 -0
  205. package/.claude/skills/monodesign/scripts/detector/fix/fixers.mjs +373 -0
  206. package/.claude/skills/monodesign/scripts/detector/fix/index.mjs +426 -0
  207. package/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +198 -0
  208. package/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +166 -0
  209. package/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +563 -0
  210. package/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +2995 -0
  211. package/.claude/skills/monodesign/scripts/detector/shared/color.mjs +124 -0
  212. package/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +101 -0
  213. package/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +30 -0
  214. package/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +148 -0
  215. package/.claude/skills/monodesign/scripts/detector/shared/page.mjs +7 -0
  216. package/.claude/skills/monodesign/scripts/hook-admin.mjs +661 -0
  217. package/.claude/skills/monodesign/scripts/hook-before-edit.mjs +516 -0
  218. package/.claude/skills/monodesign/scripts/hook-lib.mjs +1776 -0
  219. package/.claude/skills/monodesign/scripts/hook.mjs +61 -0
  220. package/.claude/skills/monodesign/scripts/lib/design-parser.mjs +842 -0
  221. package/.claude/skills/monodesign/scripts/lib/is-generated.mjs +69 -0
  222. package/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +640 -0
  223. package/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +129 -0
  224. package/.claude/skills/monodesign/scripts/lib/provider.mjs +4 -0
  225. package/.claude/skills/monodesign/scripts/lib/target-args.mjs +42 -0
  226. package/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +50 -0
  227. package/.claude/skills/monodesign/scripts/live/completion.mjs +19 -0
  228. package/.claude/skills/monodesign/scripts/live/event-validation.mjs +137 -0
  229. package/.claude/skills/monodesign/scripts/live/insert-ui.mjs +458 -0
  230. package/.claude/skills/monodesign/scripts/live/manual-apply.mjs +939 -0
  231. package/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +357 -0
  232. package/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +152 -0
  233. package/.claude/skills/monodesign/scripts/live/session-store.mjs +293 -0
  234. package/.claude/skills/monodesign/scripts/live/svelte-component.mjs +826 -0
  235. package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +274 -0
  236. package/.claude/skills/monodesign/scripts/live/ui-core.mjs +180 -0
  237. package/.claude/skills/monodesign/scripts/live/vocabulary.mjs +36 -0
  238. package/.claude/skills/monodesign/scripts/live-accept.mjs +812 -0
  239. package/.claude/skills/monodesign/scripts/live-browser-dom.js +146 -0
  240. package/.claude/skills/monodesign/scripts/live-browser-session.js +123 -0
  241. package/.claude/skills/monodesign/scripts/live-browser.js +11240 -0
  242. package/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +1241 -0
  243. package/.claude/skills/monodesign/scripts/live-complete.mjs +75 -0
  244. package/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +683 -0
  245. package/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +51 -0
  246. package/.claude/skills/monodesign/scripts/live-inject.mjs +583 -0
  247. package/.claude/skills/monodesign/scripts/live-insert.mjs +272 -0
  248. package/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +363 -0
  249. package/.claude/skills/monodesign/scripts/live-poll.mjs +384 -0
  250. package/.claude/skills/monodesign/scripts/live-resume.mjs +94 -0
  251. package/.claude/skills/monodesign/scripts/live-server.mjs +1137 -0
  252. package/.claude/skills/monodesign/scripts/live-status.mjs +61 -0
  253. package/.claude/skills/monodesign/scripts/live-target.mjs +30 -0
  254. package/.claude/skills/monodesign/scripts/live-wrap.mjs +894 -0
  255. package/.claude/skills/monodesign/scripts/live.mjs +297 -0
  256. package/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +14 -0
  257. package/.claude/skills/monodesign/scripts/palette.mjs +633 -0
  258. package/.claude/skills/monodesign/scripts/pin.mjs +221 -0
  259. package/.claude/skills/monodesign/teach.md +7 -58
  260. package/README.md +1 -1
  261. package/dist/src/commands/design-detect.d.ts +7 -1
  262. package/dist/src/commands/design-detect.d.ts.map +1 -1
  263. package/dist/src/commands/design-detect.js +131 -38
  264. package/dist/src/commands/design-detect.js.map +1 -1
  265. package/dist/src/commands/design-palette.d.ts +0 -1
  266. package/dist/src/commands/design-palette.d.ts.map +1 -1
  267. package/dist/src/commands/design-palette.js +2 -3
  268. package/dist/src/commands/design-palette.js.map +1 -1
  269. package/dist/src/commands/doc.d.ts.map +1 -1
  270. package/dist/src/commands/doc.js +72 -15
  271. package/dist/src/commands/doc.js.map +1 -1
  272. package/dist/src/commands/doctor-project-checks.d.ts +5 -1
  273. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  274. package/dist/src/commands/doctor-project-checks.js +24 -1
  275. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  276. package/dist/src/commands/doctor.js +3 -3
  277. package/dist/src/commands/doctor.js.map +1 -1
  278. package/dist/src/commands/hooks-workers.d.ts +1 -1
  279. package/dist/src/commands/hooks-workers.js +8 -8
  280. package/dist/src/commands/hooks-workers.js.map +1 -1
  281. package/dist/src/commands/init.js +2 -2
  282. package/dist/src/commands/init.js.map +1 -1
  283. package/dist/src/commands/org.d.ts.map +1 -1
  284. package/dist/src/commands/org.js +109 -9
  285. package/dist/src/commands/org.js.map +1 -1
  286. package/dist/src/index.d.ts +1 -1
  287. package/dist/src/index.js +3 -3
  288. package/dist/src/index.js.map +1 -1
  289. package/dist/src/init/claudemd-generator.js +5 -5
  290. package/dist/src/init/claudemd-generator.js.map +1 -1
  291. package/dist/src/init/executor.d.ts.map +1 -1
  292. package/dist/src/init/executor.js +17 -6
  293. package/dist/src/init/executor.js.map +1 -1
  294. package/dist/src/knowledge/document-pipeline.d.ts +2 -0
  295. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  296. package/dist/src/knowledge/document-pipeline.js +4 -1
  297. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  298. package/dist/src/mcp-server.js +2 -2
  299. package/dist/src/mcp-server.js.map +1 -1
  300. package/dist/src/mcp-tools/hooks-intelligence.d.ts +1 -1
  301. package/dist/src/mcp-tools/hooks-intelligence.js +1 -1
  302. package/dist/src/mcp-tools/hooks-routing.js +2 -2
  303. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  304. package/dist/src/mcp-tools/hooks-tools.js +1 -1
  305. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  306. package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
  307. package/dist/src/mcp-tools/knowledge-tools.js +38 -7
  308. package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
  309. package/dist/src/mcp-tools/memory-tools.d.ts +8 -3
  310. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  311. package/dist/src/mcp-tools/memory-tools.js +193 -31
  312. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  313. package/dist/src/memory/memory-bridge.d.ts +33 -0
  314. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  315. package/dist/src/memory/memory-bridge.js +166 -17
  316. package/dist/src/memory/memory-bridge.js.map +1 -1
  317. package/dist/src/memory/memory-kg.d.ts +186 -0
  318. package/dist/src/memory/memory-kg.d.ts.map +1 -0
  319. package/dist/src/memory/memory-kg.js +450 -0
  320. package/dist/src/memory/memory-kg.js.map +1 -0
  321. package/dist/src/memory/query-router.d.ts +44 -0
  322. package/dist/src/memory/query-router.d.ts.map +1 -0
  323. package/dist/src/memory/query-router.js +113 -0
  324. package/dist/src/memory/query-router.js.map +1 -0
  325. package/dist/src/orgrt/daemon.d.ts +18 -0
  326. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  327. package/dist/src/orgrt/daemon.js +249 -12
  328. package/dist/src/orgrt/daemon.js.map +1 -1
  329. package/dist/src/orgrt/migrate.d.ts.map +1 -1
  330. package/dist/src/orgrt/migrate.js +7 -0
  331. package/dist/src/orgrt/migrate.js.map +1 -1
  332. package/dist/src/orgrt/policy.d.ts.map +1 -1
  333. package/dist/src/orgrt/policy.js +7 -0
  334. package/dist/src/orgrt/policy.js.map +1 -1
  335. package/dist/src/orgrt/session.d.ts +24 -1
  336. package/dist/src/orgrt/session.d.ts.map +1 -1
  337. package/dist/src/orgrt/session.js +18 -3
  338. package/dist/src/orgrt/session.js.map +1 -1
  339. package/dist/src/orgrt/templates.d.ts +1 -0
  340. package/dist/src/orgrt/templates.d.ts.map +1 -1
  341. package/dist/src/orgrt/templates.js +9 -4
  342. package/dist/src/orgrt/templates.js.map +1 -1
  343. package/dist/src/orgrt/types.d.ts +15 -0
  344. package/dist/src/orgrt/types.d.ts.map +1 -1
  345. package/dist/src/orgrt/types.js +2 -0
  346. package/dist/src/orgrt/types.js.map +1 -1
  347. package/dist/src/routing/embed-worker.js +1 -1
  348. package/dist/src/routing/embed-worker.js.map +1 -1
  349. package/dist/src/routing/llm-caller.js +1 -1
  350. package/dist/src/routing/route-layer-factory.js +1 -1
  351. package/dist/src/routing/route-layer-factory.js.map +1 -1
  352. package/dist/src/ui/dashboard.html +176 -26
  353. package/dist/src/ui/data/sessions/final-sess-001.jsonl +180 -180
  354. package/dist/src/ui/orgs.html +24 -0
  355. package/dist/src/ui/server.mjs +162 -12
  356. package/dist/src/update/checker.js +3 -3
  357. package/dist/src/update/checker.js.map +1 -1
  358. package/dist/tsconfig.tsbuildinfo +1 -1
  359. package/package.json +8 -6
  360. /package/.claude/skills/{mastermind-skills/_agent-select.md → mastermind-agent-select/SKILL.md} +0 -0
  361. /package/.claude/skills/{mastermind-skills/finish.md → mastermind-finish/SKILL.md} +0 -0
  362. /package/.claude/skills/{mastermind-skills/_intake.md → mastermind-intake/SKILL.md} +0 -0
  363. /package/.claude/skills/{mastermind-skills → mastermind-marketing}/references/copywriting-frameworks.md +0 -0
  364. /package/.claude/skills/{mastermind-skills → mastermind-marketing}/references/persuasion-psychology.md +0 -0
  365. /package/.claude/skills/{mastermind-skills/monotask.md → mastermind-monotask/SKILL.md} +0 -0
  366. /package/.claude/skills/{mastermind-skills/receive-review.md → mastermind-receive-review/SKILL.md} +0 -0
  367. /package/.claude/skills/{mastermind-skills/runorg.md → mastermind-runorg/SKILL.md} +0 -0
  368. /package/.claude/skills/{mastermind-skills → mastermind-taskdev}/code-quality-reviewer-prompt.md +0 -0
  369. /package/.claude/skills/{mastermind-skills → mastermind-taskdev}/final-reviewer-prompt.md +0 -0
  370. /package/.claude/skills/{mastermind-skills → mastermind-taskdev}/spec-reviewer-prompt.md +0 -0
  371. /package/.claude/skills/{mastermind-skills/worktree.md → mastermind-worktree/SKILL.md} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-kg.js","sourceRoot":"","sources":["../../../src/memory/memory-kg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Query Router + RRF fusion — Phase 4 of the cognee port plan.
3
+ *
4
+ * routeQuery: cognee's rule-based (non-LLM) recall router scaled to our four
5
+ * retrieval surfaces — document chunks, knowledge-graph triplets, distilled
6
+ * rules, and org/pattern memories. Weighted regex rules with a negation
7
+ * window, a confidence gate (winner must be ≥2× runner-up), and an in-memory
8
+ * misroute counter for debuggability.
9
+ *
10
+ * rrfFuse: Reciprocal Rank Fusion across result lists whose raw scores are
11
+ * not comparable (cosine vs blended vs keyword) — `Σ 1/(rrf_k + rank + 1)`
12
+ * with cognee's adaptive rrf_k = max(30, min(60, 20 + 2·top_k)).
13
+ *
14
+ * @module v1/cli/memory/query-router
15
+ */
16
+ export type RetrievalSurface = 'chunks' | 'kg' | 'rules' | 'memory';
17
+ export interface RouteDecision {
18
+ /** Surfaces to hit, best first. Always non-empty ('chunks' is the fallback). */
19
+ surfaces: RetrievalSurface[];
20
+ /** Winner's score ≥ 2× runner-up (cognee's confidence gate). Low-confidence
21
+ * routes should hit ALL surfaces and fuse. */
22
+ confident: boolean;
23
+ scores: Record<RetrievalSurface, number>;
24
+ }
25
+ export declare function routeQuery(query: string): RouteDecision;
26
+ /** Call when a route proved wrong (caller retried another surface) — counts
27
+ * feed debugging, mirroring cognee's record_override telemetry. */
28
+ export declare function recordRouteOverride(from: RetrievalSurface, to: RetrievalSurface): void;
29
+ /** In-memory counts from this process only; pass merged=true to include the
30
+ * persisted cross-process counts from .monomind/metrics/route-overrides.json. */
31
+ export declare function getRouteOverrides(merged?: boolean): Record<string, number>;
32
+ export interface FusableResult {
33
+ /** Stable identity across lists (id or key). */
34
+ id: string;
35
+ /** Importance factor input in [0,1]; defaults 0.5. */
36
+ importance?: number;
37
+ [extra: string]: unknown;
38
+ }
39
+ /** Fuse ranked lists via RRF × importance factor (cognee hybrid/ranking.py).
40
+ * Input lists must each be ranked best-first; raw scores are ignored. */
41
+ export declare function rrfFuse<T extends FusableResult>(lists: T[][], topK: number): (T & {
42
+ rrf: number;
43
+ })[];
44
+ //# sourceMappingURL=query-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-router.d.ts","sourceRoot":"","sources":["../../../src/memory/query-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;AAyBpE,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B;mDAC+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC1C;AAmBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAqBvD;AAED;oEACoE;AACpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAItF;AACD;kFACkF;AAClF,wBAAgB,iBAAiB,CAAC,MAAM,UAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxE;AAID,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;0EAC0E;AAC1E,wBAAgB,OAAO,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAgBpG"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Query Router + RRF fusion — Phase 4 of the cognee port plan.
3
+ *
4
+ * routeQuery: cognee's rule-based (non-LLM) recall router scaled to our four
5
+ * retrieval surfaces — document chunks, knowledge-graph triplets, distilled
6
+ * rules, and org/pattern memories. Weighted regex rules with a negation
7
+ * window, a confidence gate (winner must be ≥2× runner-up), and an in-memory
8
+ * misroute counter for debuggability.
9
+ *
10
+ * rrfFuse: Reciprocal Rank Fusion across result lists whose raw scores are
11
+ * not comparable (cosine vs blended vs keyword) — `Σ 1/(rrf_k + rank + 1)`
12
+ * with cognee's adaptive rrf_k = max(30, min(60, 20 + 2·top_k)).
13
+ *
14
+ * @module v1/cli/memory/query-router
15
+ */
16
+ import fs from 'node:fs';
17
+ import path from 'node:path';
18
+ // Order matters only for tie display; scoring is additive per surface.
19
+ const ROUTE_RULES = [
20
+ // Rules: "how should I", conventions, policies, dos and don'ts.
21
+ { surface: 'rules', pattern: /\b(rules?|conventions?|policy|policies|guidelines?|best practices?|should (i|we|you)|always|never|allowed|forbidden)\b/i, weight: 2 },
22
+ // KG: relationships, structure, "how does X relate to / depend on Y", who/what connects.
23
+ { surface: 'kg', pattern: /\b(relat(e|es|ed|ionship)|depend(s|ency|encies)?|connect(s|ed|ion)?|link(s|ed)?|between|structure|architecture|who (owns|maintains|uses)|what (uses|calls|imports))\b/i, weight: 2 },
24
+ { surface: 'kg', pattern: /\b(entity|entities|graph|triplet)\b/i, weight: 1.5 },
25
+ // Memory: past runs/decisions/outcomes/history.
26
+ { surface: 'memory', pattern: /\b(last (run|time)|previous(ly)?|history|past|earlier|before|decision|decided|outcome|learned|remember)\b/i, weight: 2 },
27
+ // Chunks: docs/specs/definitions/how-to content.
28
+ { surface: 'chunks', pattern: /\b(doc(s|ument|umentation)?|spec|readme|guide|manual|note(s)?|wrote|written|what is|how (do|to)|explain|describe|definition)\b/i, weight: 1.5 },
29
+ ];
30
+ /** Negated mentions must not vote: "not about the architecture" (cognee uses
31
+ * a 20-char pre-match negation window; same here). */
32
+ const NEGATION_RE = /\b(not?|without|except|ignore|don'?t|excluding)\b[^.!?]{0,20}$/i;
33
+ const overrideCounts = {};
34
+ /** Overrides persist across processes (the CLI is one-shot — an in-memory
35
+ * counter alone evaporates before doctor/debugging can read it). Best-effort
36
+ * read-merge-write of a tiny JSON file; never throws into the caller. */
37
+ const OVERRIDES_FILE = ['.monomind', 'metrics', 'route-overrides.json'];
38
+ function persistOverride(key) {
39
+ try {
40
+ const file = path.join(process.cwd(), ...OVERRIDES_FILE);
41
+ fs.mkdirSync(path.dirname(file), { recursive: true });
42
+ let disk = {};
43
+ try {
44
+ disk = JSON.parse(fs.readFileSync(file, 'utf-8'));
45
+ }
46
+ catch { /* fresh file */ }
47
+ disk[key] = (typeof disk[key] === 'number' ? disk[key] : 0) + 1;
48
+ fs.writeFileSync(file, JSON.stringify(disk, null, 2));
49
+ }
50
+ catch { /* telemetry must never block or throw */ }
51
+ }
52
+ export function routeQuery(query) {
53
+ const q = String(query ?? '').slice(0, 2000);
54
+ const scores = { chunks: 0.5, kg: 0, rules: 0, memory: 0 }; // chunks = weak prior
55
+ for (const rule of ROUTE_RULES) {
56
+ for (const m of q.matchAll(new RegExp(rule.pattern.source, rule.pattern.flags + 'g'))) {
57
+ const before = q.slice(Math.max(0, (m.index ?? 0) - 26), m.index ?? 0);
58
+ if (NEGATION_RE.test(before))
59
+ continue;
60
+ scores[rule.surface] += rule.weight;
61
+ }
62
+ }
63
+ const ranked = Object.entries(scores)
64
+ .sort((a, b) => b[1] - a[1]);
65
+ const [winner, runnerUp] = ranked;
66
+ const confident = winner[1] >= 2 * Math.max(runnerUp[1], 0.25);
67
+ const surfaces = confident
68
+ ? [winner[0]]
69
+ : ranked.filter(([, s]) => s > 0).map(([k]) => k);
70
+ return { surfaces: surfaces.length ? surfaces : ['chunks'], confident, scores };
71
+ }
72
+ /** Call when a route proved wrong (caller retried another surface) — counts
73
+ * feed debugging, mirroring cognee's record_override telemetry. */
74
+ export function recordRouteOverride(from, to) {
75
+ const key = `${from}->${to}`;
76
+ overrideCounts[key] = (overrideCounts[key] ?? 0) + 1;
77
+ persistOverride(key);
78
+ }
79
+ /** In-memory counts from this process only; pass merged=true to include the
80
+ * persisted cross-process counts from .monomind/metrics/route-overrides.json. */
81
+ export function getRouteOverrides(merged = false) {
82
+ if (!merged)
83
+ return { ...overrideCounts };
84
+ try {
85
+ const disk = JSON.parse(fs.readFileSync(path.join(process.cwd(), ...OVERRIDES_FILE), 'utf-8'));
86
+ return { ...disk }; // disk already includes this process's persisted increments
87
+ }
88
+ catch {
89
+ return { ...overrideCounts };
90
+ }
91
+ }
92
+ /** Fuse ranked lists via RRF × importance factor (cognee hybrid/ranking.py).
93
+ * Input lists must each be ranked best-first; raw scores are ignored. */
94
+ export function rrfFuse(lists, topK) {
95
+ const rrfK = Math.max(30, Math.min(60, 20 + 2 * topK));
96
+ const byId = new Map();
97
+ for (const list of lists) {
98
+ list.forEach((item, rank) => {
99
+ const importance = typeof item.importance === 'number' ? item.importance : 0.5;
100
+ const contribution = (1 / (rrfK + rank + 1)) * (0.75 + 0.5 * importance);
101
+ const existing = byId.get(item.id);
102
+ if (existing)
103
+ existing.rrf += contribution;
104
+ else
105
+ byId.set(item.id, { item, rrf: contribution });
106
+ });
107
+ }
108
+ return [...byId.values()]
109
+ .sort((a, b) => b.rrf - a.rrf)
110
+ .slice(0, topK)
111
+ .map(({ item, rrf }) => ({ ...item, rrf }));
112
+ }
113
+ //# sourceMappingURL=query-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-router.js","sourceRoot":"","sources":["../../../src/memory/query-router.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,8 @@ export declare class OrgDaemon {
44
44
  private globalSubscribers;
45
45
  private leases;
46
46
  private forwarders;
47
+ private watchdogs;
48
+ private stopping;
47
49
  constructor(root: string, opts?: DaemonOpts);
48
50
  /** Publish this daemon's inbox so orgs started AFTER this call register with the broker. */
49
51
  setInboxUrl(url: string): void;
@@ -98,6 +100,7 @@ export declare class OrgDaemon {
98
100
  * Fire-and-forget — errors are logged but don't propagate to the sender. */
99
101
  private autoWake;
100
102
  stopOrg(name: string): Promise<void>;
103
+ private finishStop;
101
104
  stopAll(): Promise<void>;
102
105
  private orgMemoryNamespace;
103
106
  /** Store dir for org cross-run memory — inside the org root so the bridge's
@@ -109,6 +112,16 @@ export declare class OrgDaemon {
109
112
  * unusual daemon setups) that redirect would write into the WRONG project's
110
113
  * memory — verify the guard kept our path, and skip org memory otherwise. */
111
114
  private orgMemoryUsable;
115
+ /** Namespace for a role's PRIVATE memories, inside the org memory DB. */
116
+ private agentMemoryNamespace;
117
+ /** org_remember implementation: a deliberate write to org-shared or
118
+ * role-private memory (both in the org memory DB, split by namespace). */
119
+ private rememberOrgMemory;
120
+ /** Entry IDs served by org_recall during the current run, per org. This is
121
+ * the usage record the run-outcome auto-rating consumes (cognee's
122
+ * used_graph_element_ids pattern) — recall renders text to the agent, so
123
+ * the IDs must be captured here or they're gone. */
124
+ private recallUsage;
112
125
  /** org_recall implementation: search the org's memory namespace via the
113
126
  * memory bridge (semantic when the local model is available, tokenized
114
127
  * keyword otherwise). Failures return a message, never throw into the tool. */
@@ -121,6 +134,11 @@ export declare class OrgDaemon {
121
134
  text: string;
122
135
  hits: number;
123
136
  }>;
137
+ /** org_learn implementation: merge coordinator-extracted entities/relations/
138
+ * rules into the org's knowledge graph (LLM extraction happens inside the
139
+ * agent's own subscription-auth SDK session — no separate LLM call here). */
140
+ private orgLearnedRuns;
141
+ private learnOrgKnowledge;
124
142
  /** Persist the run's outcome into cross-run org memory so org_recall (and
125
143
  * future runs) can find it by meaning, not just recency. Best-effort. */
126
144
  private storeRunMemory;
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/orgrt/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/orgrt/daemon.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export class OrgDaemon {
19
19
  globalSubscribers = new Set();
20
20
  leases = new Map();
21
21
  forwarders = new Map();
22
+ watchdogs = new Map();
23
+ stopping = new Map();
22
24
  constructor(root, opts = {}) {
23
25
  this.root = root;
24
26
  this.opts = opts;
@@ -51,10 +53,26 @@ export class OrgDaemon {
51
53
  // Write's captured content snapshot alone can be up to 200KB (policy.ts).
52
54
  const MAX_COLLECTED = 5000;
53
55
  const collected = [];
56
+ let lastActivity = Date.now();
54
57
  bus.subscribe(e => {
55
58
  collected.push(e);
56
59
  if (collected.length > MAX_COLLECTED)
57
60
  collected.splice(0, collected.length - MAX_COLLECTED);
61
+ // The watchdog's own nudge event must not count as org activity, or a
62
+ // hung boss would never trip the "nudge produced no activity" stop.
63
+ if (e.reason !== 'idle-nudge')
64
+ lastActivity = Date.now();
65
+ // org_complete IS the end of the run — self-stop instead of sitting
66
+ // "running" forever after a recorded outcome. Deferred (unref'd) so the
67
+ // tool call's receipt reaches the boss and its final turn text still
68
+ // lands on the bus before mailboxes close; stopOrg is reentrant-safe
69
+ // against a concurrent manual stop.
70
+ if (e.type === 'status' && e.reason === 'org-complete') {
71
+ const t = setTimeout(() => {
72
+ this.stopOrg(name).catch(err => console.error(`org ${name}: auto-stop after org_complete failed:`, err instanceof Error ? err.message : err));
73
+ }, 1000);
74
+ t.unref?.();
75
+ }
58
76
  for (const fn of this.globalSubscribers)
59
77
  fn(e);
60
78
  });
@@ -69,6 +87,19 @@ export class OrgDaemon {
69
87
  // fallback-selected boss could be told to call org_complete without having
70
88
  // the tool.
71
89
  const bossRole = def.roles.find(r => r.type === 'boss' || r.reports_to === null) ?? def.roles[0];
90
+ // Canonical entity names from the org KG — injected into the coordinator
91
+ // prompt so org_learn extractions reuse them instead of minting duplicates.
92
+ const glossary = await (async () => {
93
+ try {
94
+ if (!(await this.orgMemoryUsable()))
95
+ return [];
96
+ const kg = await import('../memory/memory-kg.js');
97
+ return await kg.kgGlossary({ dbPath: this.orgMemoryDbPath() });
98
+ }
99
+ catch {
100
+ return [];
101
+ }
102
+ })();
72
103
  for (const role of def.roles) {
73
104
  const mailbox = new Mailbox();
74
105
  const policy = new PolicyEngine(role.id, { maxTokens: perRoleBudget, ...(role.policy ?? {}) }, bus, cwd);
@@ -84,7 +115,7 @@ export class OrgDaemon {
84
115
  }
85
116
  : undefined,
86
117
  recall: async (r, q) => {
87
- const answer = await this.recallOrgMemory(name, def, q);
118
+ const answer = await this.recallOrgMemory(name, def, q, r);
88
119
  bus.emit({ type: 'status', from: r, reason: 'org-recall', msg: `recall: ${q.slice(0, 80)}`, data: { hits: answer.hits } });
89
120
  return answer.text;
90
121
  },
@@ -93,6 +124,20 @@ export class OrgDaemon {
93
124
  bus.emit({ type: 'status', from: r, reason: 'knowledge-search', msg: `knowledge: ${q.slice(0, 80)}`, data: { hits: answer.hits } });
94
125
  return answer.text;
95
126
  },
127
+ glossary,
128
+ remember: async (r, content, scope) => {
129
+ const text = await this.rememberOrgMemory(name, def, r, content, scope, run);
130
+ bus.emit({ type: 'status', from: r, reason: 'org-remember', msg: `remember (${scope}): ${content.slice(0, 80)}`, data: { scope } });
131
+ return text;
132
+ },
133
+ learn: async (r, payload) => {
134
+ const text = await this.learnOrgKnowledge(name, run, payload);
135
+ bus.emit({
136
+ type: 'status', from: r, reason: 'org-learn', msg: `learn: ${text.slice(0, 120)}`,
137
+ data: { nodes: payload.nodes?.length ?? 0, edges: payload.edges?.length ?? 0, rules: payload.rules?.length ?? 0 },
138
+ });
139
+ return text;
140
+ },
96
141
  queryFn: this.opts.queryFn,
97
142
  };
98
143
  // Supervised session: transient crashes (provider blips, network) restart
@@ -163,6 +208,50 @@ export class OrgDaemon {
163
208
  `Coordinate your team via org_send. When the goal is achieved (or clearly can't be), record it with org_complete, then end your turn.${prevBrief}`);
164
209
  bus.emit({ type: 'status', msg: `org started (${def.roles.length} agents)`, data: { goal: taskOverride ?? def.goal } });
165
210
  this.persistState(name, 'running', run);
211
+ // Idle watchdog: a hung tool call (or a run that quietly finished without
212
+ // org_complete) produces no bus events, and every agent just waits. After
213
+ // idle_minutes of silence, nudge the boss to complete or reassign; if the
214
+ // nudge itself produces no activity (boss hung/crashed), or the org keeps
215
+ // going idle after MAX_IDLE_NUDGES nudges, stop the run instead of letting
216
+ // it freeze forever. idle_minutes: 0 disables.
217
+ const idleMs = (def.run_config.idle_minutes ?? 10) * 60_000;
218
+ if (idleMs > 0) {
219
+ const MAX_IDLE_NUDGES = 3;
220
+ let nudgedAt = 0;
221
+ let nudges = 0;
222
+ const idleStop = (msg) => {
223
+ bus.emit({ type: 'audit', reason: 'idle-stop', msg });
224
+ this.stopOrg(name).catch(err => console.error(`org ${name}: idle-stop failed:`, err instanceof Error ? err.message : err));
225
+ };
226
+ const wd = setInterval(() => {
227
+ const idleFor = Date.now() - lastActivity;
228
+ if (idleFor < idleMs) {
229
+ nudgedAt = 0;
230
+ return;
231
+ }
232
+ if (nudgedAt === 0) {
233
+ if (nudges >= MAX_IDLE_NUDGES) {
234
+ idleStop(`org idle again after ${nudges} nudges — stopping run`);
235
+ return;
236
+ }
237
+ const bossRt = running.agents.get(bossRole.id);
238
+ if (!bossRt || bossRt.status !== 'running' || bossRt.mailbox.isClosed) {
239
+ idleStop(`org idle for ${Math.round(idleFor / 60_000)}m and boss "${bossRole.id}" is unreachable — stopping run`);
240
+ return;
241
+ }
242
+ nudges++;
243
+ nudgedAt = Date.now();
244
+ bus.emit({ type: 'audit', from: bossRole.id, reason: 'idle-nudge', msg: `no org activity for ${Math.round(idleFor / 60_000)}m — nudging boss (${nudges}/${MAX_IDLE_NUDGES})` });
245
+ bossRt.mailbox.push(`[watchdog] No activity in org "${name}" for ${Math.round(idleFor / 60_000)} minute(s). ` +
246
+ `If the goal is achieved (or clearly can't be), call org_complete now. Otherwise check on your team via org_send and reassign stalled work.`);
247
+ }
248
+ else if (Date.now() - nudgedAt >= idleMs) {
249
+ idleStop(`nudge produced no activity for another ${Math.round(idleMs / 60_000)}m — boss appears hung, stopping run`);
250
+ }
251
+ }, Math.max(200, Math.min(idleMs / 2, 30_000)));
252
+ wd.unref?.();
253
+ this.watchdogs.set(name, wd);
254
+ }
166
255
  if (this.opts.crossProcess && this.opts.inboxUrl) {
167
256
  const lease = new BrokerLease(name, this.opts.inboxUrl, this.opts.brokerDir);
168
257
  lease.start();
@@ -383,19 +472,42 @@ export class OrgDaemon {
383
472
  .finally(() => { this.waking.delete(name); });
384
473
  }
385
474
  async stopOrg(name) {
475
+ // Join an in-flight stop instead of no-oping: the self-stop paths
476
+ // (org_complete, idle watchdog) run detached, and a caller like
477
+ // `org run`'s final stopAll() must not resolve — letting the process
478
+ // exit — while that stop is still flushing the bus and writing
479
+ // history/runtime.json.
480
+ const inflight = this.stopping.get(name);
481
+ if (inflight)
482
+ return inflight;
386
483
  const org = this.orgs.get(name);
387
484
  if (!org)
388
- return; // already stopped, or another concurrent stopOrg() call is handling it
485
+ return; // already stopped
389
486
  // Remove immediately (not at the end) so a concurrent stopOrg(name) call —
390
- // e.g. stopAll() racing a scheduler-triggered stop on SIGINT — sees the org
391
- // is already gone and no-ops instead of re-running the whole shutdown and
487
+ // e.g. stopAll() racing a scheduler-triggered stop on SIGINT — joins this
488
+ // shutdown via `stopping` instead of re-running the whole sequence and
392
489
  // double-emitting 'org stopped' (duplicate org:complete/session:complete).
393
490
  this.orgs.delete(name);
491
+ const p = this.finishStop(name, org);
492
+ this.stopping.set(name, p);
493
+ try {
494
+ await p;
495
+ }
496
+ finally {
497
+ this.stopping.delete(name);
498
+ }
499
+ }
500
+ async finishStop(name, org) {
394
501
  // Capture THIS run's forwarder now: an autoWake-restart of the same org
395
502
  // during the long tail below (agent wait, flush, history write) would
396
503
  // register a NEW forwarder under the same name — settling/unsubscribing
397
504
  // that one would sever the new run's dashboard stream.
398
505
  const forwarder = this.forwarders.get(name);
506
+ const wd = this.watchdogs.get(name);
507
+ if (wd) {
508
+ clearInterval(wd);
509
+ this.watchdogs.delete(name);
510
+ }
399
511
  this.leases.get(name)?.stop();
400
512
  this.leases.delete(name);
401
513
  for (const a of org.agents.values())
@@ -453,7 +565,10 @@ export class OrgDaemon {
453
565
  this.persistState(name, 'stopped', org.run);
454
566
  }
455
567
  async stopAll() {
456
- await Promise.all([...this.orgs.keys()].map(n => this.stopOrg(n)));
568
+ await Promise.all([
569
+ ...[...this.orgs.keys()].map(n => this.stopOrg(n)),
570
+ ...this.stopping.values(), // detached self-stops still flushing
571
+ ]);
457
572
  }
458
573
  orgMemoryNamespace(name, def) {
459
574
  return def.run_config.memory_namespace ?? `org:${name}`;
@@ -486,21 +601,82 @@ export class OrgDaemon {
486
601
  return false;
487
602
  }
488
603
  }
604
+ /** Namespace for a role's PRIVATE memories, inside the org memory DB. */
605
+ agentMemoryNamespace(name, def, role) {
606
+ return `agent:${this.orgMemoryNamespace(name, def)}:${role}`;
607
+ }
608
+ /** org_remember implementation: a deliberate write to org-shared or
609
+ * role-private memory (both in the org memory DB, split by namespace). */
610
+ async rememberOrgMemory(name, def, role, content, scope, run) {
611
+ try {
612
+ if (!(await this.orgMemoryUsable()))
613
+ return 'org memory is not available in this environment.';
614
+ const { bridgeStoreEntry } = await import('../memory/memory-bridge.js');
615
+ const namespace = scope === 'agent' ? this.agentMemoryNamespace(name, def, role) : this.orgMemoryNamespace(name, def);
616
+ const res = await bridgeStoreEntry({
617
+ key: `mem-${run}-${Date.now().toString(36)}`,
618
+ value: content.slice(0, 20_000),
619
+ namespace,
620
+ dbPath: this.orgMemoryDbPath(),
621
+ tags: [scope, role],
622
+ metadata: { origin_refs: [`run:${run}`], by: role },
623
+ });
624
+ if (res?.duplicate)
625
+ return `Already remembered (near-duplicate exists) — reinforced instead.`;
626
+ return res?.success ? `Remembered (${scope} scope).` : `Could not store memory${res?.error ? `: ${res.error}` : ''}.`;
627
+ }
628
+ catch (err) {
629
+ return `org_remember failed (${err instanceof Error ? err.message : 'error'})`;
630
+ }
631
+ }
632
+ /** Entry IDs served by org_recall during the current run, per org. This is
633
+ * the usage record the run-outcome auto-rating consumes (cognee's
634
+ * used_graph_element_ids pattern) — recall renders text to the agent, so
635
+ * the IDs must be captured here or they're gone. */
636
+ recallUsage = new Map();
489
637
  /** org_recall implementation: search the org's memory namespace via the
490
638
  * memory bridge (semantic when the local model is available, tokenized
491
639
  * keyword otherwise). Failures return a message, never throw into the tool. */
492
- async recallOrgMemory(name, def, query) {
640
+ async recallOrgMemory(name, def, query, role) {
493
641
  try {
494
642
  if (!(await this.orgMemoryUsable()))
495
643
  return { text: 'org memory is not available in this environment.', hits: 0 };
496
- const { bridgeSearchEntries } = await import('../memory/memory-bridge.js');
497
- const res = await bridgeSearchEntries({
498
- query, namespace: this.orgMemoryNamespace(name, def), limit: 5, dbPath: this.orgMemoryDbPath(),
499
- });
500
- const results = res?.results ?? [];
644
+ const bridge = await import('../memory/memory-bridge.js');
645
+ // Shared org memory plus the caller's private agent scope, merged by score.
646
+ const [shared, priv] = await Promise.all([
647
+ bridge.bridgeSearchEntries({
648
+ query, namespace: this.orgMemoryNamespace(name, def), limit: 5, dbPath: this.orgMemoryDbPath(),
649
+ }),
650
+ role ? bridge.bridgeSearchEntries({
651
+ query, namespace: this.agentMemoryNamespace(name, def, role), limit: 3, dbPath: this.orgMemoryDbPath(),
652
+ }) : null,
653
+ ]);
654
+ const results = [
655
+ ...(shared?.results ?? []),
656
+ ...(priv?.results ?? []).map(r => ({ ...r, key: `${r.key} (private)` })),
657
+ ].sort((a, b) => b.score - a.score).slice(0, 6);
501
658
  if (!results.length)
502
659
  return { text: 'No matching org memory found — this may be the first run covering this topic.', hits: 0 };
503
- const text = results.map((r, i) => `${i + 1}. [${r.key}] ${r.content}`).join('\n\n');
660
+ const ids = results.map(r => r.id).filter(Boolean);
661
+ let used = this.recallUsage.get(name);
662
+ if (!used) {
663
+ used = new Set();
664
+ this.recallUsage.set(name, used);
665
+ }
666
+ for (const id of ids)
667
+ used.add(id);
668
+ // Frequency reinforcement is immediate; the feedback rating waits for the
669
+ // run outcome (positive-only — see storeRunMemory).
670
+ bridge.bridgeRecordUsage({ entryIds: ids, dbPath: this.orgMemoryDbPath() }).catch(() => { });
671
+ let text = results.map((r, i) => `${i + 1}. [${r.key}] ${r.content}`).join('\n\n');
672
+ // Structured knowledge: relationship triplets from the org KG, when any.
673
+ try {
674
+ const kg = await import('../memory/memory-kg.js');
675
+ const graph = await kg.kgSearch({ query, dbPath: this.orgMemoryDbPath(), limit: 5 });
676
+ if (graph.context)
677
+ text += `\n\nKnowledge graph:\n${graph.context}`;
678
+ }
679
+ catch { /* best effort */ }
504
680
  return { text, hits: results.length };
505
681
  }
506
682
  catch (err) {
@@ -524,6 +700,38 @@ export class OrgDaemon {
524
700
  return { text: `knowledge search unavailable (${err instanceof Error ? err.message : 'error'})`, hits: 0 };
525
701
  }
526
702
  }
703
+ /** org_learn implementation: merge coordinator-extracted entities/relations/
704
+ * rules into the org's knowledge graph (LLM extraction happens inside the
705
+ * agent's own subscription-auth SDK session — no separate LLM call here). */
706
+ orgLearnedRuns = new Set();
707
+ async learnOrgKnowledge(name, run, payload) {
708
+ try {
709
+ if (!(await this.orgMemoryUsable()))
710
+ return 'org memory is not available in this environment.';
711
+ const kg = await import('../memory/memory-kg.js');
712
+ const dbPath = this.orgMemoryDbPath();
713
+ const originRef = `run:${run}`;
714
+ const graph = await kg.kgIngest({
715
+ nodes: (payload.nodes ?? []),
716
+ edges: (payload.edges ?? []),
717
+ originRef, dbPath,
718
+ });
719
+ const rules = Array.isArray(payload.rules) && payload.rules.length
720
+ ? await kg.kgIngestRules({ rules: payload.rules, originRef, dbPath })
721
+ : null;
722
+ this.orgLearnedRuns.add(`${name}:${run}`);
723
+ const parts = [
724
+ `entities: +${graph.nodesAdded} new, ${graph.nodesMerged} merged`,
725
+ `relations: +${graph.edgesAdded} new, ${graph.edgesMerged} merged`,
726
+ ];
727
+ if (rules)
728
+ parts.push(`rules: ${rules.accepted} accepted, ${rules.verdicts.filter(v => v.verdict === 'already_known').length} already known`);
729
+ return `Recorded in org knowledge graph — ${parts.join('; ')}. Rollback ref: ${originRef}.`;
730
+ }
731
+ catch (err) {
732
+ return `org_learn failed (${err instanceof Error ? err.message : 'error'})`;
733
+ }
734
+ }
527
735
  /** Persist the run's outcome into cross-run org memory so org_recall (and
528
736
  * future runs) can find it by meaning, not just recency. Best-effort. */
529
737
  async storeRunMemory(name, def, run, summary) {
@@ -547,6 +755,35 @@ export class OrgDaemon {
547
755
  dbPath: this.orgMemoryDbPath(),
548
756
  upsert: true,
549
757
  });
758
+ // Heuristic KG fallback: if the coordinator never called org_learn this
759
+ // run, extract lower-trust entities from the outcome summary so the
760
+ // graph still accumulates something. LLM-quality extraction only comes
761
+ // from org_learn (the agent's own session).
762
+ if (!this.orgLearnedRuns.delete(`${name}:${run}`)) {
763
+ try {
764
+ const kg = await import('../memory/memory-kg.js');
765
+ const extracted = kg.heuristicExtract(lines.join('\n'), { sourceName: `run:${run}` });
766
+ if (extracted.nodes.length) {
767
+ await kg.kgIngest({ ...extracted, originRef: `run:${run}`, dbPath: this.orgMemoryDbPath() });
768
+ }
769
+ }
770
+ catch { /* best effort */ }
771
+ }
772
+ // Auto-rate the memories this run recalled — POSITIVE-ONLY: a failed run
773
+ // proves nothing about the recalled memories (the failure may be entirely
774
+ // unrelated), so failure never rates them down. Idempotent per run via
775
+ // the feedback ledger, so a retried stopOrg can't double-apply.
776
+ const used = this.recallUsage.get(name);
777
+ this.recallUsage.delete(name);
778
+ if (used?.size && summary.outcome?.status === 'achieved') {
779
+ const { bridgeApplyFeedback } = await import('../memory/memory-bridge.js');
780
+ await bridgeApplyFeedback({
781
+ entryIds: [...used],
782
+ score: 0.9,
783
+ ledgerKey: `org-${name}-${run}`,
784
+ dbPath: this.orgMemoryDbPath(),
785
+ }).catch(() => { });
786
+ }
550
787
  }
551
788
  catch (err) {
552
789
  if (process.env.DEBUG || process.env.MONOMIND_DEBUG)