monomind 1.10.47 → 1.10.55

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 (414) hide show
  1. package/.claude/agents/optimization/benchmark-suite.md +2 -0
  2. package/.claude/agents/optimization/load-balancer.md +2 -0
  3. package/.claude/agents/optimization/performance-monitor.md +2 -0
  4. package/.claude/agents/optimization/resource-allocator.md +3 -1
  5. package/.claude/agents/optimization/topology-optimizer.md +2 -0
  6. package/.claude/commands/mastermind/_repeat.md +21 -0
  7. package/.claude/commands/mastermind/_taskfile.md +235 -0
  8. package/.claude/commands/mastermind/adr.md +11 -0
  9. package/.claude/commands/mastermind/approve.md +94 -0
  10. package/.claude/commands/mastermind/autodev.md +32 -0
  11. package/.claude/commands/mastermind/budget.md +7 -0
  12. package/.claude/commands/mastermind/code-review.md +317 -0
  13. package/.claude/commands/mastermind/createorg.md +40 -1
  14. package/.claude/commands/mastermind/createtask.md +383 -0
  15. package/.claude/commands/mastermind/debug.md +22 -0
  16. package/.claude/commands/mastermind/design.md +20 -0
  17. package/.claude/commands/mastermind/do.md +526 -0
  18. package/.claude/commands/mastermind/execute.md +20 -0
  19. package/.claude/commands/mastermind/finish.md +20 -0
  20. package/.claude/commands/mastermind/graph-status.md +7 -0
  21. package/.claude/commands/mastermind/help.md +118 -0
  22. package/.claude/commands/mastermind/ideate.md +261 -0
  23. package/.claude/commands/mastermind/improve.md +345 -0
  24. package/.claude/commands/mastermind/loops.md +7 -0
  25. package/.claude/commands/mastermind/master.md +186 -6
  26. package/.claude/commands/mastermind/memory.md +230 -0
  27. package/.claude/commands/mastermind/plan.md +26 -0
  28. package/.claude/commands/mastermind/receive-review.md +20 -0
  29. package/.claude/commands/mastermind/repeat.md +257 -0
  30. package/.claude/commands/mastermind/runorg.md +3 -0
  31. package/.claude/commands/mastermind/skill-builder.md +20 -0
  32. package/.claude/commands/mastermind/specialagents.md +125 -0
  33. package/.claude/commands/mastermind/swarm.md +161 -0
  34. package/.claude/commands/mastermind/taskdev.md +26 -0
  35. package/.claude/commands/mastermind/tdd.md +22 -0
  36. package/.claude/commands/mastermind/techport.md +4 -0
  37. package/.claude/commands/mastermind/understand.md +139 -0
  38. package/.claude/commands/mastermind/verify.md +22 -0
  39. package/.claude/commands/mastermind/worktree.md +20 -0
  40. package/.claude/commands/monomind/do.md +52 -0
  41. package/.claude/commands/monomind/improve.md +2 -0
  42. package/.claude/helpers/handlers/graph-status-handler.cjs +2 -1
  43. package/.claude/helpers/handlers/route-handler.cjs +61 -11
  44. package/.claude/helpers/hook-handler.cjs +19 -0
  45. package/.claude/helpers/skill-registry.json +122 -51
  46. package/.claude/helpers/statusline.cjs +1 -1
  47. package/.claude/scheduled_tasks.lock +1 -0
  48. package/.claude/skills/agent-browser-testing/SKILL.md +522 -152
  49. package/.claude/skills/github-issue-triage/SKILL.md +354 -0
  50. package/.claude/skills/github-repo-recap/SKILL.md +207 -0
  51. package/.claude/skills/mastermind/_delegation.md +83 -0
  52. package/.claude/skills/mastermind/_protocol.md +14 -0
  53. package/.claude/skills/mastermind/approve.md +15 -7
  54. package/.claude/skills/mastermind/autodev.md +534 -0
  55. package/.claude/skills/mastermind/createorg.md +21 -5
  56. package/.claude/skills/mastermind/debug.md +232 -0
  57. package/.claude/skills/mastermind/design.md +187 -0
  58. package/.claude/skills/mastermind/execute.md +104 -0
  59. package/.claude/skills/mastermind/finish.md +251 -0
  60. package/.claude/skills/mastermind/plan.md +180 -0
  61. package/.claude/skills/mastermind/receive-review.md +213 -0
  62. package/.claude/skills/mastermind/runorg.md +23 -8
  63. package/.claude/skills/mastermind/skill-builder.md +274 -0
  64. package/.claude/skills/mastermind/taskdev.md +307 -0
  65. package/.claude/skills/mastermind/tdd.md +394 -0
  66. package/.claude/skills/mastermind/verify.md +196 -0
  67. package/.claude/skills/mastermind/worktree.md +160 -132
  68. package/.claude-plugin/docs/QUICKSTART.md +0 -3
  69. package/.claude-plugin/docs/STRUCTURE.md +1 -5
  70. package/.claude-plugin/scripts/verify.sh +0 -6
  71. package/README.md +320 -253
  72. package/package.json +1 -1
  73. package/packages/@monomind/cli/README.md +320 -253
  74. package/packages/@monomind/cli/dist/src/commands/analyze.js +9 -2
  75. package/packages/@monomind/cli/dist/src/commands/completions.js +1 -1
  76. package/packages/@monomind/cli/dist/src/commands/guidance.js +7 -7
  77. package/packages/@monomind/cli/dist/src/commands/hooks.js +16 -3
  78. package/packages/@monomind/cli/dist/src/commands/index.d.ts +3 -2
  79. package/packages/@monomind/cli/dist/src/commands/index.js +7 -0
  80. package/packages/@monomind/cli/dist/src/commands/init.js +47 -13
  81. package/packages/@monomind/cli/dist/src/commands/neural.js +100 -14
  82. package/packages/@monomind/cli/dist/src/commands/platforms.d.ts +11 -0
  83. package/packages/@monomind/cli/dist/src/commands/platforms.js +195 -0
  84. package/packages/@monomind/cli/dist/src/commands/update.js +6 -6
  85. package/packages/@monomind/cli/dist/src/init/executor.js +28 -0
  86. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +1 -1
  87. package/packages/@monomind/cli/dist/src/init/types.d.ts +1 -0
  88. package/packages/@monomind/cli/dist/src/mcp-server.js +92 -0
  89. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +52 -0
  90. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +106 -5
  91. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -5
  92. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -5
  93. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +507 -5587
  94. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +64 -4
  95. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +4 -4
  96. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -2
  97. package/packages/@monomind/cli/dist/src/memory/intelligence.js +108 -3
  98. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +1 -1
  99. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +1 -10
  100. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +0 -46
  101. package/packages/@monomind/cli/dist/src/runtime/headless.js +3 -3
  102. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.d.ts +0 -2
  103. package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.js +2 -14
  104. package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +26 -9
  105. package/packages/@monomind/cli/dist/src/ruvector/index.js +3 -21
  106. package/packages/@monomind/cli/dist/src/ruvector/ruvllm-wasm.js +2 -2
  107. package/packages/@monomind/cli/dist/src/types.d.ts +0 -15
  108. package/packages/@monomind/cli/dist/src/types.js +0 -18
  109. package/packages/@monomind/cli/dist/src/update/index.js +1 -1
  110. package/packages/@monomind/cli/dist/src/update/validator.js +8 -8
  111. package/packages/@monomind/cli/package.json +2 -2
  112. package/scripts/generate-agent-avatars.mjs +500 -0
  113. package/.claude/agents/academic/academic-anthropologist.md +0 -126
  114. package/.claude/agents/academic/academic-geographer.md +0 -128
  115. package/.claude/agents/academic/academic-historian.md +0 -124
  116. package/.claude/agents/academic/academic-narratologist.md +0 -119
  117. package/.claude/agents/academic/academic-psychologist.md +0 -119
  118. package/.claude/agents/analysis/analyze-code-quality.md +0 -58
  119. package/.claude/agents/analysis/code-analyzer.md +0 -189
  120. package/.claude/agents/analysis/code-review/analyze-code-quality.md +0 -58
  121. package/.claude/agents/consensus/performance-benchmarker.md +0 -831
  122. package/.claude/agents/data/ml/data-ml-model.md +0 -76
  123. package/.claude/agents/development/dev-backend-api.md +0 -178
  124. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +0 -52
  125. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +0 -63
  126. package/.claude/agents/game-development/blender/blender-addon-engineer.md +0 -235
  127. package/.claude/agents/game-development/game-audio-engineer.md +0 -265
  128. package/.claude/agents/game-development/game-designer.md +0 -168
  129. package/.claude/agents/game-development/godot/godot-gameplay-scripter.md +0 -335
  130. package/.claude/agents/game-development/godot/godot-multiplayer-engineer.md +0 -298
  131. package/.claude/agents/game-development/godot/godot-shader-developer.md +0 -267
  132. package/.claude/agents/game-development/level-designer.md +0 -209
  133. package/.claude/agents/game-development/narrative-designer.md +0 -244
  134. package/.claude/agents/game-development/roblox-studio/roblox-avatar-creator.md +0 -298
  135. package/.claude/agents/game-development/roblox-studio/roblox-experience-designer.md +0 -306
  136. package/.claude/agents/game-development/roblox-studio/roblox-systems-scripter.md +0 -326
  137. package/.claude/agents/game-development/technical-artist.md +0 -230
  138. package/.claude/agents/game-development/unity/unity-architect.md +0 -272
  139. package/.claude/agents/game-development/unity/unity-editor-tool-developer.md +0 -311
  140. package/.claude/agents/game-development/unity/unity-multiplayer-engineer.md +0 -322
  141. package/.claude/agents/game-development/unity/unity-shader-graph-artist.md +0 -270
  142. package/.claude/agents/game-development/unreal-engine/unreal-multiplayer-architect.md +0 -314
  143. package/.claude/agents/game-development/unreal-engine/unreal-systems-engineer.md +0 -311
  144. package/.claude/agents/game-development/unreal-engine/unreal-technical-artist.md +0 -257
  145. package/.claude/agents/game-development/unreal-engine/unreal-world-builder.md +0 -274
  146. package/.claude/agents/github/release-swarm.md +0 -597
  147. package/.claude/agents/goal/agent.md +0 -804
  148. package/.claude/agents/goal/code-goal-planner.md +0 -445
  149. package/.claude/agents/marketing/marketing-ai-citation-strategist.md +0 -171
  150. package/.claude/agents/marketing/marketing-app-store-optimizer.md +0 -322
  151. package/.claude/agents/marketing/marketing-baidu-seo-specialist.md +0 -227
  152. package/.claude/agents/marketing/marketing-bilibili-content-strategist.md +0 -200
  153. package/.claude/agents/marketing/marketing-book-co-author.md +0 -111
  154. package/.claude/agents/marketing/marketing-carousel-growth-engine.md +0 -200
  155. package/.claude/agents/marketing/marketing-china-ecommerce-operator.md +0 -284
  156. package/.claude/agents/marketing/marketing-content-creator.md +0 -67
  157. package/.claude/agents/marketing/marketing-cross-border-ecommerce.md +0 -260
  158. package/.claude/agents/marketing/marketing-douyin-strategist.md +0 -150
  159. package/.claude/agents/marketing/marketing-growth-hacker.md +0 -54
  160. package/.claude/agents/marketing/marketing-instagram-curator.md +0 -114
  161. package/.claude/agents/marketing/marketing-kuaishou-strategist.md +0 -224
  162. package/.claude/agents/marketing/marketing-linkedin-content-creator.md +0 -215
  163. package/.claude/agents/marketing/marketing-livestream-commerce-coach.md +0 -306
  164. package/.claude/agents/marketing/marketing-podcast-strategist.md +0 -278
  165. package/.claude/agents/marketing/marketing-private-domain-operator.md +0 -309
  166. package/.claude/agents/marketing/marketing-reddit-community-builder.md +0 -124
  167. package/.claude/agents/marketing/marketing-seo-specialist.md +0 -279
  168. package/.claude/agents/marketing/marketing-short-video-editing-coach.md +0 -413
  169. package/.claude/agents/marketing/marketing-social-media-strategist.md +0 -125
  170. package/.claude/agents/marketing/marketing-tiktok-strategist.md +0 -126
  171. package/.claude/agents/marketing/marketing-twitter-engager.md +0 -127
  172. package/.claude/agents/marketing/marketing-wechat-official-account.md +0 -146
  173. package/.claude/agents/marketing/marketing-weibo-strategist.md +0 -241
  174. package/.claude/agents/marketing/marketing-xiaohongshu-specialist.md +0 -139
  175. package/.claude/agents/marketing/marketing-zhihu-strategist.md +0 -163
  176. package/.claude/agents/neural/safla-neural.md +0 -74
  177. package/.claude/agents/paid-media/paid-media-auditor.md +0 -71
  178. package/.claude/agents/paid-media/paid-media-creative-strategist.md +0 -71
  179. package/.claude/agents/paid-media/paid-media-paid-social-strategist.md +0 -71
  180. package/.claude/agents/paid-media/paid-media-ppc-strategist.md +0 -71
  181. package/.claude/agents/paid-media/paid-media-programmatic-buyer.md +0 -71
  182. package/.claude/agents/paid-media/paid-media-search-query-analyst.md +0 -71
  183. package/.claude/agents/paid-media/paid-media-tracking-specialist.md +0 -71
  184. package/.claude/agents/payments/agentic-payments.md +0 -126
  185. package/.claude/agents/product/product-behavioral-nudge-engine.md +0 -81
  186. package/.claude/agents/product/product-feedback-synthesizer.md +0 -119
  187. package/.claude/agents/product/product-manager.md +0 -469
  188. package/.claude/agents/product/product-sprint-prioritizer.md +0 -154
  189. package/.claude/agents/product/product-trend-researcher.md +0 -159
  190. package/.claude/agents/project-management/project-management-experiment-tracker.md +0 -199
  191. package/.claude/agents/project-management/project-management-jira-workflow-steward.md +0 -231
  192. package/.claude/agents/project-management/project-management-project-shepherd.md +0 -195
  193. package/.claude/agents/project-management/project-management-studio-operations.md +0 -201
  194. package/.claude/agents/project-management/project-management-studio-producer.md +0 -204
  195. package/.claude/agents/project-management/project-manager-senior.md +0 -136
  196. package/.claude/agents/reasoning/agent.md +0 -804
  197. package/.claude/agents/reasoning/goal-planner.md +0 -73
  198. package/.claude/agents/sales/sales-account-strategist.md +0 -228
  199. package/.claude/agents/sales/sales-coach.md +0 -272
  200. package/.claude/agents/sales/sales-deal-strategist.md +0 -181
  201. package/.claude/agents/sales/sales-discovery-coach.md +0 -226
  202. package/.claude/agents/sales/sales-engineer.md +0 -183
  203. package/.claude/agents/sales/sales-outbound-strategist.md +0 -202
  204. package/.claude/agents/sales/sales-pipeline-analyst.md +0 -268
  205. package/.claude/agents/sales/sales-proposal-strategist.md +0 -218
  206. package/.claude/agents/sona/sona-learning-optimizer.md +0 -65
  207. package/.claude/agents/spatial-computing/macos-spatial-metal-engineer.md +0 -338
  208. package/.claude/agents/spatial-computing/terminal-integration-specialist.md +0 -71
  209. package/.claude/agents/spatial-computing/visionos-spatial-engineer.md +0 -55
  210. package/.claude/agents/specialists/memory-specialist.md +0 -298
  211. package/.claude/agents/specialists/performance-engineer.md +0 -387
  212. package/.claude/agents/specialists/queen-coordinator.md +0 -67
  213. package/.claude/agents/specialists/security-architect.md +0 -154
  214. package/.claude/agents/specialized/accounts-payable-agent.md +0 -186
  215. package/.claude/agents/specialized/corporate-training-designer.md +0 -193
  216. package/.claude/agents/specialized/data-consolidation-agent.md +0 -61
  217. package/.claude/agents/specialized/government-digital-presales-consultant.md +0 -364
  218. package/.claude/agents/specialized/healthcare-marketing-compliance.md +0 -396
  219. package/.claude/agents/specialized/recruitment-specialist.md +0 -510
  220. package/.claude/agents/specialized/report-distribution-agent.md +0 -66
  221. package/.claude/agents/specialized/sales-data-extraction-agent.md +0 -68
  222. package/.claude/agents/specialized/specialized-french-consulting-market.md +0 -193
  223. package/.claude/agents/specialized/specialized-korean-business-navigator.md +0 -217
  224. package/.claude/agents/specialized/specialized-salesforce-architect.md +0 -181
  225. package/.claude/agents/specialized/study-abroad-advisor.md +0 -283
  226. package/.claude/agents/specialized/supply-chain-strategist.md +0 -583
  227. package/.claude/agents/sublinear/consensus-coordinator.md +0 -333
  228. package/.claude/agents/sublinear/matrix-optimizer.md +0 -180
  229. package/.claude/agents/sublinear/pagerank-analyzer.md +0 -295
  230. package/.claude/agents/sublinear/performance-optimizer.md +0 -363
  231. package/.claude/agents/sublinear/trading-predictor.md +0 -242
  232. package/.claude/agents/support/support-analytics-reporter.md +0 -366
  233. package/.claude/agents/support/support-executive-summary-generator.md +0 -213
  234. package/.claude/agents/support/support-finance-tracker.md +0 -443
  235. package/.claude/agents/support/support-infrastructure-maintainer.md +0 -619
  236. package/.claude/agents/support/support-legal-compliance-checker.md +0 -589
  237. package/.claude/agents/support/support-support-responder.md +0 -586
  238. package/.claude/agents/swarm/adaptive-coordinator.md +0 -364
  239. package/.claude/agents/swarm/hierarchical-coordinator.md +0 -318
  240. package/.claude/agents/templates/github-pr-manager.md +0 -155
  241. package/.claude/agents/templates/memory-coordinator.md +0 -163
  242. package/.claude/agents/templates/migration-plan.md +0 -724
  243. package/.claude/agents/templates/orchestrator-task.md +0 -120
  244. package/.claude/agents/templates/performance-analyzer.md +0 -179
  245. package/.claude/agents/templates/sparc-coordinator.md +0 -163
  246. package/.claude/agents/testing/testing-reality-checker.md +0 -237
  247. package/.claude/checkpoints/1767754460.json +0 -8
  248. package/.claude/commands/analysis/token-efficiency.md +0 -42
  249. package/.claude/commands/optimization/README.md +0 -73
  250. package/.claude/commands/optimization/parallel-execution.md +0 -76
  251. package/.claude/commands/swarm/swarm-analysis.md +0 -62
  252. package/.claude/commands/swarm/swarm-background.md +0 -65
  253. package/.claude/commands/swarm/swarm-modes.md +0 -67
  254. package/.claude/commands/swarm/swarm-monitor.md +0 -54
  255. package/.claude/commands/swarm/swarm-status.md +0 -44
  256. package/.claude/commands/swarm/swarm-strategies.md +0 -76
  257. package/.claude/commands/training/model-update.md +0 -78
  258. package/.claude/commands/training/pattern-learn.md +0 -69
  259. package/.claude/commands/training/specialization.md +0 -92
  260. package/.claude/commands/verify/check.md +0 -106
  261. package/.claude/commands/verify/start.md +0 -105
  262. package/.claude/config/v1-dependency-optimization.json +0 -266
  263. package/.claude/config/v1-performance-targets.json +0 -251
  264. package/.claude/helpers/README.md +0 -105
  265. package/.claude/helpers/context-persistence-hook.mjs +0 -1988
  266. package/.claude/helpers/intelligence.cjs +0 -247
  267. package/.claude/helpers/learning-service.mjs +0 -1302
  268. package/.claude/helpers/memory-palace.cjs +0 -461
  269. package/.claude/helpers/memory.cjs +0 -84
  270. package/.claude/helpers/metrics-db.mjs +0 -488
  271. package/.claude/helpers/router.cjs +0 -559
  272. package/.claude/helpers/session.cjs +0 -126
  273. package/.claude/helpers/swarm-hooks.sh +0 -761
  274. package/.claude/helpers/toggle-statusline.cjs +0 -58
  275. package/.claude/helpers/token-tracker.cjs +0 -934
  276. package/.claude/skills/agentdb-advanced/SKILL.md +0 -549
  277. package/.claude/skills/agentdb-learning/SKILL.md +0 -544
  278. package/.claude/skills/agentdb-memory-patterns/SKILL.md +0 -337
  279. package/.claude/skills/agentdb-optimization/SKILL.md +0 -508
  280. package/.claude/skills/agentdb-vector-search/SKILL.md +0 -335
  281. package/.claude/skills/agentic-integration/SKILL.md +0 -265
  282. package/.claude/skills/cli-modernization/SKILL.md +0 -950
  283. package/.claude/skills/core-implementation/SKILL.md +0 -892
  284. package/.claude/skills/ddd-architecture/SKILL.md +0 -444
  285. package/.claude/skills/github-code-review/SKILL.md +0 -1147
  286. package/.claude/skills/github-multi-repo/SKILL.md +0 -912
  287. package/.claude/skills/github-project-management/SKILL.md +0 -1245
  288. package/.claude/skills/github-release-management/SKILL.md +0 -1118
  289. package/.claude/skills/github-workflow-automation/SKILL.md +0 -1107
  290. package/.claude/skills/mcp-optimization/SKILL.md +0 -837
  291. package/.claude/skills/memory-unification/SKILL.md +0 -196
  292. package/.claude/skills/performance-optimization/SKILL.md +0 -416
  293. package/.claude/skills/reasoningbank-agentdb/SKILL.md +0 -444
  294. package/.claude/skills/reasoningbank-intelligence/SKILL.md +0 -199
  295. package/.claude/skills/security-hardening/SKILL.md +0 -101
  296. package/.claude/skills/stream-chain/SKILL.md +0 -560
  297. package/.claude/skills/swarm-coordination/SKILL.md +0 -451
  298. package/.claude/statusline-command.sh +0 -176
  299. package/.claude/statusline.mjs +0 -109
  300. package/.claude/statusline.sh +0 -431
  301. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.d.ts +0 -32
  302. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.d.ts.map +0 -1
  303. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.js +0 -297
  304. package/packages/@monomind/cli/bundled-graph/dist/src/analyze.js.map +0 -1
  305. package/packages/@monomind/cli/bundled-graph/dist/src/build.d.ts +0 -8
  306. package/packages/@monomind/cli/bundled-graph/dist/src/build.d.ts.map +0 -1
  307. package/packages/@monomind/cli/bundled-graph/dist/src/build.js.map +0 -1
  308. package/packages/@monomind/cli/bundled-graph/dist/src/cache.d.ts +0 -12
  309. package/packages/@monomind/cli/bundled-graph/dist/src/cache.d.ts.map +0 -1
  310. package/packages/@monomind/cli/bundled-graph/dist/src/cache.js +0 -43
  311. package/packages/@monomind/cli/bundled-graph/dist/src/cache.js.map +0 -1
  312. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.d.ts +0 -5
  313. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.d.ts.map +0 -1
  314. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js.map +0 -1
  315. package/packages/@monomind/cli/bundled-graph/dist/src/detect.d.ts +0 -21
  316. package/packages/@monomind/cli/bundled-graph/dist/src/detect.d.ts.map +0 -1
  317. package/packages/@monomind/cli/bundled-graph/dist/src/detect.js +0 -195
  318. package/packages/@monomind/cli/bundled-graph/dist/src/detect.js.map +0 -1
  319. package/packages/@monomind/cli/bundled-graph/dist/src/export.d.ts +0 -21
  320. package/packages/@monomind/cli/bundled-graph/dist/src/export.d.ts.map +0 -1
  321. package/packages/@monomind/cli/bundled-graph/dist/src/export.js +0 -68
  322. package/packages/@monomind/cli/bundled-graph/dist/src/export.js.map +0 -1
  323. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.d.ts +0 -20
  324. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.d.ts.map +0 -1
  325. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.js +0 -158
  326. package/packages/@monomind/cli/bundled-graph/dist/src/extract/index.js.map +0 -1
  327. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.d.ts +0 -3
  328. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.d.ts.map +0 -1
  329. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.js +0 -88
  330. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/c.js.map +0 -1
  331. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.d.ts +0 -3
  332. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.d.ts.map +0 -1
  333. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.js +0 -121
  334. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/cpp.js.map +0 -1
  335. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.d.ts +0 -3
  336. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.d.ts.map +0 -1
  337. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.js +0 -121
  338. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/csharp.js.map +0 -1
  339. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.d.ts +0 -3
  340. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.d.ts.map +0 -1
  341. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.js +0 -181
  342. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/go.js.map +0 -1
  343. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.d.ts +0 -3
  344. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.d.ts.map +0 -1
  345. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.js +0 -117
  346. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/java.js.map +0 -1
  347. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.d.ts +0 -3
  348. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.d.ts.map +0 -1
  349. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.js +0 -112
  350. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/kotlin.js.map +0 -1
  351. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.d.ts +0 -3
  352. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.d.ts.map +0 -1
  353. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.js +0 -130
  354. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/php.js.map +0 -1
  355. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.d.ts +0 -3
  356. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.d.ts.map +0 -1
  357. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.js +0 -230
  358. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/python.js.map +0 -1
  359. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.d.ts +0 -3
  360. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.d.ts.map +0 -1
  361. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.js +0 -120
  362. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/ruby.js.map +0 -1
  363. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.d.ts +0 -3
  364. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.d.ts.map +0 -1
  365. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.js +0 -195
  366. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/rust.js.map +0 -1
  367. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.d.ts +0 -3
  368. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.d.ts.map +0 -1
  369. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.js +0 -110
  370. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/scala.js.map +0 -1
  371. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.d.ts +0 -3
  372. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.d.ts.map +0 -1
  373. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.js +0 -122
  374. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/swift.js.map +0 -1
  375. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.d.ts +0 -3
  376. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.d.ts.map +0 -1
  377. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.js +0 -295
  378. package/packages/@monomind/cli/bundled-graph/dist/src/extract/languages/typescript.js.map +0 -1
  379. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.d.ts +0 -38
  380. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.d.ts.map +0 -1
  381. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.js +0 -242
  382. package/packages/@monomind/cli/bundled-graph/dist/src/extract/semantic.js.map +0 -1
  383. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts +0 -48
  384. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts.map +0 -1
  385. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.js +0 -137
  386. package/packages/@monomind/cli/bundled-graph/dist/src/extract/tree-sitter-runner.js.map +0 -1
  387. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.d.ts +0 -7
  388. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.d.ts.map +0 -1
  389. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.js +0 -2
  390. package/packages/@monomind/cli/bundled-graph/dist/src/extract/types.js.map +0 -1
  391. package/packages/@monomind/cli/bundled-graph/dist/src/index.d.ts +0 -28
  392. package/packages/@monomind/cli/bundled-graph/dist/src/index.d.ts.map +0 -1
  393. package/packages/@monomind/cli/bundled-graph/dist/src/index.js +0 -26
  394. package/packages/@monomind/cli/bundled-graph/dist/src/index.js.map +0 -1
  395. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.d.ts +0 -27
  396. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.d.ts.map +0 -1
  397. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.js +0 -269
  398. package/packages/@monomind/cli/bundled-graph/dist/src/pipeline.js.map +0 -1
  399. package/packages/@monomind/cli/bundled-graph/dist/src/report.d.ts +0 -26
  400. package/packages/@monomind/cli/bundled-graph/dist/src/report.d.ts.map +0 -1
  401. package/packages/@monomind/cli/bundled-graph/dist/src/report.js +0 -214
  402. package/packages/@monomind/cli/bundled-graph/dist/src/report.js.map +0 -1
  403. package/packages/@monomind/cli/bundled-graph/dist/src/types.d.ts +0 -124
  404. package/packages/@monomind/cli/bundled-graph/dist/src/types.d.ts.map +0 -1
  405. package/packages/@monomind/cli/bundled-graph/dist/src/types.js +0 -2
  406. package/packages/@monomind/cli/bundled-graph/dist/src/types.js.map +0 -1
  407. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.d.ts +0 -4
  408. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.d.ts.map +0 -1
  409. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.js +0 -574
  410. package/packages/@monomind/cli/bundled-graph/dist/src/visualize.js.map +0 -1
  411. package/packages/@monomind/cli/bundled-graph/dist/tsconfig.tsbuildinfo +0 -1
  412. package/packages/@monomind/shared/README.md +0 -322
  413. package/packages/@monomind/shared/package.json +0 -42
  414. package/packages/README.md +0 -513
