toolnet-memory 0.2.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 (329) hide show
  1. package/.env.example +28 -0
  2. package/README.md +147 -0
  3. package/bin/toolnet-memory +415 -0
  4. package/dist/packages/cli/commands.js +1 -0
  5. package/dist/packages/cli/index.js +1 -0
  6. package/dist/packages/sdk/client.js +78 -0
  7. package/dist/packages/sdk/index.js +1 -0
  8. package/dist/packages/sdk/types.js +1 -0
  9. package/dist/src/api/index.js +1 -0
  10. package/dist/src/api/routes/health.js +1 -0
  11. package/dist/src/api/routes/index.js +1 -0
  12. package/dist/src/api/routes/memory.js +1 -0
  13. package/dist/src/api/routes/projects.js +1 -0
  14. package/dist/src/api/routes/search.js +1 -0
  15. package/dist/src/api/server.js +1 -0
  16. package/dist/src/capture/activity-capture.js +21 -0
  17. package/dist/src/capture/command-capture.js +12 -0
  18. package/dist/src/capture/error-capture.js +14 -0
  19. package/dist/src/capture/event-deduplicator.js +28 -0
  20. package/dist/src/capture/event-queue.js +20 -0
  21. package/dist/src/capture/file-capture.js +23 -0
  22. package/dist/src/capture/index.js +8 -0
  23. package/dist/src/capture/session-capture.js +18 -0
  24. package/dist/src/capture/tool-capture.js +13 -0
  25. package/dist/src/code-intelligence/analysis/analysis-engine.js +26 -0
  26. package/dist/src/code-intelligence/analysis/dead-code-analyzer.js +127 -0
  27. package/dist/src/code-intelligence/analysis/dependency-analyzer.js +66 -0
  28. package/dist/src/code-intelligence/analysis/index.js +4 -0
  29. package/dist/src/code-intelligence/analysis/types.js +1 -0
  30. package/dist/src/code-intelligence/architecture/architecture-engine.js +48 -0
  31. package/dist/src/code-intelligence/architecture/clusters.js +322 -0
  32. package/dist/src/code-intelligence/architecture/entry-points.js +150 -0
  33. package/dist/src/code-intelligence/architecture/hotspots.js +136 -0
  34. package/dist/src/code-intelligence/architecture/index.js +6 -0
  35. package/dist/src/code-intelligence/architecture/layers.js +197 -0
  36. package/dist/src/code-intelligence/architecture/types.js +1 -0
  37. package/dist/src/code-intelligence/chunks/index.js +2 -0
  38. package/dist/src/code-intelligence/chunks/smart-chunker.js +125 -0
  39. package/dist/src/code-intelligence/chunks/types.js +1 -0
  40. package/dist/src/code-intelligence/git/git-diff.js +109 -0
  41. package/dist/src/code-intelligence/git/index.js +1 -0
  42. package/dist/src/code-intelligence/graph/architecture.js +26 -0
  43. package/dist/src/code-intelligence/graph/graph-builder.js +213 -0
  44. package/dist/src/code-intelligence/graph/graph-store.js +57 -0
  45. package/dist/src/code-intelligence/graph/index.js +1 -0
  46. package/dist/src/code-intelligence/graph/relationships.js +1 -0
  47. package/dist/src/code-intelligence/graph/trace.js +65 -0
  48. package/dist/src/code-intelligence/impact/blast-radius.js +160 -0
  49. package/dist/src/code-intelligence/impact/change-mapper.js +69 -0
  50. package/dist/src/code-intelligence/impact/edit-tool-detector.js +92 -0
  51. package/dist/src/code-intelligence/impact/impact-analyzer.js +60 -0
  52. package/dist/src/code-intelligence/impact/impact-guard.js +33 -0
  53. package/dist/src/code-intelligence/impact/index.js +5 -0
  54. package/dist/src/code-intelligence/incremental/file-hash.js +8 -0
  55. package/dist/src/code-intelligence/incremental/incremental-indexer.js +106 -0
  56. package/dist/src/code-intelligence/incremental/manifest-builder.js +19 -0
  57. package/dist/src/code-intelligence/incremental/manifest.js +31 -0
  58. package/dist/src/code-intelligence/index.js +23 -0
  59. package/dist/src/code-intelligence/indexer/file-watcher.js +1 -0
  60. package/dist/src/code-intelligence/indexer/incremental-indexer.js +1 -0
  61. package/dist/src/code-intelligence/indexer/index.js +1 -0
  62. package/dist/src/code-intelligence/indexer/repository-indexer.js +31 -0
  63. package/dist/src/code-intelligence/indexer/repository-scanner.js +50 -0
  64. package/dist/src/code-intelligence/parsers/index.js +1 -0
  65. package/dist/src/code-intelligence/parsers/tree-sitter/index.js +1 -0
  66. package/dist/src/code-intelligence/parsers/tree-sitter/languages.js +1 -0
  67. package/dist/src/code-intelligence/parsers/tree-sitter/parser.js +1 -0
  68. package/dist/src/code-intelligence/parsers/typescript-parser.js +190 -0
  69. package/dist/src/code-intelligence/query/graph-query-engine.js +275 -0
  70. package/dist/src/code-intelligence/query/index.js +2 -0
  71. package/dist/src/code-intelligence/query/types.js +1 -0
  72. package/dist/src/code-intelligence/resolution/index.js +2 -0
  73. package/dist/src/code-intelligence/resolution/types.js +1 -0
  74. package/dist/src/code-intelligence/resolution/typescript-resolver.js +316 -0
  75. package/dist/src/code-intelligence/rich/index.js +1 -0
  76. package/dist/src/code-intelligence/rich/rich-graph-enricher.js +463 -0
  77. package/dist/src/code-intelligence/semantic/index.js +2 -0
  78. package/dist/src/code-intelligence/semantic/semantic-code-engine.js +213 -0
  79. package/dist/src/code-intelligence/semantic/source-priority.js +22 -0
  80. package/dist/src/code-intelligence/symbols/index.js +1 -0
  81. package/dist/src/code-intelligence/symbols/reference-resolver.js +21 -0
  82. package/dist/src/code-intelligence/symbols/symbol-extractor.js +1 -0
  83. package/dist/src/code-intelligence/test-analysis.js +72 -0
  84. package/dist/src/code-intelligence/test-architecture.js +67 -0
  85. package/dist/src/code-intelligence/test-impact.js +47 -0
  86. package/dist/src/code-intelligence/test-incremental.js +24 -0
  87. package/dist/src/code-intelligence/test-index.js +39 -0
  88. package/dist/src/code-intelligence/test-resolution.js +54 -0
  89. package/dist/src/code-intelligence/test-rich-graph.js +48 -0
  90. package/dist/src/code-intelligence/test-semantic.js +57 -0
  91. package/dist/src/code-intelligence/test-visualization.js +36 -0
  92. package/dist/src/code-intelligence/types.js +1 -0
  93. package/dist/src/code-intelligence/visualization/index.js +2 -0
  94. package/dist/src/code-intelligence/visualization/types.js +1 -0
  95. package/dist/src/code-intelligence/visualization/visualization-builder.js +104 -0
  96. package/dist/src/core/config.js +66 -0
  97. package/dist/src/core/global-env.js +70 -0
  98. package/dist/src/core/importance.js +30 -0
  99. package/dist/src/core/index.js +5 -0
  100. package/dist/src/core/memory-engine.js +183 -0
  101. package/dist/src/core/project-manager.js +243 -0
  102. package/dist/src/core/types.js +1 -0
  103. package/dist/src/embeddings/batch-embedder.js +1 -0
  104. package/dist/src/embeddings/cache.js +1 -0
  105. package/dist/src/embeddings/embedder.js +51 -0
  106. package/dist/src/embeddings/index.js +4 -0
  107. package/dist/src/embeddings/local.js +37 -0
  108. package/dist/src/embeddings/provider.js +1 -0
  109. package/dist/src/embeddings/remote.js +76 -0
  110. package/dist/src/embeddings/test-connection.js +16 -0
  111. package/dist/src/hooks/after-edit.js +3 -0
  112. package/dist/src/hooks/after-tool.js +3 -0
  113. package/dist/src/hooks/auto-context.js +68 -0
  114. package/dist/src/hooks/auto-impact-guard.js +94 -0
  115. package/dist/src/hooks/auto-retrieval.js +27 -0
  116. package/dist/src/hooks/before-agent.js +18 -0
  117. package/dist/src/hooks/before-compact.js +3 -0
  118. package/dist/src/hooks/before-edit.js +20 -0
  119. package/dist/src/hooks/index.js +11 -0
  120. package/dist/src/hooks/runtime.js +110 -0
  121. package/dist/src/hooks/session-end.js +3 -0
  122. package/dist/src/hooks/session-start.js +3 -0
  123. package/dist/src/index.js +22 -0
  124. package/dist/src/mcp/bootstrap.js +68 -0
  125. package/dist/src/mcp/context.js +1 -0
  126. package/dist/src/mcp/index.js +3 -0
  127. package/dist/src/mcp/server.js +45 -0
  128. package/dist/src/mcp/tools/analyze-impact.js +41 -0
  129. package/dist/src/mcp/tools/dead-code.js +55 -0
  130. package/dist/src/mcp/tools/find-callers.js +24 -0
  131. package/dist/src/mcp/tools/find-dependencies.js +57 -0
  132. package/dist/src/mcp/tools/find-symbol.js +7 -0
  133. package/dist/src/mcp/tools/get-architecture.js +11 -0
  134. package/dist/src/mcp/tools/graph-dependents.js +24 -0
  135. package/dist/src/mcp/tools/graph-neighborhood.js +58 -0
  136. package/dist/src/mcp/tools/graph-path.js +43 -0
  137. package/dist/src/mcp/tools/graph-query-utils.js +32 -0
  138. package/dist/src/mcp/tools/impact-guard.js +34 -0
  139. package/dist/src/mcp/tools/index-repository.js +1 -0
  140. package/dist/src/mcp/tools/index.js +20 -0
  141. package/dist/src/mcp/tools/memory-decisions.js +1 -0
  142. package/dist/src/mcp/tools/memory-forget.js +14 -0
  143. package/dist/src/mcp/tools/memory-recent.js +1 -0
  144. package/dist/src/mcp/tools/memory-remember.js +33 -0
  145. package/dist/src/mcp/tools/memory-rules.js +1 -0
  146. package/dist/src/mcp/tools/memory-search.js +18 -0
  147. package/dist/src/mcp/tools/memory-todos.js +1 -0
  148. package/dist/src/mcp/tools/project-context.js +25 -0
  149. package/dist/src/mcp/tools/search-code.js +21 -0
  150. package/dist/src/mcp/tools/semantic-code-search.js +33 -0
  151. package/dist/src/mcp/tools/snapshot-create.js +13 -0
  152. package/dist/src/mcp/tools/snapshot-list.js +7 -0
  153. package/dist/src/mcp/tools/snapshot-restore.js +13 -0
  154. package/dist/src/mcp/tools/trace-calls.js +37 -0
  155. package/dist/src/memory/activity.js +5 -0
  156. package/dist/src/memory/conflict-detector.js +105 -0
  157. package/dist/src/memory/consolidator.js +104 -0
  158. package/dist/src/memory/decay.js +59 -0
  159. package/dist/src/memory/decisions.js +3 -0
  160. package/dist/src/memory/deduplicate.js +25 -0
  161. package/dist/src/memory/index.js +11 -0
  162. package/dist/src/memory/maintenance.js +16 -0
  163. package/dist/src/memory/remember.js +3 -0
  164. package/dist/src/memory/rules.js +3 -0
  165. package/dist/src/memory/search.js +3 -0
  166. package/dist/src/memory/summaries.js +1 -0
  167. package/dist/src/memory/todos.js +3 -0
  168. package/dist/src/processor/decision-extractor.js +13 -0
  169. package/dist/src/processor/importance-scorer.js +22 -0
  170. package/dist/src/processor/index.js +7 -0
  171. package/dist/src/processor/memory-extractor.js +59 -0
  172. package/dist/src/processor/memory-processor.js +105 -0
  173. package/dist/src/processor/rule-extractor.js +13 -0
  174. package/dist/src/processor/summarizer.js +71 -0
  175. package/dist/src/processor/todo-extractor.js +12 -0
  176. package/dist/src/production/config-check.js +34 -0
  177. package/dist/src/production/doctor.js +58 -0
  178. package/dist/src/production/full-index.js +114 -0
  179. package/dist/src/production/health.js +58 -0
  180. package/dist/src/production/index-pipeline.js +151 -0
  181. package/dist/src/production/index.js +4 -0
  182. package/dist/src/production/project-lock.js +95 -0
  183. package/dist/src/production/project-status.js +16 -0
  184. package/dist/src/production/recovery.js +15 -0
  185. package/dist/src/production/snapshot-cli.js +58 -0
  186. package/dist/src/project-manual/cli.js +77 -0
  187. package/dist/src/project-manual/index.js +2 -0
  188. package/dist/src/project-manual/manager.js +147 -0
  189. package/dist/src/project-manual/types.js +1 -0
  190. package/dist/src/retrieval/bm25/index.js +1 -0
  191. package/dist/src/retrieval/bm25/search.js +1 -0
  192. package/dist/src/retrieval/bm25.js +30 -0
  193. package/dist/src/retrieval/context-budget.js +1 -0
  194. package/dist/src/retrieval/context-builder.js +22 -0
  195. package/dist/src/retrieval/graph/index.js +1 -0
  196. package/dist/src/retrieval/graph/search.js +1 -0
  197. package/dist/src/retrieval/hybrid/hybrid-search.js +1 -0
  198. package/dist/src/retrieval/hybrid/index.js +1 -0
  199. package/dist/src/retrieval/hybrid-search.js +68 -0
  200. package/dist/src/retrieval/importance.js +16 -0
  201. package/dist/src/retrieval/index.js +12 -0
  202. package/dist/src/retrieval/query-analyzer.js +32 -0
  203. package/dist/src/retrieval/query-classifier.js +1 -0
  204. package/dist/src/retrieval/query-expansion.js +1 -0
  205. package/dist/src/retrieval/recency.js +12 -0
  206. package/dist/src/retrieval/reranker/index.js +1 -0
  207. package/dist/src/retrieval/reranker/reranker.js +1 -0
  208. package/dist/src/retrieval/retrieval-engine.js +17 -0
  209. package/dist/src/retrieval/tokenizer.js +9 -0
  210. package/dist/src/retrieval/type-priority.js +10 -0
  211. package/dist/src/retrieval/types.js +1 -0
  212. package/dist/src/retrieval/vector/index.js +4 -0
  213. package/dist/src/retrieval/vector/metadata-filter.js +1 -0
  214. package/dist/src/retrieval/vector/persistence.js +67 -0
  215. package/dist/src/retrieval/vector/search.js +12 -0
  216. package/dist/src/retrieval/vector/test-persistence.js +36 -0
  217. package/dist/src/retrieval/vector/upsert.js +40 -0
  218. package/dist/src/retrieval/vector/vector-store.js +89 -0
  219. package/dist/src/retrieval/vector-hybrid-engine.js +91 -0
  220. package/dist/src/runtime/bootstrap.js +28 -0
  221. package/dist/src/runtime/graceful.js +17 -0
  222. package/dist/src/runtime/index.js +3 -0
  223. package/dist/src/runtime/toolnet-memory-runtime.js +156 -0
  224. package/dist/src/security/encryption.js +1 -0
  225. package/dist/src/security/file-filter.js +30 -0
  226. package/dist/src/security/index.js +3 -0
  227. package/dist/src/security/sanitizer.js +49 -0
  228. package/dist/src/security/secret-scanner.js +56 -0
  229. package/dist/src/session/agy/adapter.js +159 -0
  230. package/dist/src/session/agy/cli.js +87 -0
  231. package/dist/src/session/agy/hook-installer.js +62 -0
  232. package/dist/src/session/agy/hook.js +167 -0
  233. package/dist/src/session/agy/index.js +5 -0
  234. package/dist/src/session/agy/project-resolver.js +27 -0
  235. package/dist/src/session/agy/recovery.js +112 -0
  236. package/dist/src/session/agy/transcript.js +191 -0
  237. package/dist/src/session/codex/adapter.js +138 -0
  238. package/dist/src/session/codex/cli.js +236 -0
  239. package/dist/src/session/codex/context-hook-installer.js +70 -0
  240. package/dist/src/session/codex/context-hook.js +69 -0
  241. package/dist/src/session/codex/discovery.js +138 -0
  242. package/dist/src/session/codex/index.js +6 -0
  243. package/dist/src/session/codex/notify-installer.js +135 -0
  244. package/dist/src/session/codex/project-resolver.js +25 -0
  245. package/dist/src/session/codex/recovery.js +27 -0
  246. package/dist/src/session/codex/rollout.js +186 -0
  247. package/dist/src/session/core.js +239 -0
  248. package/dist/src/session/identity.js +57 -0
  249. package/dist/src/session/index.js +9 -0
  250. package/dist/src/session/learner/cli.js +62 -0
  251. package/dist/src/session/learner/extractor.js +461 -0
  252. package/dist/src/session/learner/index.js +4 -0
  253. package/dist/src/session/learner/journal.js +159 -0
  254. package/dist/src/session/learner/learner.js +124 -0
  255. package/dist/src/session/learner/types.js +1 -0
  256. package/dist/src/session/opencode/adapter.js +553 -0
  257. package/dist/src/session/opencode/cli.js +121 -0
  258. package/dist/src/session/opencode/index.js +2 -0
  259. package/dist/src/session/opencode/plugin-installer.js +230 -0
  260. package/dist/src/session/store.js +242 -0
  261. package/dist/src/session/types.js +1 -0
  262. package/dist/src/session/utils.js +47 -0
  263. package/dist/src/session/wal.js +303 -0
  264. package/dist/src/snapshot/index.js +2 -0
  265. package/dist/src/snapshot/manager.js +130 -0
  266. package/dist/src/snapshot/test-snapshot.js +28 -0
  267. package/dist/src/snapshot/types.js +1 -0
  268. package/dist/src/storage/architecture-store.js +37 -0
  269. package/dist/src/storage/cleanup-health.js +20 -0
  270. package/dist/src/storage/code-analysis-store.js +35 -0
  271. package/dist/src/storage/code-chunk-store.js +25 -0
  272. package/dist/src/storage/code-graph-store.js +24 -0
  273. package/dist/src/storage/code-manifest-store.js +24 -0
  274. package/dist/src/storage/code-vector-store.js +25 -0
  275. package/dist/src/storage/github/client.js +1 -0
  276. package/dist/src/storage/github/index.js +1 -0
  277. package/dist/src/storage/google-drive/client.js +1 -0
  278. package/dist/src/storage/google-drive/index.js +1 -0
  279. package/dist/src/storage/huggingface/client.js +116 -0
  280. package/dist/src/storage/huggingface/index.js +1 -0
  281. package/dist/src/storage/index.js +16 -0
  282. package/dist/src/storage/list-bucket-raw.js +14 -0
  283. package/dist/src/storage/list-bucket-tree.js +38 -0
  284. package/dist/src/storage/local/client.js +99 -0
  285. package/dist/src/storage/local/index.js +1 -0
  286. package/dist/src/storage/memory-store.js +30 -0
  287. package/dist/src/storage/project/cleanup-layout-v1.js +72 -0
  288. package/dist/src/storage/project/folder.js +15 -0
  289. package/dist/src/storage/project/index.js +3 -0
  290. package/dist/src/storage/project/layout.js +74 -0
  291. package/dist/src/storage/project/migrate-layout-v2.js +101 -0
  292. package/dist/src/storage/project/migrate.js +73 -0
  293. package/dist/src/storage/project/scoped-provider.js +165 -0
  294. package/dist/src/storage/provider.js +26 -0
  295. package/dist/src/storage/retrying-provider.js +23 -0
  296. package/dist/src/storage/test-connection.js +32 -0
  297. package/dist/src/storage/type-resolution-store.js +26 -0
  298. package/dist/src/storage/types.js +1 -0
  299. package/dist/src/storage/vector-store.js +30 -0
  300. package/dist/src/storage/visualization-store.js +25 -0
  301. package/dist/src/sync/compressor.js +1 -0
  302. package/dist/src/sync/conflict-resolver.js +1 -0
  303. package/dist/src/sync/downloader.js +1 -0
  304. package/dist/src/sync/index.js +1 -0
  305. package/dist/src/sync/sync-engine.js +1 -0
  306. package/dist/src/sync/upload-queue.js +1 -0
  307. package/dist/src/utils/retry.js +29 -0
  308. package/dist/src/visualization/server.js +270 -0
  309. package/dist/src/work-continuity/brief-cache.js +107 -0
  310. package/dist/src/work-continuity/brief.js +349 -0
  311. package/dist/src/work-continuity/cli.js +96 -0
  312. package/dist/src/work-continuity/context-cli.js +106 -0
  313. package/dist/src/work-continuity/context-runtime-cli.js +88 -0
  314. package/dist/src/work-continuity/extractor.js +339 -0
  315. package/dist/src/work-continuity/handoff.js +185 -0
  316. package/dist/src/work-continuity/index.js +14 -0
  317. package/dist/src/work-continuity/injection.js +84 -0
  318. package/dist/src/work-continuity/journal.js +49 -0
  319. package/dist/src/work-continuity/learner.js +127 -0
  320. package/dist/src/work-continuity/reducer.js +316 -0
  321. package/dist/src/work-continuity/semantic-extractor.js +360 -0
  322. package/dist/src/work-continuity/semantic-journal.js +55 -0
  323. package/dist/src/work-continuity/semantic-learner.js +125 -0
  324. package/dist/src/work-continuity/semantic-reducer.js +268 -0
  325. package/dist/src/work-continuity/semantic-types.js +1 -0
  326. package/dist/src/work-continuity/types.js +1 -0
  327. package/dist/visualization/public/index.html +2896 -0
  328. package/dist/visualization/public/vendor/3d-force-graph.min.js +5 -0
  329. package/package.json +69 -0
