@framers/agentos 0.1.104 → 0.1.106

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 (65) hide show
  1. package/dist/api/AgentOS.d.ts +80 -0
  2. package/dist/api/AgentOS.d.ts.map +1 -1
  3. package/dist/api/AgentOS.js +128 -9
  4. package/dist/api/AgentOS.js.map +1 -1
  5. package/dist/api/AgentOSOrchestrator.d.ts.map +1 -1
  6. package/dist/api/AgentOSOrchestrator.js +32 -4
  7. package/dist/api/AgentOSOrchestrator.js.map +1 -1
  8. package/dist/memory/AgentMemory.d.ts +62 -16
  9. package/dist/memory/AgentMemory.d.ts.map +1 -1
  10. package/dist/memory/AgentMemory.js +236 -28
  11. package/dist/memory/AgentMemory.js.map +1 -1
  12. package/dist/memory/consolidation/ConsolidationLoop.d.ts.map +1 -1
  13. package/dist/memory/consolidation/ConsolidationLoop.js +32 -9
  14. package/dist/memory/consolidation/ConsolidationLoop.js.map +1 -1
  15. package/dist/memory/extension/MemoryToolsExtension.d.ts +53 -0
  16. package/dist/memory/extension/MemoryToolsExtension.d.ts.map +1 -0
  17. package/dist/memory/extension/MemoryToolsExtension.js +54 -0
  18. package/dist/memory/extension/MemoryToolsExtension.js.map +1 -0
  19. package/dist/memory/extension/StandaloneMemoryExtension.d.ts +27 -0
  20. package/dist/memory/extension/StandaloneMemoryExtension.d.ts.map +1 -0
  21. package/dist/memory/extension/StandaloneMemoryExtension.js +122 -0
  22. package/dist/memory/extension/StandaloneMemoryExtension.js.map +1 -0
  23. package/dist/memory/facade/Memory.d.ts +45 -0
  24. package/dist/memory/facade/Memory.d.ts.map +1 -1
  25. package/dist/memory/facade/Memory.js +296 -137
  26. package/dist/memory/facade/Memory.js.map +1 -1
  27. package/dist/memory/facade/types.d.ts +12 -8
  28. package/dist/memory/facade/types.d.ts.map +1 -1
  29. package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts +14 -5
  30. package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts.map +1 -1
  31. package/dist/memory/feedback/RetrievalFeedbackSignal.js +131 -20
  32. package/dist/memory/feedback/RetrievalFeedbackSignal.js.map +1 -1
  33. package/dist/memory/index.d.ts +7 -1
  34. package/dist/memory/index.d.ts.map +1 -1
  35. package/dist/memory/index.js +5 -1
  36. package/dist/memory/index.js.map +1 -1
  37. package/dist/memory/integration/StandaloneMemoryBridge.d.ts +55 -0
  38. package/dist/memory/integration/StandaloneMemoryBridge.d.ts.map +1 -0
  39. package/dist/memory/integration/StandaloneMemoryBridge.js +398 -0
  40. package/dist/memory/integration/StandaloneMemoryBridge.js.map +1 -0
  41. package/dist/memory/io/CsvImporter.d.ts +51 -0
  42. package/dist/memory/io/CsvImporter.d.ts.map +1 -0
  43. package/dist/memory/io/CsvImporter.js +229 -0
  44. package/dist/memory/io/CsvImporter.js.map +1 -0
  45. package/dist/memory/io/index.d.ts +2 -0
  46. package/dist/memory/io/index.d.ts.map +1 -1
  47. package/dist/memory/io/index.js +2 -0
  48. package/dist/memory/io/index.js.map +1 -1
  49. package/dist/memory/store/tracePersistence.d.ts +68 -0
  50. package/dist/memory/store/tracePersistence.d.ts.map +1 -0
  51. package/dist/memory/store/tracePersistence.js +159 -0
  52. package/dist/memory/store/tracePersistence.js.map +1 -0
  53. package/dist/memory/tools/MemoryAddTool.d.ts.map +1 -1
  54. package/dist/memory/tools/MemoryAddTool.js +18 -6
  55. package/dist/memory/tools/MemoryAddTool.js.map +1 -1
  56. package/dist/memory/tools/MemoryMergeTool.d.ts.map +1 -1
  57. package/dist/memory/tools/MemoryMergeTool.js +41 -13
  58. package/dist/memory/tools/MemoryMergeTool.js.map +1 -1
  59. package/dist/memory/tools/MemorySearchTool.d.ts.map +1 -1
  60. package/dist/memory/tools/MemorySearchTool.js +24 -4
  61. package/dist/memory/tools/MemorySearchTool.js.map +1 -1
  62. package/dist/memory/tools/MemoryUpdateTool.d.ts.map +1 -1
  63. package/dist/memory/tools/MemoryUpdateTool.js +38 -16
  64. package/dist/memory/tools/MemoryUpdateTool.js.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1,398 @@
