ai-memory-layer 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/CHANGELOG.md +19 -12
  2. package/README.md +435 -320
  3. package/bin/memory-server.mjs +0 -0
  4. package/dist/adapters/memory/embeddings.d.ts.map +1 -1
  5. package/dist/adapters/memory/embeddings.js +12 -1
  6. package/dist/adapters/memory/embeddings.js.map +1 -1
  7. package/dist/adapters/memory/index.d.ts.map +1 -1
  8. package/dist/adapters/memory/index.js +1281 -48
  9. package/dist/adapters/memory/index.js.map +1 -1
  10. package/dist/adapters/postgres/index.d.ts +1 -0
  11. package/dist/adapters/postgres/index.d.ts.map +1 -1
  12. package/dist/adapters/postgres/index.js +1770 -42
  13. package/dist/adapters/postgres/index.js.map +1 -1
  14. package/dist/adapters/sqlite/embeddings.d.ts.map +1 -1
  15. package/dist/adapters/sqlite/embeddings.js +49 -12
  16. package/dist/adapters/sqlite/embeddings.js.map +1 -1
  17. package/dist/adapters/sqlite/index.d.ts.map +1 -1
  18. package/dist/adapters/sqlite/index.js +1720 -38
  19. package/dist/adapters/sqlite/index.js.map +1 -1
  20. package/dist/adapters/sqlite/mappers.d.ts +39 -4
  21. package/dist/adapters/sqlite/mappers.d.ts.map +1 -1
  22. package/dist/adapters/sqlite/mappers.js +87 -0
  23. package/dist/adapters/sqlite/mappers.js.map +1 -1
  24. package/dist/adapters/sqlite/schema.d.ts +1 -1
  25. package/dist/adapters/sqlite/schema.d.ts.map +1 -1
  26. package/dist/adapters/sqlite/schema.js +297 -1
  27. package/dist/adapters/sqlite/schema.js.map +1 -1
  28. package/dist/adapters/sync-to-async.d.ts.map +1 -1
  29. package/dist/adapters/sync-to-async.js +54 -0
  30. package/dist/adapters/sync-to-async.js.map +1 -1
  31. package/dist/contracts/async-storage.d.ts +61 -1
  32. package/dist/contracts/async-storage.d.ts.map +1 -1
  33. package/dist/contracts/cognitive.d.ts +37 -0
  34. package/dist/contracts/cognitive.d.ts.map +1 -0
  35. package/dist/contracts/cognitive.js +24 -0
  36. package/dist/contracts/cognitive.js.map +1 -0
  37. package/dist/contracts/coordination.d.ts +101 -0
  38. package/dist/contracts/coordination.d.ts.map +1 -0
  39. package/dist/contracts/coordination.js +26 -0
  40. package/dist/contracts/coordination.js.map +1 -0
  41. package/dist/contracts/embedding.d.ts +1 -1
  42. package/dist/contracts/embedding.d.ts.map +1 -1
  43. package/dist/contracts/errors.d.ts +28 -0
  44. package/dist/contracts/errors.d.ts.map +1 -0
  45. package/dist/contracts/errors.js +41 -0
  46. package/dist/contracts/errors.js.map +1 -0
  47. package/dist/contracts/identity.d.ts +2 -0
  48. package/dist/contracts/identity.d.ts.map +1 -1
  49. package/dist/contracts/identity.js +26 -1
  50. package/dist/contracts/identity.js.map +1 -1
  51. package/dist/contracts/observability.d.ts +2 -1
  52. package/dist/contracts/observability.d.ts.map +1 -1
  53. package/dist/contracts/observability.js +11 -0
  54. package/dist/contracts/observability.js.map +1 -1
  55. package/dist/contracts/profile.d.ts +29 -0
  56. package/dist/contracts/profile.d.ts.map +1 -0
  57. package/dist/contracts/profile.js +2 -0
  58. package/dist/contracts/profile.js.map +1 -0
  59. package/dist/contracts/session-state.d.ts +10 -0
  60. package/dist/contracts/session-state.d.ts.map +1 -0
  61. package/dist/contracts/session-state.js +2 -0
  62. package/dist/contracts/session-state.js.map +1 -0
  63. package/dist/contracts/storage.d.ts +73 -1
  64. package/dist/contracts/storage.d.ts.map +1 -1
  65. package/dist/contracts/storage.js +16 -1
  66. package/dist/contracts/storage.js.map +1 -1
  67. package/dist/contracts/temporal.d.ts +112 -0
  68. package/dist/contracts/temporal.d.ts.map +1 -0
  69. package/dist/contracts/temporal.js +31 -0
  70. package/dist/contracts/temporal.js.map +1 -0
  71. package/dist/contracts/types.d.ts +135 -0
  72. package/dist/contracts/types.d.ts.map +1 -1
  73. package/dist/contracts/types.js +27 -0
  74. package/dist/contracts/types.js.map +1 -1
  75. package/dist/core/associations.d.ts +18 -0
  76. package/dist/core/associations.d.ts.map +1 -0
  77. package/dist/core/associations.js +185 -0
  78. package/dist/core/associations.js.map +1 -0
  79. package/dist/core/circuit-breaker.d.ts +9 -0
  80. package/dist/core/circuit-breaker.d.ts.map +1 -1
  81. package/dist/core/circuit-breaker.js +13 -1
  82. package/dist/core/circuit-breaker.js.map +1 -1
  83. package/dist/core/cognitive.d.ts +5 -0
  84. package/dist/core/cognitive.d.ts.map +1 -0
  85. package/dist/core/cognitive.js +120 -0
  86. package/dist/core/cognitive.js.map +1 -0
  87. package/dist/core/context.d.ts +72 -1
  88. package/dist/core/context.d.ts.map +1 -1
  89. package/dist/core/context.js +471 -45
  90. package/dist/core/context.js.map +1 -1
  91. package/dist/core/episodic.d.ts +28 -0
  92. package/dist/core/episodic.d.ts.map +1 -0
  93. package/dist/core/episodic.js +371 -0
  94. package/dist/core/episodic.js.map +1 -0
  95. package/dist/core/formatter.d.ts +4 -0
  96. package/dist/core/formatter.d.ts.map +1 -1
  97. package/dist/core/formatter.js +103 -0
  98. package/dist/core/formatter.js.map +1 -1
  99. package/dist/core/maintenance.d.ts +1 -0
  100. package/dist/core/maintenance.d.ts.map +1 -1
  101. package/dist/core/maintenance.js +75 -0
  102. package/dist/core/maintenance.js.map +1 -1
  103. package/dist/core/manager.d.ts +159 -7
  104. package/dist/core/manager.d.ts.map +1 -1
  105. package/dist/core/manager.js +740 -31
  106. package/dist/core/manager.js.map +1 -1
  107. package/dist/core/orchestrator.d.ts.map +1 -1
  108. package/dist/core/orchestrator.js +210 -178
  109. package/dist/core/orchestrator.js.map +1 -1
  110. package/dist/core/playbook.d.ts +35 -0
  111. package/dist/core/playbook.d.ts.map +1 -0
  112. package/dist/core/playbook.js +184 -0
  113. package/dist/core/playbook.js.map +1 -0
  114. package/dist/core/profile.d.ts +8 -0
  115. package/dist/core/profile.d.ts.map +1 -0
  116. package/dist/core/profile.js +103 -0
  117. package/dist/core/profile.js.map +1 -0
  118. package/dist/core/quick.d.ts +5 -0
  119. package/dist/core/quick.d.ts.map +1 -1
  120. package/dist/core/quick.js +10 -1
  121. package/dist/core/quick.js.map +1 -1
  122. package/dist/core/runtime.d.ts +17 -1
  123. package/dist/core/runtime.d.ts.map +1 -1
  124. package/dist/core/runtime.js +88 -5
  125. package/dist/core/runtime.js.map +1 -1
  126. package/dist/core/streaming.d.ts +1 -1
  127. package/dist/core/streaming.d.ts.map +1 -1
  128. package/dist/core/temporal.d.ts +29 -0
  129. package/dist/core/temporal.d.ts.map +1 -0
  130. package/dist/core/temporal.js +447 -0
  131. package/dist/core/temporal.js.map +1 -0
  132. package/dist/core/validation.d.ts +3 -0
  133. package/dist/core/validation.d.ts.map +1 -1
  134. package/dist/core/validation.js +25 -10
  135. package/dist/core/validation.js.map +1 -1
  136. package/dist/core/workspace-detect.d.ts +17 -0
  137. package/dist/core/workspace-detect.d.ts.map +1 -0
  138. package/dist/core/workspace-detect.js +55 -0
  139. package/dist/core/workspace-detect.js.map +1 -0
  140. package/dist/embeddings/resilience.d.ts.map +1 -1
  141. package/dist/embeddings/resilience.js +19 -8
  142. package/dist/embeddings/resilience.js.map +1 -1
  143. package/dist/index.d.ts +21 -4
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +9 -0
  146. package/dist/index.js.map +1 -1
  147. package/dist/integrations/claude-agent.d.ts +6 -0
  148. package/dist/integrations/claude-agent.d.ts.map +1 -1
  149. package/dist/integrations/claude-agent.js +5 -1
  150. package/dist/integrations/claude-agent.js.map +1 -1
  151. package/dist/integrations/claude-tools.d.ts +5 -4
  152. package/dist/integrations/claude-tools.d.ts.map +1 -1
  153. package/dist/integrations/claude-tools.js +155 -2
  154. package/dist/integrations/claude-tools.js.map +1 -1
  155. package/dist/integrations/middleware.d.ts +6 -0
  156. package/dist/integrations/middleware.d.ts.map +1 -1
  157. package/dist/integrations/middleware.js +11 -1
  158. package/dist/integrations/middleware.js.map +1 -1
  159. package/dist/integrations/openai-tools.d.ts +5 -4
  160. package/dist/integrations/openai-tools.d.ts.map +1 -1
  161. package/dist/integrations/openai-tools.js +170 -2
  162. package/dist/integrations/openai-tools.js.map +1 -1
  163. package/dist/integrations/vercel-ai.d.ts +6 -0
  164. package/dist/integrations/vercel-ai.d.ts.map +1 -1
  165. package/dist/integrations/vercel-ai.js +4 -0
  166. package/dist/integrations/vercel-ai.js.map +1 -1
  167. package/dist/server/http-server.d.ts +8 -0
  168. package/dist/server/http-server.d.ts.map +1 -1
  169. package/dist/server/http-server.js +976 -58
  170. package/dist/server/http-server.js.map +1 -1
  171. package/dist/server/mcp-server.d.ts +8 -0
  172. package/dist/server/mcp-server.d.ts.map +1 -1
  173. package/dist/server/mcp-server.js +1157 -37
  174. package/dist/server/mcp-server.js.map +1 -1
  175. package/dist/server/parsing.d.ts +12 -0
  176. package/dist/server/parsing.d.ts.map +1 -0
  177. package/dist/server/parsing.js +42 -0
  178. package/dist/server/parsing.js.map +1 -0
  179. package/dist/summarizers/prompts.d.ts +4 -0
  180. package/dist/summarizers/prompts.d.ts.map +1 -1
  181. package/dist/summarizers/prompts.js +42 -0
  182. package/dist/summarizers/prompts.js.map +1 -1
  183. package/docs/ULTIMATE_MEMORY_LAYER_ROADMAP.md +291 -0
  184. package/docs/prd.json +1498 -0
  185. package/openapi.yaml +1945 -112
  186. package/package.json +7 -5
