toolnet-memory 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/README.md +55 -28
  2. package/bin/toolnet-memory +55 -55
  3. package/bundle/agy.js +88 -0
  4. package/bundle/codex.js +92 -0
  5. package/bundle/context-runtime.js +56 -0
  6. package/bundle/context.js +62 -0
  7. package/bundle/doctor.js +3 -0
  8. package/bundle/full-index.js +8 -0
  9. package/bundle/learner.js +8 -0
  10. package/bundle/mcp.js +7 -0
  11. package/bundle/opencode.js +314 -0
  12. package/bundle/project-manual.js +54 -0
  13. package/bundle/setup.js +31 -0
  14. package/bundle/snapshot.js +4 -0
  15. package/bundle/work-continuity.js +12 -0
  16. package/package.json +9 -6
  17. package/dist/packages/cli/commands.js +0 -1
  18. package/dist/packages/cli/index.js +0 -1
  19. package/dist/packages/sdk/client.js +0 -78
  20. package/dist/packages/sdk/index.js +0 -1
  21. package/dist/packages/sdk/types.js +0 -1
  22. package/dist/src/api/index.js +0 -1
  23. package/dist/src/api/routes/health.js +0 -1
  24. package/dist/src/api/routes/index.js +0 -1
  25. package/dist/src/api/routes/memory.js +0 -1
  26. package/dist/src/api/routes/projects.js +0 -1
  27. package/dist/src/api/routes/search.js +0 -1
  28. package/dist/src/api/server.js +0 -1
  29. package/dist/src/capture/activity-capture.js +0 -21
  30. package/dist/src/capture/command-capture.js +0 -12
  31. package/dist/src/capture/error-capture.js +0 -14
  32. package/dist/src/capture/event-deduplicator.js +0 -28
  33. package/dist/src/capture/event-queue.js +0 -20
  34. package/dist/src/capture/file-capture.js +0 -23
  35. package/dist/src/capture/index.js +0 -8
  36. package/dist/src/capture/session-capture.js +0 -18
  37. package/dist/src/capture/tool-capture.js +0 -13
  38. package/dist/src/code-intelligence/analysis/analysis-engine.js +0 -26
  39. package/dist/src/code-intelligence/analysis/dead-code-analyzer.js +0 -127
  40. package/dist/src/code-intelligence/analysis/dependency-analyzer.js +0 -66
  41. package/dist/src/code-intelligence/analysis/index.js +0 -4
  42. package/dist/src/code-intelligence/analysis/types.js +0 -1
  43. package/dist/src/code-intelligence/architecture/architecture-engine.js +0 -48
  44. package/dist/src/code-intelligence/architecture/clusters.js +0 -322
  45. package/dist/src/code-intelligence/architecture/entry-points.js +0 -150
  46. package/dist/src/code-intelligence/architecture/hotspots.js +0 -136
  47. package/dist/src/code-intelligence/architecture/index.js +0 -6
  48. package/dist/src/code-intelligence/architecture/layers.js +0 -197
  49. package/dist/src/code-intelligence/architecture/types.js +0 -1
  50. package/dist/src/code-intelligence/chunks/index.js +0 -2
  51. package/dist/src/code-intelligence/chunks/smart-chunker.js +0 -125
  52. package/dist/src/code-intelligence/chunks/types.js +0 -1
  53. package/dist/src/code-intelligence/git/git-diff.js +0 -109
  54. package/dist/src/code-intelligence/git/index.js +0 -1
  55. package/dist/src/code-intelligence/graph/architecture.js +0 -26
  56. package/dist/src/code-intelligence/graph/graph-builder.js +0 -213
  57. package/dist/src/code-intelligence/graph/graph-store.js +0 -57
  58. package/dist/src/code-intelligence/graph/index.js +0 -1
  59. package/dist/src/code-intelligence/graph/relationships.js +0 -1
  60. package/dist/src/code-intelligence/graph/trace.js +0 -65
  61. package/dist/src/code-intelligence/impact/blast-radius.js +0 -160
  62. package/dist/src/code-intelligence/impact/change-mapper.js +0 -69
  63. package/dist/src/code-intelligence/impact/edit-tool-detector.js +0 -92
  64. package/dist/src/code-intelligence/impact/impact-analyzer.js +0 -60
  65. package/dist/src/code-intelligence/impact/impact-guard.js +0 -33
  66. package/dist/src/code-intelligence/impact/index.js +0 -5
  67. package/dist/src/code-intelligence/incremental/file-hash.js +0 -8
  68. package/dist/src/code-intelligence/incremental/incremental-indexer.js +0 -106
  69. package/dist/src/code-intelligence/incremental/manifest-builder.js +0 -19
  70. package/dist/src/code-intelligence/incremental/manifest.js +0 -31
  71. package/dist/src/code-intelligence/index.js +0 -23
  72. package/dist/src/code-intelligence/indexer/file-watcher.js +0 -1
  73. package/dist/src/code-intelligence/indexer/incremental-indexer.js +0 -1
  74. package/dist/src/code-intelligence/indexer/index.js +0 -1
  75. package/dist/src/code-intelligence/indexer/repository-indexer.js +0 -31
  76. package/dist/src/code-intelligence/indexer/repository-scanner.js +0 -50
  77. package/dist/src/code-intelligence/parsers/index.js +0 -1
  78. package/dist/src/code-intelligence/parsers/tree-sitter/index.js +0 -1
  79. package/dist/src/code-intelligence/parsers/tree-sitter/languages.js +0 -1
  80. package/dist/src/code-intelligence/parsers/tree-sitter/parser.js +0 -1
  81. package/dist/src/code-intelligence/parsers/typescript-parser.js +0 -190
  82. package/dist/src/code-intelligence/query/graph-query-engine.js +0 -275
  83. package/dist/src/code-intelligence/query/index.js +0 -2
  84. package/dist/src/code-intelligence/query/types.js +0 -1
  85. package/dist/src/code-intelligence/resolution/index.js +0 -2
  86. package/dist/src/code-intelligence/resolution/types.js +0 -1
  87. package/dist/src/code-intelligence/resolution/typescript-resolver.js +0 -316
  88. package/dist/src/code-intelligence/rich/index.js +0 -1
  89. package/dist/src/code-intelligence/rich/rich-graph-enricher.js +0 -463
  90. package/dist/src/code-intelligence/semantic/index.js +0 -2
  91. package/dist/src/code-intelligence/semantic/semantic-code-engine.js +0 -213
  92. package/dist/src/code-intelligence/semantic/source-priority.js +0 -22
  93. package/dist/src/code-intelligence/symbols/index.js +0 -1
  94. package/dist/src/code-intelligence/symbols/reference-resolver.js +0 -21
  95. package/dist/src/code-intelligence/symbols/symbol-extractor.js +0 -1
  96. package/dist/src/code-intelligence/test-analysis.js +0 -72
  97. package/dist/src/code-intelligence/test-architecture.js +0 -67
  98. package/dist/src/code-intelligence/test-impact.js +0 -47
  99. package/dist/src/code-intelligence/test-incremental.js +0 -24
  100. package/dist/src/code-intelligence/test-index.js +0 -39
  101. package/dist/src/code-intelligence/test-resolution.js +0 -54
  102. package/dist/src/code-intelligence/test-rich-graph.js +0 -48
  103. package/dist/src/code-intelligence/test-semantic.js +0 -57
  104. package/dist/src/code-intelligence/test-visualization.js +0 -36
  105. package/dist/src/code-intelligence/types.js +0 -1
  106. package/dist/src/code-intelligence/visualization/index.js +0 -2
  107. package/dist/src/code-intelligence/visualization/types.js +0 -1
  108. package/dist/src/code-intelligence/visualization/visualization-builder.js +0 -104
  109. package/dist/src/core/config.js +0 -66
  110. package/dist/src/core/global-env.js +0 -70
  111. package/dist/src/core/importance.js +0 -30
  112. package/dist/src/core/index.js +0 -5
  113. package/dist/src/core/memory-engine.js +0 -183
  114. package/dist/src/core/project-manager.js +0 -243
  115. package/dist/src/core/types.js +0 -1
  116. package/dist/src/embeddings/batch-embedder.js +0 -1
  117. package/dist/src/embeddings/cache.js +0 -1
  118. package/dist/src/embeddings/embedder.js +0 -51
  119. package/dist/src/embeddings/index.js +0 -4
  120. package/dist/src/embeddings/local.js +0 -37
  121. package/dist/src/embeddings/provider.js +0 -1
  122. package/dist/src/embeddings/remote.js +0 -76
  123. package/dist/src/embeddings/test-connection.js +0 -16
  124. package/dist/src/hooks/after-edit.js +0 -3
  125. package/dist/src/hooks/after-tool.js +0 -3
  126. package/dist/src/hooks/auto-context.js +0 -68
  127. package/dist/src/hooks/auto-impact-guard.js +0 -94
  128. package/dist/src/hooks/auto-retrieval.js +0 -27
  129. package/dist/src/hooks/before-agent.js +0 -18
  130. package/dist/src/hooks/before-compact.js +0 -3
  131. package/dist/src/hooks/before-edit.js +0 -20
  132. package/dist/src/hooks/index.js +0 -11
  133. package/dist/src/hooks/runtime.js +0 -110
  134. package/dist/src/hooks/session-end.js +0 -3
  135. package/dist/src/hooks/session-start.js +0 -3
  136. package/dist/src/index.js +0 -22
  137. package/dist/src/mcp/bootstrap.js +0 -68
  138. package/dist/src/mcp/context.js +0 -1
  139. package/dist/src/mcp/index.js +0 -3
  140. package/dist/src/mcp/server.js +0 -45
  141. package/dist/src/mcp/tools/analyze-impact.js +0 -41
  142. package/dist/src/mcp/tools/dead-code.js +0 -55
  143. package/dist/src/mcp/tools/find-callers.js +0 -24
  144. package/dist/src/mcp/tools/find-dependencies.js +0 -57
  145. package/dist/src/mcp/tools/find-symbol.js +0 -7
  146. package/dist/src/mcp/tools/get-architecture.js +0 -11
  147. package/dist/src/mcp/tools/graph-dependents.js +0 -24
  148. package/dist/src/mcp/tools/graph-neighborhood.js +0 -58
  149. package/dist/src/mcp/tools/graph-path.js +0 -43
  150. package/dist/src/mcp/tools/graph-query-utils.js +0 -32
  151. package/dist/src/mcp/tools/impact-guard.js +0 -34
  152. package/dist/src/mcp/tools/index-repository.js +0 -1
  153. package/dist/src/mcp/tools/index.js +0 -20
  154. package/dist/src/mcp/tools/memory-decisions.js +0 -1
  155. package/dist/src/mcp/tools/memory-forget.js +0 -14
  156. package/dist/src/mcp/tools/memory-recent.js +0 -1
  157. package/dist/src/mcp/tools/memory-remember.js +0 -33
  158. package/dist/src/mcp/tools/memory-rules.js +0 -1
  159. package/dist/src/mcp/tools/memory-search.js +0 -18
  160. package/dist/src/mcp/tools/memory-todos.js +0 -1
  161. package/dist/src/mcp/tools/project-context.js +0 -25
  162. package/dist/src/mcp/tools/search-code.js +0 -21
  163. package/dist/src/mcp/tools/semantic-code-search.js +0 -33
  164. package/dist/src/mcp/tools/snapshot-create.js +0 -13
  165. package/dist/src/mcp/tools/snapshot-list.js +0 -7
  166. package/dist/src/mcp/tools/snapshot-restore.js +0 -13
  167. package/dist/src/mcp/tools/trace-calls.js +0 -37
  168. package/dist/src/memory/activity.js +0 -5
  169. package/dist/src/memory/conflict-detector.js +0 -105
  170. package/dist/src/memory/consolidator.js +0 -104
  171. package/dist/src/memory/decay.js +0 -59
  172. package/dist/src/memory/decisions.js +0 -3
  173. package/dist/src/memory/deduplicate.js +0 -25
  174. package/dist/src/memory/index.js +0 -11
  175. package/dist/src/memory/maintenance.js +0 -16
  176. package/dist/src/memory/remember.js +0 -3
  177. package/dist/src/memory/rules.js +0 -3
  178. package/dist/src/memory/search.js +0 -3
  179. package/dist/src/memory/summaries.js +0 -1
  180. package/dist/src/memory/todos.js +0 -3
  181. package/dist/src/processor/decision-extractor.js +0 -13
  182. package/dist/src/processor/importance-scorer.js +0 -22
  183. package/dist/src/processor/index.js +0 -7
  184. package/dist/src/processor/memory-extractor.js +0 -59
  185. package/dist/src/processor/memory-processor.js +0 -105
  186. package/dist/src/processor/rule-extractor.js +0 -13
  187. package/dist/src/processor/summarizer.js +0 -71
  188. package/dist/src/processor/todo-extractor.js +0 -12
  189. package/dist/src/production/config-check.js +0 -34
  190. package/dist/src/production/doctor.js +0 -58
  191. package/dist/src/production/full-index.js +0 -114
  192. package/dist/src/production/health.js +0 -58
  193. package/dist/src/production/index-pipeline.js +0 -151
  194. package/dist/src/production/index.js +0 -4
  195. package/dist/src/production/project-lock.js +0 -95
  196. package/dist/src/production/project-status.js +0 -16
  197. package/dist/src/production/recovery.js +0 -15
  198. package/dist/src/production/setup.js +0 -219
  199. package/dist/src/production/snapshot-cli.js +0 -58
  200. package/dist/src/project-manual/cli.js +0 -77
  201. package/dist/src/project-manual/index.js +0 -2
  202. package/dist/src/project-manual/manager.js +0 -147
  203. package/dist/src/project-manual/types.js +0 -1
  204. package/dist/src/retrieval/bm25/index.js +0 -1
  205. package/dist/src/retrieval/bm25/search.js +0 -1
  206. package/dist/src/retrieval/bm25.js +0 -30
  207. package/dist/src/retrieval/context-budget.js +0 -1
  208. package/dist/src/retrieval/context-builder.js +0 -22
  209. package/dist/src/retrieval/graph/index.js +0 -1
  210. package/dist/src/retrieval/graph/search.js +0 -1
  211. package/dist/src/retrieval/hybrid/hybrid-search.js +0 -1
  212. package/dist/src/retrieval/hybrid/index.js +0 -1
  213. package/dist/src/retrieval/hybrid-search.js +0 -68
  214. package/dist/src/retrieval/importance.js +0 -16
  215. package/dist/src/retrieval/index.js +0 -12
  216. package/dist/src/retrieval/query-analyzer.js +0 -32
  217. package/dist/src/retrieval/query-classifier.js +0 -1
  218. package/dist/src/retrieval/query-expansion.js +0 -1
  219. package/dist/src/retrieval/recency.js +0 -12
  220. package/dist/src/retrieval/reranker/index.js +0 -1
  221. package/dist/src/retrieval/reranker/reranker.js +0 -1
  222. package/dist/src/retrieval/retrieval-engine.js +0 -17
  223. package/dist/src/retrieval/tokenizer.js +0 -9
  224. package/dist/src/retrieval/type-priority.js +0 -10
  225. package/dist/src/retrieval/types.js +0 -1
  226. package/dist/src/retrieval/vector/index.js +0 -4
  227. package/dist/src/retrieval/vector/metadata-filter.js +0 -1
  228. package/dist/src/retrieval/vector/persistence.js +0 -67
  229. package/dist/src/retrieval/vector/search.js +0 -12
  230. package/dist/src/retrieval/vector/test-persistence.js +0 -36
  231. package/dist/src/retrieval/vector/upsert.js +0 -40
  232. package/dist/src/retrieval/vector/vector-store.js +0 -89
  233. package/dist/src/retrieval/vector-hybrid-engine.js +0 -91
  234. package/dist/src/runtime/bootstrap.js +0 -28
  235. package/dist/src/runtime/graceful.js +0 -17
  236. package/dist/src/runtime/index.js +0 -3
  237. package/dist/src/runtime/toolnet-memory-runtime.js +0 -156
  238. package/dist/src/security/encryption.js +0 -1
  239. package/dist/src/security/file-filter.js +0 -30
  240. package/dist/src/security/index.js +0 -3
  241. package/dist/src/security/sanitizer.js +0 -49
  242. package/dist/src/security/secret-scanner.js +0 -56
  243. package/dist/src/session/agy/adapter.js +0 -159
  244. package/dist/src/session/agy/cli.js +0 -87
  245. package/dist/src/session/agy/hook-installer.js +0 -62
  246. package/dist/src/session/agy/hook.js +0 -167
  247. package/dist/src/session/agy/index.js +0 -5
  248. package/dist/src/session/agy/project-resolver.js +0 -27
  249. package/dist/src/session/agy/recovery.js +0 -112
  250. package/dist/src/session/agy/transcript.js +0 -191
  251. package/dist/src/session/codex/adapter.js +0 -138
  252. package/dist/src/session/codex/cli.js +0 -236
  253. package/dist/src/session/codex/context-hook-installer.js +0 -70
  254. package/dist/src/session/codex/context-hook.js +0 -69
  255. package/dist/src/session/codex/discovery.js +0 -138
  256. package/dist/src/session/codex/index.js +0 -6
  257. package/dist/src/session/codex/notify-installer.js +0 -135
  258. package/dist/src/session/codex/project-resolver.js +0 -25
  259. package/dist/src/session/codex/recovery.js +0 -27
  260. package/dist/src/session/codex/rollout.js +0 -186
  261. package/dist/src/session/core.js +0 -239
  262. package/dist/src/session/identity.js +0 -57
  263. package/dist/src/session/index.js +0 -9
  264. package/dist/src/session/learner/cli.js +0 -62
  265. package/dist/src/session/learner/extractor.js +0 -461
  266. package/dist/src/session/learner/index.js +0 -4
  267. package/dist/src/session/learner/journal.js +0 -159
  268. package/dist/src/session/learner/learner.js +0 -124
  269. package/dist/src/session/learner/types.js +0 -1
  270. package/dist/src/session/opencode/adapter.js +0 -553
  271. package/dist/src/session/opencode/cli.js +0 -121
  272. package/dist/src/session/opencode/index.js +0 -2
  273. package/dist/src/session/opencode/plugin-installer.js +0 -230
  274. package/dist/src/session/store.js +0 -242
  275. package/dist/src/session/types.js +0 -1
  276. package/dist/src/session/utils.js +0 -47
  277. package/dist/src/session/wal.js +0 -303
  278. package/dist/src/snapshot/index.js +0 -2
  279. package/dist/src/snapshot/manager.js +0 -130
  280. package/dist/src/snapshot/test-snapshot.js +0 -28
  281. package/dist/src/snapshot/types.js +0 -1
  282. package/dist/src/storage/architecture-store.js +0 -37
  283. package/dist/src/storage/cleanup-health.js +0 -20
  284. package/dist/src/storage/code-analysis-store.js +0 -35
  285. package/dist/src/storage/code-chunk-store.js +0 -25
  286. package/dist/src/storage/code-graph-store.js +0 -24
  287. package/dist/src/storage/code-manifest-store.js +0 -24
  288. package/dist/src/storage/code-vector-store.js +0 -25
  289. package/dist/src/storage/github/client.js +0 -1
  290. package/dist/src/storage/github/index.js +0 -1
  291. package/dist/src/storage/google-drive/client.js +0 -1
  292. package/dist/src/storage/google-drive/index.js +0 -1
  293. package/dist/src/storage/huggingface/client.js +0 -116
  294. package/dist/src/storage/huggingface/index.js +0 -1
  295. package/dist/src/storage/index.js +0 -16
  296. package/dist/src/storage/list-bucket-raw.js +0 -14
  297. package/dist/src/storage/list-bucket-tree.js +0 -38
  298. package/dist/src/storage/local/client.js +0 -99
  299. package/dist/src/storage/local/index.js +0 -1
  300. package/dist/src/storage/memory-store.js +0 -30
  301. package/dist/src/storage/project/cleanup-layout-v1.js +0 -72
  302. package/dist/src/storage/project/folder.js +0 -15
  303. package/dist/src/storage/project/index.js +0 -3
  304. package/dist/src/storage/project/layout.js +0 -74
  305. package/dist/src/storage/project/migrate-layout-v2.js +0 -101
  306. package/dist/src/storage/project/migrate.js +0 -73
  307. package/dist/src/storage/project/scoped-provider.js +0 -165
  308. package/dist/src/storage/provider.js +0 -26
  309. package/dist/src/storage/retrying-provider.js +0 -23
  310. package/dist/src/storage/test-connection.js +0 -32
  311. package/dist/src/storage/type-resolution-store.js +0 -26
  312. package/dist/src/storage/types.js +0 -1
  313. package/dist/src/storage/vector-store.js +0 -30
  314. package/dist/src/storage/visualization-store.js +0 -25
  315. package/dist/src/sync/compressor.js +0 -1
  316. package/dist/src/sync/conflict-resolver.js +0 -1
  317. package/dist/src/sync/downloader.js +0 -1
  318. package/dist/src/sync/index.js +0 -1
  319. package/dist/src/sync/sync-engine.js +0 -1
  320. package/dist/src/sync/upload-queue.js +0 -1
  321. package/dist/src/utils/retry.js +0 -29
  322. package/dist/src/visualization/server.js +0 -270
  323. package/dist/src/work-continuity/brief-cache.js +0 -107
  324. package/dist/src/work-continuity/brief.js +0 -349
  325. package/dist/src/work-continuity/cli.js +0 -96
  326. package/dist/src/work-continuity/context-cli.js +0 -106
  327. package/dist/src/work-continuity/context-runtime-cli.js +0 -88
  328. package/dist/src/work-continuity/extractor.js +0 -339
  329. package/dist/src/work-continuity/handoff.js +0 -185
  330. package/dist/src/work-continuity/index.js +0 -14
  331. package/dist/src/work-continuity/injection.js +0 -84
  332. package/dist/src/work-continuity/journal.js +0 -49
  333. package/dist/src/work-continuity/learner.js +0 -127
  334. package/dist/src/work-continuity/reducer.js +0 -316
  335. package/dist/src/work-continuity/semantic-extractor.js +0 -360
  336. package/dist/src/work-continuity/semantic-journal.js +0 -55
  337. package/dist/src/work-continuity/semantic-learner.js +0 -125
  338. package/dist/src/work-continuity/semantic-reducer.js +0 -268
  339. package/dist/src/work-continuity/semantic-types.js +0 -1
  340. package/dist/src/work-continuity/types.js +0 -1
  341. package/dist/visualization/public/index.html +0 -2896
  342. package/dist/visualization/public/vendor/3d-force-graph.min.js +0 -5
