@hivehub/rulebook 5.8.2 → 6.0.0

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 (512) hide show
  1. package/README.md +86 -216
  2. package/dist/cli/commands/claude.d.ts.map +1 -1
  3. package/dist/cli/commands/claude.js +10 -4
  4. package/dist/cli/commands/claude.js.map +1 -1
  5. package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
  6. package/dist/cli/commands/context-intelligence.js.map +1 -1
  7. package/dist/cli/commands/index.d.ts +1 -2
  8. package/dist/cli/commands/index.d.ts.map +1 -1
  9. package/dist/cli/commands/index.js +1 -2
  10. package/dist/cli/commands/index.js.map +1 -1
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +16 -91
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/commands/mcp.d.ts.map +1 -1
  15. package/dist/cli/commands/mcp.js.map +1 -1
  16. package/dist/cli/commands/misc.d.ts +0 -1
  17. package/dist/cli/commands/misc.d.ts.map +1 -1
  18. package/dist/cli/commands/misc.js +0 -76
  19. package/dist/cli/commands/misc.js.map +1 -1
  20. package/dist/cli/commands/plans.d.ts.map +1 -1
  21. package/dist/cli/commands/plans.js.map +1 -1
  22. package/dist/cli/commands/skills.d.ts.map +1 -1
  23. package/dist/cli/commands/skills.js +6 -2
  24. package/dist/cli/commands/skills.js.map +1 -1
  25. package/dist/cli/commands/task.d.ts.map +1 -1
  26. package/dist/cli/commands/task.js +3 -1
  27. package/dist/cli/commands/task.js.map +1 -1
  28. package/dist/cli/commands/update.d.ts +7 -0
  29. package/dist/cli/commands/update.d.ts.map +1 -1
  30. package/dist/cli/commands/update.js +61 -165
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/commands/workspace.d.ts.map +1 -1
  33. package/dist/cli/commands/workspace.js +4 -3
  34. package/dist/cli/commands/workspace.js.map +1 -1
  35. package/dist/cli/prompts.d.ts.map +1 -1
  36. package/dist/cli/prompts.js +0 -40
  37. package/dist/cli/prompts.js.map +1 -1
  38. package/dist/core/claude/claude-mcp.d.ts.map +1 -1
  39. package/dist/core/claude/claude-mcp.js +1 -1
  40. package/dist/core/claude/claude-mcp.js.map +1 -1
  41. package/dist/core/claude/claude-md-generator.d.ts.map +1 -1
  42. package/dist/core/claude/claude-md-generator.js.map +1 -1
  43. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -1
  44. package/dist/core/claude/claude-settings-manager.js +9 -6
  45. package/dist/core/claude/claude-settings-manager.js.map +1 -1
  46. package/dist/core/custom-templates.d.ts.map +1 -1
  47. package/dist/core/custom-templates.js.map +1 -1
  48. package/dist/core/detect/detector.d.ts +0 -28
  49. package/dist/core/detect/detector.d.ts.map +1 -1
  50. package/dist/core/detect/detector.js +5 -84
  51. package/dist/core/detect/detector.js.map +1 -1
  52. package/dist/core/detect/library-registry.d.ts.map +1 -1
  53. package/dist/core/detect/library-registry.js.map +1 -1
  54. package/dist/core/docs/docs-generator.d.ts.map +1 -1
  55. package/dist/core/docs/docs-generator.js.map +1 -1
  56. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -1
  57. package/dist/core/docs/mcp-reference-generator.js.map +1 -1
  58. package/dist/core/generators/generator.d.ts.map +1 -1
  59. package/dist/core/generators/generator.js +0 -72
  60. package/dist/core/generators/generator.js.map +1 -1
  61. package/dist/core/generators/gitignore-generator.d.ts.map +1 -1
  62. package/dist/core/generators/gitignore-generator.js +12 -1
  63. package/dist/core/generators/gitignore-generator.js.map +1 -1
  64. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -1
  65. package/dist/core/generators/minimal-scaffolder.js.map +1 -1
  66. package/dist/core/generators/rules-generator.d.ts.map +1 -1
  67. package/dist/core/generators/rules-generator.js.map +1 -1
  68. package/dist/core/generators/workflow-generator.d.ts +0 -10
  69. package/dist/core/generators/workflow-generator.d.ts.map +1 -1
  70. package/dist/core/generators/workflow-generator.js +0 -307
  71. package/dist/core/generators/workflow-generator.js.map +1 -1
  72. package/dist/core/logger.d.ts.map +1 -1
  73. package/dist/core/logger.js.map +1 -1
  74. package/dist/core/merger.d.ts.map +1 -1
  75. package/dist/core/merger.js.map +1 -1
  76. package/dist/core/migrator.d.ts.map +1 -1
  77. package/dist/core/migrator.js +2 -1
  78. package/dist/core/migrator.js.map +1 -1
  79. package/dist/core/quality/coverage-checker.d.ts.map +1 -1
  80. package/dist/core/quality/coverage-checker.js.map +1 -1
  81. package/dist/core/quality/dependency-checker.d.ts.map +1 -1
  82. package/dist/core/quality/dependency-checker.js +3 -1
  83. package/dist/core/quality/dependency-checker.js.map +1 -1
  84. package/dist/core/quality/doctor.d.ts.map +1 -1
  85. package/dist/core/quality/doctor.js.map +1 -1
  86. package/dist/core/quality/validator.d.ts.map +1 -1
  87. package/dist/core/quality/validator.js.map +1 -1
  88. package/dist/core/rule-engine.d.ts +5 -21
  89. package/dist/core/rule-engine.d.ts.map +1 -1
  90. package/dist/core/rule-engine.js +9 -191
  91. package/dist/core/rule-engine.js.map +1 -1
  92. package/dist/core/skills/skills-manager.d.ts.map +1 -1
  93. package/dist/core/skills/skills-manager.js.map +1 -1
  94. package/dist/core/state/config-manager.d.ts.map +1 -1
  95. package/dist/core/state/config-manager.js +6 -50
  96. package/dist/core/state/config-manager.js.map +1 -1
  97. package/dist/core/state/override-manager.js.map +1 -1
  98. package/dist/core/state/state-writer.d.ts.map +1 -1
  99. package/dist/core/state/state-writer.js.map +1 -1
  100. package/dist/core/state/version-bumper.d.ts.map +1 -1
  101. package/dist/core/state/version-bumper.js.map +1 -1
  102. package/dist/core/tasks/decision-manager.d.ts.map +1 -1
  103. package/dist/core/tasks/decision-manager.js +6 -1
  104. package/dist/core/tasks/decision-manager.js.map +1 -1
  105. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -1
  106. package/dist/core/tasks/knowledge-manager.js.map +1 -1
  107. package/dist/core/tasks/learn-manager.d.ts.map +1 -1
  108. package/dist/core/tasks/learn-manager.js.map +1 -1
  109. package/dist/core/tasks/plans-manager.d.ts.map +1 -1
  110. package/dist/core/tasks/plans-manager.js.map +1 -1
  111. package/dist/core/tasks/task-manager.d.ts.map +1 -1
  112. package/dist/core/tasks/task-manager.js.map +1 -1
  113. package/dist/core/workspace/legacy-migrator.d.ts.map +1 -1
  114. package/dist/core/workspace/legacy-migrator.js.map +1 -1
  115. package/dist/core/workspace/project-worker.d.ts +0 -4
  116. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  117. package/dist/core/workspace/project-worker.js +0 -28
  118. package/dist/core/workspace/project-worker.js.map +1 -1
  119. package/dist/core/workspace/workspace-manager.d.ts +0 -11
  120. package/dist/core/workspace/workspace-manager.d.ts.map +1 -1
  121. package/dist/core/workspace/workspace-manager.js +6 -30
  122. package/dist/core/workspace/workspace-manager.js.map +1 -1
  123. package/dist/core/workspace/workspace-types.d.ts +0 -1
  124. package/dist/core/workspace/workspace-types.d.ts.map +1 -1
  125. package/dist/hooks/safe-flag-io.js.map +1 -1
  126. package/dist/index.d.ts +1 -1
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +3 -82
  129. package/dist/index.js.map +1 -1
  130. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  131. package/dist/mcp/rulebook-server.js +55 -1634
  132. package/dist/mcp/rulebook-server.js.map +1 -1
  133. package/dist/mcp/tools/context.d.ts +23 -0
  134. package/dist/mcp/tools/context.d.ts.map +1 -0
  135. package/dist/mcp/tools/context.js +2 -0
  136. package/dist/mcp/tools/context.js.map +1 -0
  137. package/dist/mcp/tools/decision-tools.d.ts +5 -0
  138. package/dist/mcp/tools/decision-tools.d.ts.map +1 -0
  139. package/dist/mcp/tools/decision-tools.js +220 -0
  140. package/dist/mcp/tools/decision-tools.js.map +1 -0
  141. package/dist/mcp/tools/knowledge-tools.d.ts +5 -0
  142. package/dist/mcp/tools/knowledge-tools.d.ts.map +1 -0
  143. package/dist/mcp/tools/knowledge-tools.js +157 -0
  144. package/dist/mcp/tools/knowledge-tools.js.map +1 -0
  145. package/dist/mcp/tools/learn-tools.d.ts +5 -0
  146. package/dist/mcp/tools/learn-tools.d.ts.map +1 -0
  147. package/dist/mcp/tools/learn-tools.js +150 -0
  148. package/dist/mcp/tools/learn-tools.js.map +1 -0
  149. package/dist/mcp/tools/rules-tools.d.ts +4 -0
  150. package/dist/mcp/tools/rules-tools.d.ts.map +1 -0
  151. package/dist/mcp/tools/rules-tools.js +47 -0
  152. package/dist/mcp/tools/rules-tools.js.map +1 -0
  153. package/dist/mcp/tools/skill-tools.d.ts +5 -0
  154. package/dist/mcp/tools/skill-tools.d.ts.map +1 -0
  155. package/dist/mcp/tools/skill-tools.js +330 -0
  156. package/dist/mcp/tools/skill-tools.js.map +1 -0
  157. package/dist/mcp/tools/task-tools.d.ts +5 -0
  158. package/dist/mcp/tools/task-tools.d.ts.map +1 -0
  159. package/dist/mcp/tools/task-tools.js +185 -0
  160. package/dist/mcp/tools/task-tools.js.map +1 -0
  161. package/dist/mcp/tools/workspace-tools.d.ts +6 -0
  162. package/dist/mcp/tools/workspace-tools.d.ts.map +1 -0
  163. package/dist/mcp/tools/workspace-tools.js +118 -0
  164. package/dist/mcp/tools/workspace-tools.js.map +1 -0
  165. package/dist/types.d.ts +1 -46
  166. package/dist/types.d.ts.map +1 -1
  167. package/dist/utils/file-system.d.ts.map +1 -1
  168. package/dist/utils/file-system.js.map +1 -1
  169. package/dist/utils/git-hooks.d.ts.map +1 -1
  170. package/dist/utils/git-hooks.js.map +1 -1
  171. package/dist/utils/gitignore.d.ts.map +1 -1
  172. package/dist/utils/gitignore.js.map +1 -1
  173. package/dist/utils/rulesignore.d.ts.map +1 -1
  174. package/dist/utils/rulesignore.js.map +1 -1
  175. package/package.json +25 -27
  176. package/templates/agents/architect.md +51 -51
  177. package/templates/agents/build-engineer.md +36 -36
  178. package/templates/agents/code-reviewer.md +47 -47
  179. package/templates/agents/docs-writer.md +38 -38
  180. package/templates/agents/implementer.md +42 -42
  181. package/templates/agents/performance-engineer.md +49 -49
  182. package/templates/agents/researcher.md +38 -38
  183. package/templates/agents/security-reviewer.md +40 -40
  184. package/templates/agents/team-lead.md +37 -37
  185. package/templates/agents/tester.md +48 -48
  186. package/templates/ci/rulebook-review.yml +26 -26
  187. package/templates/cli/CLAUDE.md +102 -117
  188. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  189. package/templates/commands/rulebook-decision-create.md +55 -55
  190. package/templates/commands/rulebook-decision-list.md +15 -15
  191. package/templates/commands/rulebook-knowledge-add.md +41 -41
  192. package/templates/commands/rulebook-knowledge-list.md +15 -15
  193. package/templates/commands/rulebook-learn-capture.md +1 -2
  194. package/templates/commands/rulebook-task-apply.md +67 -67
  195. package/templates/commands/rulebook-task-archive.md +94 -94
  196. package/templates/commands/rulebook-task-create.md +93 -93
  197. package/templates/commands/rulebook-task-list.md +42 -42
  198. package/templates/commands/rulebook-task-show.md +52 -52
  199. package/templates/commands/rulebook-task-validate.md +53 -53
  200. package/templates/compact-context/_default.md +23 -23
  201. package/templates/compact-context/cpp.md +26 -26
  202. package/templates/compact-context/go.md +26 -26
  203. package/templates/compact-context/python.md +26 -26
  204. package/templates/compact-context/rust.md +28 -28
  205. package/templates/compact-context/typescript.md +29 -29
  206. package/templates/core/AGENTS_LEAN.md +4 -9
  207. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  208. package/templates/core/AGENT_AUTOMATION.md +273 -296
  209. package/templates/core/CLAUDE_MD_v2.md +85 -90
  210. package/templates/core/DAG.md +304 -304
  211. package/templates/core/DECISIONS.md +38 -38
  212. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  213. package/templates/core/KNOWLEDGE.md +49 -49
  214. package/templates/core/MULTI_AGENT.md +74 -74
  215. package/templates/core/PLANS.md +28 -28
  216. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  217. package/templates/core/RULEBOOK.md +1936 -1947
  218. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  219. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  220. package/templates/core/WORKSPACE.md +4 -8
  221. package/templates/git/CI_CD_PATTERNS.md +661 -661
  222. package/templates/git/GITHUB_ACTIONS.md +728 -728
  223. package/templates/git/GITLAB_CI.md +730 -730
  224. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  225. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  226. package/templates/hooks/COMMIT_MSG.md +530 -530
  227. package/templates/hooks/POST_CHECKOUT.md +546 -546
  228. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  229. package/templates/hooks/PRE_COMMIT.md +414 -414
  230. package/templates/hooks/PRE_PUSH.md +601 -601
  231. package/templates/hooks/enforce-pre-tool.sh +26 -9
  232. package/templates/hooks/update-check.ps1 +84 -84
  233. package/templates/hooks/update-check.sh +45 -21
  234. package/templates/languages/C.md +333 -333
  235. package/templates/languages/CPP.md +743 -743
  236. package/templates/languages/CSHARP.md +417 -417
  237. package/templates/languages/ELIXIR.md +454 -454
  238. package/templates/languages/ERLANG.md +361 -361
  239. package/templates/languages/GO.md +645 -645
  240. package/templates/languages/HASKELL.md +177 -177
  241. package/templates/languages/JAVA.md +607 -607
  242. package/templates/languages/JAVASCRIPT.md +631 -631
  243. package/templates/languages/JULIA.md +97 -97
  244. package/templates/languages/KOTLIN.md +511 -511
  245. package/templates/languages/LISP.md +100 -100
  246. package/templates/languages/LUA.md +74 -74
  247. package/templates/languages/OBJECTIVEC.md +90 -90
  248. package/templates/languages/PHP.md +416 -416
  249. package/templates/languages/PYTHON.md +682 -682
  250. package/templates/languages/RUBY.md +421 -421
  251. package/templates/languages/RUST.md +477 -477
  252. package/templates/languages/SAS.md +73 -73
  253. package/templates/languages/SCALA.md +348 -348
  254. package/templates/languages/SOLIDITY.md +580 -580
  255. package/templates/languages/SQL.md +137 -137
  256. package/templates/languages/SWIFT.md +466 -466
  257. package/templates/languages/TYPESCRIPT.md +591 -591
  258. package/templates/languages/ZIG.md +265 -265
  259. package/templates/modules/CONTEXT7.md +54 -54
  260. package/templates/modules/GITHUB_MCP.md +64 -64
  261. package/templates/modules/PLAYWRIGHT.md +90 -90
  262. package/templates/modules/RULEBOOK_MCP.md +208 -208
  263. package/templates/modules/SERENA.md +337 -337
  264. package/templates/modules/SUPABASE.md +223 -223
  265. package/templates/modules/SYNAP.md +69 -69
  266. package/templates/modules/VECTORIZER.md +63 -63
  267. package/templates/modules/sequential-thinking.md +42 -42
  268. package/templates/rules/consult-analysis-before-implementing.md +21 -23
  269. package/templates/rules/cpp.md +46 -46
  270. package/templates/rules/csharp.md +44 -44
  271. package/templates/rules/diagnostic-first.md +39 -39
  272. package/templates/rules/fail-twice-escalate.md +46 -46
  273. package/templates/rules/follow-task-sequence.md +36 -36
  274. package/templates/rules/git-safety.md +29 -29
  275. package/templates/rules/go.md +40 -40
  276. package/templates/rules/incremental-implementation.md +56 -56
  277. package/templates/rules/incremental-tests.md +29 -29
  278. package/templates/rules/java.md +43 -43
  279. package/templates/rules/javascript.md +39 -39
  280. package/templates/rules/knowledge-base-usage.md +41 -41
  281. package/templates/rules/multi-agent-teams.md +75 -75
  282. package/templates/rules/no-deferred.md +31 -31
  283. package/templates/rules/no-shortcuts.md +30 -30
  284. package/templates/rules/python.md +43 -43
  285. package/templates/rules/research-first.md +30 -30
  286. package/templates/rules/respect-handoff-trigger.md +41 -41
  287. package/templates/rules/rust.md +40 -40
  288. package/templates/rules/sequential-editing.md +21 -21
  289. package/templates/rules/session-workflow.md +24 -24
  290. package/templates/rules/task-decomposition.md +32 -32
  291. package/templates/rules/typescript.md +40 -40
  292. package/templates/skills/cli/claude/SKILL.md +42 -42
  293. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  294. package/templates/skills/core/dag/SKILL.md +314 -314
  295. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  296. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  297. package/templates/skills/core/rulebook/SKILL.md +176 -176
  298. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  299. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  300. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  301. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  302. package/templates/skills/dev/analysis/SKILL.md +19 -19
  303. package/templates/skills/dev/api-design/SKILL.md +15 -15
  304. package/templates/skills/dev/architect/SKILL.md +17 -17
  305. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  306. package/templates/skills/dev/db-design/SKILL.md +15 -15
  307. package/templates/skills/dev/debug/SKILL.md +16 -16
  308. package/templates/skills/dev/deploy/SKILL.md +17 -17
  309. package/templates/skills/dev/docs/SKILL.md +17 -17
  310. package/templates/skills/dev/handoff/SKILL.md +27 -27
  311. package/templates/skills/dev/migrate/SKILL.md +15 -15
  312. package/templates/skills/dev/perf/SKILL.md +17 -17
  313. package/templates/skills/dev/refactor/SKILL.md +17 -17
  314. package/templates/skills/dev/research/SKILL.md +14 -14
  315. package/templates/skills/dev/review/SKILL.md +18 -18
  316. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  317. package/templates/skills/languages/c/SKILL.md +343 -343
  318. package/templates/skills/languages/cpp/SKILL.md +753 -753
  319. package/templates/skills/languages/csharp/SKILL.md +427 -427
  320. package/templates/skills/languages/elixir/SKILL.md +464 -464
  321. package/templates/skills/languages/erlang/SKILL.md +371 -371
  322. package/templates/skills/languages/go/SKILL.md +655 -655
  323. package/templates/skills/languages/haskell/SKILL.md +187 -187
  324. package/templates/skills/languages/java/SKILL.md +617 -617
  325. package/templates/skills/languages/javascript/SKILL.md +641 -641
  326. package/templates/skills/languages/julia/SKILL.md +107 -107
  327. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  328. package/templates/skills/languages/lisp/SKILL.md +110 -110
  329. package/templates/skills/languages/lua/SKILL.md +84 -84
  330. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  331. package/templates/skills/languages/php/SKILL.md +426 -426
  332. package/templates/skills/languages/python/SKILL.md +692 -692
  333. package/templates/skills/languages/ruby/SKILL.md +431 -431
  334. package/templates/skills/languages/rust/SKILL.md +487 -487
  335. package/templates/skills/languages/sas/SKILL.md +83 -83
  336. package/templates/skills/languages/scala/SKILL.md +358 -358
  337. package/templates/skills/languages/solidity/SKILL.md +590 -590
  338. package/templates/skills/languages/sql/SKILL.md +147 -147
  339. package/templates/skills/languages/swift/SKILL.md +476 -476
  340. package/templates/skills/languages/typescript/SKILL.md +302 -302
  341. package/templates/skills/languages/zig/SKILL.md +275 -275
  342. package/templates/skills/modules/context7/SKILL.md +64 -64
  343. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  344. package/templates/skills/modules/playwright/SKILL.md +100 -100
  345. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  346. package/templates/skills/modules/serena/SKILL.md +347 -347
  347. package/templates/skills/modules/supabase/SKILL.md +233 -233
  348. package/templates/skills/modules/synap/SKILL.md +79 -79
  349. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  350. package/.claude/commands/analysis.md +0 -35
  351. package/.claude/commands/continue.md +0 -33
  352. package/.claude/commands/rulebook-decision-create.md +0 -55
  353. package/.claude/commands/rulebook-decision-list.md +0 -15
  354. package/.claude/commands/rulebook-knowledge-add.md +0 -41
  355. package/.claude/commands/rulebook-knowledge-list.md +0 -15
  356. package/.claude/commands/rulebook-learn-capture.md +0 -41
  357. package/.claude/commands/rulebook-learn-list.md +0 -13
  358. package/.claude/commands/rulebook-memory-save.md +0 -48
  359. package/.claude/commands/rulebook-memory-search.md +0 -47
  360. package/.claude/commands/rulebook-task-apply.md +0 -67
  361. package/.claude/commands/rulebook-task-archive.md +0 -94
  362. package/.claude/commands/rulebook-task-create.md +0 -93
  363. package/.claude/commands/rulebook-task-list.md +0 -42
  364. package/.claude/commands/rulebook-task-show.md +0 -52
  365. package/.claude/commands/rulebook-task-validate.md +0 -53
  366. package/.claude-plugin/marketplace.json +0 -28
  367. package/.claude-plugin/plugin.json +0 -8
  368. package/dist/agents/claude-code.d.ts +0 -69
  369. package/dist/agents/claude-code.d.ts.map +0 -1
  370. package/dist/agents/claude-code.js +0 -180
  371. package/dist/agents/claude-code.js.map +0 -1
  372. package/dist/agents/cursor-agent.d.ts +0 -184
  373. package/dist/agents/cursor-agent.d.ts.map +0 -1
  374. package/dist/agents/cursor-agent.js +0 -299
  375. package/dist/agents/cursor-agent.js.map +0 -1
  376. package/dist/agents/gemini-cli.d.ts +0 -69
  377. package/dist/agents/gemini-cli.d.ts.map +0 -1
  378. package/dist/agents/gemini-cli.js +0 -180
  379. package/dist/agents/gemini-cli.js.map +0 -1
  380. package/dist/cli/commands/memory.d.ts +0 -30
  381. package/dist/cli/commands/memory.d.ts.map +0 -1
  382. package/dist/cli/commands/memory.js +0 -259
  383. package/dist/cli/commands/memory.js.map +0 -1
  384. package/dist/core/console/cli-bridge.d.ts +0 -113
  385. package/dist/core/console/cli-bridge.d.ts.map +0 -1
  386. package/dist/core/console/cli-bridge.js +0 -1094
  387. package/dist/core/console/cli-bridge.js.map +0 -1
  388. package/dist/core/ide/multi-tool-generator.d.ts +0 -59
  389. package/dist/core/ide/multi-tool-generator.d.ts.map +0 -1
  390. package/dist/core/ide/multi-tool-generator.js +0 -157
  391. package/dist/core/ide/multi-tool-generator.js.map +0 -1
  392. package/dist/core/ide/opencode-generator.d.ts +0 -72
  393. package/dist/core/ide/opencode-generator.d.ts.map +0 -1
  394. package/dist/core/ide/opencode-generator.js +0 -450
  395. package/dist/core/ide/opencode-generator.js.map +0 -1
  396. package/dist/core/indexer/background-indexer.d.ts +0 -35
  397. package/dist/core/indexer/background-indexer.d.ts.map +0 -1
  398. package/dist/core/indexer/background-indexer.js +0 -267
  399. package/dist/core/indexer/background-indexer.js.map +0 -1
  400. package/dist/core/indexer/file-parser.d.ts +0 -28
  401. package/dist/core/indexer/file-parser.d.ts.map +0 -1
  402. package/dist/core/indexer/file-parser.js +0 -171
  403. package/dist/core/indexer/file-parser.js.map +0 -1
  404. package/dist/core/indexer/indexer-types.d.ts +0 -37
  405. package/dist/core/indexer/indexer-types.d.ts.map +0 -1
  406. package/dist/core/indexer/indexer-types.js +0 -8
  407. package/dist/core/indexer/indexer-types.js.map +0 -1
  408. package/dist/memory/file-search.d.ts +0 -43
  409. package/dist/memory/file-search.d.ts.map +0 -1
  410. package/dist/memory/file-search.js +0 -228
  411. package/dist/memory/file-search.js.map +0 -1
  412. package/dist/memory/file-store.d.ts +0 -99
  413. package/dist/memory/file-store.d.ts.map +0 -1
  414. package/dist/memory/file-store.js +0 -615
  415. package/dist/memory/file-store.js.map +0 -1
  416. package/dist/memory/legacy-migrator.d.ts +0 -27
  417. package/dist/memory/legacy-migrator.d.ts.map +0 -1
  418. package/dist/memory/legacy-migrator.js +0 -185
  419. package/dist/memory/legacy-migrator.js.map +0 -1
  420. package/dist/memory/memory-hooks.d.ts +0 -48
  421. package/dist/memory/memory-hooks.d.ts.map +0 -1
  422. package/dist/memory/memory-hooks.js +0 -248
  423. package/dist/memory/memory-hooks.js.map +0 -1
  424. package/dist/memory/memory-manager.d.ts +0 -65
  425. package/dist/memory/memory-manager.d.ts.map +0 -1
  426. package/dist/memory/memory-manager.js +0 -223
  427. package/dist/memory/memory-manager.js.map +0 -1
  428. package/dist/memory/memory-types.d.ts +0 -85
  429. package/dist/memory/memory-types.d.ts.map +0 -1
  430. package/dist/memory/memory-types.js +0 -7
  431. package/dist/memory/memory-types.js.map +0 -1
  432. package/templates/agents/accessibility-reviewer.md +0 -43
  433. package/templates/agents/api-designer.md +0 -42
  434. package/templates/agents/compiler/codegen-debugger.md +0 -34
  435. package/templates/agents/compiler/stdlib-engineer.md +0 -28
  436. package/templates/agents/compiler/test-coverage-guardian.md +0 -31
  437. package/templates/agents/context-intelligence.md +0 -50
  438. package/templates/agents/database-architect.md +0 -41
  439. package/templates/agents/devops-engineer.md +0 -42
  440. package/templates/agents/game-engine/cpp-core-expert.md +0 -35
  441. package/templates/agents/game-engine/render-engineer.md +0 -22
  442. package/templates/agents/game-engine/shader-engineer.md +0 -38
  443. package/templates/agents/game-engine/systems-integration.md +0 -43
  444. package/templates/agents/generic/code-reviewer.md +0 -41
  445. package/templates/agents/generic/docs-writer.md +0 -25
  446. package/templates/agents/generic/project-manager.md +0 -36
  447. package/templates/agents/generic/researcher.md +0 -34
  448. package/templates/agents/generic/test-engineer.md +0 -41
  449. package/templates/agents/i18n-engineer.md +0 -42
  450. package/templates/agents/migration-engineer.md +0 -42
  451. package/templates/agents/mobile/platform-specialist.md +0 -22
  452. package/templates/agents/mobile/ui-engineer.md +0 -22
  453. package/templates/agents/project-manager.md +0 -217
  454. package/templates/agents/refactoring-agent.md +0 -41
  455. package/templates/agents/ux-reviewer.md +0 -43
  456. package/templates/agents/web-app/api-designer.md +0 -22
  457. package/templates/agents/web-app/backend-engineer.md +0 -30
  458. package/templates/agents/web-app/database-engineer.md +0 -22
  459. package/templates/agents/web-app/frontend-engineer.md +0 -29
  460. package/templates/agents/web-app/security-reviewer.md +0 -32
  461. package/templates/cli/AIDER.md +0 -49
  462. package/templates/cli/AMAZON_Q.md +0 -25
  463. package/templates/cli/AUGGIE.md +0 -32
  464. package/templates/cli/CLINE.md +0 -99
  465. package/templates/cli/CODEBUDDY.md +0 -20
  466. package/templates/cli/CODEIUM.md +0 -20
  467. package/templates/cli/CODEX.md +0 -21
  468. package/templates/cli/CONTINUE.md +0 -34
  469. package/templates/cli/CURSOR_CLI.md +0 -62
  470. package/templates/cli/FACTORY.md +0 -18
  471. package/templates/cli/GEMINI.md +0 -35
  472. package/templates/cli/KILOCODE.md +0 -18
  473. package/templates/cli/OPENCODE.md +0 -85
  474. package/templates/cli/gemini-extension.json +0 -77
  475. package/templates/commands/rulebook-memory-save.md +0 -48
  476. package/templates/commands/rulebook-memory-search.md +0 -47
  477. package/templates/ides/CONTINUE_RULES.md +0 -16
  478. package/templates/ides/COPILOT_INSTRUCTIONS.md +0 -23
  479. package/templates/ides/GEMINI_RULES.md +0 -17
  480. package/templates/ides/OPENCODE.md +0 -63
  481. package/templates/ides/WINDSURF_RULES.md +0 -14
  482. package/templates/modules/ATLASSIAN.md +0 -255
  483. package/templates/modules/FIGMA.md +0 -267
  484. package/templates/modules/GRAFANA.md +0 -328
  485. package/templates/modules/MEMORY.md +0 -126
  486. package/templates/modules/NOTION.md +0 -247
  487. package/templates/skills/cli/aider/SKILL.md +0 -59
  488. package/templates/skills/cli/amazon-q/SKILL.md +0 -35
  489. package/templates/skills/cli/auggie/SKILL.md +0 -42
  490. package/templates/skills/cli/cline/SKILL.md +0 -42
  491. package/templates/skills/cli/codebuddy/SKILL.md +0 -30
  492. package/templates/skills/cli/codeium/SKILL.md +0 -30
  493. package/templates/skills/cli/codex/SKILL.md +0 -31
  494. package/templates/skills/cli/continue/SKILL.md +0 -44
  495. package/templates/skills/cli/cursor-cli/SKILL.md +0 -38
  496. package/templates/skills/cli/factory/SKILL.md +0 -28
  497. package/templates/skills/cli/gemini/SKILL.md +0 -45
  498. package/templates/skills/cli/kilocode/SKILL.md +0 -28
  499. package/templates/skills/cli/opencode/SKILL.md +0 -82
  500. package/templates/skills/ides/copilot/SKILL.md +0 -47
  501. package/templates/skills/ides/cursor/SKILL.md +0 -53
  502. package/templates/skills/ides/jetbrains-ai/SKILL.md +0 -45
  503. package/templates/skills/ides/replit/SKILL.md +0 -46
  504. package/templates/skills/ides/tabnine/SKILL.md +0 -39
  505. package/templates/skills/ides/vscode/SKILL.md +0 -50
  506. package/templates/skills/ides/windsurf/SKILL.md +0 -46
  507. package/templates/skills/ides/zed/SKILL.md +0 -42
  508. package/templates/skills/modules/atlassian/SKILL.md +0 -265
  509. package/templates/skills/modules/figma/SKILL.md +0 -277
  510. package/templates/skills/modules/grafana/SKILL.md +0 -338
  511. package/templates/skills/modules/memory/SKILL.md +0 -73
  512. package/templates/skills/modules/notion/SKILL.md +0 -257
