monomind 2.5.1 → 2.5.2

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 (289) hide show
  1. package/package.json +2 -1
  2. package/packages/@monomind/cli/.claude/agents/design/design-monodesign.md +6 -6
  3. package/packages/@monomind/cli/.claude/commands/mastermind/_repeat.md +4 -4
  4. package/packages/@monomind/cli/.claude/commands/mastermind/approvev1.md +4 -4
  5. package/packages/@monomind/cli/.claude/commands/mastermind/architect.md +6 -6
  6. package/packages/@monomind/cli/.claude/commands/mastermind/autodev.md +5 -5
  7. package/packages/@monomind/cli/.claude/commands/mastermind/brain.md +2 -2
  8. package/packages/@monomind/cli/.claude/commands/mastermind/build.md +6 -6
  9. package/packages/@monomind/cli/.claude/commands/mastermind/code-review.md +2 -2
  10. package/packages/@monomind/cli/.claude/commands/mastermind/content.md +6 -6
  11. package/packages/@monomind/cli/.claude/commands/mastermind/createorg.md +4 -4
  12. package/packages/@monomind/cli/.claude/commands/mastermind/createtask.md +3 -3
  13. package/packages/@monomind/cli/.claude/commands/mastermind/debug.md +5 -5
  14. package/packages/@monomind/cli/.claude/commands/mastermind/design.md +5 -5
  15. package/packages/@monomind/cli/.claude/commands/mastermind/do.md +2 -2
  16. package/packages/@monomind/cli/.claude/commands/mastermind/execute.md +5 -5
  17. package/packages/@monomind/cli/.claude/commands/mastermind/finance.md +6 -6
  18. package/packages/@monomind/cli/.claude/commands/mastermind/finish.md +5 -5
  19. package/packages/@monomind/cli/.claude/commands/mastermind/idea.md +6 -6
  20. package/packages/@monomind/cli/.claude/commands/mastermind/ideate.md +5 -5
  21. package/packages/@monomind/cli/.claude/commands/mastermind/improve.md +6 -6
  22. package/packages/@monomind/cli/.claude/commands/mastermind/marketing.md +6 -6
  23. package/packages/@monomind/cli/.claude/commands/mastermind/master.md +54 -54
  24. package/packages/@monomind/cli/.claude/commands/mastermind/ops.md +6 -6
  25. package/packages/@monomind/cli/.claude/commands/mastermind/orgs.md +2 -2
  26. package/packages/@monomind/cli/.claude/commands/mastermind/orgstatus.md +2 -2
  27. package/packages/@monomind/cli/.claude/commands/mastermind/plan.md +5 -5
  28. package/packages/@monomind/cli/.claude/commands/mastermind/receive-review.md +5 -5
  29. package/packages/@monomind/cli/.claude/commands/mastermind/release.md +6 -6
  30. package/packages/@monomind/cli/.claude/commands/mastermind/research.md +6 -6
  31. package/packages/@monomind/cli/.claude/commands/mastermind/review.md +6 -6
  32. package/packages/@monomind/cli/.claude/commands/mastermind/runorg.md +4 -4
  33. package/packages/@monomind/cli/.claude/commands/mastermind/runorgv1.md +5 -5
  34. package/packages/@monomind/cli/.claude/commands/mastermind/sales.md +6 -6
  35. package/packages/@monomind/cli/.claude/commands/mastermind/skill-builder.md +5 -5
  36. package/packages/@monomind/cli/.claude/commands/mastermind/stoporg.md +3 -3
  37. package/packages/@monomind/cli/.claude/commands/mastermind/taskdev.md +5 -5
  38. package/packages/@monomind/cli/.claude/commands/mastermind/tdd.md +5 -5
  39. package/packages/@monomind/cli/.claude/commands/mastermind/techport.md +5 -5
  40. package/packages/@monomind/cli/.claude/commands/mastermind/verify.md +5 -5
  41. package/packages/@monomind/cli/.claude/commands/mastermind/worktree.md +5 -5
  42. package/packages/@monomind/cli/.claude/helpers/control-start.cjs +30 -0
  43. package/packages/@monomind/cli/.claude/helpers/utils/monograph.cjs +44 -12
  44. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/access.md → mastermind-access/SKILL.md} +2 -2
  45. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/activity.md → mastermind-activity/SKILL.md} +2 -2
  46. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/adapter-manager.md → mastermind-adapter-manager/SKILL.md} +2 -2
  47. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/adapters.md → mastermind-adapters/SKILL.md} +2 -2
  48. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/agent-detail.md → mastermind-agent-detail/SKILL.md} +2 -2
  49. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/agents.md → mastermind-agents/SKILL.md} +2 -2
  50. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/approval-detail.md → mastermind-approval-detail/SKILL.md} +2 -2
  51. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/approvev1.md → mastermind-approvev1/SKILL.md} +2 -2
  52. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/architect.md → mastermind-architect/SKILL.md} +7 -7
  53. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/autodev.md → mastermind-autodev/SKILL.md} +10 -10
  54. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/backup.md → mastermind-backup/SKILL.md} +2 -2
  55. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/bootstrap.md → mastermind-bootstrap/SKILL.md} +2 -2
  56. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/budgets.md → mastermind-budgets/SKILL.md} +2 -2
  57. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/build.md → mastermind-build/SKILL.md} +5 -5
  58. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/companies.md → mastermind-companies/SKILL.md} +2 -2
  59. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/content.md → mastermind-content/SKILL.md} +5 -5
  60. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/costs.md → mastermind-costs/SKILL.md} +2 -2
  61. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/createorg.md → mastermind-createorg/SKILL.md} +3 -3
  62. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/debug.md → mastermind-debug/SKILL.md} +4 -4
  63. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_delegation.md → mastermind-delegation/SKILL.md} +1 -1
  64. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/design.md → mastermind-design/SKILL.md} +9 -9
  65. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/diagnose.md → mastermind-diagnose/SKILL.md} +2 -2
  66. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/env.md → mastermind-env/SKILL.md} +2 -2
  67. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/environments.md → mastermind-environments/SKILL.md} +2 -2
  68. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/execute.md → mastermind-execute/SKILL.md} +10 -10
  69. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/export.md → mastermind-export/SKILL.md} +2 -2
  70. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/finance.md → mastermind-finance/SKILL.md} +5 -5
  71. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/goal-detail.md → mastermind-goal-detail/SKILL.md} +2 -2
  72. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/goals.md → mastermind-goals/SKILL.md} +2 -2
  73. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/heartbeatv1.md → mastermind-heartbeatv1/SKILL.md} +2 -2
  74. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/idea.md → mastermind-idea/SKILL.md} +7 -7
  75. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/import.md → mastermind-import/SKILL.md} +2 -2
  76. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/inbox.md → mastermind-inbox/SKILL.md} +2 -2
  77. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/instance.md → mastermind-instance/SKILL.md} +2 -2
  78. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/instance-settings.md → mastermind-instance-settings/SKILL.md} +2 -2
  79. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/invite-landing.md → mastermind-invite-landing/SKILL.md} +2 -2
  80. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/invites.md → mastermind-invites/SKILL.md} +2 -2
  81. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/issue-detail.md → mastermind-issue-detail/SKILL.md} +2 -2
  82. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/issues.md → mastermind-issues/SKILL.md} +2 -2
  83. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/join-queue.md → mastermind-join-queue/SKILL.md} +2 -2
  84. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/liveness.md → mastermind-liveness/SKILL.md} +2 -2
  85. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/marketing.md → mastermind-marketing/SKILL.md} +8 -8
  86. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/memory.md → mastermind-memory/SKILL.md} +2 -2
  87. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/monitor.md → mastermind-monitor/SKILL.md} +2 -2
  88. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/my-issues.md → mastermind-my-issues/SKILL.md} +2 -2
  89. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/new-agent.md → mastermind-new-agent/SKILL.md} +2 -2
  90. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/ops.md → mastermind-ops/SKILL.md} +5 -5
  91. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/org-chart.md → mastermind-org-chart/SKILL.md} +2 -2
  92. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/org-settings.md → mastermind-org-settings/SKILL.md} +2 -2
  93. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/orgs.md → mastermind-orgs/SKILL.md} +1 -1
  94. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/orgstatus.md → mastermind-orgstatus/SKILL.md} +2 -2
  95. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plan.md → mastermind-plan/SKILL.md} +7 -7
  96. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plan-to-tasks.md → mastermind-plan-to-tasks/SKILL.md} +2 -2
  97. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugin-manager.md → mastermind-plugin-manager/SKILL.md} +2 -2
  98. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugin-settings.md → mastermind-plugin-settings/SKILL.md} +2 -2
  99. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/plugins.md → mastermind-plugins/SKILL.md} +2 -2
  100. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/profile.md → mastermind-profile/SKILL.md} +2 -2
  101. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/project-detail.md → mastermind-project-detail/SKILL.md} +2 -2
  102. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/project-workspace.md → mastermind-project-workspace/SKILL.md} +2 -2
  103. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/projects.md → mastermind-projects/SKILL.md} +2 -2
  104. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_protocol.md → mastermind-protocol/SKILL.md} +3 -3
  105. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/release.md → mastermind-release/SKILL.md} +5 -5
  106. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_repeat.md → mastermind-repeat/SKILL.md} +2 -2
  107. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/research.md → mastermind-research/SKILL.md} +5 -5
  108. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/review.md → mastermind-review/SKILL.md} +5 -5
  109. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/routine-detail.md → mastermind-routine-detail/SKILL.md} +2 -2
  110. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/routines.md → mastermind-routines/SKILL.md} +2 -2
  111. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/runorgv1.md → mastermind-runorgv1/SKILL.md} +2 -2
  112. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/sales.md → mastermind-sales/SKILL.md} +5 -5
  113. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/search.md → mastermind-search/SKILL.md} +2 -2
  114. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/secrets.md → mastermind-secrets/SKILL.md} +2 -2
  115. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/skill-builder.md → mastermind-skill-builder/SKILL.md} +16 -14
  116. package/packages/@monomind/cli/.claude/skills/mastermind-skills/{skills.md → SKILL.md} +2 -2
  117. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/stoporg.md → mastermind-stoporg/SKILL.md} +2 -2
  118. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/taskdev.md → mastermind-taskdev/SKILL.md} +6 -6
  119. package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/implementer-prompt.md +1 -1
  120. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tasks.md → mastermind-tasks/SKILL.md} +2 -2
  121. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tdd.md → mastermind-tdd/SKILL.md} +4 -4
  122. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/techport.md → mastermind-techport/SKILL.md} +5 -5
  123. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/threads.md → mastermind-threads/SKILL.md} +2 -2
  124. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/tree-control.md → mastermind-tree-control/SKILL.md} +2 -2
  125. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/verify.md → mastermind-verify/SKILL.md} +1 -1
  126. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/wiki.md → mastermind-wiki/SKILL.md} +2 -2
  127. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/workspace-detail.md → mastermind-workspace-detail/SKILL.md} +2 -2
  128. package/packages/@monomind/cli/.claude/skills/{mastermind-skills/workspaces.md → mastermind-workspaces/SKILL.md} +2 -2
  129. package/packages/@monomind/cli/.claude/skills/monodesign/SKILL.md +114 -190
  130. package/packages/@monomind/cli/.claude/skills/monodesign/adapt.md +1 -1
  131. package/packages/@monomind/cli/.claude/skills/monodesign/agents/monodesign-asset-producer.md +4 -4
  132. package/packages/@monomind/cli/.claude/skills/monodesign/agents/monodesign-manual-edit-applier.md +103 -0
  133. package/packages/@monomind/cli/.claude/skills/monodesign/audit.md +1 -1
  134. package/packages/@monomind/cli/.claude/skills/monodesign/craft.md +2 -2
  135. package/packages/@monomind/cli/.claude/skills/monodesign/critique.md +1 -1
  136. package/packages/@monomind/cli/.claude/skills/monodesign/init.md +30 -0
  137. package/packages/@monomind/cli/.claude/skills/monodesign/layout.md +36 -0
  138. package/packages/@monomind/cli/.claude/skills/monodesign/live.md +19 -44
  139. package/packages/@monomind/cli/.claude/skills/monodesign/reference/adapt.md +122 -0
  140. package/packages/@monomind/cli/.claude/skills/monodesign/reference/adapt.native.md +58 -0
  141. package/packages/@monomind/cli/.claude/skills/monodesign/reference/android.md +40 -0
  142. package/packages/@monomind/cli/.claude/skills/monodesign/reference/animate.md +39 -11
  143. package/packages/@monomind/cli/.claude/skills/monodesign/reference/antipatterns-catalog.md +22 -16
  144. package/packages/@monomind/cli/.claude/skills/monodesign/reference/audit.md +5 -3
  145. package/packages/@monomind/cli/.claude/skills/monodesign/reference/audit.native.md +139 -0
  146. package/packages/@monomind/cli/.claude/skills/monodesign/reference/bolder.md +71 -64
  147. package/packages/@monomind/cli/.claude/skills/monodesign/reference/brand.md +12 -18
  148. package/packages/@monomind/cli/.claude/skills/monodesign/reference/clarify.md +114 -0
  149. package/packages/@monomind/cli/.claude/skills/monodesign/reference/codex.md +4 -6
  150. package/packages/@monomind/cli/.claude/skills/monodesign/reference/colorize.md +108 -5
  151. package/packages/@monomind/cli/.claude/skills/monodesign/reference/craft.md +70 -143
  152. package/packages/@monomind/cli/.claude/skills/monodesign/reference/critique.md +635 -68
  153. package/packages/@monomind/cli/.claude/skills/monodesign/reference/delight.md +1 -1
  154. package/packages/@monomind/cli/.claude/skills/monodesign/reference/distill.md +1 -1
  155. package/packages/@monomind/cli/.claude/skills/monodesign/reference/document.md +24 -22
  156. package/packages/@monomind/cli/.claude/skills/monodesign/reference/extract.md +1 -1
  157. package/packages/@monomind/cli/.claude/skills/monodesign/reference/hooks.md +22 -29
  158. package/packages/@monomind/cli/.claude/skills/monodesign/reference/init.md +221 -0
  159. package/packages/@monomind/cli/.claude/skills/monodesign/reference/interaction-design.md +0 -6
  160. package/packages/@monomind/cli/.claude/skills/monodesign/reference/ios.md +45 -0
  161. package/packages/@monomind/cli/.claude/skills/monodesign/reference/layout.md +57 -13
  162. package/packages/@monomind/cli/.claude/skills/monodesign/reference/live.md +159 -63
  163. package/packages/@monomind/cli/.claude/skills/monodesign/reference/overdrive.md +1 -1
  164. package/packages/@monomind/cli/.claude/skills/monodesign/reference/personas.md +1 -1
  165. package/packages/@monomind/cli/.claude/skills/monodesign/reference/polish.md +16 -8
  166. package/packages/@monomind/cli/.claude/skills/monodesign/reference/pre-delivery-checklist.md +1 -1
  167. package/packages/@monomind/cli/.claude/skills/monodesign/reference/product.md +1 -3
  168. package/packages/@monomind/cli/.claude/skills/monodesign/reference/quieter.md +1 -1
  169. package/packages/@monomind/cli/.claude/skills/monodesign/reference/shape.md +27 -13
  170. package/packages/@monomind/cli/.claude/skills/monodesign/reference/teach.md +6 -152
  171. package/packages/@monomind/cli/.claude/skills/monodesign/reference/typeset.md +180 -3
  172. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/command-metadata.json +94 -0
  173. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context-signals.mjs +227 -0
  174. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/context.mjs +1062 -0
  175. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/critique-storage.mjs +243 -0
  176. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect-csp.mjs +199 -0
  177. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detect.mjs +34 -0
  178. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/browser/injected/index.mjs +1938 -0
  179. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/cli/main.mjs +322 -0
  180. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/design-system.mjs +815 -0
  181. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +5246 -0
  182. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/detect-antipatterns.mjs +51 -0
  183. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/detect-url.mjs +260 -0
  184. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +259 -0
  185. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/regex/detect-text.mjs +574 -0
  186. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/css-cascade.mjs +1016 -0
  187. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/static-html/detect-html.mjs +235 -0
  188. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/engines/visual/screenshot-contrast.mjs +199 -0
  189. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/findings.mjs +13 -0
  190. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/node/file-system.mjs +199 -0
  191. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/profile/profiler.mjs +167 -0
  192. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/registry/antipatterns.mjs +515 -0
  193. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +2704 -0
  194. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/color.mjs +125 -0
  195. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/constants.mjs +102 -0
  196. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/fonts.mjs +31 -0
  197. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/inline-ignores.mjs +149 -0
  198. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/detector/shared/page.mjs +8 -0
  199. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-admin.mjs +662 -0
  200. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-before-edit.mjs +517 -0
  201. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook-lib.mjs +1777 -0
  202. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/hook.mjs +62 -0
  203. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/design-parser.mjs +843 -0
  204. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/is-generated.mjs +70 -0
  205. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-config.mjs +641 -0
  206. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/monodesign-paths.mjs +130 -0
  207. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/provider.mjs +5 -0
  208. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/lib/target-args.mjs +43 -0
  209. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/browser-script-parts.mjs +51 -0
  210. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/completion.mjs +20 -0
  211. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/event-validation.mjs +138 -0
  212. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/insert-ui.mjs +459 -0
  213. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-apply.mjs +940 -0
  214. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edit-routes.mjs +358 -0
  215. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/manual-edits-buffer.mjs +153 -0
  216. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/session-store.mjs +290 -0
  217. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/svelte-component.mjs +827 -0
  218. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +275 -0
  219. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/ui-core.mjs +181 -0
  220. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live/vocabulary.mjs +37 -0
  221. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-accept.mjs +813 -0
  222. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-dom.js +147 -0
  223. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser-session.js +124 -0
  224. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-browser.js +11241 -0
  225. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-commit-manual-edits.mjs +1242 -0
  226. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-complete.mjs +76 -0
  227. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-copy-edit-agent.mjs +684 -0
  228. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-discard-manual-edits.mjs +52 -0
  229. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-inject.mjs +584 -0
  230. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-insert.mjs +273 -0
  231. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-manual-edit-evidence.mjs +364 -0
  232. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-poll.mjs +385 -0
  233. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-resume.mjs +95 -0
  234. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-server.mjs +1138 -0
  235. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-status.mjs +62 -0
  236. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-target.mjs +31 -0
  237. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live-wrap.mjs +895 -0
  238. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/live.mjs +298 -0
  239. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/modern-screenshot.umd.js +15 -0
  240. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/palette.mjs +634 -0
  241. package/packages/@monomind/cli/.claude/skills/monodesign/scripts/pin.mjs +222 -0
  242. package/packages/@monomind/cli/.claude/skills/monodesign/teach.md +7 -58
  243. package/packages/@monomind/cli/dist/src/commands/design-detect.d.ts +7 -1
  244. package/packages/@monomind/cli/dist/src/commands/design-detect.js +70 -38
  245. package/packages/@monomind/cli/dist/src/commands/design-palette.d.ts +1 -1
  246. package/packages/@monomind/cli/dist/src/commands/design-palette.js +3 -3
  247. package/packages/@monomind/cli/dist/src/commands/doc.js +72 -15
  248. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +4 -0
  249. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +23 -0
  250. package/packages/@monomind/cli/dist/src/commands/doctor.js +3 -3
  251. package/packages/@monomind/cli/dist/src/commands/org.js +109 -9
  252. package/packages/@monomind/cli/dist/src/init/executor.js +14 -3
  253. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.d.ts +2 -0
  254. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +1 -0
  255. package/packages/@monomind/cli/dist/src/mcp-tools/knowledge-tools.js +38 -7
  256. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.d.ts +8 -3
  257. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +193 -31
  258. package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +33 -0
  259. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +166 -17
  260. package/packages/@monomind/cli/dist/src/memory/memory-kg.d.ts +185 -0
  261. package/packages/@monomind/cli/dist/src/memory/memory-kg.js +449 -0
  262. package/packages/@monomind/cli/dist/src/memory/query-router.d.ts +44 -0
  263. package/packages/@monomind/cli/dist/src/memory/query-router.js +113 -0
  264. package/packages/@monomind/cli/dist/src/orgrt/daemon.d.ts +18 -0
  265. package/packages/@monomind/cli/dist/src/orgrt/daemon.js +249 -12
  266. package/packages/@monomind/cli/dist/src/orgrt/migrate.js +7 -0
  267. package/packages/@monomind/cli/dist/src/orgrt/policy.js +7 -0
  268. package/packages/@monomind/cli/dist/src/orgrt/session.d.ts +24 -1
  269. package/packages/@monomind/cli/dist/src/orgrt/session.js +18 -3
  270. package/packages/@monomind/cli/dist/src/orgrt/templates.d.ts +1 -0
  271. package/packages/@monomind/cli/dist/src/orgrt/templates.js +9 -4
  272. package/packages/@monomind/cli/dist/src/orgrt/types.d.ts +15 -0
  273. package/packages/@monomind/cli/dist/src/orgrt/types.js +2 -0
  274. package/packages/@monomind/cli/dist/src/ui/dashboard.html +154 -6
  275. package/packages/@monomind/cli/dist/src/ui/orgs.html +24 -0
  276. package/packages/@monomind/cli/dist/src/ui/server.mjs +162 -12
  277. package/packages/@monomind/cli/package.json +5 -3
  278. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_agent-select.md → mastermind-agent-select/SKILL.md} +0 -0
  279. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/finish.md → mastermind-finish/SKILL.md} +0 -0
  280. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/_intake.md → mastermind-intake/SKILL.md} +0 -0
  281. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-marketing}/references/copywriting-frameworks.md +0 -0
  282. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-marketing}/references/persuasion-psychology.md +0 -0
  283. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/monotask.md → mastermind-monotask/SKILL.md} +0 -0
  284. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/receive-review.md → mastermind-receive-review/SKILL.md} +0 -0
  285. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/runorg.md → mastermind-runorg/SKILL.md} +0 -0
  286. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/code-quality-reviewer-prompt.md +0 -0
  287. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/final-reviewer-prompt.md +0 -0
  288. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills → mastermind-taskdev}/spec-reviewer-prompt.md +0 -0
  289. /package/packages/@monomind/cli/.claude/skills/{mastermind-skills/worktree.md → mastermind-worktree/SKILL.md} +0 -0