@@ -0,0 +1,185 @@
1
+ import { UniqueConstraintError } from '../contracts/storage.js';
2
+ export async function traverseAssociations(adapter, scope, startKind, startId, options = {}) {
3
+ if (!Number.isInteger(startId) || startId <= 0) {
4
+ throw new Error(`traverseAssociations: startId must be a positive integer, got ${startId}`);
5
+ }
6
+ const maxDepth = normalizeTraversalBound(options.maxDepth, 2, 'maxDepth');
7
+ const maxNodes = normalizeTraversalBound(options.maxNodes, 20, 'maxNodes');
8
+ const visitedKey = (kind, id) => `${kind}:${id}`;
9
+ const visited = new Set();
10
+ const nodes = [];
11
+ const edges = [];
12
+ const edgeIds = new Set();
13
+ // Cap includes the start node. If maxNodes is 0 (or effectively unusable),
14
+ // return an empty graph rather than silently allowing a single-node result.
15
+ if (maxNodes < 1) {
16
+ return { nodes, edges };
17
+ }
18
+ const queue = [
19
+ { kind: startKind, id: startId, depth: 0 },
20
+ ];
21
+ visited.add(visitedKey(startKind, startId));
22
+ nodes.push({ kind: startKind, id: startId });
23
+ while (queue.length > 0 && nodes.length < maxNodes) {
24
+ const current = queue.shift();
25
+ if (current.depth >= maxDepth)
26
+ continue;
27
+ const [fromEdges, toEdges] = await Promise.all([
28
+ adapter.getAssociationsFrom(current.kind, current.id, scope),
29
+ adapter.getAssociationsTo(current.kind, current.id, scope),
30
+ ]);
31
+ for (const edge of [...fromEdges, ...toEdges]) {
32
+ if (edgeIds.has(edge.id))
33
+ continue;
34
+ // Determine the neighbor from the edge
35
+ const neighborKind = edge.source_kind === current.kind && edge.source_id === current.id
36
+ ? edge.target_kind
37
+ : edge.source_kind;
38
+ const neighborId = edge.source_kind === current.kind && edge.source_id === current.id
39
+ ? edge.target_id
40
+ : edge.source_id;
41
+ const key = visitedKey(neighborKind, neighborId);
42
+ const neighborAlreadyVisited = visited.has(key);
43
+ if (!neighborAlreadyVisited && nodes.length < maxNodes) {
44
+ visited.add(key);
45
+ nodes.push({ kind: neighborKind, id: neighborId });
46
+ queue.push({ kind: neighborKind, id: neighborId, depth: current.depth + 1 });
47
+ }
48
+ const neighborInNodeSet = neighborAlreadyVisited ||
49
+ nodes.some((node) => node.kind === neighborKind && node.id === neighborId);
50
+ if (neighborInNodeSet) {
51
+ edgeIds.add(edge.id);
52
+ edges.push(edge);
53
+ }
54
+ }
55
+ }
56
+ return { nodes, edges };
57
+ }
58
+ function normalizeTraversalBound(value, defaultValue, name) {
59
+ if (value === undefined)
60
+ return defaultValue;
61
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {
62
+ throw new Error(`traverseAssociations: ${name} must be a non-negative integer, got ${value}`);
63
+ }
64
+ return value;
65
+ }
66
+ function tokenize(text) {
67
+ return new Set(text
68
+ .toLowerCase()
69
+ .replace(/[^a-z0-9\s]/g, ' ')
70
+ .split(/\s+/)
71
+ .filter((t) => t.length > 2));
72
+ }
73
+ function jaccardSimilarity(a, b) {
74
+ if (a.size === 0 && b.size === 0)
75
+ return 0;
76
+ let intersection = 0;
77
+ for (const token of a) {
78
+ if (b.has(token))
79
+ intersection++;
80
+ }
81
+ const union = a.size + b.size - intersection;
82
+ return union > 0 ? intersection / union : 0;
83
+ }
84
+ function detectRelationType(source, target, similarity) {
85
+ const sameSlot = Boolean(source.slot_key) &&
86
+ Boolean(target.slot_key) &&
87
+ source.slot_key === target.slot_key;
88
+ // Contradiction: same slot key with either negation mismatch OR
89
+ // divergent fact text (different values asserted for the same slot).
90
+ // Slot facts are assertions like "deploy:region = us-east-1" vs
91
+ // "deploy:region = eu-west-1" — they must not be collapsed into supports.
92
+ if (sameSlot) {
93
+ const negationMismatch = source.is_negated !== target.is_negated;
94
+ const divergentValues = !negationMismatch && similarity < 0.9;
95
+ if (negationMismatch || divergentValues) {
96
+ return 'contradicts';
97
+ }
98
+ }
99
+ // Supersedes: same slot key, same polarity, target is newer, facts align
100
+ if (sameSlot &&
101
+ source.is_negated === target.is_negated &&
102
+ target.created_at > source.created_at &&
103
+ similarity >= 0.9) {
104
+ return 'supersedes';
105
+ }
106
+ // Supports: high similarity + same polarity (and not same-slot-divergent)
107
+ if (similarity >= 0.4 && source.is_negated === target.is_negated) {
108
+ return 'supports';
109
+ }
110
+ // Related: moderate similarity
111
+ if (similarity >= 0.25) {
112
+ return 'related_to';
113
+ }
114
+ return null;
115
+ }
116
+ export async function autoDetectAssociations(adapter, scope, newKnowledge, existingKnowledge) {
117
+ const created = [];
118
+ const newTokens = tokenize(newKnowledge.fact);
119
+ for (const existing of existingKnowledge) {
120
+ if (existing.id === newKnowledge.id)
121
+ continue;
122
+ const similarity = jaccardSimilarity(newTokens, tokenize(existing.fact));
123
+ const relationType = detectRelationType(existing, newKnowledge, similarity);
124
+ if (!relationType)
125
+ continue;
126
+ // For supersedes, new knowledge is the source (it supersedes the old)
127
+ const sourceId = relationType === 'supersedes' ? newKnowledge.id : existing.id;
128
+ const targetId = relationType === 'supersedes' ? existing.id : newKnowledge.id;
129
+ try {
130
+ const association = await adapter.insertAssociation({
131
+ tenant_id: newKnowledge.tenant_id,
132
+ system_id: newKnowledge.system_id,
133
+ workspace_id: newKnowledge.workspace_id,
134
+ collaboration_id: newKnowledge.collaboration_id,
135
+ scope_id: newKnowledge.scope_id,
136
+ source_kind: 'knowledge',
137
+ source_id: sourceId,
138
+ target_kind: 'knowledge',
139
+ target_id: targetId,
140
+ association_type: relationType,
141
+ confidence: similarity,
142
+ auto_generated: true,
143
+ });
144
+ created.push(association);
145
+ }
146
+ catch (err) {
147
+ if (!isUniqueConstraintError(err)) {
148
+ throw err;
149
+ }
150
+ // Unique constraint violation — association already exists, skip
151
+ }
152
+ }
153
+ return created;
154
+ }
155
+ /**
156
+ * Detect whether an adapter error represents a duplicate-edge unique
157
+ * constraint violation.
158
+ *
159
+ * All bundled adapters throw the structured `UniqueConstraintError` class.
160
+ * The code/message fallbacks below exist only for defence-in-depth against
161
+ * third-party or older adapter implementations that have not adopted the
162
+ * typed error yet.
163
+ */
164
+ function isUniqueConstraintError(err) {
165
+ if (err instanceof UniqueConstraintError)
166
+ return true;
167
+ if (!err || typeof err !== 'object')
168
+ return false;
169
+ const anyErr = err;
170
+ if (anyErr.kind === 'UniqueConstraintError')
171
+ return true;
172
+ // Postgres: 23505 unique_violation
173
+ if (anyErr.code === '23505')
174
+ return true;
175
+ // better-sqlite3: SQLITE_CONSTRAINT_UNIQUE
176
+ if (anyErr.code === 'SQLITE_CONSTRAINT_UNIQUE')
177
+ return true;
178
+ const message = typeof anyErr.message === 'string' ? anyErr.message : '';
179
+ if (message.includes('Association already exists'))
180
+ return true;
181
+ if (message.toLowerCase().includes('unique constraint'))
182
+ return true;
183
+ return false;
184
+ }
185
+ //# sourceMappingURL=associations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"associations.js","sourceRoot":"","sources":["../../src/core/associations.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,18 @@ export interface CircuitBreakerOptions {
3
3
  failureThreshold?: number;