package/.env.example ADDED
@@ -0,0 +1,28 @@
1
+ # Storage provider
2
+ MEMORY_STORAGE_PROVIDER=huggingface
3
+
4
+ # Hugging Face Storage Bucket
5
+ HF_NAMESPACE=
6
+ HF_BUCKET=toolnet-memory
7
+
8
+ # Generate these from:
9
+ # Hugging Face Settings -> Access Tokens
10
+ # -> token dropdown -> Generate S3 credentials
11
+ HF_S3_ACCESS_KEY_ID=
12
+ HF_S3_SECRET_ACCESS_KEY=
13
+
14
+ # Local fallback/cache
15
+ MEMORY_LOCAL_STORAGE_PATH=
16
+ MEMORY_LOCAL_CACHE_MB=200
17
+
18
+ # Automation
19
+ MEMORY_AUTO_CAPTURE=true
20
+ MEMORY_AUTO_RETRIEVE=true
21
+ MEMORY_AUTO_SUMMARIZE=true
22
+ MEMORY_AUTO_SYNC=true
23
+
24
+ # Retrieval
25
+ MEMORY_MAX_CANDIDATES=50
26
+ MEMORY_RERANK_TOP=10
27
+ MEMORY_FINAL_CONTEXT=5
28
+ MEMORY_TOKEN_BUDGET=2000
package/README.md ADDED
@@ -0,0 +1,147 @@
1
+ # ToolNet Memory
2
+
3
+ Persistent memory + code intelligence cho AI coding agents.
4
+
5
+ ## Tính năng
6
+
7
+ - Mỗi thư mục = 1 project độc lập
8
+ - Persistent memory
9
+ - Code Graph + Type Resolution
10
+ - Semantic Code Search
11
+ - Architecture & Dependency Analysis
12
+ - Dead Code / Impact Guard
13
+ - Snapshots
14
+ - MCP tools
15
+ - Multi-project 3D Graph
16
+
17
+ ## Cài đặt
18
+
19
+ ```bash
20
+ git clone https://github.com/LBT-AI/toolnet-memory
21
+ cd toolnet-memory
22
+ npm install
23
+ npm run build
24
+ npm link
25
+ ```
26
+
27
+ Kiểm tra:
28
+
29
+ ```bash
30
+ toolnet-memory help
31
+ toolnet-memory doctor
32
+ ```
33
+
34
+ ## Cấu hình
35
+
36
+ Tạo config dùng chung:
37
+
38
+ ```bash
39
+ mkdir -p ~/.config/toolnet-memory
40
+ cp .env.example ~/.config/toolnet-memory/.env
41
+ chmod 600 ~/.config/toolnet-memory/.env
42
+ ```
43
+
44
+ Điền Hugging Face Storage credentials vào:
45
+
46
+ ```text
47
+ ~/.config/toolnet-memory/.env
48
+ ```
49
+
50
+ ## Sử dụng
51
+
52
+ Đi vào project cần index:
53
+
54
+ ```bash
55
+ cd ~/ToolNetSecrets
56
+ toolnet-memory index
57
+ ```
58
+
59
+ ToolNet tự tạo:
60
+
61
+ ```text
62
+ ToolNetSecrets/.toolnet/project.json
63
+ ```
64
+
65
+ và lưu riêng trên remote:
66
+
67
+ ```text
68
+ projects/ToolNetSecrets/
69
+ ├── memory/
70
+ ├── code/
71
+ └── snapshots/
72
+ ```
73
+
74
+ Project khác cũng hoàn toàn độc lập:
75
+
76
+ ```bash
77
+ cd ~/Mercedes
78
+ toolnet-memory index
79
+ ```
80
+
81
+ ## Full Index Pipeline
82
+
83
+ ```text
84
+ Source Index
85
+ → Type Resolution
86
+ → Rich Graph
87
+ → Semantic Index
88
+ → Architecture
89
+ → Analysis
90
+ → 3D Visualization
91
+ ```
92
+
93
+ ## 3D Graph
94
+
95
+ Chạy dashboard:
96
+
97
+ ```bash
98
+ cd ~/toolnet-memory
99
+ TOOLNET_GRAPH_HOST=0.0.0.0 TOOLNET_GRAPH_PORT=9749 npm run graph:ui
100
+ ```
101
+
102
+ Mở:
103
+
104
+ ```text
105
+ http://SERVER_IP:9749
106
+ ```
107
+
108
+ Một dashboard có thể chuyển giữa nhiều project, nhưng dữ liệu của từng project vẫn tách biệt.
109
+
110
+ ## Lệnh chính
111
+
112
+ ```bash
113
+ toolnet-memory doctor
114
+ toolnet-memory index
115
+ toolnet-memory index:graph
116
+ toolnet-memory incremental
117
+ toolnet-memory semantic "query"
118
+ toolnet-memory impact [file]
119
+ toolnet-memory mcp
120
+ toolnet-memory snapshot:list
121
+ toolnet-memory snapshot:create "reason"
122
+ toolnet-memory snapshot:restore <id>
123
+ toolnet-memory recover
124
+ ```
125
+
126
+ ## Development
127
+
128
+ ```bash
129
+ npm run build
130
+ npm test
131
+ ```
132
+
133
+ > 1 folder = 1 project = 1 isolated memory universe.
134
+
135
+ ## Cài nhanh
136
+
137
+ ```bash
138
+ curl -fsSL https://raw.githubusercontent.com/LBT-AI/toolnet-memory/main/scripts/install.sh | bash
139
+ ```
140
+
141
+ Sau đó:
142
+
143
+ ```bash
144
+ source ~/.profile
145
+ cd ~/your-project
146
+ toolnet-memory index
147
+ ```
@@ -0,0 +1,415 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ SOURCE="${BASH_SOURCE[0]}"
5
+
6
+ while [ -h "$SOURCE" ]; do
7
+ DIR="$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)"
8
+ SOURCE="$(readlink "$SOURCE")"
9
+ [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE"
10
+ done
11
+
12
+ ROOT="$(cd -P "$(dirname "$SOURCE")/.." >/dev/null 2>&1 && pwd)"
13
+ NODE="${NODE_BINARY:-node}"
14
+ TSX="$ROOT/node_modules/.bin/tsx"
15
+
16
+ COMMAND="${1:-help}"
17
+
18
+ run() {
19
+ DIST="$1"
20
+ SRC="$2"
21
+ shift 2
22
+
23
+ if [ -f "$ROOT/$DIST" ]; then
24
+ exec "$NODE" "$ROOT/$DIST" "$@"
25
+ fi
26
+
27
+ # Development checkout fallback only.
28
+ if [ -x "$TSX" ] && [ -f "$ROOT/$SRC" ]; then
29
+ exec "$TSX" "$ROOT/$SRC" "$@"
30
+ fi
31
+
32
+ echo "ToolNet production build missing."
33
+ echo "Run: npm run build:prod"
34
+ exit 1
35
+ }
36
+
37
+ case "$COMMAND" in
38
+ doctor)
39
+ run dist/src/production/doctor.js src/production/doctor.ts
40
+ ;;
41
+
42
+ run)
43
+ run dist/index.js src/index.ts
44
+ ;;
45
+
46
+ mcp)
47
+ run dist/src/mcp/bootstrap.js src/mcp/bootstrap.ts
48
+ ;;
49
+
50
+ index)
51
+ run dist/src/production/full-index.js src/production/full-index.ts
52
+ ;;
53
+
54
+ index:graph)
55
+ run dist/src/code-intelligence/test-index.js src/code-intelligence/test-index.ts
56
+ ;;
57
+
58
+ incremental)
59
+ run dist/src/code-intelligence/test-incremental.js src/code-intelligence/test-incremental.ts
60
+ ;;
61
+
62
+ semantic)
63
+ shift
64
+ run dist/src/code-intelligence/test-semantic.js src/code-intelligence/test-semantic.ts "$@"
65
+ ;;
66
+
67
+ impact)
68
+ shift
69
+ run dist/src/code-intelligence/test-impact.js src/code-intelligence/test-impact.ts "$@"
70
+ ;;
71
+
72
+ snapshot:list)
73
+ run dist/src/production/snapshot-cli.js src/production/snapshot-cli.ts list
74
+ ;;
75
+
76
+ snapshot:create)
77
+ shift
78
+ run dist/src/production/snapshot-cli.js src/production/snapshot-cli.ts create "$@"
79
+ ;;
80
+
81
+ snapshot:restore)
82
+ shift
83
+ run dist/src/production/snapshot-cli.js src/production/snapshot-cli.ts restore "$@"
84
+ ;;
85
+
86
+ recover)
87
+ run dist/src/production/snapshot-cli.js src/production/snapshot-cli.ts recover-latest
88
+ ;;
89
+
90
+ session:opencode-sync)
91
+ shift
92
+
93
+ if [ -f "$ROOT/dist/src/session/opencode/cli.js" ]; then
94
+ exec node "$ROOT/dist/src/session/opencode/cli.js" sync "$@"
95
+ fi
96
+
97
+ if [ -n "${TSX:-}" ] && [ -x "${TSX:-}" ]; then
98
+ exec "$TSX" "$ROOT/src/session/opencode/cli.ts" sync "$@"
99
+ fi
100
+
101
+ echo "OpenCode session adapter not found."
102
+ exit 1
103
+ ;;
104
+
105
+ session:opencode-recover)
106
+ shift
107
+
108
+ if [ -f "$ROOT/dist/src/session/opencode/cli.js" ]; then
109
+ exec node "$ROOT/dist/src/session/opencode/cli.js" recover "$@"
110
+ fi
111
+
112
+ if [ -n "${TSX:-}" ] && [ -x "${TSX:-}" ]; then
113
+ exec "$TSX" "$ROOT/src/session/opencode/cli.ts" recover "$@"
114
+ fi
115
+
116
+ echo "OpenCode session adapter not found."
117
+ exit 1
118
+ ;;
119
+
120
+ integrate:opencode)
121
+ shift
122
+
123
+ if [ -f "$ROOT/dist/src/session/opencode/cli.js" ]; then
124
+ exec node "$ROOT/dist/src/session/opencode/cli.js" install-plugin "$@"
125
+ fi
126
+
127
+ if [ -n "${TSX:-}" ] && [ -x "${TSX:-}" ]; then
128
+ exec "$TSX" "$ROOT/src/session/opencode/cli.ts" install-plugin "$@"
129
+ fi
130
+
131
+ echo "OpenCode plugin installer not found."
132
+ exit 1
133
+ ;;
134
+
135
+ session:agy-hook)
136
+ shift
137
+
138
+ if [ -f "$ROOT/dist/src/session/agy/hook.js" ]; then
139
+ exec node "$ROOT/dist/src/session/agy/hook.js" "$@"
140
+ fi
141
+
142
+ if [ -x "${TSX:-}" ]; then
143
+ exec "$TSX" "$ROOT/src/session/agy/hook.ts" "$@"
144
+ fi
145
+
146
+ exit 0
147
+ ;;
148
+
149
+ session:agy-sync)
150
+ shift
151
+
152
+ if [ -f "$ROOT/dist/src/session/agy/cli.js" ]; then
153
+ exec node "$ROOT/dist/src/session/agy/cli.js" sync "$@"
154
+ fi
155
+
156
+ exec "$TSX" "$ROOT/src/session/agy/cli.ts" sync "$@"
157
+ ;;
158
+
159
+ session:agy-recover)
160
+ shift
161
+
162
+ if [ -f "$ROOT/dist/src/session/agy/cli.js" ]; then
163
+ exec node "$ROOT/dist/src/session/agy/cli.js" recover "$@"
164
+ fi
165
+
166
+ exec "$TSX" "$ROOT/src/session/agy/cli.ts" recover "$@"
167
+ ;;
168
+
169
+ integrate:agy)
170
+ shift
171
+
172
+ if [ -f "$ROOT/dist/src/session/agy/cli.js" ]; then
173
+ exec node "$ROOT/dist/src/session/agy/cli.js" install-hooks "$@"
174
+ fi
175
+
176
+ exec "$TSX" "$ROOT/src/session/agy/cli.ts" install-hooks "$@"
177
+ ;;
178
+
179
+ session:codex-notify)
180
+ shift
181
+
182
+ if [ -f "$ROOT/dist/src/session/codex/cli.js" ]; then
183
+ exec node "$ROOT/dist/src/session/codex/cli.js" notify "$@"
184
+ fi
185
+
186
+ if [ -x "${TSX:-}" ]; then
187
+ exec "$TSX" "$ROOT/src/session/codex/cli.ts" notify "$@"
188
+ fi
189
+
190
+ exit 0
191
+ ;;
192
+
193
+ session:codex-sync)
194
+ shift
195
+
196
+ if [ -f "$ROOT/dist/src/session/codex/cli.js" ]; then
197
+ exec node "$ROOT/dist/src/session/codex/cli.js" sync "$@"
198
+ fi
199
+
200
+ exec "$TSX" "$ROOT/src/session/codex/cli.ts" sync "$@"
201
+ ;;
202
+
203
+ session:codex-recover)
204
+ shift
205
+
206
+ if [ -f "$ROOT/dist/src/session/codex/cli.js" ]; then
207
+ exec node "$ROOT/dist/src/session/codex/cli.js" recover "$@"
208
+ fi
209
+
210
+ exec "$TSX" "$ROOT/src/session/codex/cli.ts" recover "$@"
211
+ ;;
212
+
213
+ integrate:codex)
214
+ shift
215
+
216
+ if [ -f "$ROOT/dist/src/session/codex/cli.js" ]; then
217
+ exec node "$ROOT/dist/src/session/codex/cli.js" install-notify "$@"
218
+ fi
219
+
220
+ exec "$TSX" "$ROOT/src/session/codex/cli.ts" install-notify "$@"
221
+ ;;
222
+
223
+ memory:reconcile)
224
+ shift
225
+
226
+ if [ -f "$ROOT/dist/src/session/learner/cli.js" ]; then
227
+ exec node "$ROOT/dist/src/session/learner/cli.js" reconcile "$@"
228
+ fi
229
+
230
+ if [ -x "${TSX:-}" ]; then
231
+ exec "$TSX" "$ROOT/src/session/learner/cli.ts" reconcile "$@"
232
+ fi
233
+
234
+ echo "Memory learner not found."
235
+ exit 1
236
+ ;;
237
+
238
+ project:manual-init)
239
+ shift
240
+
241
+ if [ -f "$ROOT/dist/src/project-manual/cli.js" ]; then
242
+ exec node "$ROOT/dist/src/project-manual/cli.js" init "$@"
243
+ fi
244
+
245
+ exec "$TSX" "$ROOT/src/project-manual/cli.ts" init "$@"
246
+ ;;
247
+
248
+ project:manual-show)
249
+ shift
250
+
251
+ if [ -f "$ROOT/dist/src/project-manual/cli.js" ]; then
252
+ exec node "$ROOT/dist/src/project-manual/cli.js" show "$@"
253
+ fi
254
+
255
+ exec "$TSX" "$ROOT/src/project-manual/cli.ts" show "$@"
256
+ ;;
257
+
258
+ project:manual-sync)
259
+ shift
260
+
261
+ if [ -f "$ROOT/dist/src/project-manual/cli.js" ]; then
262
+ exec node "$ROOT/dist/src/project-manual/cli.js" sync "$@"
263
+ fi
264
+
265
+ exec "$TSX" "$ROOT/src/project-manual/cli.ts" sync "$@"
266
+ ;;
267
+
268
+ work:status)
269
+ shift
270
+
271
+ if [ -f "$ROOT/dist/src/work-continuity/cli.js" ]; then
272
+ exec node "$ROOT/dist/src/work-continuity/cli.js" status "$@"
273
+ fi
274
+
275
+ exec "$TSX" "$ROOT/src/work-continuity/cli.ts" status "$@"
276
+ ;;
277
+
278
+ work:json)
279
+ shift
280
+
281
+ if [ -f "$ROOT/dist/src/work-continuity/cli.js" ]; then
282
+ exec node "$ROOT/dist/src/work-continuity/cli.js" json "$@"
283
+ fi
284
+
285
+ exec "$TSX" "$ROOT/src/work-continuity/cli.ts" json "$@"
286
+ ;;
287
+
288
+ work:reconcile)
289
+ shift
290
+
291
+ if [ -f "$ROOT/dist/src/work-continuity/cli.js" ]; then
292
+ exec node "$ROOT/dist/src/work-continuity/cli.js" reconcile "$@"
293
+ fi
294
+
295
+ exec "$TSX" "$ROOT/src/work-continuity/cli.ts" reconcile "$@"
296
+ ;;
297
+
298
+ brief)
299
+ shift
300
+
301
+ if [ -f "$ROOT/dist/src/work-continuity/context-cli.js" ]; then
302
+ exec node "$ROOT/dist/src/work-continuity/context-cli.js" brief "$@"
303
+ fi
304
+
305
+ exec "$TSX" "$ROOT/src/work-continuity/context-cli.ts" brief "$@"
306
+ ;;
307
+
308
+ brief:json)
309
+ shift
310
+
311
+ if [ -f "$ROOT/dist/src/work-continuity/context-cli.js" ]; then
312
+ exec node "$ROOT/dist/src/work-continuity/context-cli.js" brief-json "$@"
313
+ fi
314
+
315
+ exec "$TSX" "$ROOT/src/work-continuity/context-cli.ts" brief-json "$@"
316
+ ;;
317
+
318
+ handoff:latest)
319
+ shift
320
+
321
+ if [ -f "$ROOT/dist/src/work-continuity/context-cli.js" ]; then
322
+ exec node "$ROOT/dist/src/work-continuity/context-cli.js" handoff-latest "$@"
323
+ fi
324
+
325
+ exec "$TSX" "$ROOT/src/work-continuity/context-cli.ts" handoff-latest "$@"
326
+ ;;
327
+
328
+ context:sync)
329
+ shift
330
+
331
+ if [ -f "$ROOT/dist/src/work-continuity/context-runtime-cli.js" ]; then
332
+ exec node "$ROOT/dist/src/work-continuity/context-runtime-cli.js" sync "$@"
333
+ fi
334
+
335
+ exec "$TSX" "$ROOT/src/work-continuity/context-runtime-cli.ts" sync "$@"
336
+ ;;
337
+
338
+ context:print)
339
+ shift
340
+
341
+ if [ -f "$ROOT/dist/src/work-continuity/context-runtime-cli.js" ]; then
342
+ exec node "$ROOT/dist/src/work-continuity/context-runtime-cli.js" print "$@"
343
+ fi
344
+
345
+ exec "$TSX" "$ROOT/src/work-continuity/context-runtime-cli.ts" print "$@"
346
+ ;;
347
+
348
+ context:refresh)
349
+ shift
350
+
351
+ if [ -f "$ROOT/dist/src/work-continuity/context-runtime-cli.js" ]; then
352
+ exec node "$ROOT/dist/src/work-continuity/context-runtime-cli.js" refresh "$@"
353
+ fi
354
+
355
+ exec "$TSX" "$ROOT/src/work-continuity/context-runtime-cli.ts" refresh "$@"
356
+ ;;
357
+
358
+ session:codex-context)
359
+ shift
360
+
361
+ if [ -f "$ROOT/dist/src/session/codex/context-hook.js" ]; then
362
+ exec node "$ROOT/dist/src/session/codex/context-hook.js" "$@"
363
+ fi
364
+
365
+ if [ -x "${TSX:-}" ]; then
366
+ exec "$TSX" "$ROOT/src/session/codex/context-hook.ts" "$@"
367
+ fi
368
+
369
+ exit 0
370
+ ;;
371
+
372
+ help|--help|-h)
373
+ cat <<'HELP'
374
+ ToolNet Memory
375
+
376
+ Commands:
377
+ toolnet-memory doctor
378
+ toolnet-memory index
379
+ toolnet-memory index:graph
380
+ toolnet-memory incremental
381
+ toolnet-memory semantic "query"
382
+ toolnet-memory impact [file]
383
+ toolnet-memory mcp
384
+ toolnet-memory snapshot:list
385
+ toolnet-memory snapshot:create "reason"
386
+ toolnet-memory snapshot:restore <id>
387
+ toolnet-memory recover
388
+ toolnet-memory integrate:opencode
389
+ toolnet-memory integrate:agy
390
+ toolnet-memory integrate:codex
391
+ toolnet-memory session:codex-sync <thread-id>
392
+ toolnet-memory session:codex-recover [--limit N]
393
+ toolnet-memory memory:reconcile [--project PATH]
394
+ toolnet-memory project:manual-init [--project PATH]
395
+ toolnet-memory project:manual-show [--project PATH]
396
+ toolnet-memory project:manual-sync [--project PATH]
397
+ toolnet-memory work:status [--project PATH]
398
+ toolnet-memory work:json [--project PATH]
399
+ toolnet-memory work:reconcile [--project PATH]
400
+ toolnet-memory brief [--project PATH] [--tokens N]
401
+ toolnet-memory brief:json [--project PATH] [--tokens N]
402
+ toolnet-memory handoff:latest [--project PATH]
403
+ toolnet-memory session:agy-sync <conversation-id> --transcript <path>
404
+ toolnet-memory session:agy-recover [--limit N]
405
+ toolnet-memory session:opencode-sync <session-id>
406
+ toolnet-memory session:opencode-recover [--limit N]
407
+ HELP
408
+ ;;
409
+
410
+ *)
411
+ echo "Unknown command: $COMMAND"
412
+ echo "Run: toolnet-memory help"
413
+ exit 1
414
+ ;;
415
+ esac
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,78 @@
1
+ export class ToolNetMemoryClient {
2
+ runtime;
3
+ autoRetrieval;
4
+ autoImpactGuard;
5
+ constructor(runtime, autoRetrieval, autoImpactGuard) {
6
+ this.runtime = runtime;
7
+ this.autoRetrieval = autoRetrieval;
8
+ this.autoImpactGuard = autoImpactGuard;
9
+ }
10
+ sessionStart() {
11
+ return this.runtime
12
+ .sessionStart();
13
+ }
14
+ sessionEnd() {
15
+ return this.runtime
16
+ .sessionEnd();
17
+ }
18
+ prompt(content) {
19
+ return this.runtime
20
+ .userPrompt(content);
21
+ }
22
+ preparePrompt(content) {
23
+ if (!this.autoRetrieval) {
24
+ return Promise.resolve({
25
+ originalPrompt: content,
26
+ context: "",
27
+ augmentedPrompt: content,
28
+ });
29
+ }
30
+ return this.autoRetrieval
31
+ .prepare(content);
32
+ }
33
+ /*
34
+ * Đây là hook ToolNet Agent cần gọi
35
+ * TRƯỚC tool executor.
36
+ */
37
+ async beforeTool(tool, input) {
38
+ const impact = this.autoImpactGuard
39
+ ? await this.autoImpactGuard
40
+ .beforeTool(tool, input)
41
+ : null;
42
+ await this.runtime
43
+ .beforeTool(tool, input);
44
+ return impact;
45
+ }
46
+ afterTool(tool, output) {
47
+ return this.runtime
48
+ .afterTool(tool, output);
49
+ }
50
+ fileRead(filePath) {
51
+ return this.runtime
52
+ .fileRead(filePath);
53
+ }
54
+ fileWrite(filePath) {
55
+ return this.runtime
56
+ .fileWrite(filePath);
57
+ }
58
+ command(command, exitCode) {
59
+ return this.runtime
60
+ .command(command, exitCode);
61
+ }
62
+ error(error) {
63
+ return this.runtime
64
+ .error(error);
65
+ }
66
+ decision(content) {
67
+ return this.runtime
68
+ .decision(content);
69
+ }
70
+ todo(content) {
71
+ return this.runtime
72
+ .todo(content);
73
+ }
74
+ flush() {
75
+ return this.runtime
76
+ .flush();
77
+ }
78
+ }
@@ -0,0 +1 @@
1
+ export * from "./client.js";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};