@@ -44,6 +44,29 @@ export async function checkMemoryDatabase() {
44
44
  }
45
45
  return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: 'monomind memory configure --backend hybrid' };
46
46
  }
47
+ /** Memory knowledge graph (cognee port): entities/relations/rules distilled
48
+ * from sessions and org runs. Informational — an empty graph on a fresh
49
+ * project is normal, so it never fails. */
50
+ export async function checkMemoryKnowledgeGraph() {
51
+ const name = 'Memory Knowledge Graph';
52
+ try {
53
+ const kg = await import('../memory/memory-kg.js');
54
+ const bridge = await import('../memory/memory-bridge.js');
55
+ const project = await kg.kgStats();
56
+ const orgDb = join(process.cwd(), '.monomind', 'org-memory');
57
+ const org = existsSync(orgDb) ? await kg.kgStats({ dbPath: orgDb }) : null;
58
+ await bridge.shutdownBridge().catch(() => { });
59
+ const total = project.nodes + (org?.nodes ?? 0);
60
+ const fmt = (s) => `${s.nodes}n/${s.edges}e/${s.rules}r`;
61
+ if (total === 0) {
62
+ return { name, status: 'warn', message: 'Empty — sessions/org runs have not distilled knowledge yet', fix: 'org runs call org_learn automatically; sessions use memory_kg_ingest' };
63
+ }
64
+ return { name, status: 'pass', message: `project ${fmt(project)}${org ? ` · org ${fmt(org)}` : ''}` };
65
+ }
66
+ catch (err) {
67
+ return { name, status: 'warn', message: `Check failed: ${err instanceof Error ? err.message : String(err)}` };
68
+ }
69
+ }
47
70
  /** Second Brain: when this project has an indexed knowledge base, semantic
48
71
  * search needs the local embedding model. Its absence is silent (search
49
72
  * degrades to keyword matching) — surface it here instead. */