4
4
  resetTimeoutMs?: number;
5
5
  }
6
+ export interface CircuitBreakerSnapshot {
7
+ state: CircuitState;
8
+ failures: number;
9
+ failureThreshold: number;
10
+ resetTimeoutMs: number;
11
+ openedAt: number | null;
12
+ nextProbeAt: number | null;
13
+ }
6
14
  export interface CircuitBreaker {
7
15
  readonly state: CircuitState;
8
16
  execute<T>(run: () => Promise<T>): Promise<T>;
17
+ getSnapshot(): CircuitBreakerSnapshot;
9
18
  }
10
19
  export declare function createCircuitBreaker(options?: CircuitBreakerOptions): CircuitBreaker;
11
20
  //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/core/circuit-breaker.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAuCxF"}
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/core/circuit-breaker.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,WAAW,IAAI,sBAAsB,CAAC;CACvC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAmDxF"}
@@ -1,3 +1,4 @@
1
+ import { ProviderUnavailableError } from '../contracts/errors.js';
1
2
  export function createCircuitBreaker(options = {}) {
2
3
  const failureThreshold = options.failureThreshold ?? 3;
3
4
  const resetTimeoutMs = options.resetTimeoutMs ?? 30_000;
@@ -13,7 +14,7 @@ export function createCircuitBreaker(options = {}) {
13
14
  },
14
15
  async execute(run) {
15
16
  if (state === 'open' && !canProbe()) {
16
- throw new Error('Circuit breaker is open');
17
+ throw new ProviderUnavailableError('Circuit breaker is open');
17
18
  }
18
19
  if (canProbe()) {
19
20
  state = 'half_open';
@@ -33,6 +34,17 @@ export function createCircuitBreaker(options = {}) {
33
34
  throw error;
34
35
  }
35
36
  },
37
+ getSnapshot() {
38
+ const effectiveState = canProbe() ? 'half_open' : state;
39
+ return {
40
+ state: effectiveState,
41
+ failures,
42
+ failureThreshold,
43
+ resetTimeoutMs,
44
+ openedAt: openedAt > 0 ? openedAt : null,
45
+ nextProbeAt: state === 'open' ? openedAt + resetTimeoutMs : null,
46
+ };
47
+ },
36
48
  };
37
49
  }