@@ -1,461 +0,0 @@
1
- 'use strict';
2
- /**
3
- * memory-palace.cjs — MemPalace-inspired cross-session memory for Monomind
4
- *
5
- * Architecture (Wing → Room → Hall namespace hierarchy):
6
- * Drawers verbatim 800-char chunks with 100-char overlap → drawers.jsonl
7
- * Closets regex topic-pointer index (no AI calls) → closets.jsonl
8
- * KG temporal knowledge graph (SQLite-free triples) → kg.json
9
- *
10
- * Memory stack:
11
- * L0 identity identity.md — static, user-maintained
12
- * L1 essential top-scored recent drawers → injected on session-restore
13
- * L2 on-demand recall(wing, room) — explicit namespace pull
14
- * L3 deep search search(query) — Okapi BM25 across all drawers
15
- *
16
- * Wire points in hook-handler.cjs:
17
- * session-restore → wakeUp(CWD) injects L0 + L1 into session context
18
- * post-task → storeVerbatim(...) files the verbatim task chunks
19
- */
20
-
21
- const fs = require('fs');
22
- const path = require('path');
23
-
24
- // ── constants ─────────────────────────────────────────────────────────────────
25
- const DRAWER_SIZE = 800; // chars per verbatim chunk
26
- const OVERLAP = 100; // overlap between consecutive chunks
27
- const L1_LIMIT = 5; // max drawers surfaced in essential story
28
- const L1_DAYS = 30; // look-back window for L1 drawers (days)
29
- const BM25_K1 = 1.5; // term-frequency saturation
30
- const BM25_B = 0.75; // length normalisation
31
-
32
- // ── filesystem helpers ────────────────────────────────────────────────────────
33
- function palaceDir(cwd) {
34
- return path.join(cwd, '.monomind', 'palace');
35
- }
36
-
37
- function ensureDir(dir) {
38
- if (!fs.existsSync(dir)) {
39
- fs.mkdirSync(dir, { recursive: true });
40
- }
41
- }
42
-
43
- function readJsonl(filePath) {
44
- if (!fs.existsSync(filePath)) return [];
45
- try {
46
- return fs.readFileSync(filePath, 'utf-8')
47
- .split('\n')
48
- .filter(Boolean)
49
- .map(function(line) { return JSON.parse(line); });
50
- } catch (e) {
51
- return [];
52
- }
53
- }
54
-
55
- function appendJsonl(filePath, record) {
56
- fs.appendFileSync(filePath, JSON.stringify(record) + '\n', 'utf-8');
57
- }
58
-
59
- function readJson(filePath, fallback) {
60
- if (!fs.existsSync(filePath)) return fallback;
61
- try {
62
- return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
63
- } catch (e) {
64
- return fallback;
65
- }
66
- }
67
-
68
- function writeJson(filePath, data) {
69
- fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
70
- }
71
-
72
- function uid() {
73
- return Date.now().toString(36) + Math.random().toString(36).slice(2, 7);
74
- }
75
-
76
- // ── Okapi BM25 ────────────────────────────────────────────────────────────────
77
- function tokenize(text) {
78
- return (text || '').toLowerCase().replace(/[^a-z0-9\s]/g, ' ').split(/\s+/).filter(Boolean);
79
- }
80
-
81
- /**
82
- * bm25(query, docs) → [{ id, score }, …] sorted descending
83
- * docs: array of { id, text }
84
- */
85
- function bm25(query, docs) {
86
- if (!docs || docs.length === 0) return [];
87
- var qTerms = tokenize(query);
88
- if (qTerms.length === 0) return docs.map(function(d) { return { id: d.id, score: 0 }; });
89
-
90
- // Pre-tokenize every document
91
- var tokenized = docs.map(function(d) {
92
- return { id: d.id, tokens: tokenize(d.text || '') };
93
- });
94
- var N = tokenized.length;
95
- var avgdl = tokenized.reduce(function(s, d) { return s + d.tokens.length; }, 0) / (N || 1);
96
-
97
- // Document frequency per term
98
- var df = {};
99
- tokenized.forEach(function(d) {
100
- var seen = {};
101
- d.tokens.forEach(function(t) { seen[t] = true; });
102
- Object.keys(seen).forEach(function(t) { df[t] = (df[t] || 0) + 1; });
103
- });
104
-
105
- // Score each document
106
- return tokenized.map(function(d) {
107
- var tf = {};
108
- d.tokens.forEach(function(t) { tf[t] = (tf[t] || 0) + 1; });
109
- var dl = d.tokens.length;
110
- var score = 0;
111
- qTerms.forEach(function(term) {
112
- var f = tf[term] || 0;
113
- if (f === 0) return;
114
- var dfTerm = df[term] || 0;
115
- var idf = Math.log((N - dfTerm + 0.5) / (dfTerm + 0.5) + 1);
116
- score += idf * (f * (BM25_K1 + 1)) / (f + BM25_K1 * (1 - BM25_B + BM25_B * dl / avgdl));
117
- });
118
- return { id: d.id, score: score };
119
- }).sort(function(a, b) { return b.score - a.score; });
120
- }
121
-
122
- // ── closet extraction (no AI, regex only) ─────────────────────────────────────
123
- /**
124
- * buildClosets(content, drawerId) → [closet record, …]
125
- * Extracts: section headers, action phrases, proper nouns, quoted passages.
126
- */
127
- function buildClosets(content, drawerId) {
128
- var results = [];
129
- var ts = new Date().toISOString();
130
- var m;
131
-
132
- // Section headers (Markdown)
133
- var headerRe = /^#{1,3}\s+(.+)$/gm;
134
- while ((m = headerRe.exec(content)) !== null) {
135
- results.push({ drawerId: drawerId, term: m[1].trim(), type: 'header', ts: ts });
136
- }
137
-
138
- // Action phrases: "verb Object"
139
- var actionRe = /\b(built|fixed|added|implemented|created|removed|updated|refactored|deployed|configured|enabled|disabled|migrated|merged|published|released|optimized|rewrote|designed|analyzed|reviewed)\s+([A-Za-z][A-Za-z0-9_/.-]{1,50})/g;
140
- while ((m = actionRe.exec(content)) !== null) {
141
- results.push({ drawerId: drawerId, term: m[1] + ' ' + m[2], type: 'action', ts: ts });
142
- }
143
-
144
- // Proper nouns: consecutive Title Case words
145
- var properRe = /\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)+)\b/g;
146
- var properSeen = {};
147
- while ((m = properRe.exec(content)) !== null) {
148
- if (!properSeen[m[1]]) {
149
- properSeen[m[1]] = true;
150
- results.push({ drawerId: drawerId, term: m[1], type: 'proper', ts: ts });
151
- }
152
- }
153
-
154
- // Quoted passages (3–60 chars)
155
- var quotedRe = /"([^"]{3,60})"|`([^`]{3,60})`/g;
156
- while ((m = quotedRe.exec(content)) !== null) {
157
- var phrase = (m[1] || m[2]).trim();
158
- results.push({ drawerId: drawerId, term: phrase, type: 'quoted', ts: ts });
159
- }
160
-
161
- return results;
162
- }
163
-
164
- // ── storeVerbatim ─────────────────────────────────────────────────────────────
165
- /**
166
- * storeVerbatim(cwd, content, { wing, room, hall })
167
- * Chunks content into DRAWER_SIZE-char segments (with OVERLAP), stores each
168
- * as a drawer and extracts closet topics from each chunk.
169
- */
170
- function storeVerbatim(cwd, content, meta) {
171
- if (!content || typeof content !== 'string' || content.trim().length < 20) return;
172
- var pDir = palaceDir(cwd);
173
- ensureDir(pDir);
174
-
175
- var wing = (meta && meta.wing) || 'general';
176
- var room = (meta && meta.room) || 'default';
177
- var hall = (meta && meta.hall) || '';
178
- var ts = new Date().toISOString();
179
-
180
- var drawersFile = path.join(pDir, 'drawers.jsonl');
181
- var closetsFile = path.join(pDir, 'closets.jsonl');
182
-
183
- var step = DRAWER_SIZE - OVERLAP;
184
- var i = 0;
185
- while (i < content.length) {
186
- var chunk = content.slice(i, i + DRAWER_SIZE);
187
- if (chunk.trim().length >= 20) {
188
- var id = uid();
189
- var drawer = { id: id, content: chunk, wing: wing, room: room, hall: hall, score: 1.0, ts: ts };
190
- appendJsonl(drawersFile, drawer);
191
- var closets = buildClosets(chunk, id);
192
- closets.forEach(function(c) { appendJsonl(closetsFile, c); });
193
- }
194
- if (i + DRAWER_SIZE >= content.length) break;
195
- i += step;
196
- }
197
- }
198
-
199
- // ── score persistence ─────────────────────────────────────────────────────────
200
- /**
201
- * _bumpScores(drawersFile, ids)
202
- * Appends score bumps to a sidecar .score-diffs.jsonl instead of rewriting
203
- * the full drawers.jsonl on every search. Compacts when sidecar reaches 100 entries.
204
- * Called after search/recall so frequently-retrieved drawers rise to L1.
205
- */
206
- function _bumpScores(drawersFile, ids) {
207
- if (!ids || ids.length === 0) return;
208
- var diffPath = drawersFile.replace('.jsonl', '-score-diffs.jsonl');
209
- try {
210
- var entry = JSON.stringify({ ts: Date.now(), bumpIds: ids, delta: 1 });
211
- fs.appendFileSync(diffPath, entry + '\n', 'utf-8');
212
- _maybeCompactScoreDiffs(drawersFile, diffPath);
213
- } catch (e) { /* non-fatal */ }
214
- }
215
-
216
- /**
217
- * _maybeCompactScoreDiffs(drawersFile, diffPath)
218
- * When the sidecar accumulates >= 100 entries, apply all diffs to the drawers
219
- * file atomically and delete the sidecar.
220
- */
221
- function _maybeCompactScoreDiffs(drawersFile, diffPath) {
222
- var lines;
223
- try {
224
- lines = fs.readFileSync(diffPath, 'utf-8').split('\n').filter(Boolean);
225
- } catch { return; }
226
- if (lines.length < 100) return;
227
- _applyScoreDiffs(drawersFile, diffPath, lines);
228
- }
229
-
230
- /**
231
- * _applyScoreDiffs(drawersFile, diffPath, lines)
232
- * Apply accumulated score diffs to drawers.jsonl atomically, then remove sidecar.
233
- */
234
- function _applyScoreDiffs(drawersFile, diffPath, lines) {
235
- try {
236
- var drawers = readJsonl(drawersFile);
237
- var diffs = (lines || fs.readFileSync(diffPath, 'utf-8').split('\n').filter(Boolean))
238
- .map(function(l) { try { return JSON.parse(l); } catch { return null; } })
239
- .filter(Boolean);
240
- for (var i = 0; i < diffs.length; i++) {
241
- var diff = diffs[i];
242
- var delta = diff.delta || 1;
243
- (diff.bumpIds || []).forEach(function(id) {
244
- var d = drawers.find(function(x) { return x.id === id; });
245
- if (d) d.score = (d.score || 1.0) + delta;
246
- });
247
- }
248
- var tmpPath = drawersFile + '.tmp';
249
- fs.writeFileSync(tmpPath, drawers.map(function(d) { return JSON.stringify(d); }).join('\n') + '\n', 'utf-8');
250
- fs.renameSync(tmpPath, drawersFile);
251
- try { fs.unlinkSync(diffPath); } catch {}
252
- } catch (e) { /* non-fatal — leave sidecar intact for next attempt */ }
253
- }
254
-
255
- /**
256
- * _getEffectiveDrawers(drawersFile)
257
- * Read drawers.jsonl and apply any pending score diffs from the sidecar,
258
- * returning the merged result without compacting. Used by wakeUp/recall/search
259
- * to get accurate scores without triggering a full compact.
260
- */
261
- function _getEffectiveDrawers(drawersFile) {
262
- var drawers = readJsonl(drawersFile);
263
- var diffPath = drawersFile.replace('.jsonl', '-score-diffs.jsonl');
264
- try {
265
- var lines = fs.readFileSync(diffPath, 'utf-8').split('\n').filter(Boolean);
266
- var diffs = lines.map(function(l) { try { return JSON.parse(l); } catch { return null; } }).filter(Boolean);
267
- // Build score bump totals per id
268
- var bumps = {};
269
- diffs.forEach(function(diff) {
270
- (diff.bumpIds || []).forEach(function(id) {
271
- bumps[id] = (bumps[id] || 0) + (diff.delta || 1);
272
- });
273
- });
274
- drawers.forEach(function(d) {
275
- if (bumps[d.id]) d.score = (d.score || 1.0) + bumps[d.id];
276
- });
277
- } catch { /* sidecar absent — use raw drawers */ }
278
- return drawers;
279
- }
280
-
281
- // ── search (L3 deep) ──────────────────────────────────────────────────────────
282
- /**
283
- * search(cwd, query, { wing, room, limit }) → drawer[]
284
- * BM25 across all drawers + closet-topic boost, filtered by wing/room.
285
- * Bumps score on retrieved drawers so L1 surfaces actually-used content.
286
- */
287
- function search(cwd, query, opts) {
288
- opts = opts || {};
289
- var limit = opts.limit || 5;
290
- var pDir = palaceDir(cwd);
291
- var drawersFile = path.join(pDir, 'drawers.jsonl');
292
- var drawers = _getEffectiveDrawers(drawersFile);
293
-
294
- if (opts.wing) drawers = drawers.filter(function(d) { return d.wing === opts.wing; });
295
- if (opts.room) drawers = drawers.filter(function(d) { return d.room === opts.room; });
296
- if (drawers.length === 0) return [];
297
-
298
- // BM25 baseline
299
- var docs = drawers.map(function(d) { return { id: d.id, text: d.content }; });
300
- var ranked = bm25(query, docs);
301
-
302
- // Closet boost: drawers whose topic terms match query words get +0.5
303
- try {
304
- var closets = readJsonl(path.join(pDir, 'closets.jsonl'));
305
- var qWords = tokenize(query);
306
- var closetBoost = {};
307
- closets.forEach(function(c) {
308
- var termWords = tokenize(c.term);
309
- var hit = termWords.some(function(w) { return qWords.indexOf(w) !== -1; });
310
- if (hit) closetBoost[c.drawerId] = (closetBoost[c.drawerId] || 0) + 0.5;
311
- });
312
- if (Object.keys(closetBoost).length > 0) {
313
- ranked.forEach(function(r) { r.score += (closetBoost[r.id] || 0); });
314
- ranked.sort(function(a, b) { return b.score - a.score; });
315
- }
316
- } catch (e) { /* non-fatal */ }
317
-
318
- var topIds = ranked.slice(0, limit).map(function(r) { return r.id; });
319
- _bumpScores(drawersFile, topIds);
320
-
321
- var drawerMap = {};
322
- drawers.forEach(function(d) { drawerMap[d.id] = d; });
323
- return topIds.map(function(id) { return drawerMap[id]; }).filter(Boolean);
324
- }
325
-
326
- // ── recall (L2 on-demand) ─────────────────────────────────────────────────────
327
- /**
328
- * recall(cwd, { wing, room, limit }) → drawer[]
329
- * Returns drawers matching the namespace, sorted by score desc.
330
- * Bumps score on returned drawers.
331
- */
332
- function recall(cwd, opts) {
333
- opts = opts || {};
334
- var limit = opts.limit || 10;
335
- var drawersFile = path.join(palaceDir(cwd), 'drawers.jsonl');
336
- var drawers = _getEffectiveDrawers(drawersFile);
337
- if (opts.wing) drawers = drawers.filter(function(d) { return d.wing === opts.wing; });
338
- if (opts.room) drawers = drawers.filter(function(d) { return d.room === opts.room; });
339
- var top = drawers
340
- .sort(function(a, b) { return (b.score || 0) - (a.score || 0); })
341
- .slice(0, limit);
342
- _bumpScores(drawersFile, top.map(function(d) { return d.id; }));
343
- return top;
344
- }
345
-
346
- // ── knowledge graph ───────────────────────────────────────────────────────────
347
- /**
348
- * kgAdd(cwd, subject, predicate, object, validFrom, confidence, sourceId)
349
- * Appends a temporal triple. validFrom defaults to now; valid_to = null (open).
350
- */
351
- function kgAdd(cwd, subject, predicate, object, validFrom, confidence, sourceId) {
352
- var pDir = palaceDir(cwd);
353
- ensureDir(pDir);
354
- var kgFile = path.join(pDir, 'kg.json');
355
- var kg = readJson(kgFile, []);
356
- kg.push({
357
- id: uid(),
358
- subject: String(subject),
359
- predicate: String(predicate),
360
- object: String(object),
361
- valid_from: validFrom || new Date().toISOString(),
362
- valid_to: null,
363
- confidence: typeof confidence === 'number' ? confidence : 1.0,
364
- source_id: sourceId || null,
365
- created_at: new Date().toISOString(),
366
- });
367
- writeJson(kgFile, kg);
368
- }
369
-
370
- /**
371
- * kgQuery(cwd, entity, asOf) → triple[]
372
- * Triples where subject = entity, valid at the given time (defaults to now).
373
- */
374
- function kgQuery(cwd, entity, asOf) {
375
- var kgFile = path.join(palaceDir(cwd), 'kg.json');
376
- var kg = readJson(kgFile, []);
377
- var t = asOf ? new Date(asOf).getTime() : Date.now();
378
- return kg.filter(function(triple) {
379
- if (triple.subject !== entity) return false;
380
- var from = triple.valid_from ? new Date(triple.valid_from).getTime() : 0;
381
- var to = triple.valid_to ? new Date(triple.valid_to).getTime() : Infinity;
382
- return t >= from && t <= to;
383
- });
384
- }
385
-
386
- /**
387
- * kgTimeline(cwd, entity) → triple[] (chronological)
388
- * Full history of facts about entity, sorted by valid_from.
389
- */
390
- function kgTimeline(cwd, entity) {
391
- var kgFile = path.join(palaceDir(cwd), 'kg.json');
392
- var kg = readJson(kgFile, []);
393
- return kg
394
- .filter(function(t) { return t.subject === entity; })
395
- .sort(function(a, b) {
396
- return new Date(a.valid_from).getTime() - new Date(b.valid_from).getTime();
397
- });
398
- }
399
-
400
- // ── wakeUp (L0 + L1 injection) ───────────────────────────────────────────────
401
- /**
402
- * wakeUp(cwd) → string
403
- * Loads L0 identity context + generates L1 essential story from top-scored
404
- * recent drawers. Returns a string for console.log injection into session.
405
- */
406
- function wakeUp(cwd) {
407
- var pDir = palaceDir(cwd);
408
- var lines = [];
409
-
410
- // L0 — identity.md (user-maintained, static)
411
- var identityFile = path.join(pDir, 'identity.md');
412
- if (fs.existsSync(identityFile)) {
413
- try {
414
- var identity = fs.readFileSync(identityFile, 'utf-8').trim();
415
- if (identity) {
416
- lines.push('[MEMORY_PALACE_L0] Identity:');
417
- lines.push(identity);
418
- }
419
- } catch (e) { /* non-fatal */ }
420
- }
421
-
422
- // L1 — essential story: top-scored drawers from last L1_DAYS days
423
- var drawersFile = path.join(pDir, 'drawers.jsonl');
424
- if (fs.existsSync(drawersFile)) {
425
- try {
426
- var drawers = _getEffectiveDrawers(drawersFile);
427
- var cutoff = Date.now() - L1_DAYS * 24 * 60 * 60 * 1000;
428
- var recent = drawers.filter(function(d) {
429
- return d.ts && new Date(d.ts).getTime() > cutoff;
430
- });
431
- var top = recent
432
- .sort(function(a, b) { return (b.score || 0) - (a.score || 0); })
433
- .slice(0, L1_LIMIT);
434
-
435
- if (top.length > 0) {
436
- lines.push('[MEMORY_PALACE_L1] Essential story (' + top.length + ' drawer' + (top.length !== 1 ? 's' : '') + '):');
437
- top.forEach(function(d) {
438
- var ns = (d.wing || '?') + '/' + (d.room || '?') + (d.hall ? '/' + d.hall : '');
439
- var dateStr = d.ts ? d.ts.slice(0, 10) : '?';
440
- var snippet = (d.content || '').slice(0, 300).replace(/\n/g, ' ');
441
- lines.push('[' + ns + ' ' + dateStr + '] ' + snippet);
442
- });
443
- }
444
- } catch (e) { /* non-fatal */ }
445
- }
446
-
447
- return lines.join('\n');
448
- }
449
-
450
- // ── exports ───────────────────────────────────────────────────────────────────
451
- module.exports = {
452
- wakeUp,
453
- storeVerbatim,
454
- buildClosets,
455
- search,
456
- recall,
457
- bm25,
458
- kgAdd,
459
- kgQuery,
460
- kgTimeline,
461
- };
@@ -1,84 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Monomind Memory Helper
4
- * Simple key-value memory for cross-session context
5
- */
6
-
7
- const fs = require('fs');
8
- const path = require('path');
9
-
10
- const MEMORY_DIR = path.join(process.cwd(), '.monomind', 'data');
11
- const MEMORY_FILE = path.join(MEMORY_DIR, 'memory.json');
12
-
13
- function loadMemory() {
14
- try {
15
- if (fs.existsSync(MEMORY_FILE)) {
16
- return JSON.parse(fs.readFileSync(MEMORY_FILE, 'utf-8'));
17
- }
18
- } catch (e) {
19
- // Ignore
20
- }
21
- return {};
22
- }
23
-
24
- function saveMemory(memory) {
25
- fs.mkdirSync(MEMORY_DIR, { recursive: true });
26
- fs.writeFileSync(MEMORY_FILE, JSON.stringify(memory, null, 2));
27
- }
28
-
29
- const commands = {
30
- get: (key) => {
31
- const memory = loadMemory();
32
- const value = key ? memory[key] : memory;
33
- console.log(JSON.stringify(value, null, 2));
34
- return value;
35
- },
36
-
37
- set: (key, value) => {
38
- if (!key) {
39
- console.error('Key required');
40
- return;
41
- }
42
- const memory = loadMemory();
43
- memory[key] = value;
44
- memory._updated = new Date().toISOString();
45
- saveMemory(memory);
46
- console.log(`Set: ${key}`);
47
- },
48
-
49
- delete: (key) => {
50
- if (!key) {
51
- console.error('Key required');
52
- return;
53
- }
54
- const memory = loadMemory();
55
- delete memory[key];
56
- saveMemory(memory);
57
- console.log(`Deleted: ${key}`);
58
- },
59
-
60
- clear: () => {
61
- saveMemory({});
62
- console.log('Memory cleared');
63
- },
64
-
65
- keys: () => {
66
- const memory = loadMemory();
67
- const keys = Object.keys(memory).filter(k => !k.startsWith('_'));
68
- console.log(keys.join('\n'));
69
- return keys;
70
- },
71
- };
72
-
73
- module.exports = commands;
74
-
75
- // CLI - only run when executed directly
76
- if (require.main === module) {
77
- const [,, command, key, ...valueParts] = process.argv;
78
- const value = valueParts.join(' ');
79
- if (command && commands[command]) {
80
- commands[command](key, value);
81
- } else {
82
- console.log('Usage: memory.js <get|set|delete|clear|keys> [key] [value]');
83
- }
84
- }