@@ -7,7 +7,7 @@
7
7
  import * as path from 'path';
8
8
  import { output } from '../output.js';
9
9
  import { checkNodeVersion, checkNpmVersion, checkGit, checkGitRepo, checkDiskSpace, checkBuildTools, checkVersionFreshness, checkClaudeCode, installClaudeCode, } from './doctor-env-checks.js';
10
- import { checkConfigFile, checkMemoryDatabase, checkApiKeys, checkMcpServers, checkMonograph, checkMonographFreshness, checkMonoesMemory, checkHelpersFresh, fixStaleHelpers, checkMonoesIntegration, checkGuidanceGates, checkGitignoreCoverage, checkAgentRegistry, checkMemoryProficiency, checkMetricsFreshness, checkSecurityAuditFindings, checkSecondBrainModel, } from './doctor-project-checks.js';
10
+ import { checkConfigFile, checkMemoryDatabase, checkApiKeys, checkMcpServers, checkMonograph, checkMonographFreshness, checkMonoesMemory, checkHelpersFresh, fixStaleHelpers, checkMonoesIntegration, checkGuidanceGates, checkGitignoreCoverage, checkAgentRegistry, checkMemoryProficiency, checkMetricsFreshness, checkSecurityAuditFindings, checkSecondBrainModel, checkMemoryKnowledgeGraph, } from './doctor-project-checks.js';
11
11
  import { checkMonoesTools, fixMonoesTools } from './doctor-monoes-checks.js';
