@theokit/sdk-memory 0.1.0 → 0.2.1

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 (127) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/dist/index.cjs +309 -209
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +34 -33
  5. package/dist/index.d.ts +34 -33
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +312 -213
  8. package/dist/index.js.map +1 -1
  9. package/dist/internal/active-memory/active-memory-cache.d.ts.map +1 -0
  10. package/dist/internal/{active-memory-types.d.ts → active-memory/active-memory-types.d.ts} +1 -1
  11. package/dist/internal/active-memory/active-memory-types.d.ts.map +1 -0
  12. package/dist/internal/{active-memory.d.ts → active-memory/active-memory.d.ts} +2 -2
  13. package/dist/internal/active-memory/active-memory.d.ts.map +1 -0
  14. package/dist/internal/active-memory/composite-scorer.d.ts.map +1 -0
  15. package/dist/internal/active-memory/query-analyzer.d.ts.map +1 -0
  16. package/dist/internal/adapter-catalog.d.ts +6 -6
  17. package/dist/internal/categorized-memory.d.ts +56 -0
  18. package/dist/internal/categorized-memory.d.ts.map +1 -0
  19. package/dist/internal/dreaming/dreaming-diary.d.ts.map +1 -0
  20. package/dist/internal/{dreaming-phases.d.ts → dreaming/dreaming-phases.d.ts} +2 -2
  21. package/dist/internal/dreaming/dreaming-phases.d.ts.map +1 -0
  22. package/dist/internal/{dreaming-run.d.ts → dreaming/dreaming-run.d.ts} +1 -1
  23. package/dist/internal/dreaming/dreaming-run.d.ts.map +1 -0
  24. package/dist/internal/embedding/batch-encoder.d.ts.map +1 -0
  25. package/dist/internal/embedding/deepinfra-embedding.d.ts.map +1 -0
  26. package/dist/internal/embedding/embedding-adapter.d.ts.map +1 -0
  27. package/dist/internal/embedding/embedding-cache.d.ts.map +1 -0
  28. package/dist/internal/embedding/mistral-embedding.d.ts.map +1 -0
  29. package/dist/internal/embedding/ollama-embedding.d.ts.map +1 -0
  30. package/dist/internal/embedding/openai-compatible.d.ts.map +1 -0
  31. package/dist/internal/embedding/openai-embedding.d.ts.map +1 -0
  32. package/dist/internal/embedding/openrouter-embedding.d.ts.map +1 -0
  33. package/dist/internal/embedding/voyage-embedding.d.ts.map +1 -0
  34. package/dist/internal/index/index-db.d.ts.map +1 -0
  35. package/dist/internal/{index-manager-contract.d.ts → index/index-manager-contract.d.ts} +1 -1
  36. package/dist/internal/index/index-manager-contract.d.ts.map +1 -0
  37. package/dist/internal/index/index-manager-dispatch.d.ts.map +1 -0
  38. package/dist/internal/{index-manager.d.ts → index/index-manager.d.ts} +1 -1
  39. package/dist/internal/index/index-manager.d.ts.map +1 -0
  40. package/dist/internal/index/index-schema.d.ts.map +1 -0
  41. package/dist/internal/{lance-index.d.ts → index/lance-index.d.ts} +1 -1
  42. package/dist/internal/index/lance-index.d.ts.map +1 -0
  43. package/dist/internal/index/lance-memory-adapter.d.ts.map +1 -0
  44. package/dist/internal/index/memory-index.d.ts.map +1 -0
  45. package/dist/internal/index/migrate-sqlite-to-lance.d.ts.map +1 -0
  46. package/dist/internal/{migration.d.ts → index/migration.d.ts} +1 -1
  47. package/dist/internal/index/migration.d.ts.map +1 -0
  48. package/dist/internal/index/sqlite-vec-loader.d.ts.map +1 -0
  49. package/dist/internal/{vec-index.d.ts → index/vec-index.d.ts} +1 -1
  50. package/dist/internal/index/vec-index.d.ts.map +1 -0
  51. package/dist/internal/memory-types.d.ts +5 -0
  52. package/dist/internal/memory-types.d.ts.map +1 -1
  53. package/dist/internal/store/chunk-markdown.d.ts.map +1 -0
  54. package/dist/internal/{markdown-store.d.ts → store/markdown-store.d.ts} +1 -1
  55. package/dist/internal/store/markdown-store.d.ts.map +1 -0
  56. package/dist/internal/store/reader.d.ts.map +1 -0
  57. package/dist/internal/store/session-loader.d.ts.map +1 -0
  58. package/dist/internal/store/session-summary-writer.d.ts.map +1 -0
  59. package/dist/internal/store/transcript-store.d.ts.map +1 -0
  60. package/dist/internal/store/wiki-loader.d.ts.map +1 -0
  61. package/dist/internal/tools.d.ts +1 -1
  62. package/dist/internal/tools.d.ts.map +1 -1
  63. package/package.json +9 -9
  64. package/dist/internal/active-memory-cache.d.ts.map +0 -1
  65. package/dist/internal/active-memory-types.d.ts.map +0 -1
  66. package/dist/internal/active-memory.d.ts.map +0 -1
  67. package/dist/internal/batch-encoder.d.ts.map +0 -1
  68. package/dist/internal/chunk-markdown.d.ts.map +0 -1
  69. package/dist/internal/composite-scorer.d.ts.map +0 -1
  70. package/dist/internal/deepinfra-embedding.d.ts.map +0 -1
  71. package/dist/internal/dreaming-diary.d.ts.map +0 -1
  72. package/dist/internal/dreaming-phases.d.ts.map +0 -1
  73. package/dist/internal/dreaming-run.d.ts.map +0 -1
  74. package/dist/internal/embedding-adapter.d.ts.map +0 -1
  75. package/dist/internal/embedding-cache.d.ts.map +0 -1
  76. package/dist/internal/index-db.d.ts.map +0 -1
  77. package/dist/internal/index-manager-contract.d.ts.map +0 -1
  78. package/dist/internal/index-manager-dispatch.d.ts.map +0 -1
  79. package/dist/internal/index-manager.d.ts.map +0 -1
  80. package/dist/internal/index-schema.d.ts.map +0 -1
  81. package/dist/internal/lance-index.d.ts.map +0 -1
  82. package/dist/internal/lance-memory-adapter.d.ts.map +0 -1
  83. package/dist/internal/markdown-store.d.ts.map +0 -1
  84. package/dist/internal/memory-index.d.ts.map +0 -1
  85. package/dist/internal/migrate-sqlite-to-lance.d.ts.map +0 -1
  86. package/dist/internal/migration.d.ts.map +0 -1
  87. package/dist/internal/mistral-embedding.d.ts.map +0 -1
  88. package/dist/internal/ollama-embedding.d.ts.map +0 -1
  89. package/dist/internal/openai-compatible.d.ts.map +0 -1
  90. package/dist/internal/openai-embedding.d.ts.map +0 -1
  91. package/dist/internal/openrouter-embedding.d.ts.map +0 -1
  92. package/dist/internal/query-analyzer.d.ts.map +0 -1
  93. package/dist/internal/reader.d.ts.map +0 -1
  94. package/dist/internal/session-loader.d.ts.map +0 -1
  95. package/dist/internal/session-summary-writer.d.ts.map +0 -1
  96. package/dist/internal/sqlite-vec-loader.d.ts.map +0 -1
  97. package/dist/internal/transcript-store.d.ts.map +0 -1
  98. package/dist/internal/vec-index.d.ts.map +0 -1
  99. package/dist/internal/voyage-embedding.d.ts.map +0 -1
  100. package/dist/internal/wiki-loader.d.ts.map +0 -1
  101. /package/dist/internal/{active-memory-cache.d.ts → active-memory/active-memory-cache.d.ts} +0 -0
  102. /package/dist/internal/{composite-scorer.d.ts → active-memory/composite-scorer.d.ts} +0 -0
  103. /package/dist/internal/{query-analyzer.d.ts → active-memory/query-analyzer.d.ts} +0 -0
  104. /package/dist/internal/{dreaming-diary.d.ts → dreaming/dreaming-diary.d.ts} +0 -0
  105. /package/dist/internal/{batch-encoder.d.ts → embedding/batch-encoder.d.ts} +0 -0
  106. /package/dist/internal/{deepinfra-embedding.d.ts → embedding/deepinfra-embedding.d.ts} +0 -0
  107. /package/dist/internal/{embedding-adapter.d.ts → embedding/embedding-adapter.d.ts} +0 -0
  108. /package/dist/internal/{embedding-cache.d.ts → embedding/embedding-cache.d.ts} +0 -0
  109. /package/dist/internal/{mistral-embedding.d.ts → embedding/mistral-embedding.d.ts} +0 -0
  110. /package/dist/internal/{ollama-embedding.d.ts → embedding/ollama-embedding.d.ts} +0 -0
  111. /package/dist/internal/{openai-compatible.d.ts → embedding/openai-compatible.d.ts} +0 -0
  112. /package/dist/internal/{openai-embedding.d.ts → embedding/openai-embedding.d.ts} +0 -0
  113. /package/dist/internal/{openrouter-embedding.d.ts → embedding/openrouter-embedding.d.ts} +0 -0
  114. /package/dist/internal/{voyage-embedding.d.ts → embedding/voyage-embedding.d.ts} +0 -0
  115. /package/dist/internal/{index-db.d.ts → index/index-db.d.ts} +0 -0
  116. /package/dist/internal/{index-manager-dispatch.d.ts → index/index-manager-dispatch.d.ts} +0 -0
  117. /package/dist/internal/{index-schema.d.ts → index/index-schema.d.ts} +0 -0
  118. /package/dist/internal/{lance-memory-adapter.d.ts → index/lance-memory-adapter.d.ts} +0 -0
  119. /package/dist/internal/{memory-index.d.ts → index/memory-index.d.ts} +0 -0
  120. /package/dist/internal/{migrate-sqlite-to-lance.d.ts → index/migrate-sqlite-to-lance.d.ts} +0 -0
  121. /package/dist/internal/{sqlite-vec-loader.d.ts → index/sqlite-vec-loader.d.ts} +0 -0
  122. /package/dist/internal/{chunk-markdown.d.ts → store/chunk-markdown.d.ts} +0 -0
  123. /package/dist/internal/{reader.d.ts → store/reader.d.ts} +0 -0
  124. /package/dist/internal/{session-loader.d.ts → store/session-loader.d.ts} +0 -0
  125. /package/dist/internal/{session-summary-writer.d.ts → store/session-summary-writer.d.ts} +0 -0
  126. /package/dist/internal/{transcript-store.d.ts → store/transcript-store.d.ts} +0 -0
  127. /package/dist/internal/{wiki-loader.d.ts → store/wiki-loader.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,7 +1,31 @@
1
1
  # Changelog — @theokit/sdk-memory
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 826bca0: Security (#56) — close two residual cross-tenant active-recall cache leaks found by adversarial review.
8
+
9
+ - `@theokit/sdk-memory` (publishable) called `cache.get`/`cache.set` with no tenant context, so two callers with the same query text but different identity shared a cached recall — a cross-tenant leak for every consumer of the package. The cache read/write are now keyed by the `{namespace, userId, scope}` tenant tuple (the primitive already supported it).
10
+ - In `@theokit/sdk` the production caller hardcoded `namespace: "default"` and dropped `memoryContext.tenantId`, so two tenants sharing a `userId` collided on one cache entry. The caller now threads `memoryContext.tenantId` into the tenant partition (`namespace`). `sessionId` is intentionally not a key dimension — recall is cross-session by design.
11
+
12
+ ## 0.2.0
13
+
14
+ ### Minor Changes
15
+
16
+ - 809418a: M4-3 — typed categorized memory store (plan `m4-categorized-memory`).
17
+
18
+ - `createCategorizedMemory({ root, categories })` — a typed, category-partitioned markdown memory store. `add(category, text)` validates `category` against the closed `categories` taxonomy (fail-loud `ConfigurationError(code: "unknown_category")` before any I/O), redacts secrets, and appends a bullet to `<root>/<category>.md` (frontmatter header + `## Facts`) atomically and serialized per category file (`withCwdMutex` — no lost update under concurrent adds). `list(category?)` returns `CategorizedFact[]` for one category or all; never throws (a missing file → no facts). Construction validates the taxonomy is non-empty, unique, sanitizable, and sanitized-unique.
19
+ - `MemoryFact` gains an optional `category?: string` (backward-compatible — flat-store facts omit it).
20
+
21
+ Composes the shipped `safePathJoin`/`sanitizeIdentifier` (`@theokit/sdk/path-safety`), `redactSecrets`, and `replaceFileAtomic`/`withCwdMutex` (`@theokit/sdk/internal/persistence`). Zero new dependencies — explicitly NOT adding `zod` (the closed `categories` set is the runtime-checked schema).
22
+
3
23
  ## [Unreleased]
4
24
 
25
+ ### Changed
26
+
27
+ - Reorganized the flat 43-file `src/internal/` god folder into 5 sub-concern folders (arch-review M5): `embedding/` (10), `index/` (12), `active-memory/` (5), `dreaming/` (3), `store/` (7); 6 cross-cutting files (`adapter-catalog`, `adapter-http-error`, `circuit-breaker`, `memory-scope`, `memory-types`, `tools`) remain at the `internal/` root. Pure file moves + import-path updates — no behavior/API change (the package barrel `index.ts` re-exports identically); all 324 tests GREEN, `madge --circular` clean.
28
+
5
29
  ### Security (drift sync — iter 112/114/115, 2026-06-09)
6
30
 
7
31
  Three security/perf hardenings shipped in `@theokit/sdk`'s
@@ -28,7 +52,7 @@ they have now been synced. Consumers routing through
28
52
  - **T5.2 — Lance SQL escape hardening (iter 115)** —
29
53
  `lance-index.ts`'s `escapeSqlValue` now rejects NUL bytes,
30
54
  C0 control chars, and DEL via `ConfigurationError({code:
31
- 'sql_injection_blocked'})`, and escapes backslashes (`\` →
55
+ 'sql_injection_blocked'})`, and escapes backslashes (`\` →
32
56
  `\\`) in addition to single quotes. Pre-sync, only `'` → `''`
33
57
  was applied — `\'` could escape the closing quote on engines
34
58
  that interpret backslash-escapes.
@@ -41,6 +65,7 @@ for v1.x back-compat; consumers installing this package get the
41
65
  canonical surface that sdk-core's Stage 4 routing delegates to.
42
66
 
43
67
  **Closed clusters:**
68
+
44
69
  - Dreaming (iter 54+59+60): `dreaming-phases.ts`, `dreaming-diary.ts`,
45
70
  `dreaming-run.ts` + `active-memory-types.ts` (iter 48)
46
71
  - Sessions (iter 61+62): `session-summary-writer.ts`, `session-loader.ts`
@@ -62,6 +87,7 @@ canonical surface that sdk-core's Stage 4 routing delegates to.
62
87
  `active-memory.ts`
63
88
 
64
89
  **Optional peers** (sdk-memory dynamically loads when present):
90
+
65
91
  - `better-sqlite3` (iter 65)
66
92
  - `sqlite-vec` (iter 66)
67
93
  - `@lancedb/lancedb` (iter 68)
@@ -71,6 +97,7 @@ canonical surface that sdk-core's Stage 4 routing delegates to.
71
97
  (verified by the Stage 3 drift detector, iter 93).
72
98
 
73
99
  ### Added (Phase 1 Stage 3 prep — iter 33-35, 2026-06-08)
100
+
74
101
  - `createInMemoryMarkdownProvider.recordSessionSummary` ships REAL
75
102
  filesystem-backed impl (was no-op). Writes
76
103
  `${cwd}/.theokit/memory/sessions/${sanitizeRunId(runId)}.md` via
@@ -89,6 +116,7 @@ canonical surface that sdk-core's Stage 4 routing delegates to.
89
116
  conversations. Returns JSON `{ok, count, results: [{id, snippet}]}`.
90
117
 
91
118
  ### Changed (Phase 1 physical Stage 1 — iter 19, 2026-06-08)
119
+
92
120
  - `createInMemoryMarkdownProvider` now implements the new optional
93
121
  `sync(handle)` port method (no-op for the in-process impl — facts
94
122
  are written synchronously to the Map at handler-call time; nothing
@@ -99,6 +127,7 @@ canonical surface that sdk-core's Stage 4 routing delegates to.
99
127
  ## [0.1.0] — 2026-06-08
100
128
 
101
129
  ### Added
130
+
102
131
  - Initial release. Consumes the `MemoryProvider` port from `@theokit/sdk@>=1.7.0`
103
132
  (SDK 2.0 Phase 1 / T1.6).
104
133
  - `createInMemoryMarkdownProvider()` — first concrete impl. In-process
@@ -106,6 +135,7 @@ canonical surface that sdk-core's Stage 4 routing delegates to.
106
135
  `systemPromptAdditions` for recalled facts; full lifecycle compliance.
107
136
 
108
137
  ### Notes
138
+
109
139
  - LanceDB / embeddings / circuit-breaker / dreaming-sweep deferred to future
110
140
  versions. This release ships the package foundation + a working impl so
111
141
  the SDK 2.0 cohort can publish (Phase 7).