38
50
  //# sourceMappingURL=circuit-breaker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/core/circuit-breaker.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,oBAAoB,CAAC,UAAiC,EAAE;IACtE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;IACxD,IAAI,KAAK,GAAiB,QAAQ,CAAC;IACnC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,SAAS,QAAQ;QACf,OAAO,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,cAAc,CAAC;IACrE,CAAC;IAED,OAAO;QACL,IAAI,KAAK;YACP,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,OAAO,CAAI,GAAqB;YACpC,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,QAAQ,EAAE,EAAE,CAAC;gBACf,KAAK,GAAG,WAAW,CAAC;YACtB,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;gBAC3B,QAAQ,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,QAAQ,CAAC;gBACjB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,IAAI,CAAC,CAAC;gBACd,IAAI,QAAQ,IAAI,gBAAgB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;oBAC1D,KAAK,GAAG,MAAM,CAAC;oBACf,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/core/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAwBlE,MAAM,UAAU,oBAAoB,CAAC,UAAiC,EAAE;IACtE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;IACxD,IAAI,KAAK,GAAiB,QAAQ,CAAC;IACnC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,SAAS,QAAQ;QACf,OAAO,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,cAAc,CAAC;IACrE,CAAC;IAED,OAAO;QACL,IAAI,KAAK;YACP,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,OAAO,CAAI,GAAqB;YACpC,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,QAAQ,EAAE,EAAE,CAAC;gBACf,KAAK,GAAG,WAAW,CAAC;YACtB,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;gBAC3B,QAAQ,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,QAAQ,CAAC;gBACjB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,IAAI,CAAC,CAAC;gBACd,IAAI,QAAQ,IAAI,gBAAgB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;oBAC1D,KAAK,GAAG,MAAM,CAAC;oBACf,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,WAAW;YACT,MAAM,cAAc,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;YACxD,OAAO;gBACL,KAAK,EAAE,cAAc;gBACrB,QAAQ;gBACR,gBAAgB;gBAChB,cAAc;gBACd,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;gBACxC,WAAW,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI;aACjE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { MemoryScope } from '../contracts/identity.js';
