@seanhogg/builderforce-memory 2026.6.18

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 (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +582 -0
  3. package/dist/agent/SSMAgent.d.ts +146 -0
  4. package/dist/agent/SSMAgent.d.ts.map +1 -0
  5. package/dist/agent/SSMAgent.js +231 -0
  6. package/dist/agent/SSMAgent.js.map +1 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.d.ts.map +1 -0
  9. package/dist/agent/index.js +2 -0
  10. package/dist/agent/index.js.map +1 -0
  11. package/dist/bridges/AnthropicBridge.d.ts +47 -0
  12. package/dist/bridges/AnthropicBridge.d.ts.map +1 -0
  13. package/dist/bridges/AnthropicBridge.js +120 -0
  14. package/dist/bridges/AnthropicBridge.js.map +1 -0
  15. package/dist/bridges/CachingBridge.d.ts +44 -0
  16. package/dist/bridges/CachingBridge.d.ts.map +1 -0
  17. package/dist/bridges/CachingBridge.js +62 -0
  18. package/dist/bridges/CachingBridge.js.map +1 -0
  19. package/dist/bridges/FetchBridge.d.ts +30 -0
  20. package/dist/bridges/FetchBridge.d.ts.map +1 -0
  21. package/dist/bridges/FetchBridge.js +24 -0
  22. package/dist/bridges/FetchBridge.js.map +1 -0
  23. package/dist/bridges/OpenAIBridge.d.ts +33 -0
  24. package/dist/bridges/OpenAIBridge.d.ts.map +1 -0
  25. package/dist/bridges/OpenAIBridge.js +110 -0
  26. package/dist/bridges/OpenAIBridge.js.map +1 -0
  27. package/dist/bridges/ResponseCache.d.ts +65 -0
  28. package/dist/bridges/ResponseCache.d.ts.map +1 -0
  29. package/dist/bridges/ResponseCache.js +97 -0
  30. package/dist/bridges/ResponseCache.js.map +1 -0
  31. package/dist/bridges/SemanticCachingBridge.d.ts +31 -0
  32. package/dist/bridges/SemanticCachingBridge.d.ts.map +1 -0
  33. package/dist/bridges/SemanticCachingBridge.js +44 -0
  34. package/dist/bridges/SemanticCachingBridge.js.map +1 -0
  35. package/dist/bridges/TransformerBridge.d.ts +35 -0
  36. package/dist/bridges/TransformerBridge.d.ts.map +1 -0
  37. package/dist/bridges/TransformerBridge.js +10 -0
  38. package/dist/bridges/TransformerBridge.js.map +1 -0
  39. package/dist/bridges/index.d.ts +14 -0
  40. package/dist/bridges/index.d.ts.map +1 -0
  41. package/dist/bridges/index.js +7 -0
  42. package/dist/bridges/index.js.map +1 -0
  43. package/dist/cache/FetchSemanticCacheBackend.d.ts +40 -0
  44. package/dist/cache/FetchSemanticCacheBackend.d.ts.map +1 -0
  45. package/dist/cache/FetchSemanticCacheBackend.js +61 -0
  46. package/dist/cache/FetchSemanticCacheBackend.js.map +1 -0
  47. package/dist/cache/SemanticCache.d.ts +105 -0
  48. package/dist/cache/SemanticCache.d.ts.map +1 -0
  49. package/dist/cache/SemanticCache.js +130 -0
  50. package/dist/cache/SemanticCache.js.map +1 -0
  51. package/dist/cache/index.d.ts +5 -0
  52. package/dist/cache/index.d.ts.map +1 -0
  53. package/dist/cache/index.js +3 -0
  54. package/dist/cache/index.js.map +1 -0
  55. package/dist/distillation/DistillationEngine.d.ts +107 -0
  56. package/dist/distillation/DistillationEngine.d.ts.map +1 -0
  57. package/dist/distillation/DistillationEngine.js +152 -0
  58. package/dist/distillation/DistillationEngine.js.map +1 -0
  59. package/dist/distillation/index.d.ts +3 -0
  60. package/dist/distillation/index.d.ts.map +1 -0
  61. package/dist/distillation/index.js +2 -0
  62. package/dist/distillation/index.js.map +1 -0
  63. package/dist/errors/SSMError.d.ts +14 -0
  64. package/dist/errors/SSMError.d.ts.map +1 -0
  65. package/dist/errors/SSMError.js +18 -0
  66. package/dist/errors/SSMError.js.map +1 -0
  67. package/dist/errors/index.d.ts +3 -0
  68. package/dist/errors/index.d.ts.map +1 -0
  69. package/dist/errors/index.js +2 -0
  70. package/dist/errors/index.js.map +1 -0
  71. package/dist/index.d.ts +65 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +59 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/memory/MemoryStore.d.ts +152 -0
  76. package/dist/memory/MemoryStore.d.ts.map +1 -0
  77. package/dist/memory/MemoryStore.js +290 -0
  78. package/dist/memory/MemoryStore.js.map +1 -0
  79. package/dist/memory/index.d.ts +3 -0
  80. package/dist/memory/index.d.ts.map +1 -0
  81. package/dist/memory/index.js +2 -0
  82. package/dist/memory/index.js.map +1 -0
  83. package/dist/router/InferenceRouter.d.ts +92 -0
  84. package/dist/router/InferenceRouter.d.ts.map +1 -0
  85. package/dist/router/InferenceRouter.js +113 -0
  86. package/dist/router/InferenceRouter.js.map +1 -0
  87. package/dist/router/index.d.ts +3 -0
  88. package/dist/router/index.d.ts.map +1 -0
  89. package/dist/router/index.js +2 -0
  90. package/dist/router/index.js.map +1 -0
  91. package/dist/runtime/SSMRuntime.d.ts +167 -0
  92. package/dist/runtime/SSMRuntime.d.ts.map +1 -0
  93. package/dist/runtime/SSMRuntime.js +199 -0
  94. package/dist/runtime/SSMRuntime.js.map +1 -0
  95. package/dist/runtime/index.d.ts +3 -0
  96. package/dist/runtime/index.d.ts.map +1 -0
  97. package/dist/runtime/index.js +2 -0
  98. package/dist/runtime/index.js.map +1 -0
  99. package/dist/session/errors.d.ts +10 -0
  100. package/dist/session/errors.d.ts.map +1 -0
  101. package/dist/session/errors.js +14 -0
  102. package/dist/session/errors.js.map +1 -0
  103. package/dist/session/index.d.ts +11 -0
  104. package/dist/session/index.d.ts.map +1 -0
  105. package/dist/session/index.js +7 -0
  106. package/dist/session/index.js.map +1 -0
  107. package/dist/session/persistence.d.ts +14 -0
  108. package/dist/session/persistence.d.ts.map +1 -0
  109. package/dist/session/persistence.js +100 -0
  110. package/dist/session/persistence.js.map +1 -0
  111. package/dist/session/presets.d.ts +31 -0
  112. package/dist/session/presets.d.ts.map +1 -0
  113. package/dist/session/presets.js +91 -0
  114. package/dist/session/presets.js.map +1 -0
  115. package/dist/session/session.d.ts +186 -0
  116. package/dist/session/session.d.ts.map +1 -0
  117. package/dist/session/session.js +358 -0
  118. package/dist/session/session.js.map +1 -0
  119. package/dist/session/streaming.d.ts +13 -0
  120. package/dist/session/streaming.d.ts.map +1 -0
  121. package/dist/session/streaming.js +74 -0
  122. package/dist/session/streaming.js.map +1 -0
  123. package/dist/session/tokenizer.d.ts +18 -0
  124. package/dist/session/tokenizer.d.ts.map +1 -0
  125. package/dist/session/tokenizer.js +11 -0
  126. package/dist/session/tokenizer.js.map +1 -0
  127. package/dist/similarity/index.d.ts +19 -0
  128. package/dist/similarity/index.d.ts.map +1 -0
  129. package/dist/similarity/index.js +42 -0
  130. package/dist/similarity/index.js.map +1 -0
  131. package/package.json +120 -0
  132. package/src/agent/SSMAgent.ts +327 -0
  133. package/src/agent/index.ts +2 -0
  134. package/src/bridges/AnthropicBridge.ts +166 -0
  135. package/src/bridges/CachingBridge.ts +79 -0
  136. package/src/bridges/FetchBridge.ts +41 -0
  137. package/src/bridges/OpenAIBridge.ts +143 -0
  138. package/src/bridges/ResponseCache.ts +131 -0
  139. package/src/bridges/SemanticCachingBridge.ts +60 -0
  140. package/src/bridges/TransformerBridge.ts +38 -0
  141. package/src/bridges/index.ts +13 -0
  142. package/src/cache/FetchSemanticCacheBackend.ts +79 -0
  143. package/src/cache/SemanticCache.ts +196 -0
  144. package/src/cache/index.ts +9 -0
  145. package/src/distillation/DistillationEngine.ts +248 -0
  146. package/src/distillation/index.ts +2 -0
  147. package/src/errors/SSMError.ts +26 -0
  148. package/src/errors/index.ts +2 -0
  149. package/src/index.ts +128 -0
  150. package/src/memory/MemoryStore.ts +408 -0
  151. package/src/memory/index.ts +2 -0
  152. package/src/router/InferenceRouter.ts +201 -0
  153. package/src/router/index.ts +2 -0
  154. package/src/runtime/SSMRuntime.ts +309 -0
  155. package/src/runtime/index.ts +2 -0
  156. package/src/session/errors.ts +24 -0
  157. package/src/session/index.ts +25 -0
  158. package/src/session/persistence.ts +142 -0
  159. package/src/session/presets.ts +122 -0
  160. package/src/session/session.ts +657 -0
  161. package/src/session/streaming.ts +97 -0
  162. package/src/session/tokenizer.ts +18 -0
  163. package/src/similarity/index.ts +42 -0
@@ -0,0 +1,3 @@
1
+ export { DistillationEngine } from './DistillationEngine.js';
2
+ export type { DistillOptions, DistillResult, DistillBatchResult, DistillationLog, QualityGate } from './DistillationEngine.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/distillation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DistillationEngine } from './DistillationEngine.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/distillation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * SSMError – typed error class for SSM.js runtime-level failures.
3
+ *
4
+ * Session-layer failures (GPU init, tokenizer, checkpoint) throw SessionError.
5
+ * Runtime-level failures (bridge, distillation, memory) throw SSMError.
6
+ * Both carry a typed `code` discriminant for programmatic handling.
7
+ */
8
+ export type SSMErrorCode = 'RUNTIME_DESTROYED' | 'BRIDGE_REQUEST_FAILED' | 'BRIDGE_RESPONSE_INVALID' | 'MEMORY_UNAVAILABLE' | 'DISTILL_FAILED' | 'UNKNOWN';
9
+ export declare class SSMError extends Error {
10
+ readonly code: SSMErrorCode;
11
+ readonly cause?: unknown | undefined;
12
+ constructor(code: SSMErrorCode, message: string, cause?: unknown | undefined);
13
+ }
14
+ //# sourceMappingURL=SSMError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSMError.d.ts","sourceRoot":"","sources":["../../src/errors/SSMError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,YAAY,GAClB,mBAAmB,GACnB,uBAAuB,GACvB,yBAAyB,GACzB,oBAAoB,GACpB,gBAAgB,GAChB,SAAS,CAAC;AAEhB,qBAAa,QAAS,SAAQ,KAAK;aAEX,IAAI,EAAE,YAAY;aAElB,KAAK,CAAC,EAAE,OAAO;gBAFf,IAAI,EAAE,YAAY,EAClC,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAKtC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SSMError – typed error class for SSM.js runtime-level failures.
3
+ *
4
+ * Session-layer failures (GPU init, tokenizer, checkpoint) throw SessionError.
5
+ * Runtime-level failures (bridge, distillation, memory) throw SSMError.
6
+ * Both carry a typed `code` discriminant for programmatic handling.
7
+ */
8
+ export class SSMError extends Error {
9
+ code;
10
+ cause;
11
+ constructor(code, message, cause) {
12
+ super(message);
13
+ this.code = code;
14
+ this.cause = cause;
15
+ this.name = 'SSMError';
16
+ }
17
+ }
18
+ //# sourceMappingURL=SSMError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSMError.js","sourceRoot":"","sources":["../../src/errors/SSMError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEX;IAEA;IAHpB,YACoB,IAAkB,EAClC,OAAe,EACC,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAc;QAElB,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IAC3B,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ export { SSMError } from './SSMError.js';
2
+ export type { SSMErrorCode } from './SSMError.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SSMError } from './SSMError.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * SSM.js – JavaScript-native AI runtime.
3
+ *
4
+ * Layer stack:
5
+ * MambaCode.js → WebGPU kernels (WGSL, Mamba-1/2/3 SSM math)
6
+ * SSM.js → Session layer + Runtime orchestration (this package)
7
+ *
8
+ * Quick start:
9
+ * import { SSM, AnthropicBridge } from 'ssmjs';
10
+ *
11
+ * const ai = await SSM.create({
12
+ * session : { modelSize: 'small' },
13
+ * bridge : new AnthropicBridge({ apiKey: '...' }),
14
+ * });
15
+ *
16
+ * await ai.adapt(myDocs);
17
+ * const answer = await ai.generate('How does MambaKit work?');
18
+ */
19
+ export { MambaSession } from './session/index.js';
20
+ export { SessionError } from './session/index.js';
21
+ export { MODEL_PRESETS, resolveLayerSchedule, resolveModelConfig } from './session/index.js';
22
+ export type { SessionErrorCode } from './session/index.js';
23
+ export type { LayerSchedulePreset } from './session/index.js';
24
+ export type { MambaSessionOptions, CompleteOptions, AdaptOptions, AdaptResult, SaveOptions, LoadOptions, StorageTarget, CreateProgressEvent, CreateStage, CreateCallbacks, SessionInternals, GpuMode, Tokenizer, } from './session/index.js';
25
+ export { SSMRuntime } from './runtime/SSMRuntime.js';
26
+ export type { SSMRuntimeOptions, GenerateOptions } from './runtime/SSMRuntime.js';
27
+ export type { TransformerBridge, BridgeGenerateOptions } from './bridges/TransformerBridge.js';
28
+ export { OpenAIBridge } from './bridges/OpenAIBridge.js';
29
+ export { AnthropicBridge } from './bridges/AnthropicBridge.js';
30
+ export { FetchBridge } from './bridges/FetchBridge.js';
31
+ export { CachingBridge } from './bridges/CachingBridge.js';
32
+ export { SemanticCachingBridge } from './bridges/SemanticCachingBridge.js';
33
+ export { ResponseCache, buildCacheKey } from './bridges/ResponseCache.js';
34
+ export type { OpenAIBridgeOptions } from './bridges/OpenAIBridge.js';
35
+ export type { AnthropicBridgeOptions } from './bridges/AnthropicBridge.js';
36
+ export type { FetchBridgeOptions } from './bridges/FetchBridge.js';
37
+ export type { CachingBridgeOptions } from './bridges/CachingBridge.js';
38
+ export type { SemanticCachingBridgeOptions } from './bridges/SemanticCachingBridge.js';
39
+ export type { ResponseCacheOptions } from './bridges/ResponseCache.js';
40
+ export { SemanticCache } from './cache/SemanticCache.js';
41
+ export { FetchSemanticCacheBackend } from './cache/FetchSemanticCacheBackend.js';
42
+ export type { Embedder, SemanticCacheBackend, SemanticCacheHit, SemanticCacheOptions, FetchSemanticCacheBackendOptions, } from './cache/index.js';
43
+ export { cosineSimilarity, jaccardSimilarity, tokenize } from './similarity/index.js';
44
+ export { InferenceRouter } from './router/InferenceRouter.js';
45
+ export type { RoutingStrategy, RoutingDecision, RouterContext, InferenceRouterOptions, RoutingAuditEntry, } from './router/InferenceRouter.js';
46
+ export { MemoryStore } from './memory/MemoryStore.js';
47
+ export type { MemoryEntry, MemoryStoreOptions, RememberOptions, FactType, } from './memory/MemoryStore.js';
48
+ export { DistillationEngine } from './distillation/DistillationEngine.js';
49
+ export type { DistillOptions, DistillResult, DistillBatchResult, DistillationLog, QualityGate, } from './distillation/DistillationEngine.js';
50
+ export { SSMAgent } from './agent/SSMAgent.js';
51
+ export type { SSMAgentOptions, ThinkOptions, AgentMessage, MessageRole } from './agent/SSMAgent.js';
52
+ export { SSMError } from './errors/SSMError.js';
53
+ export type { SSMErrorCode } from './errors/SSMError.js';
54
+ import { SSMRuntime } from './runtime/SSMRuntime.js';
55
+ import type { SSMRuntimeOptions } from './runtime/SSMRuntime.js';
56
+ export declare const SSM: {
57
+ /**
58
+ * Creates a new SSMRuntime.
59
+ *
60
+ * Shorthand for `SSMRuntime.create(opts)`.
61
+ * Can throw `SessionError` for GPU / tokenizer failures during init.
62
+ */
63
+ readonly create: (opts: SSMRuntimeOptions) => Promise<SSMRuntime>;
64
+ };
65
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,59 @@
1
+ /**
2
+ * SSM.js – JavaScript-native AI runtime.
3
+ *
4
+ * Layer stack:
5
+ * MambaCode.js → WebGPU kernels (WGSL, Mamba-1/2/3 SSM math)
6
+ * SSM.js → Session layer + Runtime orchestration (this package)
7
+ *
8
+ * Quick start:
9
+ * import { SSM, AnthropicBridge } from 'ssmjs';
10
+ *
11
+ * const ai = await SSM.create({
12
+ * session : { modelSize: 'small' },
13
+ * bridge : new AnthropicBridge({ apiKey: '...' }),
14
+ * });
15
+ *
16
+ * await ai.adapt(myDocs);
17
+ * const answer = await ai.generate('How does MambaKit work?');
18
+ */
19
+ // ── Session layer ─────────────────────────────────────────────────────────────
20
+ export { MambaSession } from './session/index.js';
21
+ export { SessionError } from './session/index.js';
22
+ export { MODEL_PRESETS, resolveLayerSchedule, resolveModelConfig } from './session/index.js';
23
+ // ── Runtime ───────────────────────────────────────────────────────────────────
24
+ export { SSMRuntime } from './runtime/SSMRuntime.js';
25
+ export { OpenAIBridge } from './bridges/OpenAIBridge.js';
26
+ export { AnthropicBridge } from './bridges/AnthropicBridge.js';
27
+ export { FetchBridge } from './bridges/FetchBridge.js';
28
+ export { CachingBridge } from './bridges/CachingBridge.js';
29
+ export { SemanticCachingBridge } from './bridges/SemanticCachingBridge.js';
30
+ export { ResponseCache, buildCacheKey } from './bridges/ResponseCache.js';
31
+ // ── Semantic cache (embedding-keyed, L1 local + L2 shared) ─────────────────────
32
+ export { SemanticCache } from './cache/SemanticCache.js';
33
+ export { FetchSemanticCacheBackend } from './cache/FetchSemanticCacheBackend.js';
34
+ // ── Similarity primitives ──────────────────────────────────────────────────────
35
+ export { cosineSimilarity, jaccardSimilarity, tokenize } from './similarity/index.js';
36
+ // ── Router ────────────────────────────────────────────────────────────────────
37
+ export { InferenceRouter } from './router/InferenceRouter.js';
38
+ // ── Memory ────────────────────────────────────────────────────────────────────
39
+ export { MemoryStore } from './memory/MemoryStore.js';
40
+ // ── Distillation ──────────────────────────────────────────────────────────────
41
+ export { DistillationEngine } from './distillation/DistillationEngine.js';
42
+ // ── Agent ─────────────────────────────────────────────────────────────────────
43
+ export { SSMAgent } from './agent/SSMAgent.js';
44
+ // ── Errors ────────────────────────────────────────────────────────────────────
45
+ export { SSMError } from './errors/SSMError.js';
46
+ // ── Top-level SSM namespace ───────────────────────────────────────────────────
47
+ // Allows the `SSM.create()` pattern from the spec:
48
+ // const ai = await SSM.create({ session: { modelSize: 'nano' } });
49
+ import { SSMRuntime } from './runtime/SSMRuntime.js';
50
+ export const SSM = {
51
+ /**
52
+ * Creates a new SSMRuntime.
53
+ *
54
+ * Shorthand for `SSMRuntime.create(opts)`.
55
+ * Can throw `SessionError` for GPU / tokenizer failures during init.
56
+ */
57
+ create: (opts) => SSMRuntime.create(opts),
58
+ };
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,iFAAiF;AACjF,OAAO,EAAE,YAAY,EAAE,MAAmB,oBAAoB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAmB,oBAAoB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAoB7F,iFAAiF;AACjF,OAAO,EAAE,UAAU,EAAE,MAAS,yBAAyB,CAAC;AAKxD,OAAO,EAAE,YAAY,EAAE,MAAS,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAU,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAQ,4BAA4B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ1E,kFAAkF;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AASjF,kFAAkF;AAClF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtF,iFAAiF;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAS9D,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAO,yBAAyB,CAAC;AAQvD,iFAAiF;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAS1E,iFAAiF;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAO,qBAAqB,CAAC;AAGhD,iFAAiF;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAO,sBAAsB,CAAC;AAGjD,iFAAiF;AACjF,mDAAmD;AACnD,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,MAAe,yBAAyB,CAAC;AAG9D,MAAM,CAAC,MAAM,GAAG,GAAG;IACf;;;;;OAKG;IACH,MAAM,EAAE,CAAC,IAAuB,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;CACtD,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * MemoryStore – persistent key-value fact store and weight checkpoint helper.
3
+ *
4
+ * Uses IndexedDB with a dedicated 'ssmjs' database containing two object stores:
5
+ * - 'facts' : MemoryEntry records keyed by the fact key string
6
+ * - 'weights' : a single ArrayBuffer keyed by `weightsKey`
7
+ *
8
+ * Weight save/load is delegated to the SSMRuntime passed to saveWeights/loadWeights.
9
+ */
10
+ export type FactType = 'text' | 'json' | 'number' | 'boolean';
11
+ export interface MemoryEntry {
12
+ key: string;
13
+ content: string;
14
+ timestamp: number;
15
+ /**
16
+ * Monotonic write sequence, used only to break `timestamp` ties so that
17
+ * ordering stays deterministic when several entries are written within the
18
+ * same millisecond (Date.now() resolution). Higher = written later.
19
+ * Optional for backward compatibility with entries persisted/imported
20
+ * before this field existed (those sort as seq 0).
21
+ */
22
+ seq?: number;
23
+ /** Optional time-to-live in milliseconds. */
24
+ ttlMs?: number;
25
+ /** Semantic type of the stored value. Default: 'text'. */
26
+ type?: FactType;
27
+ /** Tags for grouping and filtering. */
28
+ tags?: string[];
29
+ /** Importance weight in the range 0–1. Default: 0.5. */
30
+ importance?: number;
31
+ }
32
+ export interface RememberOptions {
33
+ /** Override the store-level defaultTtlMs for this entry. */
34
+ ttlMs?: number;
35
+ type?: FactType;
36
+ tags?: string[];
37
+ importance?: number;
38
+ }
39
+ export interface MemoryStoreOptions {
40
+ /** IndexedDB database name. Default: 'ssmjs'. */
41
+ dbName?: string;
42
+ /** Key used for weight storage within the 'weights' object store. Default: 'ssmjs-weights'. */
43
+ weightsKey?: string;
44
+ /**
45
+ * IDBFactory to use instead of the global `indexedDB`.
46
+ * Use this in Node.js environments with fake-indexeddb:
47
+ * import { IDBFactory } from 'fake-indexeddb';
48
+ * const idbFactory = new IDBFactory();
49
+ */
50
+ idbFactory?: IDBFactory;
51
+ /**
52
+ * Default TTL applied to new entries when no per-entry ttlMs is provided.
53
+ * Entries with an expired TTL are filtered from recallAll() and related methods.
54
+ */
55
+ defaultTtlMs?: number;
56
+ }
57
+ interface SaveLoadRuntime {
58
+ save(opts?: {
59
+ storage: 'indexedDB';
60
+ key: string;
61
+ }): Promise<void>;
62
+ load(opts?: {
63
+ key: string;
64
+ }): Promise<boolean>;
65
+ }
66
+ type SSMRuntimeRef = any;
67
+ export declare class MemoryStore {
68
+ private readonly _dbName;
69
+ private readonly _weightsKey;
70
+ private readonly _idb;
71
+ private readonly _defaultTtl;
72
+ private _db;
73
+ /** Content → L2-normalised embedding cache, used by recallSimilar. */
74
+ private readonly _embedCache;
75
+ constructor(opts?: MemoryStoreOptions);
76
+ private _open;
77
+ private _isExpired;
78
+ /** Stores or overwrites a fact. */
79
+ remember(key: string, content: string, opts?: RememberOptions): Promise<void>;
80
+ /**
81
+ * Retrieves a fact by key.
82
+ * Returns `undefined` if the key does not exist or the entry has expired.
83
+ */
84
+ recall(key: string): Promise<MemoryEntry | undefined>;
85
+ /** Returns all non-expired stored facts, newest first. */
86
+ recallAll(): Promise<MemoryEntry[]>;
87
+ /**
88
+ * Returns the N most recently updated non-expired facts.
89
+ * Equivalent to `recallAll()` truncated to `n` entries.
90
+ */
91
+ recallRecent(n: number): Promise<MemoryEntry[]>;
92
+ /**
93
+ * Returns all non-expired entries that contain the given tag.
94
+ */
95
+ recallByTag(tag: string): Promise<MemoryEntry[]>;
96
+ /**
97
+ * Finds the top-K semantically similar entries to `query`.
98
+ *
99
+ * When `runtime` exposes an `embed()` method (the SSMRuntime does), similarity
100
+ * is computed as cosine distance between SSM hidden-state embeddings — i.e. the
101
+ * memory layer uses the very model it is attached to, and recall quality
102
+ * improves automatically as that model is adapted/distilled. Embeddings are
103
+ * cached per content string to avoid recomputing across calls.
104
+ *
105
+ * If no embedding-capable runtime is provided, or embedding fails for any
106
+ * reason, it transparently falls back to Jaccard word-overlap similarity.
107
+ */
108
+ recallSimilar(query: string, topK: number, runtime?: SSMRuntimeRef): Promise<MemoryEntry[]>;
109
+ /**
110
+ * Returns a cached embedding for `text`, computing it via `runtime.embed()`
111
+ * on a cache miss. Returns `null` (never throws) when embedding is
112
+ * unavailable so callers can fall back to lexical similarity.
113
+ */
114
+ private _embedWithCache;
115
+ /**
116
+ * Hard-deletes all entries whose TTL has expired.
117
+ * @returns The number of entries deleted.
118
+ */
119
+ purgeExpired(): Promise<number>;
120
+ /** Deletes a single fact. No-op if key does not exist. */
121
+ forget(key: string): Promise<void>;
122
+ /** Deletes all facts. Does not affect saved weights. */
123
+ clear(): Promise<void>;
124
+ /**
125
+ * Returns all non-expired facts as a plain array for export.
126
+ * Suitable for serialisation and import into another MemoryStore instance.
127
+ */
128
+ exportAll(): Promise<MemoryEntry[]>;
129
+ /**
130
+ * Imports entries from an external array.
131
+ *
132
+ * - `'merge'` : only writes an entry if no existing entry with the same
133
+ * key exists, or if the incoming entry has a newer timestamp.
134
+ * - `'overwrite'` : writes all entries unconditionally.
135
+ */
136
+ importAll(entries: MemoryEntry[], strategy: 'merge' | 'overwrite'): Promise<void>;
137
+ /** Writes a raw MemoryEntry directly (preserves original timestamp / metadata). */
138
+ private _putRaw;
139
+ /**
140
+ * Saves SSM weights via `runtime.save()`.
141
+ * The weights are stored under `weightsKey` in this store's IndexedDB,
142
+ * separate from MambaSession's own key.
143
+ */
144
+ saveWeights(runtime: SaveLoadRuntime): Promise<void>;
145
+ /**
146
+ * Loads SSM weights via `runtime.load()`.
147
+ * Returns `false` when no saved weights exist under `weightsKey`.
148
+ */
149
+ loadWeights(runtime: SaveLoadRuntime): Promise<boolean>;
150
+ }
151
+ export {};
152
+ //# sourceMappingURL=MemoryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryStore.d.ts","sourceRoot":"","sources":["../../src/memory/MemoryStore.ts"],"names":[],"mappings":"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"}