12
12
  function formatCheck(check) {
13
13
  const icon = check.status === 'pass' ? output.success('✓') :
@@ -65,7 +65,7 @@ export const doctorCommand = {
65
65
  checkMonograph, checkMonoesMemory, checkHelpersFresh, checkMonoesIntegration,
66
66
  checkGuidanceGates, checkAgentRegistry, checkGit, checkApiKeys,
67
67
  checkMemoryProficiency, checkMetricsFreshness, checkSecurityAuditFindings,
68
- checkSecondBrainModel,
68
+ checkSecondBrainModel, checkMemoryKnowledgeGraph,
69
69
  ];
70
70
  const codeOnlyChecks = [
71
71
  checkGitRepo, checkMcpServers,
@@ -79,7 +79,7 @@ export const doctorCommand = {
79
79
  node: checkNodeVersion, npm: checkNpmVersion, claude: checkClaudeCode,
80
80
  config: checkConfigFile, memory: checkMemoryDatabase,
81
81
  api: checkApiKeys, git: checkGit, mcp: checkMcpServers, disk: checkDiskSpace,
82
- 'second-brain': checkSecondBrainModel,
82
+ 'second-brain': checkSecondBrainModel, kg: checkMemoryKnowledgeGraph,
83
83
  typescript: checkBuildTools, monograph: checkMonograph,
84
84
  'graph-freshness': checkMonographFreshness, 'memory-pkg': checkMonoesMemory,
85
85
  helpers: checkHelpersFresh, monoes: checkMonoesIntegration,
@@ -73,10 +73,21 @@ const runAction = async (ctx) => {
73
73
  const { buildRolePrompt } = await import('../orgrt/session.js');
74
74
  const roster = def.roles.map(r => r.id);
75
75
  const perRole = Math.floor((def.run_config.budget_tokens ?? 1_000_000) / def.roles.length);
76
+ // Same KG entity glossary the live daemon injects — the preview must
77
+ // match what sessions actually receive.
78
+ const glossary = await (async () => {
79
+ try {
80
+ const kg = await import('../memory/memory-kg.js');
81
+ return await kg.kgGlossary({ dbPath: join(process.cwd(), '.monomind', 'org-memory') });
82
+ }
83
+ catch {
84
+ return [];
85
+ }
86
+ })();
76
87
  log(output.info(`DRY RUN — org ${name}: ${def.roles.length} roles, ${perRole} tokens each, goal: ${taskFlag ?? def.goal}`));
77
88
  for (const role of def.roles) {
78
89
  log(output.info(`\n─── ${role.id} (${role.title || role.type})${role.adapter_config?.model ? ` [${role.adapter_config.model}]` : ''} ───`));
79
- log(buildRolePrompt(role, { name: def.name, goal: taskFlag ?? def.goal }, roster));
90
+ log(buildRolePrompt(role, { name: def.name, goal: taskFlag ?? def.goal }, roster, glossary));
80
91
  }
81
92
  return { success: true, message: 'dry run complete — no sessions started' };
82
93
  }
@@ -107,15 +118,20 @@ const runAction = async (ctx) => {
107
118
  return { success: false, message: 'org start failed' };
108
119
  }
109
120
  log(output.info(`org ${name} running (${running.def.roles.length} agents, run ${running.run}) — Ctrl-C or "monomind org stop ${name}" to stop`));
110
- // stopfile poll lets `org stop` work from another terminal;
111
- // clear any stale stopfile from a previous run before polling
121
+ // stopfile poll lets `org stop` work from another terminal; the daemon can
122
+ // also stop the org itself (boss called org_complete, or the idle watchdog
123
+ // fired) — detect that via getOrg() so the CLI exits instead of polling a
124
+ // stopfile forever after a finished run. Clear any stale stopfile from a
125
+ // previous run before polling.
112
126
  clearStopfile(ctx.cwd, name);
113
127
  const stopfile = join(ctx.cwd, ORG_DIR, name, 'stop');
114
128
  await new Promise(resolvePromise => {
115
- const iv = setInterval(() => { if (existsSync(stopfile)) {
116
- clearInterval(iv);
117
- resolvePromise();
118
- } }, 2000);
129
+ const iv = setInterval(() => {
130
+ if (existsSync(stopfile) || !daemon.getOrg(name)) {
131
+ clearInterval(iv);
132
+ resolvePromise();
133
+ }
134
+ }, 2000);
119
135
  process.once('SIGINT', () => { clearInterval(iv); resolvePromise(); });
120
136
  process.once('SIGTERM', () => { clearInterval(iv); resolvePromise(); });
121
137
  });
@@ -291,7 +307,18 @@ const listAction = async (ctx) => {
291
307
  const sched = def.schedule ? `every ${def.schedule}` : 'manual';
292
308
  let status = 'never run';
293
309
  try {
294
- status = JSON.parse(readFileSync(join(orgsDir, stem, 'runtime.json'), 'utf8')).status ?? status;
310
+ const rt = JSON.parse(readFileSync(join(orgsDir, stem, 'runtime.json'), 'utf8'));
311
+ status = rt.status ?? status;
312
+ // Same liveness rule as `org status`: a 'running' record with a dead
313
+ // pid is a crashed daemon, not a running org — list must not disagree.
314
+ if (status === 'running' && rt.pid) {
315
+ try {
316
+ process.kill(rt.pid, 0);
317
+ }
318
+ catch {
319
+ status = 'crashed';
320
+ }
321
+ }
295
322
  }
296
323
  catch { /* no runtime state yet */ }
297
324
  const goal = typeof def.goal === 'string' && def.goal
@@ -381,7 +408,16 @@ const markCompleteAction = async (ctx) => {
381
408
  }
382
409
  catch { /* default */ }
383
410
  try {
384
- const res = await fetch(`${ctrlUrl}/api/orgs/${encodeURIComponent(orgName)}/mark-complete`, { method: 'POST' });
411
+ // All dashboard /api routes are auth-gated attach the local session token.
412
+ let auth = '';
413
+ try {
414
+ auth = readFileSync(join(cwd, '.monomind', 'dashboard-token'), 'utf8').trim();
415
+ }
416
+ catch { /* server may be pre-auth */ }
417
+ const res = await fetch(`${ctrlUrl}/api/orgs/${encodeURIComponent(orgName)}/mark-complete`, {
418
+ method: 'POST',
419
+ headers: auth ? { 'x-monomind-token': auth } : {},
420
+ });
385
421
  const body = await res.json().catch(() => ({}));
386
422
  if (!res.ok) {
387
423
  log(output.error(`mark-complete failed (${res.status}): ${body.error || 'unknown error'}`));
@@ -489,6 +525,70 @@ export const orgCommand = {
489
525
  return reportAction(ctx, v.name);
490
526
  },
491
527
  },
528
+ {
529
+ name: 'memory', description: 'Inspect an org\'s cross-run memory and knowledge graph (stats | search <query> | rules | rollback <run-ref>)',
530
+ examples: [
531
+ { command: 'monomind org memory growth stats', description: 'KG size and namespaces' },
532
+ { command: 'monomind org memory growth search "launch checklist"', description: 'Search org memory + KG' },
533
+ { command: 'monomind org memory growth rollback run:m4x2', description: 'Delete everything one run wrote to the KG' },
534
+ ],
535
+ action: async (ctx) => {
536
+ const v = validateOrgName(ctx.args[0]);
537
+ if (!v.ok)
538
+ return v.result;
539
+ const sub = String(ctx.args[1] ?? 'stats');
540
+ const { join } = await import('node:path');
541
+ const dbPath = join(process.cwd(), '.monomind', 'org-memory');
542
+ const kg = await import('../memory/memory-kg.js');
543
+ const bridge = await import('../memory/memory-bridge.js');
544
+ try {
545
+ if (sub === 'stats') {
546
+ const [stats, glossary, backend] = await Promise.all([
547
+ kg.kgStats({ dbPath }), kg.kgGlossary({ dbPath, limit: 15 }), bridge.bridgeGetBackendStats(dbPath),
548
+ ]);
549
+ log(output.info(`Knowledge graph: ${stats.nodes} entities, ${stats.edges} relations, ${stats.rules} rules`));
550
+ if (glossary.length)
551
+ log(output.info(`Top entities: ${glossary.join(', ')}`));
552
+ const byNs = backend?.entriesByNamespace ?? {};
553
+ for (const [ns, count] of Object.entries(byNs))
554
+ log(output.info(` ${ns}: ${count} entries`));
555
+ return { success: true, message: 'org memory stats', data: { ...stats, namespaces: byNs } };
556
+ }
557
+ if (sub === 'search') {
558
+ const q = ctx.args.slice(2).join(' ');
559
+ if (!q)
560
+ return { success: false, message: 'usage: org memory <org> search <query>' };
561
+ const [mem, graph] = await Promise.all([
562
+ bridge.bridgeSearchEntries({ query: q, namespace: `org:${v.name}`, limit: 5, dbPath }),
563
+ kg.kgSearch({ query: q, dbPath, limit: 8 }),
564
+ ]);
565
+ for (const r of mem?.results ?? [])
566
+ log(output.info(`[${r.score.toFixed(2)}] ${r.key}: ${r.content.slice(0, 160)}`));
567
+ if (graph.context)
568
+ log(output.info(`\nKnowledge graph:\n${graph.context}`));
569
+ return { success: true, message: `${(mem?.results ?? []).length} memories, ${graph.triplets.length} triplets` };
570
+ }
571
+ if (sub === 'rules') {
572
+ const rules = await kg.kgListRules({ dbPath, limit: 50 });
573
+ for (const r of rules)
574
+ log(output.info(`- ${r.rule.slice(0, 200)}`));
575
+ return { success: true, message: `${rules.length} rules`, data: { rules } };
576
+ }
577
+ if (sub === 'rollback') {
578
+ const ref = ctx.args[2];
579
+ if (!ref)
580
+ return { success: false, message: 'usage: org memory <org> rollback <origin-ref> (e.g. run:m4x2)' };
581
+ const res = await kg.kgRollback({ originRef: ref, dbPath });
582
+ log(output.info(`Rolled back ${ref}: ${res.deleted} deleted, ${res.retained} retained (shared with other origins)`));
583
+ return { success: res.success, message: `rollback ${ref}`, data: res };
584
+ }
585
+ return { success: false, message: `unknown subcommand "${sub}" — use stats | search | rules | rollback` };
586
+ }
587
+ finally {
588
+ await bridge.shutdownBridge().catch(() => { });
589
+ }
590
+ },
591
+ },
492
592
  {
493
593
  name: 'questions', description: 'List pending ask_human questions from an org\'s agents',
494
594
  options: [{ name: 'all', description: 'Include answered questions', type: 'boolean' }],
@@ -75,9 +75,11 @@ const SKILLS_MAP = {
75
75
  'monolean-help',
76
76
  'hive-mind-advanced',
77
77
  // The mastermind command files installed by init invoke
78
- // Skill("mastermind-skills:*") at runtime — this directory must ship
79
- // with core or those references break in user projects.
80
- 'mastermind-skills',
78
+ // Skill("mastermind-<name>") at runtime — one top-level
79
+ // mastermind-<name>/SKILL.md directory per skill. The glob expands in
80
+ // copySkills against the source tree, so newly added mastermind skills
81
+ // ship automatically; without them those references break in user projects.
82
+ 'mastermind-*',
81
83
  ],
82
84
  browser: ['agent-browser-testing'],
83
85
  // NOTE: memory-toolkit and github-toolkit are single consolidated skills
@@ -981,6 +983,15 @@ async function copySkills(targetDir, options, result) {
981
983
  result.errors.push('Could not find source skills directory');
982
984
  return;
983
985
  }
986
+ // Expand glob-style entries ('mastermind-*') against the source tree.
987
+ // Only directories that actually contain a SKILL.md count — this also
988
+ // filters exFAT AppleDouble junk (._mastermind-…).
989
+ for (const entry of skillsToCopy.filter(e => e.endsWith('*'))) {
990
+ const prefix = entry.slice(0, -1);
991
+ skillsToCopy.splice(skillsToCopy.indexOf(entry), 1);
992
+ skillsToCopy.push(...fs.readdirSync(sourceSkillsDir).filter(n => n.startsWith(prefix) &&
993
+ fs.existsSync(path.join(sourceSkillsDir, n, 'SKILL.md'))));
994
+ }
984
995
  // Remove stale skill directories no longer in the current version's map
985
996
  const knownSkills = new Set([...new Set(skillsToCopy)]);
986
997
  if (fs.existsSync(targetSkillsDir)) {
@@ -19,6 +19,8 @@ export interface BatchIngestResult {
19
19
  results: IngestResult[];
20
20
  }
21
21
  export interface KnowledgeExcerpt {
22
+ /** Memory entry id — pass back to memory_feedback/bridgeApplyFeedback to rate usefulness. */
23
+ id: string;
22
24
  filePath: string;
23
25
  text: string;
24
26
  similarity: number;
@@ -390,6 +390,7 @@ export async function searchKnowledge(query, opts) {
390
390
  // content, and goes empty when a re-ingested file's hash changed.
391
391
  const srcTag = (r.tags ?? []).find((tag) => tag.startsWith('src:'));
392
392
  return {
393
+ id: r.id,
393
394
  filePath: srcTag ? srcTag.slice(4) : hashToFile.get(hash) ?? '',
394
395
  text: r.content,
395
396
  similarity: r.score + t.boost,
@@ -71,7 +71,7 @@ const knowledgeIngest = {
71
71
  };
72
72
  const knowledgeSearch = {
73
73
  name: 'knowledge_search',
74
- description: 'Semantic search over the Second Brain knowledge base. Returns relevant document excerpts ranked by similarity.',
74
+ description: 'Search the Second Brain. A rule-based router picks the retrieval surfaces per query — document excerpts, knowledge-graph triplets, distilled rules, past memories — and fuses them by reciprocal rank. Excerpt ids can be rated via memory_feedback.',
75
75
  category: 'knowledge',
76
76
  tags: ['documents', 'search', 'second-brain', 'rag'],
77
77
  inputSchema: {
@@ -81,21 +81,52 @@ const knowledgeSearch = {
81
81
  scope: { type: 'string', description: 'Knowledge scope (default: shared)' },
82
82
  limit: { type: 'number', description: 'Max results (default: 10)' },
83
83
  minScore: { type: 'number', description: 'Minimum similarity threshold (default: 0.3)' },
84
+ surfaces: { type: 'array', items: { type: 'string' }, description: "Override routing: any of 'chunks','kg','rules','memory'" },
84
85
  },
85
86
  required: ['query'],
86
87
  },
87
88
  handler: async (input) => {
88
89
  const { searchKnowledge } = await import('../knowledge/document-pipeline.js');
90
+ const { routeQuery, rrfFuse } = await import('../memory/query-router.js');
89
91
  try {
90
- const excerpts = await searchKnowledge(String(input.query), {
91
- scope: input.scope ? String(input.scope) : undefined,
92
- limit: input.limit ? Number(input.limit) : undefined,
93
- minScore: input.minScore ? Number(input.minScore) : undefined,
94
- });
92
+ const query = String(input.query);
93
+ const limit = input.limit ? Number(input.limit) : 10;
94
+ const route = routeQuery(query);
95
+ const surfaces = Array.isArray(input.surfaces) && input.surfaces.length
96
+ ? input.surfaces
97
+ : (route.confident ? route.surfaces : ['chunks', ...route.surfaces.filter(s => s !== 'chunks')]);
98
+ const bridge = await import('../memory/memory-bridge.js');
99
+ const kg = await import('../memory/memory-kg.js');
100
+ const [excerpts, graph, rules, memories] = await Promise.all([
101
+ surfaces.includes('chunks')
102
+ ? searchKnowledge(query, {
103
+ scope: input.scope ? String(input.scope) : undefined,
104
+ limit,
105
+ minScore: input.minScore ? Number(input.minScore) : undefined,
106
+ })
107
+ : [],
108
+ surfaces.includes('kg') ? kg.kgSearch({ query, limit: 6 }) : null,
109
+ surfaces.includes('rules') ? bridge.bridgeSearchEntries({ query, namespace: 'rules', limit: 3, threshold: 0.35 }) : null,
110
+ surfaces.includes('memory') ? bridge.bridgeSearchEntries({ query, namespace: 'patterns', limit: 3 }) : null,
111
+ ]);
112
+ // Rank-fuse heterogeneous lists (raw scores aren't comparable).
113
+ const fused = rrfFuse([
114
+ excerpts.map(e => ({ id: e.id || `${e.filePath}#${e.chunkIndex}`, kind: 'excerpt', ...e })),
115
+ (graph?.triplets ?? []).map((t, i) => ({ id: `kg:${i}:${t.source}|${t.relation}|${t.target}`, kind: 'triplet', ...t })),
116
+ (rules?.results ?? []).map(r => ({ id: r.id, kind: 'rule', key: r.key, text: r.content, importance: 0.7 })),
117
+ (memories?.results ?? []).map(r => ({ id: r.id, kind: 'memory', key: r.key, text: r.content })),
118
+ ], limit);
95
119
  return {
96
120
  content: [{
97
121
  type: 'text',
98
- text: JSON.stringify({ success: true, count: excerpts.length, excerpts }),
122
+ text: JSON.stringify({
123
+ success: true,
124
+ count: fused.length,
125
+ routing: { surfaces, confident: route.confident },
126
+ results: fused,
127
+ // Back-compat: excerpt-only view for existing consumers.
128
+ excerpts,
129
+ }),
99
130
  }],
100
131
  };
101
132
  }
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Memory MCP Tools — Phase 6 of ADR-053
3
3
  *
4
- * Exposes Memory backend operations as MCP tools.
5
- * Provides direct access to ReasoningBank, CausalGraph, SkillLibrary,
6
- * AttestationLog, and bridge health through the MCP protocol.
4
+ * Exposes Memory backend operations as MCP tools: pattern store/search,
5
+ * usage-weighted feedback (EWMA), the conversation knowledge graph
6
+ * (memory_kg_*), session records, weight-aware GC, and bridge health.
7
7
  *
8
8
  * Security: All handlers validate input types, enforce length bounds,
9
9
  * and sanitize error messages before returning to MCP callers.
@@ -17,6 +17,11 @@ export declare const memoryPatternStore: MCPTool;
17
17
  export declare const memoryPatternSearch: MCPTool;
18
18
  export declare const memoryFeedback: MCPTool;
19
19
  export declare const memoryCausalEdge: MCPTool;
20
+ export declare const memoryKgIngest: MCPTool;
21
+ export declare const memoryKgSearch: MCPTool;
22
+ export declare const memoryKgRollback: MCPTool;
23
+ export declare const memoryKgConsolidate: MCPTool;
24
+ export declare const memoryKgStats: MCPTool;
20
25
  export declare const memoryRoute: MCPTool;
21
26
  export declare const memorySessionStart: MCPTool;
22
27
  export declare const memorySessionEnd: MCPTool;