2
+ import type { AsyncStorageAdapter } from '../contracts/async-storage.js';
3
+ import type { CognitiveSearchOptions, CognitiveSearchResult } from '../contracts/cognitive.js';
4
+ export declare function searchCognitive(adapter: AsyncStorageAdapter, scope: MemoryScope, options: CognitiveSearchOptions): Promise<CognitiveSearchResult>;
5
+ //# sourceMappingURL=cognitive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cognitive.d.ts","sourceRoot":"","sources":["../../src/core/cognitive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAIV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAkEnC,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAyEhC"}
@@ -0,0 +1,120 @@
1
+ import { mapKnowledgeClassToCognitive, mapCognitiveToKnowledgeClasses, } from '../contracts/cognitive.js';
2
+ function knowledgeToCognitiveItem(km) {
3
+ return {
4
+ id: km.id,
5
+ type: mapKnowledgeClassToCognitive(km.knowledge_class),
6
+ fact: km.fact,
7
+ createdAt: km.created_at,
8
+ lastAccessedAt: km.last_accessed_at,
9
+ metadata: {
10
+ trustScore: km.trust_score,
11
+ knowledgeClass: km.knowledge_class,
12
+ knowledgeState: km.knowledge_state,
13
+ },
14
+ };
15
+ }
16
+ function workingMemoryToCognitiveItem(wm) {
17
+ return {
18
+ id: wm.id,
19
+ type: 'working',
20
+ fact: wm.summary,
21
+ createdAt: wm.created_at,
22
+ lastAccessedAt: wm.created_at,
23
+ metadata: {
24
+ trustScore: 1,
25
+ knowledgeClass: 'project_fact',
26
+ },
27
+ };
28
+ }
29
+ function groupByType(results) {
30
+ const grouped = {
31
+ episodic: [],
32
+ semantic: [],
33
+ procedural: [],
34
+ working: [],
35
+ };
36
+ for (const r of results) {
37
+ grouped[r.item.type].push(r);
38
+ }
39
+ return grouped;
40
+ }
41
+ function computeWorkingMemoryRank(wm, query) {
42
+ const queryLower = query.toLowerCase();
43
+ let score = 0;
44
+ const summaryLower = wm.summary.toLowerCase();
45
+ if (summaryLower.includes(queryLower))
46
+ score += 1.0;
47
+ const tagMatches = wm.topic_tags.filter((t) => t.toLowerCase().includes(queryLower)).length;
48
+ score += tagMatches * 0.3;
49
+ const entityMatches = wm.key_entities.filter((e) => e.toLowerCase().includes(queryLower)).length;
50
+ score += entityMatches * 0.3;
51
+ return score;
52
+ }
53
+ export async function searchCognitive(adapter, scope, options) {
54
+ const limit = options.limit ?? 20;
55
+ const activeOnly = options.activeOnly ?? true;
56
+ const requestedTypes = options.types ?? ['episodic', 'semantic', 'procedural', 'working'];
57
+ const all = [];
58
+ // Semantic and procedural: search knowledge memory
59
+ const knowledgeTypes = requestedTypes.filter((t) => t === 'semantic' || t === 'procedural');
60
+ if (knowledgeTypes.length > 0) {
61
+ const knowledgeClasses = knowledgeTypes.flatMap(mapCognitiveToKnowledgeClasses);
62
+ const searchOpts = {
63
+ limit,
64
+ activeOnly,
65
+ minimumTrustScore: options.minimumTrustScore,
66
+ knowledgeClasses: knowledgeClasses.length > 0 ? knowledgeClasses : undefined,
67
+ };
68
+ const hits = await adapter.searchKnowledge(scope, options.query, searchOpts);
69
+ for (const hit of hits) {
70
+ all.push({
71
+ item: knowledgeToCognitiveItem(hit.item),
72
+ rank: hit.rank ?? 0,
73
+ });
74
+ }
75
+ }
76
+ // Working: search working memory with computed relevance scores
77
+ if (requestedTypes.includes('working')) {
78
+ const wmList = activeOnly
79
+ ? await adapter.getActiveWorkingMemory(scope)
80
+ : await adapter.getWorkingMemoryByTimeRange(scope, { start_at: 0, end_at: Math.floor(Date.now() / 1000) });
81
+ for (const wm of wmList) {
82
+ const score = computeWorkingMemoryRank(wm, options.query);
83
+ if (score > 0) {
84
+ all.push({
85
+ item: workingMemoryToCognitiveItem(wm),
86
+ rank: score,
87
+ });
88
+ }
89
+ }
90
+ }
91
+ // Episodic: search turns and map to cognitive items
92
+ if (requestedTypes.includes('episodic')) {
93
+ const turnHits = await adapter.searchTurns(scope, options.query, { limit, activeOnly });
94
+ for (const hit of turnHits) {
95
+ const turn = hit.item;
96
+ all.push({
97
+ item: {
98
+ id: turn.id,
99
+ type: 'episodic',
100
+ fact: turn.content,
101
+ createdAt: turn.created_at,
102
+ lastAccessedAt: turn.created_at,
103
+ metadata: {
104
+ trustScore: 1,
105
+ knowledgeClass: 'episodic_fact',
106
+ },
107
+ },
108
+ rank: hit.rank ?? 0,
109
+ });
110
+ }
111
+ }
112
+ // Sort descending by rank (higher = more relevant), then trim to limit
113
+ all.sort((a, b) => b.rank - a.rank);
114
+ const trimmed = all.slice(0, limit);
115
+ return {
116
+ byType: groupByType(trimmed),
117
+ all: trimmed,
118
+ };
119
+ }
120
+ //# sourceMappingURL=cognitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cognitive.js","sourceRoot":"","sources":["../../src/core/cognitive.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import type { EmbeddingAdapter, EmbeddingVector } from '../contracts/embedding.js';
2
2
  import { type MemoryScope, type ScopeLevel } from '../contracts/identity.js';