@@ -1,239 +0,0 @@
1
- import { Sanitizer, } from "../security/sanitizer.js";
2
- import { createSessionIdentity, } from "./identity.js";
3
- import { RemoteSessionStore, } from "./store.js";
4
- import { SessionWal, } from "./wal.js";
5
- import { SessionMemoryLearner, } from "./learner/learner.js";
6
- import { WorkContinuityLearner, } from "../work-continuity/learner.js";
7
- import { SemanticWorkLearner, } from "../work-continuity/semantic-learner.js";
8
- import { SmartHandoffManager, } from "../work-continuity/handoff.js";
9
- export class SessionCore {
10
- identity;
11
- wal;
12
- remote;
13
- sanitizer = new Sanitizer();
14
- learner;
15
- continuity;
16
- semantic;
17
- handoff;
18
- title;
19
- metadata;
20
- constructor(options) {
21
- this.identity =
22
- createSessionIdentity(options.project, options.agent, options.nativeSessionId);
23
- this.title =
24
- options.title;
25
- this.metadata =
26
- (this.sanitizer
27
- .sanitizeValue(options.metadata ??
28
- {}));
29
- this.wal =
30
- new SessionWal(this.identity);
31
- this.remote =
32
- new RemoteSessionStore(options.storage, options.maxEventsPerChunk ??
33
- 100, options.maxChunkBytes ??
34
- 512 * 1024);
35
- this.learner =
36
- new SessionMemoryLearner({
37
- project: options.project,
38
- storage: options.storage,
39
- identity: this.identity,
40
- wal: this.wal,
41
- });
42
- this.continuity =
43
- new WorkContinuityLearner({
44
- project: options.project,
45
- storage: options.storage,
46
- identity: this.identity,
47
- wal: this.wal,
48
- });
49
- this.semantic =
50
- new SemanticWorkLearner({
51
- project: options.project,
52
- storage: options.storage,
53
- identity: this.identity,
54
- wal: this.wal,
55
- });
56
- this.handoff =
57
- new SmartHandoffManager({
58
- project: options.project,
59
- storage: options.storage,
60
- identity: this.identity,
61
- });
62
- }
63
- sanitizeEvent(event) {
64
- const provenance = event.provenance
65
- ? {
66
- ...event.provenance,
67
- metadata: this.sanitizer
68
- .sanitizeValue(event.provenance
69
- .metadata),
70
- }
71
- : undefined;
72
- return {
73
- ...event,
74
- data: this.sanitizer
75
- .sanitizeValue(event.data ??
76
- {}),
77
- provenance,
78
- };
79
- }
80
- start(data = {}) {
81
- const state = this.wal.loadState();
82
- return this.record({
83
- type: state.lastSequence ===
84
- 0
85
- ? "session_start"
86
- : "session_resume",
87
- data,
88
- provenance: {
89
- source: this.identity.agent,
90
- },
91
- });
92
- }
93
- record(event) {
94
- return this.wal.append([
95
- this.sanitizeEvent(event),
96
- ])[0];
97
- }
98
- recordMany(events) {
99
- return this.wal.append(events.map(event => this.sanitizeEvent(event)));
100
- }
101
- setSourceCursor(source, value) {
102
- this.wal
103
- .setSourceCursor(source, value);
104
- }
105
- async flush() {
106
- const pending = this.wal
107
- .readPending();
108
- const state = this.wal
109
- .loadState();
110
- const result = await this.remote.append(this.identity, pending.events, state.sourceCursors, {
111
- title: this.title,
112
- metadata: this.metadata,
113
- });
114
- if (pending.events.length >
115
- 0) {
116
- const last = pending.events[pending.events.length -
117
- 1];
118
- this.wal.markRemote(last.sequence, pending.endOffset);
119
- }
120
- /*
121
- * Long-term learning is deliberately downstream
122
- * of durable session persistence.
123
- *
124
- * A learner failure must NEVER destroy session capture.
125
- * Cursor is not advanced on learner failure,
126
- * so next flush retries.
127
- */
128
- if (process.env
129
- .TOOLNET_SESSION_LEARNING !==
130
- "0") {
131
- try {
132
- await this.learner
133
- .learnNew();
134
- }
135
- catch {
136
- // Retry automatically on a later flush.
137
- }
138
- }
139
- /*
140
- * Work continuity is a separate projection from
141
- * long-term memory.
142
- *
143
- * Failure here must never break session capture.
144
- */
145
- if (process.env
146
- .TOOLNET_WORK_CONTINUITY !==
147
- "0") {
148
- try {
149
- await this.continuity
150
- .learnNew();
151
- }
152
- catch {
153
- // Immutable session WAL allows retry later.
154
- }
155
- }
156
- /*
157
- * Semantic continuity learns meaning, rationale,
158
- * deliverables and completion criteria.
159
- *
160
- * It never invents missing rationale.
161
- */
162
- if (process.env
163
- .TOOLNET_SEMANTIC_CONTINUITY !==
164
- "0") {
165
- try {
166
- await this.semantic
167
- .learnNew();
168
- }
169
- catch {
170
- // Derived projection: session capture must continue.
171
- }
172
- }
173
- /*
174
- * Smart Handoff checkpoint.
175
- *
176
- * We checkpoint on every durable flush, not only graceful
177
- * session_end. This protects continuity when an agent hits
178
- * token limit, terminal disconnect, crash, or user stops
179
- * unexpectedly.
180
- *
181
- * Handoff IDs are state-digest based, so unchanged work
182
- * does not create endless duplicate snapshots.
183
- */
184
- if (process.env
185
- .TOOLNET_SMART_HANDOFF !==
186
- "0" &&
187
- pending.events.length >
188
- 0) {
189
- try {
190
- const lastEvent = pending.events[pending.events.length -
191
- 1];
192
- const explicitReason = [
193
- "session_idle",
194
- "session_end",
195
- "session_compact",
196
- ].includes(lastEvent.type)
197
- ? lastEvent.type
198
- : "checkpoint";
199
- await this.handoff
200
- .capture(explicitReason, lastEvent.sequence);
201
- }
202
- catch {
203
- /*
204
- * Handoff is a derived projection.
205
- * It must never break durable session capture.
206
- */
207
- }
208
- }
209
- return result;
210
- }
211
- async idle(data = {}) {
212
- this.record({
213
- type: "session_idle",
214
- data,
215
- provenance: {
216
- source: this.identity.agent,
217
- },
218
- });
219
- return this.flush();
220
- }
221
- async end(data = {}) {
222
- this.record({
223
- type: "session_end",
224
- data,
225
- provenance: {
226
- source: this.identity.agent,
227
- },
228
- });
229
- return this.flush();
230
- }
231
- status() {
232
- return this.wal
233
- .loadState();
234
- }
235
- recoverRemote() {
236
- return this.remote
237
- .recover(this.identity);
238
- }
239
- }
@@ -1,57 +0,0 @@
1
- import { join, } from "node:path";
2
- import { sha256, } from "./utils.js";
3
- function safeSegment(value, fallback) {
4
- const trimmed = value.trim();
5
- const readable = trimmed
6
- .replace(/\s+/g, "_")
7
- .replace(/[^A-Za-z0-9._-]/g, "_")
8
- .replace(/_+/g, "_")
9
- .replace(/^\.+|\.+$/g, "");
10
- const digest = sha256(trimmed).slice(0, 12);
11
- if (!readable ||
12
- readable === "." ||
13
- readable === "..") {
14
- return `${fallback}--${digest}`;
15
- }
16
- const limited = readable.slice(0, 100);
17
- /*
18
- * Preserve normal UUID/OpenCode IDs exactly.
19
- * Add hash only when sanitization changed the value.
20
- */
21
- if (limited ===
22
- trimmed &&
23
- trimmed.length <=
24
- 100) {
25
- return limited;
26
- }
27
- return `${limited.slice(0, 85)}--${digest}`;
28
- }
29
- export function createSessionIdentity(project, agent, nativeSessionId) {
30
- const cleanAgent = agent.trim();
31
- const cleanSessionId = nativeSessionId.trim();
32
- if (!cleanAgent) {
33
- throw new Error("Session agent is required");
34
- }
35
- if (!cleanSessionId) {
36
- throw new Error("Native session ID is required");
37
- }
38
- const agentFolder = safeSegment(cleanAgent
39
- .toLowerCase(), "agent");
40
- const sessionFolder = safeSegment(cleanSessionId, "session");
41
- return {
42
- projectId: project.id,
43
- projectName: project.name,
44
- projectRoot: project.rootPath,
45
- agent: cleanAgent,
46
- nativeSessionId: cleanSessionId,
47
- sessionKey: `${cleanAgent}:${cleanSessionId}`,
48
- remotePrefix: [
49
- "projects",
50
- project.id,
51
- "sessions",
52
- agentFolder,
53
- sessionFolder,
54
- ].join("/"),
55
- localDirectory: join(project.rootPath, ".toolnet", "sessions", agentFolder, sessionFolder),
56
- };
57
- }
@@ -1,9 +0,0 @@
1
- export * from "./types.js";
2
- export * from "./identity.js";
3
- export * from "./wal.js";
4
- export * from "./store.js";
5
- export * from "./core.js";
6
- export * from "./opencode/index.js";
7
- export * from "./agy/index.js";
8
- export * from "./codex/index.js";
9
- export * from "./learner/index.js";
@@ -1,62 +0,0 @@
1
- import { loadConfig, ProjectManager, } from "../../core/index.js";
2
- import { createStorageProvider, ProjectScopedStorageProvider, withStorageRetry, } from "../../storage/index.js";
3
- import { ProjectLock, } from "../../production/project-lock.js";
4
- import { reconcileSessionMemoryJournal, } from "./journal.js";
5
- function after(args, flag) {
6
- const index = args.indexOf(flag);
7
- return index >=
8
- 0
9
- ? args[index + 1]
10
- : undefined;
11
- }
12
- async function main() {
13
- const [command = "help", ...args] = process.argv.slice(2);
14
- if (command !==
15
- "reconcile") {
16
- console.log(`Session Memory Learner
17
-
18
- Commands:
19
- reconcile [--project PATH]
20
- `);
21
- return;
22
- }
23
- const projectPath = after(args, "--project") ??
24
- process.cwd();
25
- const project = new ProjectManager()
26
- .detect(projectPath);
27
- const config = loadConfig();
28
- const raw = withStorageRetry(createStorageProvider({
29
- provider: config.storage
30
- .provider,
31
- huggingface: config.storage
32
- .huggingface,
33
- localRoot: config.storage
34
- .localRoot,
35
- }), {
36
- attempts: 3,
37
- });
38
- const storage = new ProjectScopedStorageProvider(raw, project.id, project.name, project.remote ??
39
- project.name);
40
- /*
41
- * Reconcile writes current.json.
42
- * Serialize against ToolNet runtime.
43
- */
44
- const lock = new ProjectLock(project.id);
45
- await lock.acquire();
46
- try {
47
- const result = await reconcileSessionMemoryJournal(project, storage);
48
- console.log(JSON.stringify({
49
- project: project.name,
50
- ...result,
51
- }, null, 2));
52
- }
53
- finally {
54
- await lock.release();
55
- }
56
- }
57
- main().catch(error => {
58
- console.error(error instanceof Error
59
- ? error.message
60
- : error);
61
- process.exit(1);
62
- });