1
+ /**
2
+ * @fileoverview Adapters that let the standalone SQLite-first `Memory`
3
+ * facade participate in AgentOS long-term memory flows.
4
+ *
5
+ * These bridges intentionally use the public `Memory` API so the same memory
6
+ * instance can power:
7
+ * - agent-editable memory tools
8
+ * - prompt-time long-term memory retrieval
9
+ * - rolling-summary persistence
10
+ *
11
+ * @module agentos/memory/integration/StandaloneMemoryBridge
12
+ */
13
+ import { DEFAULT_LONG_TERM_MEMORY_POLICY, } from '../../core/conversation/LongTermMemoryPolicy.js';
14
+ const DEFAULT_BASE_TAGS = ['agentos', 'long_term_memory'];
15
+ const CATEGORY_ORDER = [
16
+ 'facts',
17
+ 'preferences',
18
+ 'people',
19
+ 'projects',
20
+ 'decisions',
21
+ 'open_loops',
22
+ 'todo',
23
+ 'tags',
24
+ ];
25
+ function nonEmptyString(value) {
26
+ if (typeof value !== 'string')
27
+ return null;
28
+ const trimmed = value.trim();
29
+ return trimmed ? trimmed : null;
30
+ }
31
+ function normalizeText(value) {
32
+ return nonEmptyString(value);
33
+ }
34
+ function formatPeopleEntry(person) {
35
+ if (typeof person !== 'object' || person === null)
36
+ return null;
37
+ const name = nonEmptyString(person.name);
38
+ const notes = nonEmptyString(person.notes);
39
+ if (!name)
40
+ return null;
41
+ return {
42
+ content: notes ? `Person: ${name}. ${notes}` : `Person: ${name}.`,
43
+ entities: [name],
44
+ };
45
+ }
46
+ function formatProjectEntry(project) {
47
+ if (typeof project !== 'object' || project === null)
48
+ return null;
49
+ const name = nonEmptyString(project.name);
50
+ const status = nonEmptyString(project.status);
51
+ const notes = nonEmptyString(project.notes);
52
+ if (!name)
53
+ return null;
54
+ const parts = [`Project: ${name}.`];
55
+ if (status)
56
+ parts.push(`Status: ${status}.`);
57
+ if (notes)
58
+ parts.push(notes);
59
+ return {
60
+ content: parts.join(' ').trim(),
61
+ entities: [name],
62
+ };
63
+ }
64
+ function unique(items) {
65
+ return Array.from(new Set(items));
66
+ }
67
+ export function buildStandaloneMemoryPersonaScopeId(userId, personaId) {
68
+ return `${userId}::${personaId}`;
69
+ }
70
+ function resolveScopeTargets(args) {
71
+ const targets = [];
72
+ const { userId, organizationId, conversationId, personaId, policy } = args;
73
+ if (policy.scopes.conversation && conversationId) {
74
+ targets.push({
75
+ key: `thread:${conversationId}`,
76
+ label: 'conversation',
77
+ memoryScope: 'thread',
78
+ scopeId: conversationId,
79
+ });
80
+ }
81
+ if (policy.scopes.persona && userId && personaId) {
82
+ targets.push({
83
+ key: `persona:${buildStandaloneMemoryPersonaScopeId(userId, personaId)}`,
84
+ label: 'persona',
85
+ memoryScope: 'persona',
86
+ scopeId: buildStandaloneMemoryPersonaScopeId(userId, personaId),
87
+ });
88
+ }
89
+ if (policy.scopes.user && userId) {
90
+ targets.push({
91
+ key: `user:${userId}`,
92
+ label: 'user',
93
+ memoryScope: 'user',
94
+ scopeId: userId,
95
+ });
96
+ }
97
+ if (policy.scopes.organization &&
98
+ policy.shareWithOrganization &&
99
+ organizationId) {
100
+ targets.push({
101
+ key: `organization:${organizationId}`,
102
+ label: 'organization',
103
+ memoryScope: 'organization',
104
+ scopeId: organizationId,
105
+ });
106
+ }
107
+ return targets;
108
+ }
109
+ function getScopeLimit(target, input, options) {
110
+ if (target.label === 'conversation') {
111
+ return options.conversationLimit;
112
+ }
113
+ if (target.label === 'user') {
114
+ return input.topKByScope?.user ?? options.defaultLimitPerScope;
115
+ }
116
+ if (target.label === 'persona') {
117
+ return input.topKByScope?.persona ?? options.defaultLimitPerScope;
118
+ }
119
+ if (target.label === 'organization') {
120
+ return input.topKByScope?.organization ?? options.defaultLimitPerScope;
121
+ }
122
+ return options.defaultLimitPerScope;
123
+ }
124
+ function trimContextText(text, maxContextChars) {
125
+ if (!maxContextChars || maxContextChars <= 0 || text.length <= maxContextChars) {
126
+ return { contextText: text, truncated: false };
127
+ }
128
+ const trimmed = text.slice(0, Math.max(0, maxContextChars - 1)).trimEnd();
129
+ return {
130
+ contextText: `${trimmed}…`,
131
+ truncated: true,
132
+ };
133
+ }
134
+ function renderScopeHeading(label) {
135
+ if (label === 'conversation')
136
+ return 'Conversation Memory';
137
+ if (label === 'persona')
138
+ return 'Persona Memory';
139
+ if (label === 'user')
140
+ return 'User Memory';
141
+ return 'Organization Memory';
142
+ }
143
+ export function createStandaloneMemoryLongTermRetriever(memory, options) {
144
+ const resolvedOptions = {
145
+ defaultLimitPerScope: options?.defaultLimitPerScope ?? 4,
146
+ conversationLimit: options?.conversationLimit ?? 4,
147
+ includeScopeHeadings: options?.includeScopeHeadings ?? true,
148
+ };
149
+ return {
150
+ async retrieveLongTermMemory(input) {
151
+ const policy = input.memoryPolicy ?? DEFAULT_LONG_TERM_MEMORY_POLICY;
152
+ const targets = resolveScopeTargets({
153
+ userId: input.userId,
154
+ organizationId: input.organizationId,
155
+ conversationId: input.conversationId,
156
+ personaId: input.personaId,
157
+ policy,
158
+ });
159
+ if (targets.length === 0) {
160
+ return null;
161
+ }
162
+ const scopeResults = [];
163
+ for (const target of targets) {
164
+ const recallOptions = {
165
+ limit: getScopeLimit(target, input, resolvedOptions),
166
+ scope: target.memoryScope,
167
+ scopeId: target.scopeId,
168
+ };
169
+ const hits = await memory.recall(input.queryText, recallOptions);
170
+ if (hits.length > 0) {
171
+ scopeResults.push({ target, hits });
172
+ }
173
+ }
174
+ if (scopeResults.length === 0) {
175
+ return null;
176
+ }
177
+ const seenContent = new Set();
178
+ const sections = [];
179
+ const diagnostics = {
180
+ totalHits: 0,
181
+ queryText: input.queryText,
182
+ scopes: {},
183
+ };
184
+ for (const { target, hits } of scopeResults) {
185
+ const lines = [];
186
+ for (const hit of hits) {
187
+ const content = normalizeText(hit.trace.content);
188
+ if (!content)
189
+ continue;
190
+ if (seenContent.has(content))
191
+ continue;
192
+ seenContent.add(content);
193
+ lines.push(`- ${content}`);
194
+ }
195
+ if (lines.length === 0) {
196
+ continue;
197
+ }
198
+ diagnostics.scopes[target.label] = lines.length;
199
+ diagnostics.totalHits = Number(diagnostics.totalHits) + lines.length;
200
+ if (resolvedOptions.includeScopeHeadings) {
201
+ sections.push(`### ${renderScopeHeading(target.label)}`);
202
+ }
203
+ sections.push(...lines);
204
+ }
205
+ if (sections.length === 0) {
206
+ return null;
207
+ }
208
+ const rendered = sections.join('\n');
209
+ const { contextText, truncated } = trimContextText(rendered, input.maxContextChars);
210
+ diagnostics.truncated = truncated;
211
+ return {
212
+ contextText,
213
+ diagnostics,
214
+ };
215
+ },
216
+ };
217
+ }
218
+ function categoryAllowed(category, allowedCategories) {
219
+ if (allowedCategories === null)
220
+ return true;
221
+ return allowedCategories.includes(category);
222
+ }
223
+ function buildSummaryContent(update) {
224
+ return [
225
+ `Rolling summary for conversation ${update.conversationId} (persona ${update.personaId}).`,
226
+ update.summaryText.trim(),
227
+ ]
228
+ .filter(Boolean)
229
+ .join('\n\n');
230
+ }
231
+ function collectSummaryEntities(summaryJson) {
232
+ const entities = [];
233
+ if (!summaryJson || typeof summaryJson !== 'object') {
234
+ return entities;
235
+ }
236
+ if (Array.isArray(summaryJson.people)) {
237
+ for (const person of summaryJson.people) {
238
+ const name = nonEmptyString(person?.name);
239
+ if (name)
240
+ entities.push(name);
241
+ }
242
+ }
243
+ if (Array.isArray(summaryJson.projects)) {
244
+ for (const project of summaryJson.projects) {
245
+ const name = nonEmptyString(project?.name);
246
+ if (name)
247
+ entities.push(name);
248
+ }
249
+ }
250
+ return unique(entities);
251
+ }
252
+ function extractAtomicDocs(summaryJson, allowedCategories, baseTags) {
253
+ if (!summaryJson || typeof summaryJson !== 'object') {
254
+ return [];
255
+ }
256
+ const docs = [];
257
+ const pushDoc = (category, key, content, entities = []) => {
258
+ const normalized = normalizeText(content);
259
+ if (!normalized || !categoryAllowed(category, allowedCategories)) {
260
+ return;
261
+ }
262
+ docs.push({
263
+ key: `${category}:${key}`,
264
+ content: normalized,
265
+ tags: [...baseTags, 'rolling_memory_item', `category:${category}`],
266
+ entities: unique(entities),
267
+ });
268
+ };
269
+ if (Array.isArray(summaryJson.facts)) {
270
+ for (const item of summaryJson.facts) {
271
+ const text = normalizeText(item?.text);
272
+ pushDoc('facts', text ?? '', text ? `Fact: ${text}` : null);
273
+ }
274
+ }
275
+ if (Array.isArray(summaryJson.preferences)) {
276
+ for (const item of summaryJson.preferences) {
277
+ const text = normalizeText(item?.text);
278
+ pushDoc('preferences', text ?? '', text ? `Preference: ${text}` : null);
279
+ }
280
+ }
281
+ if (Array.isArray(summaryJson.people)) {
282
+ for (const person of summaryJson.people) {
283
+ const formatted = formatPeopleEntry(person);
284
+ pushDoc('people', formatted?.content ?? '', formatted?.content ?? null, formatted?.entities ?? []);
285
+ }
286
+ }
287
+ if (Array.isArray(summaryJson.projects)) {
288
+ for (const project of summaryJson.projects) {
289
+ const formatted = formatProjectEntry(project);
290
+ pushDoc('projects', formatted?.content ?? '', formatted?.content ?? null, formatted?.entities ?? []);
291
+ }
292
+ }
293
+ if (Array.isArray(summaryJson.decisions)) {
294
+ for (const item of summaryJson.decisions) {
295
+ const text = normalizeText(item?.text);
296
+ pushDoc('decisions', text ?? '', text ? `Decision: ${text}` : null);
297
+ }
298
+ }
299
+ if (Array.isArray(summaryJson.open_loops)) {
300
+ for (const item of summaryJson.open_loops) {
301
+ const text = normalizeText(item?.text);
302
+ pushDoc('open_loops', text ?? '', text ? `Open loop: ${text}` : null);
303
+ }
304
+ }
305
+ if (Array.isArray(summaryJson.todo)) {
306
+ for (const item of summaryJson.todo) {
307
+ const text = normalizeText(item?.text);
308
+ pushDoc('todo', text ?? '', text ? `Todo: ${text}` : null);
309
+ }
310
+ }
311
+ if (Array.isArray(summaryJson.tags) && categoryAllowed('tags', allowedCategories)) {
312
+ for (const tag of summaryJson.tags) {
313
+ const normalized = normalizeText(tag);
314
+ pushDoc('tags', normalized ?? '', normalized ? `Tag: ${normalized}` : null);
315
+ }
316
+ }
317
+ return docs;
318
+ }
319
+ export function createStandaloneMemoryRollingSummarySink(memory, options) {
320
+ const baseTags = unique(options?.baseTags ?? DEFAULT_BASE_TAGS);
321
+ const summaryImportance = options?.summaryImportance ?? 0.9;
322
+ const atomicDocImportance = options?.atomicDocImportance ?? 1.0;
323
+ const summaryTraceIds = new Map();
324
+ const atomicTraceIds = new Map();
325
+ const upsertDocsForScope = async (target, docs) => {
326
+ const next = new Map();
327
+ for (const doc of docs) {
328
+ const trace = await memory.remember(doc.content, {
329
+ type: 'semantic',
330
+ scope: target.memoryScope,
331
+ scopeId: target.scopeId,
332
+ tags: doc.tags,
333
+ entities: doc.entities,
334
+ importance: atomicDocImportance,
335
+ });
336
+ next.set(doc.key, trace.id);
337
+ }
338
+ const previous = atomicTraceIds.get(target.key);
339
+ if (previous) {
340
+ for (const [key, traceId] of previous.entries()) {
341
+ if (next.get(key) !== traceId) {
342
+ await memory.forget(traceId);
343
+ }
344
+ }
345
+ }
346
+ atomicTraceIds.set(target.key, next);
347
+ };
348
+ return {
349
+ async upsertRollingSummaryMemory(update) {
350
+ const policy = update.memoryPolicy ?? DEFAULT_LONG_TERM_MEMORY_POLICY;
351
+ if (!policy.enabled) {
352
+ return;
353
+ }
354
+ const targets = resolveScopeTargets({
355
+ userId: update.userId,
356
+ organizationId: update.organizationId,
357
+ conversationId: update.conversationId,
358
+ personaId: update.personaId,
359
+ policy,
360
+ });
361
+ if (targets.length === 0) {
362
+ return;
363
+ }
364
+ const summaryTags = unique([
365
+ ...baseTags,
366
+ 'rolling_summary',
367
+ ...(Array.isArray(update.summaryJson?.tags)
368
+ ? update.summaryJson.tags
369
+ .map((tag) => normalizeText(tag))
370
+ .filter((tag) => Boolean(tag))
371
+ : []),
372
+ ]);
373
+ const summaryEntities = collectSummaryEntities(update.summaryJson);
374
+ const summaryContent = buildSummaryContent(update);
375
+ const atomicDocs = policy.storeAtomicDocs === true
376
+ ? extractAtomicDocs(update.summaryJson, policy.allowedCategories, baseTags)
377
+ : [];
378
+ for (const target of targets) {
379
+ const summaryTrace = await memory.remember(summaryContent, {
380
+ type: 'semantic',
381
+ scope: target.memoryScope,
382
+ scopeId: target.scopeId,
383
+ tags: summaryTags,
384
+ entities: summaryEntities,
385
+ importance: summaryImportance,
386
+ });
387
+ const previousSummaryTraceId = summaryTraceIds.get(target.key);
388
+ if (previousSummaryTraceId &&
389
+ previousSummaryTraceId !== summaryTrace.id) {
390
+ await memory.forget(previousSummaryTraceId);
391
+ }
392
+ summaryTraceIds.set(target.key, summaryTrace.id);
393
+ await upsertDocsForScope(target, atomicDocs);
394
+ }
395
+ },
396
+ };
397
+ }
398
+ //# sourceMappingURL=StandaloneMemoryBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StandaloneMemoryBridge.js","sourceRoot":"","sources":["../../../src/memory/integration/StandaloneMemoryBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview CSV importer for AgentOS memory brain.
3
+ *
4
+ * Imports flat CSV files into a target `SqliteBrain`. A header row is
5
+ * required and must include a `content` column. Optional columns map onto
6
+ * `memory_traces` fields when present.
7
+ *
8
+ * Supported optional columns:
9
+ * - `id`
10
+ * - `type`
11
+ * - `scope`
12
+ * - `strength`
13
+ * - `created_at` / `createdAt`
14
+ * - `last_accessed`
15
+ * - `retrieval_count`
16
+ * - `deleted`
17
+ * - `tags` (JSON array, comma-separated, or pipe-separated)
18
+ * - `metadata` (JSON object)
19
+ *
20
+ * Deduplication uses SHA-256 of the `content` field and stores the hash in
21
+ * `metadata.import_hash`.
22
+ *
23
+ * @module memory/io/CsvImporter
24
+ */
25
+ import type { ImportResult } from '../facade/types.js';
26
+ import type { SqliteBrain } from '../store/SqliteBrain.js';
27
+ /**
28
+ * Imports a flat CSV file into a `SqliteBrain`.
29
+ */
30
+ export declare class CsvImporter {
31
+ private readonly brain;
32
+ constructor(brain: SqliteBrain);
33
+ /**
34
+ * Read, parse, and import a CSV file.
35
+ *
36
+ * @param sourcePath - Absolute or relative path to the CSV file.
37
+ * @returns Import summary with imported/skipped/error counts.
38
+ */
39
+ import(sourcePath: string): Promise<ImportResult>;
40
+ private _sha256;
41
+ private _readCell;
42
+ private _toNumber;
43
+ private _toInteger;
44
+ private _parseTags;
45
+ /**
46
+ * Small RFC4180-ish CSV parser that supports quoted fields, escaped quotes,
47
+ * and embedded newlines inside quoted cells.
48
+ */
49
+ private _parseCsv;
50
+ }
51
+ //# sourceMappingURL=CsvImporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CsvImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/CsvImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,WAAW;IAE/C;;;;;OAKG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA+GvD,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,UAAU;IAsBlB;;;OAGG;IACH,OAAO,CAAC,SAAS;CAsElB"}