3
+ import type { ActorRef, ContextViewPolicy, CoordinationState, HandoffRecord, WorkClaim } from '../contracts/coordination.js';
3
4
  import type { EventHook, Logger } from '../contracts/observability.js';
4
5
  import type { ContextMode, ContextPolicy } from '../contracts/policy.js';
5
- import type { KnowledgeMemory, Turn, WorkItem, WorkingMemory } from '../contracts/types.js';
6
+ import type { SessionState } from '../contracts/session-state.js';
7
+ import type { KnowledgeMemory, Playbook, Turn, WorkItem, WorkingMemory } from '../contracts/types.js';
6
8
  import type { AsyncStorageAdapter } from '../contracts/async-storage.js';
7
9
  import { type TokenEstimator } from './tokens.js';
8
10
  export interface ContextAssemblyOptions {
@@ -11,6 +13,8 @@ export interface ContextAssemblyOptions {
11
13
  mode?: ContextMode;
12
14
  maxKnowledgeItems?: number;
13
15
  maxRecentSummaries?: number;
16
+ maxAssociationSeedItems?: number;
17
+ maxAssociatedKnowledgeItems?: number;
14
18
  relevanceQuery?: string;
15
19
  tokenBudget?: number;
16
20
  queryVector?: EmbeddingVector;
@@ -20,6 +24,10 @@ export interface ContextAssemblyOptions {
20
24
  onEvent?: EventHook;
21
25
  tokenEstimator?: TokenEstimator;
22
26
  asOf?: number;
27
+ associationMinConfidence?: number;
28
+ view?: ContextViewPolicy;
29
+ viewer?: ActorRef;
30
+ includeCoordinationState?: boolean;
23
31
  }
24
32
  export interface KnowledgeSelectionReason {
25
33
  knowledgeMemoryId: number;
@@ -34,6 +42,41 @@ export interface KnowledgeSelectionReason {
34
42
  finalScore: number;
35
43
  explanation: string;
36
44
  }
45
+ export interface ExcludedKnowledgeReason {
46
+ knowledgeMemoryId: number;
47
+ reason: 'not_selected' | 'token_budget';
48
+ detail: string;
49
+ }
50
+ export interface AssociationExpansionTrace {
51
+ seedKnowledgeIds: number[];
52
+ candidateKnowledgeIds: number[];
53
+ includedKnowledgeIds: number[];
54
+ truncatedKnowledgeIds: number[];
55
+ maxSeedKnowledgeItems: number;
56
+ maxAssociatedKnowledgeItems: number;
57
+ }
58
+ export interface TokenTrimTrace {
59
+ initialTokenEstimate: number;
60
+ finalTokenEstimate: number;
61
+ droppedTurnIds: number[];
62
+ droppedSummaryIds: number[];
63
+ droppedPlaybookIds: number[];
64
+ droppedAssociatedKnowledgeIds: number[];
65
+ droppedKnowledgeIds: number[];
66
+ }
67
+ export interface ContextScopeTrace {
68
+ normalizedScope: MemoryScope;
69
+ scopeSource: 'local' | 'cross_scope';
70
+ scopeLevel: ScopeLevel;
71
+ asOf: number | null;
72
+ }
73
+ export interface ContextDebugTrace {
74
+ scope: ContextScopeTrace;
75
+ selectedKnowledge: KnowledgeSelectionReason[];
76
+ excludedKnowledge: ExcludedKnowledgeReason[];
77
+ associationExpansion: AssociationExpansionTrace;
78
+ tokenTrimming: TokenTrimTrace;
79
+ }
37
80
  export interface MemoryContext {
38
81
  mode: ContextMode;
39
82
  activeTurns: Turn[];
@@ -46,11 +89,39 @@ export interface MemoryContext {
46
89
  durableKnowledge: KnowledgeMemory[];
47
90
  recentSummaries: WorkingMemory[];
48
91
  currentObjective: string | null;
92
+ sessionState: SessionState;
49
93
  activeObjectives: WorkItem[];
50
94
  activeState: string[];
51
95
  unresolvedWork: string[];
96
+ coordinationState: CoordinationState | null;
97
+ relevantPlaybooks?: Playbook[];
98
+ associatedKnowledge: KnowledgeMemory[];
52
99
  knowledgeSelectionReasons: KnowledgeSelectionReason[];
100
+ debugTrace: ContextDebugTrace;
53
101
  tokenEstimate: number;
54
102
  }
103
+ export declare function resolveVisibleKnowledge(items: KnowledgeMemory[], scope: MemoryScope, view: ContextViewPolicy): KnowledgeMemory[];
104
+ export declare function resolveVisibleWorkItems(items: WorkItem[], scope: MemoryScope, view: ContextViewPolicy): WorkItem[];
105
+ export declare function resolveVisiblePlaybooks(items: Playbook[], scope: MemoryScope, view: ContextViewPolicy): Playbook[];
106
+ export declare function resolveVisibleWorkClaims(items: WorkClaim[], scope: MemoryScope, view: ContextViewPolicy): WorkClaim[];
107
+ export declare function resolveVisibleHandoffs(items: HandoffRecord[], scope: MemoryScope, view: ContextViewPolicy): HandoffRecord[];
108
+ export interface DerivedShortTermState {
109
+ workingMemory: WorkingMemory | null;
110
+ recentSummaries: WorkingMemory[];
111
+ activeObjectives: WorkItem[];
112
+ currentObjective: string | null;
113
+ activeState: string[];
114
+ unresolvedWork: string[];
115
+ sessionState: SessionState;
116
+ }
117
+ export declare function buildDerivedShortTermState(input: {
118
+ activeTurns: Turn[];
119
+ workingMemoryCandidates: WorkingMemory[];
120
+ contextWorkItems: WorkItem[];
121
+ relevantKnowledge?: KnowledgeMemory[];
122
+ maxRecentSummaries?: number;
123
+ }): DerivedShortTermState;
124
+ export declare function getContextWorkItems(adapter: AsyncStorageAdapter, scope: MemoryScope, asOf?: number, level?: ScopeLevel): Promise<WorkItem[]>;
125
+ export declare function resolveContextScopeLevel(crossScopeLevel: ScopeLevel | undefined, view: ContextViewPolicy | undefined): ScopeLevel | undefined;
55
126
  export declare function buildMemoryContext(adapter: AsyncStorageAdapter, scope: MemoryScope, options?: ContextAssemblyOptions): Promise<MemoryContext>;
56
127
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,KAAK,EACV,eAAe,EAEf,IAAI,EACJ,QAAQ,EACR,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlE,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,CAAC;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,iBAAiB,EAAE,eAAe,EAAE,CAAC;IACrC,qBAAqB,EAAE,eAAe,EAAE,CAAC;IACzC,oBAAoB,EAAE,eAAe,EAAE,CAAC;IACxC,iBAAiB,EAAE,eAAe,EAAE,CAAC;IACrC,iBAAiB,EAAE,eAAe,EAAE,CAAC;IACrC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yBAAyB,EAAE,wBAAwB,EAAE,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;CACvB;AAkRD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAuQxB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}