@@ -1,615 +0,0 @@
1
- /**
2
- * File-based memory store (replaces SQLite + HNSW).
3
- *
4
- * Persists memories and sessions as plain markdown files with YAML
5
- * frontmatter. Search is BM25 over the body with a tag-frontmatter boost.
6
- * No vector index, no native dependency, no WASM.
7
- *
8
- * Layout:
9
- * <root>/memories/<YYYY>/<MM>/<id>-<slug>.md
10
- * <root>/sessions/<YYYY>/<MM>/<id>-<slug>.md
11
- * <root>/codegraph/nodes.jsonl (one CodeNode per line)
12
- * <root>/codegraph/edges.jsonl (one CodeEdge per line)
13
- * <root>/.index.json (optional, lazily refreshed when memoryCount > 1000)
14
- */
15
- import { existsSync, statSync } from 'fs';
16
- import { mkdir, readFile, readdir, rename, rm, writeFile, appendFile, stat } from 'fs/promises';
17
- import path from 'path';
18
- import { randomUUID } from 'crypto';
19
- /** Body sentinel separating frontmatter from content. */
20
- const FM_DELIMITER = '---';
21
- const MEMORY_TYPES = new Set([
22
- 'bugfix',
23
- 'feature',
24
- 'refactor',
25
- 'decision',
26
- 'discovery',
27
- 'change',
28
- 'observation',
29
- ]);
30
- /** Convert "Hello, World!" → "hello-world" with a 60-char cap. */
31
- export function slugify(input) {
32
- return (input
33
- .toLowerCase()
34
- .replace(/[^a-z0-9]+/g, '-')
35
- .replace(/^-+|-+$/g, '')
36
- .slice(0, 60)
37
- .replace(/-+$/g, '') || 'memory');
38
- }
39
- /** Pick the YYYY/MM partition for a given epoch-ms timestamp. */
40
- function partitionFor(ts) {
41
- const d = new Date(ts);
42
- return {
43
- year: String(d.getUTCFullYear()),
44
- month: String(d.getUTCMonth() + 1).padStart(2, '0'),
45
- };
46
- }
47
- function escapeFmString(s) {
48
- return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\r?\n/g, ' ');
49
- }
50
- function unescapeFmString(s) {
51
- return s.replace(/\\"/g, '"').replace(/\\\\/g, '\\');
52
- }
53
- /**
54
- * Serialize a Memory to a markdown file body.
55
- */
56
- export function memoryToMarkdown(m) {
57
- const fm = [
58
- FM_DELIMITER,
59
- `id: ${m.id}`,
60
- `type: ${m.type}`,
61
- `title: "${escapeFmString(m.title)}"`,
62
- ];
63
- if (m.summary)
64
- fm.push(`summary: "${escapeFmString(m.summary)}"`);
65
- fm.push(`project: "${escapeFmString(m.project)}"`);
66
- fm.push(`tags: [${m.tags.map((t) => `"${escapeFmString(t)}"`).join(', ')}]`);
67
- if (m.sessionId)
68
- fm.push(`sessionId: ${m.sessionId}`);
69
- fm.push(`createdAt: ${m.createdAt}`);
70
- fm.push(`updatedAt: ${m.updatedAt}`);
71
- fm.push(`accessedAt: ${m.accessedAt}`);
72
- fm.push(FM_DELIMITER);
73
- fm.push('');
74
- return fm.join('\n') + m.content + (m.content.endsWith('\n') ? '' : '\n');
75
- }
76
- /**
77
- * Serialize a MemorySession to markdown.
78
- */
79
- export function sessionToMarkdown(s) {
80
- const fm = [
81
- FM_DELIMITER,
82
- `id: ${s.id}`,
83
- `project: "${escapeFmString(s.project)}"`,
84
- `status: ${s.status}`,
85
- `startedAt: ${s.startedAt}`,
86
- ];
87
- if (s.endedAt !== undefined)
88
- fm.push(`endedAt: ${s.endedAt}`);
89
- fm.push(`toolCalls: ${s.toolCalls}`);
90
- fm.push(FM_DELIMITER);
91
- fm.push('');
92
- return fm.join('\n') + (s.summary ?? '') + '\n';
93
- }
94
- /**
95
- * Parse YAML-ish frontmatter and body. Supports the minimal forms the writer
96
- * emits: `key: value`, `key: "string"`, and `key: [a, b]`.
97
- */
98
- export function parseFile(text) {
99
- const norm = text.replace(/\r\n/g, '\n');
100
- if (!norm.startsWith(`${FM_DELIMITER}\n`)) {
101
- return { meta: {}, body: norm };
102
- }
103
- const end = norm.indexOf(`\n${FM_DELIMITER}`, FM_DELIMITER.length + 1);
104
- if (end < 0)
105
- return { meta: {}, body: norm };
106
- const block = norm.slice(FM_DELIMITER.length + 1, end);
107
- const body = norm.slice(end + FM_DELIMITER.length + 1).replace(/^\n/, '');
108
- const meta = {};
109
- for (const rawLine of block.split('\n')) {
110
- const line = rawLine.trimEnd();
111
- if (!line || line.startsWith('#'))
112
- continue;
113
- const idx = line.indexOf(':');
114
- if (idx < 0)
115
- continue;
116
- const key = line.slice(0, idx).trim();
117
- let value = line.slice(idx + 1).trim();
118
- if (value.startsWith('[') && value.endsWith(']')) {
119
- const inner = value.slice(1, -1).trim();
120
- if (!inner) {
121
- meta[key] = [];
122
- continue;
123
- }
124
- const parts = [];
125
- const re = /"((?:\\.|[^"\\])*)"\s*,?\s*|([^,\s][^,]*)\s*,?\s*/g;
126
- let match;
127
- while ((match = re.exec(inner)) !== null) {
128
- if (match[1] !== undefined)
129
- parts.push(unescapeFmString(match[1]));
130
- else if (match[2] !== undefined)
131
- parts.push(match[2].trim());
132
- }
133
- meta[key] = parts;
134
- continue;
135
- }
136
- if (value.startsWith('"') && value.endsWith('"')) {
137
- meta[key] = unescapeFmString(value.slice(1, -1));
138
- continue;
139
- }
140
- if (/^-?\d+$/.test(value)) {
141
- meta[key] = Number(value);
142
- continue;
143
- }
144
- meta[key] = value;
145
- }
146
- return { meta, body };
147
- }
148
- function metaToMemory(meta, body) {
149
- const id = typeof meta.id === 'string' ? meta.id : null;
150
- const type = typeof meta.type === 'string' && MEMORY_TYPES.has(meta.type) ? meta.type : null;
151
- const title = typeof meta.title === 'string' ? meta.title : null;
152
- if (!id || !type || title === null)
153
- return null;
154
- const tags = Array.isArray(meta.tags)
155
- ? meta.tags.filter((t) => typeof t === 'string')
156
- : [];
157
- const project = typeof meta.project === 'string' ? meta.project : '';
158
- const summary = typeof meta.summary === 'string' ? meta.summary : undefined;
159
- const sessionId = typeof meta.sessionId === 'string' ? meta.sessionId : undefined;
160
- const createdAt = typeof meta.createdAt === 'number' ? meta.createdAt : 0;
161
- const updatedAt = typeof meta.updatedAt === 'number' ? meta.updatedAt : createdAt;
162
- const accessedAt = typeof meta.accessedAt === 'number' ? meta.accessedAt : createdAt;
163
- return {
164
- id,
165
- type,
166
- title,
167
- summary,
168
- content: body.replace(/\n+$/, ''),
169
- project,
170
- tags,
171
- sessionId,
172
- createdAt,
173
- updatedAt,
174
- accessedAt,
175
- };
176
- }
177
- function metaToSession(meta, body) {
178
- const id = typeof meta.id === 'string' ? meta.id : null;
179
- const startedAt = typeof meta.startedAt === 'number' ? meta.startedAt : null;
180
- if (!id || startedAt === null)
181
- return null;
182
- const status = meta.status === 'active' || meta.status === 'completed' ? meta.status : 'active';
183
- return {
184
- id,
185
- project: typeof meta.project === 'string' ? meta.project : '',
186
- status,
187
- startedAt,
188
- endedAt: typeof meta.endedAt === 'number' ? meta.endedAt : undefined,
189
- summary: body.trim() ? body.replace(/\n+$/, '') : undefined,
190
- toolCalls: typeof meta.toolCalls === 'number' ? meta.toolCalls : 0,
191
- };
192
- }
193
- /** Atomic write via temp file + rename. */
194
- async function atomicWrite(filePath, content) {
195
- const dir = path.dirname(filePath);
196
- if (!existsSync(dir))
197
- await mkdir(dir, { recursive: true });
198
- const tmp = `${filePath}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}.tmp`;
199
- await writeFile(tmp, content, 'utf-8');
200
- await rename(tmp, filePath);
201
- }
202
- export class FileStore {
203
- root;
204
- memoriesRoot;
205
- sessionsRoot;
206
- codegraphRoot;
207
- codegraphNodesFile;
208
- codegraphEdgesFile;
209
- /** id → cached parsed memory entry (in-memory hot path; rebuilt from disk). */
210
- memoryCache = new Map();
211
- memoryCacheLoaded = false;
212
- sessionCache = new Map();
213
- sessionCacheLoaded = false;
214
- constructor(root) {
215
- this.root = root;
216
- this.memoriesRoot = path.join(root, 'memories');
217
- this.sessionsRoot = path.join(root, 'sessions');
218
- this.codegraphRoot = path.join(root, 'codegraph');
219
- this.codegraphNodesFile = path.join(this.codegraphRoot, 'nodes.jsonl');
220
- this.codegraphEdgesFile = path.join(this.codegraphRoot, 'edges.jsonl');
221
- }
222
- async initialize() {
223
- if (!existsSync(this.root))
224
- await mkdir(this.root, { recursive: true });
225
- if (!existsSync(this.memoriesRoot))
226
- await mkdir(this.memoriesRoot, { recursive: true });
227
- if (!existsSync(this.sessionsRoot))
228
- await mkdir(this.sessionsRoot, { recursive: true });
229
- if (!existsSync(this.codegraphRoot))
230
- await mkdir(this.codegraphRoot, { recursive: true });
231
- }
232
- // ── memory CRUD ─────────────────────────────────────────────────────
233
- async saveMemory(memory) {
234
- const { year, month } = partitionFor(memory.createdAt);
235
- const slug = slugify(memory.title);
236
- const filename = `${memory.id}-${slug}.md`;
237
- const dir = path.join(this.memoriesRoot, year, month);
238
- const target = path.join(dir, filename);
239
- // If the memory id already has an existing file (possibly under a
240
- // different partition because createdAt drifted), remove the old one.
241
- const existingPath = await this.findMemoryFile(memory.id, target);
242
- if (existingPath && existingPath !== target) {
243
- try {
244
- await rm(existingPath, { force: true });
245
- }
246
- catch {
247
- // ignore
248
- }
249
- }
250
- const content = memoryToMarkdown(memory);
251
- await atomicWrite(target, content);
252
- const st = await stat(target);
253
- this.memoryCache.set(memory.id, {
254
- filePath: target,
255
- meta: {
256
- id: memory.id,
257
- type: memory.type,
258
- title: memory.title,
259
- project: memory.project,
260
- tags: memory.tags,
261
- sessionId: memory.sessionId,
262
- createdAt: memory.createdAt,
263
- updatedAt: memory.updatedAt,
264
- accessedAt: memory.accessedAt,
265
- summary: memory.summary,
266
- },
267
- body: memory.content,
268
- mtimeMs: st.mtimeMs,
269
- });
270
- }
271
- async getMemory(id) {
272
- const cached = this.memoryCache.get(id);
273
- if (cached) {
274
- const m = metaToMemory(cached.meta, cached.body);
275
- if (m)
276
- return m;
277
- }
278
- const found = await this.findMemoryFile(id);
279
- if (!found)
280
- return null;
281
- const text = await readFile(found, 'utf-8');
282
- const { meta, body } = parseFile(text);
283
- const st = await stat(found);
284
- this.memoryCache.set(id, { filePath: found, meta, body, mtimeMs: st.mtimeMs });
285
- return metaToMemory(meta, body);
286
- }
287
- async deleteMemory(id) {
288
- const found = await this.findMemoryFile(id);
289
- if (!found)
290
- return false;
291
- await rm(found, { force: true });
292
- this.memoryCache.delete(id);
293
- return true;
294
- }
295
- async updateAccessedAt(id) {
296
- const memory = await this.getMemory(id);
297
- if (!memory)
298
- return;
299
- memory.accessedAt = Date.now();
300
- await this.saveMemory(memory);
301
- }
302
- async listAllMemories() {
303
- await this.ensureMemoryCache();
304
- const out = [];
305
- for (const entry of this.memoryCache.values()) {
306
- const m = metaToMemory(entry.meta, entry.body);
307
- if (m)
308
- out.push(m);
309
- }
310
- return out;
311
- }
312
- async listMemories(filter) {
313
- const all = await this.listAllMemories();
314
- let filtered = all;
315
- if (filter?.type)
316
- filtered = filtered.filter((m) => m.type === filter.type);
317
- if (filter?.project !== undefined)
318
- filtered = filtered.filter((m) => m.project === filter.project);
319
- if (filter?.tags && filter.tags.length > 0) {
320
- const want = new Set(filter.tags);
321
- filtered = filtered.filter((m) => m.tags.some((t) => want.has(t)));
322
- }
323
- if (filter?.since !== undefined)
324
- filtered = filtered.filter((m) => m.createdAt >= filter.since);
325
- if (filter?.until !== undefined)
326
- filtered = filtered.filter((m) => m.createdAt <= filter.until);
327
- filtered.sort((a, b) => b.createdAt - a.createdAt);
328
- const offset = filter?.offset ?? 0;
329
- const limit = filter?.limit ?? Number.MAX_SAFE_INTEGER;
330
- return filtered.slice(offset, offset + limit);
331
- }
332
- // ── sessions ────────────────────────────────────────────────────────
333
- async saveSession(session) {
334
- const { year, month } = partitionFor(session.startedAt);
335
- const slug = slugify(session.project || 'session');
336
- const filename = `${session.id}-${slug}.md`;
337
- const target = path.join(this.sessionsRoot, year, month, filename);
338
- const existing = await this.findSessionFile(session.id, target);
339
- if (existing && existing !== target) {
340
- try {
341
- await rm(existing, { force: true });
342
- }
343
- catch {
344
- // ignore
345
- }
346
- }
347
- await atomicWrite(target, sessionToMarkdown(session));
348
- const st = await stat(target);
349
- this.sessionCache.set(session.id, {
350
- filePath: target,
351
- meta: {
352
- id: session.id,
353
- project: session.project,
354
- status: session.status,
355
- startedAt: session.startedAt,
356
- endedAt: session.endedAt,
357
- toolCalls: session.toolCalls,
358
- },
359
- body: session.summary ?? '',
360
- mtimeMs: st.mtimeMs,
361
- });
362
- }
363
- async getSession(id) {
364
- const cached = this.sessionCache.get(id);
365
- if (cached)
366
- return metaToSession(cached.meta, cached.body);
367
- const found = await this.findSessionFile(id);
368
- if (!found)
369
- return null;
370
- const text = await readFile(found, 'utf-8');
371
- const { meta, body } = parseFile(text);
372
- const st = await stat(found);
373
- this.sessionCache.set(id, { filePath: found, meta, body, mtimeMs: st.mtimeMs });
374
- return metaToSession(meta, body);
375
- }
376
- async listSessions() {
377
- await this.ensureSessionCache();
378
- const out = [];
379
- for (const e of this.sessionCache.values()) {
380
- const s = metaToSession(e.meta, e.body);
381
- if (s)
382
- out.push(s);
383
- }
384
- out.sort((a, b) => b.startedAt - a.startedAt);
385
- return out;
386
- }
387
- async getActiveSession() {
388
- const sessions = await this.listSessions();
389
- return sessions.find((s) => s.status === 'active') ?? null;
390
- }
391
- // ── stats ───────────────────────────────────────────────────────────
392
- async getStats() {
393
- const memories = await this.listAllMemories();
394
- const sessions = await this.listSessions();
395
- let totalBytes = 0;
396
- let fileCount = 0;
397
- for (const e of this.memoryCache.values()) {
398
- try {
399
- const st = statSync(e.filePath);
400
- totalBytes += st.size;
401
- fileCount++;
402
- }
403
- catch {
404
- // ignore
405
- }
406
- }
407
- for (const e of this.sessionCache.values()) {
408
- try {
409
- const st = statSync(e.filePath);
410
- totalBytes += st.size;
411
- fileCount++;
412
- }
413
- catch {
414
- // ignore
415
- }
416
- }
417
- let oldestMemory;
418
- let newestMemory;
419
- for (const m of memories) {
420
- if (oldestMemory === undefined || m.createdAt < oldestMemory)
421
- oldestMemory = m.createdAt;
422
- if (newestMemory === undefined || m.createdAt > newestMemory)
423
- newestMemory = m.createdAt;
424
- }
425
- return {
426
- memoryCount: memories.length,
427
- sessionCount: sessions.length,
428
- fileCount,
429
- totalBytes,
430
- oldestMemory,
431
- newestMemory,
432
- };
433
- }
434
- // ── codegraph (JSONL log) ───────────────────────────────────────────
435
- async appendCodeNode(node) {
436
- if (!existsSync(this.codegraphRoot))
437
- await mkdir(this.codegraphRoot, { recursive: true });
438
- await appendFile(this.codegraphNodesFile, JSON.stringify(node) + '\n', 'utf-8');
439
- }
440
- async appendCodeEdge(edge) {
441
- if (!existsSync(this.codegraphRoot))
442
- await mkdir(this.codegraphRoot, { recursive: true });
443
- await appendFile(this.codegraphEdgesFile, JSON.stringify(edge) + '\n', 'utf-8');
444
- }
445
- async getCodeNodeHash(id) {
446
- if (!existsSync(this.codegraphNodesFile))
447
- return null;
448
- const text = await readFile(this.codegraphNodesFile, 'utf-8');
449
- let last = null;
450
- for (const line of text.split('\n')) {
451
- if (!line)
452
- continue;
453
- try {
454
- const node = JSON.parse(line);
455
- if (node.id === id)
456
- last = node.hash;
457
- }
458
- catch {
459
- // ignore malformed lines
460
- }
461
- }
462
- return last;
463
- }
464
- async getCodeNode(id) {
465
- if (!existsSync(this.codegraphNodesFile))
466
- return null;
467
- const text = await readFile(this.codegraphNodesFile, 'utf-8');
468
- let last = null;
469
- for (const line of text.split('\n')) {
470
- if (!line)
471
- continue;
472
- try {
473
- const node = JSON.parse(line);
474
- if (node.id === id)
475
- last = node;
476
- }
477
- catch {
478
- // ignore
479
- }
480
- }
481
- return last;
482
- }
483
- async getCodeNodeIdsByFile(filePath) {
484
- if (!existsSync(this.codegraphNodesFile))
485
- return [];
486
- const text = await readFile(this.codegraphNodesFile, 'utf-8');
487
- const ids = new Set();
488
- for (const line of text.split('\n')) {
489
- if (!line)
490
- continue;
491
- try {
492
- const node = JSON.parse(line);
493
- if (node.filePath === filePath)
494
- ids.add(node.id);
495
- }
496
- catch {
497
- // ignore
498
- }
499
- }
500
- return Array.from(ids);
501
- }
502
- /**
503
- * Compact the codegraph nodes log by writing only the latest entry per id
504
- * and dropping any belonging to the supplied file path.
505
- */
506
- async deleteCodeNodesByFile(filePath) {
507
- if (!existsSync(this.codegraphNodesFile))
508
- return;
509
- const text = await readFile(this.codegraphNodesFile, 'utf-8');
510
- const latest = new Map();
511
- for (const line of text.split('\n')) {
512
- if (!line)
513
- continue;
514
- try {
515
- const node = JSON.parse(line);
516
- if (node.filePath === filePath) {
517
- latest.delete(node.id);
518
- }
519
- else {
520
- latest.set(node.id, node);
521
- }
522
- }
523
- catch {
524
- // ignore malformed
525
- }
526
- }
527
- const out = Array.from(latest.values())
528
- .map((n) => JSON.stringify(n))
529
- .join('\n');
530
- await atomicWrite(this.codegraphNodesFile, out + (out ? '\n' : ''));
531
- }
532
- // ── internals ───────────────────────────────────────────────────────
533
- async ensureMemoryCache() {
534
- if (this.memoryCacheLoaded)
535
- return;
536
- this.memoryCache.clear();
537
- await this.walkAndCache(this.memoriesRoot, this.memoryCache);
538
- this.memoryCacheLoaded = true;
539
- }
540
- async ensureSessionCache() {
541
- if (this.sessionCacheLoaded)
542
- return;
543
- this.sessionCache.clear();
544
- await this.walkAndCache(this.sessionsRoot, this.sessionCache);
545
- this.sessionCacheLoaded = true;
546
- }
547
- async walkAndCache(root, cache) {
548
- if (!existsSync(root))
549
- return;
550
- const stack = [root];
551
- while (stack.length) {
552
- const current = stack.pop();
553
- let entries;
554
- try {
555
- entries = await readdir(current, { withFileTypes: true });
556
- }
557
- catch {
558
- continue;
559
- }
560
- for (const entry of entries) {
561
- const full = path.join(current, entry.name);
562
- if (entry.isDirectory()) {
563
- stack.push(full);
564
- continue;
565
- }
566
- if (!entry.isFile() || !entry.name.endsWith('.md'))
567
- continue;
568
- try {
569
- const text = await readFile(full, 'utf-8');
570
- const parsed = parseFile(text);
571
- const id = typeof parsed.meta.id === 'string' ? parsed.meta.id : null;
572
- if (!id)
573
- continue;
574
- const st = await stat(full);
575
- cache.set(id, {
576
- filePath: full,
577
- meta: parsed.meta,
578
- body: parsed.body,
579
- mtimeMs: st.mtimeMs,
580
- });
581
- }
582
- catch {
583
- // ignore unreadable files
584
- }
585
- }
586
- }
587
- }
588
- async findMemoryFile(id, preferred) {
589
- if (preferred && existsSync(preferred))
590
- return preferred;
591
- await this.ensureMemoryCache();
592
- return this.memoryCache.get(id)?.filePath ?? null;
593
- }
594
- async findSessionFile(id, preferred) {
595
- if (preferred && existsSync(preferred))
596
- return preferred;
597
- await this.ensureSessionCache();
598
- return this.sessionCache.get(id)?.filePath ?? null;
599
- }
600
- /** Force a cache rebuild from disk on next access. Useful after a migration. */
601
- invalidateCaches() {
602
- this.memoryCache.clear();
603
- this.sessionCache.clear();
604
- this.memoryCacheLoaded = false;
605
- this.sessionCacheLoaded = false;
606
- }
607
- }
608
- export function createFileStore(root) {
609
- return new FileStore(root);
610
- }
611
- /** Re-exposed for migration helpers; not part of the public API surface. */
612
- export const __INTERNAL = {
613
- randomUUID,
614
- };
615
- //# sourceMappingURL=file-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-store.js","sourceRoot":"","sources":["../../src/memory/file-store.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * One-shot legacy SQLite → markdown migrator.
3
- *
4
- * Lazily imported only when an existing `memory.db` is detected on the
5
- * first `MemoryManager.initialize()`. Reads memories + sessions from the
6
- * legacy DB (using `better-sqlite3` if available, otherwise `sql.js` as a
7
- * fallback) and writes one markdown file per row via `FileStore`.
8
- *
9
- * After the manager renames `memory.db` → `memory.db.legacy` neither
10
- * sql.js nor better-sqlite3 is loaded again at runtime. The migrator
11
- * itself isolates those imports inside try-blocks so a missing native
12
- * binary is non-fatal — the user keeps the markdown migration that
13
- * already succeeded for the rows the fallback could read.
14
- */
15
- import type { FileStore } from './file-store.js';
16
- interface MigrationStats {
17
- memories: number;
18
- sessions: number;
19
- }
20
- /**
21
- * Migrate every row of a legacy memory.db into the file-based store.
22
- * Idempotent against the FileStore: if a memory id already exists on disk
23
- * it is overwritten with the legacy content (same id → same partition).
24
- */
25
- export declare function migrateLegacyDb(dbPath: string, fileStore: FileStore): Promise<MigrationStats>;
26
- export {};
27
- //# sourceMappingURL=legacy-migrator.d.ts.map