@n8n/agents 0.8.1 → 0.9.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 (103) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +10 -2
  3. package/dist/index.js +57 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/integrations/langsmith.js +28 -2
  6. package/dist/integrations/langsmith.js.map +1 -1
  7. package/dist/runtime/agent-runtime.d.ts +12 -1
  8. package/dist/runtime/agent-runtime.js +243 -119
  9. package/dist/runtime/agent-runtime.js.map +1 -1
  10. package/dist/runtime/episodic-memory-defaults.d.ts +17 -0
  11. package/dist/runtime/episodic-memory-defaults.js +615 -0
  12. package/dist/runtime/episodic-memory-defaults.js.map +1 -0
  13. package/dist/runtime/episodic-memory.d.ts +45 -0
  14. package/dist/runtime/episodic-memory.js +479 -0
  15. package/dist/runtime/episodic-memory.js.map +1 -0
  16. package/dist/runtime/execution-counter.d.ts +9 -0
  17. package/dist/runtime/execution-counter.js +16 -0
  18. package/dist/runtime/execution-counter.js.map +1 -0
  19. package/dist/runtime/fix-tool-call.d.ts +7 -0
  20. package/dist/runtime/fix-tool-call.js +38 -0
  21. package/dist/runtime/fix-tool-call.js.map +1 -0
  22. package/dist/runtime/lazy-ai.d.ts +2 -0
  23. package/dist/runtime/lazy-ai.js +12 -0
  24. package/dist/runtime/lazy-ai.js.map +1 -0
  25. package/dist/runtime/mcp-connection.d.ts +1 -1
  26. package/dist/runtime/mcp-connection.js +71 -16
  27. package/dist/runtime/mcp-connection.js.map +1 -1
  28. package/dist/runtime/memory-lifecycle.d.ts +34 -0
  29. package/dist/runtime/memory-lifecycle.js +63 -0
  30. package/dist/runtime/memory-lifecycle.js.map +1 -0
  31. package/dist/runtime/memory-store.d.ts +22 -7
  32. package/dist/runtime/memory-store.js +240 -50
  33. package/dist/runtime/memory-store.js.map +1 -1
  34. package/dist/runtime/message-list.d.ts +1 -0
  35. package/dist/runtime/message-list.js +5 -0
  36. package/dist/runtime/message-list.js.map +1 -1
  37. package/dist/runtime/messages.js +14 -1
  38. package/dist/runtime/messages.js.map +1 -1
  39. package/dist/runtime/model-factory.d.ts +5 -1
  40. package/dist/runtime/model-factory.js +3 -2
  41. package/dist/runtime/model-factory.js.map +1 -1
  42. package/dist/runtime/observation-log-defaults.js +6 -5
  43. package/dist/runtime/observation-log-defaults.js.map +1 -1
  44. package/dist/runtime/observation-log-observer.d.ts +7 -13
  45. package/dist/runtime/observation-log-observer.js +11 -21
  46. package/dist/runtime/observation-log-observer.js.map +1 -1
  47. package/dist/runtime/observation-log-reflector.d.ts +5 -5
  48. package/dist/runtime/observation-log-reflector.js +9 -21
  49. package/dist/runtime/observation-log-reflector.js.map +1 -1
  50. package/dist/runtime/scoped-memory-task-runner.d.ts +2 -4
  51. package/dist/runtime/scoped-memory-task-runner.js +3 -7
  52. package/dist/runtime/scoped-memory-task-runner.js.map +1 -1
  53. package/dist/runtime/stream.js +11 -1
  54. package/dist/runtime/stream.js.map +1 -1
  55. package/dist/runtime/title-generation.d.ts +5 -2
  56. package/dist/runtime/title-generation.js +7 -3
  57. package/dist/runtime/title-generation.js.map +1 -1
  58. package/dist/runtime/tool-adapter.d.ts +1 -1
  59. package/dist/runtime/tool-adapter.js +5 -4
  60. package/dist/runtime/tool-adapter.js.map +1 -1
  61. package/dist/sdk/agent.d.ts +10 -0
  62. package/dist/sdk/agent.js +77 -11
  63. package/dist/sdk/agent.js.map +1 -1
  64. package/dist/sdk/memory.d.ts +6 -2
  65. package/dist/sdk/memory.js +57 -3
  66. package/dist/sdk/memory.js.map +1 -1
  67. package/dist/sdk/telemetry.d.ts +1 -0
  68. package/dist/sdk/telemetry.js +7 -0
  69. package/dist/sdk/telemetry.js.map +1 -1
  70. package/dist/skills/index.d.ts +6 -0
  71. package/dist/skills/index.js +29 -0
  72. package/dist/skills/index.js.map +1 -0
  73. package/dist/skills/prompt.d.ts +6 -0
  74. package/dist/skills/prompt.js +49 -0
  75. package/dist/skills/prompt.js.map +1 -0
  76. package/dist/skills/registry.d.ts +14 -0
  77. package/dist/skills/registry.js +380 -0
  78. package/dist/skills/registry.js.map +1 -0
  79. package/dist/skills/tools.d.ts +6 -0
  80. package/dist/skills/tools.js +312 -0
  81. package/dist/skills/tools.js.map +1 -0
  82. package/dist/skills/types.d.ts +141 -0
  83. package/dist/skills/types.js +15 -0
  84. package/dist/skills/types.js.map +1 -0
  85. package/dist/skills/validator.d.ts +15 -0
  86. package/dist/skills/validator.js +336 -0
  87. package/dist/skills/validator.js.map +1 -0
  88. package/dist/types/index.d.ts +4 -4
  89. package/dist/types/index.js +1 -3
  90. package/dist/types/index.js.map +1 -1
  91. package/dist/types/runtime/event.d.ts +1 -1
  92. package/dist/types/sdk/agent-builder.d.ts +4 -1
  93. package/dist/types/sdk/agent.d.ts +2 -1
  94. package/dist/types/sdk/memory.d.ts +153 -2
  95. package/dist/types/sdk/observation-log.d.ts +7 -10
  96. package/dist/types/sdk/observation-log.js +0 -9
  97. package/dist/types/sdk/observation-log.js.map +1 -1
  98. package/dist/types/sdk/observation.d.ts +1 -4
  99. package/dist/workspace/tools/execute-command.js +2 -0
  100. package/dist/workspace/tools/execute-command.js.map +1 -1
  101. package/dist/workspace/types.d.ts +1 -0
  102. package/dist/workspace/types.js.map +1 -1
  103. package/package.json +28 -3
@@ -0,0 +1,479 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.RECALL_MEMORY_TOOL_NAME = void 0;
37
+ exports.isEpisodicMemoryEnabled = isEpisodicMemoryEnabled;
38
+ exports.hasEpisodicMemoryStore = hasEpisodicMemoryStore;
39
+ exports.withEpisodicMemoryDefaults = withEpisodicMemoryDefaults;
40
+ exports.runEpisodicMemoryIndexer = runEpisodicMemoryIndexer;
41
+ exports.createRecallMemoryTool = createRecallMemoryTool;
42
+ exports.rankEpisodicMemoryEntries = rankEpisodicMemoryEntries;
43
+ exports.hashEpisodicMemoryContent = hashEpisodicMemoryContent;
44
+ exports.hashEpisodicMemoryEvidence = hashEpisodicMemoryEvidence;
45
+ exports.getEpisodicMemoryScope = getEpisodicMemoryScope;
46
+ const crypto_1 = require("crypto");
47
+ const zod_1 = require("zod");
48
+ const episodic_memory_defaults_1 = require("./episodic-memory-defaults");
49
+ const execution_counter_1 = require("./execution-counter");
50
+ const memory_lifecycle_1 = require("./memory-lifecycle");
51
+ const observation_log_renderer_1 = require("./observation-log-renderer");
52
+ const tool_1 = require("../sdk/tool");
53
+ exports.RECALL_MEMORY_TOOL_NAME = 'recall_memory';
54
+ const RRF_K = 60;
55
+ const RECENCY_RRF_WEIGHT = 1;
56
+ const MIN_VECTOR_RELEVANCE_SCORE = 0.2;
57
+ const RecallMemoryInputSchema = zod_1.z.object({
58
+ query: zod_1.z.string().min(1),
59
+ });
60
+ const RecallMemoryOutputSchema = zod_1.z.object({
61
+ entries: zod_1.z.array(zod_1.z.object({
62
+ id: zod_1.z.string(),
63
+ content: zod_1.z.string(),
64
+ createdAt: zod_1.z.string(),
65
+ lexicalScore: zod_1.z.number(),
66
+ vectorScore: zod_1.z.number(),
67
+ rrfScore: zod_1.z.number(),
68
+ finalScore: zod_1.z.number(),
69
+ })),
70
+ });
71
+ function isEpisodicMemoryEnabled(config) {
72
+ return config !== undefined && config.enabled !== false;
73
+ }
74
+ function hasEpisodicMemoryStore(memory) {
75
+ const episodic = memory.episodic;
76
+ return (episodic !== undefined &&
77
+ typeof episodic.saveEntryWithSources === 'function' &&
78
+ typeof episodic.searchEntries === 'function' &&
79
+ typeof episodic.getEntrySources === 'function' &&
80
+ typeof episodic.applyReflection === 'function' &&
81
+ typeof episodic.getCursor === 'function' &&
82
+ typeof episodic.setCursor === 'function');
83
+ }
84
+ function withEpisodicMemoryDefaults(config) {
85
+ if (!config.embedder) {
86
+ throw new Error('Episodic memory requires a resolved embedding model before runtime use.');
87
+ }
88
+ return {
89
+ topK: config.topK ?? episodic_memory_defaults_1.DEFAULT_EPISODIC_MEMORY_TOP_K,
90
+ maxEntriesPerRun: config.maxEntriesPerRun ?? episodic_memory_defaults_1.DEFAULT_EPISODIC_MEMORY_MAX_ENTRIES_PER_RUN,
91
+ embedder: config.embedder,
92
+ embeddingModel: config.embeddingModel ?? 'custom',
93
+ extract: config.extract,
94
+ reflect: config.reflect,
95
+ recallToolInstruction: config.prompts?.recallToolInstruction ?? episodic_memory_defaults_1.DEFAULT_EPISODIC_MEMORY_RECALL_TOOL_INSTRUCTION,
96
+ };
97
+ }
98
+ async function runEpisodicMemoryIndexer(opts) {
99
+ if (!isEpisodicMemoryEnabled(opts.config))
100
+ return { status: 'skipped', reason: 'disabled' };
101
+ const normalized = withEpisodicMemoryDefaults(opts.config);
102
+ if (!normalized.extract)
103
+ return { status: 'skipped', reason: 'no-extract' };
104
+ const observations = await getNewActiveObservations(opts.memory, opts.observationScope);
105
+ if (observations.length === 0)
106
+ return { status: 'skipped', reason: 'no-observations' };
107
+ const renderedObservations = (0, observation_log_renderer_1.renderObservationLog)(observations) ?? '';
108
+ const existingEntries = await opts.memory.episodic.searchEntries(opts.scope, observations.map((entry) => entry.text).join('\n'), { topK: Math.max(normalized.topK, 20) });
109
+ const extraction = await normalized.extract({
110
+ scope: opts.scope,
111
+ observationScope: opts.observationScope,
112
+ now: opts.now ?? new Date(),
113
+ observations,
114
+ renderedObservations,
115
+ existingEntries,
116
+ executionCounter: opts.executionCounter,
117
+ });
118
+ const candidates = validateCandidates(extraction.entries, observations).slice(0, normalized.maxEntriesPerRun);
119
+ const savedEntries = [];
120
+ if (candidates.length > 0) {
121
+ const { embedMany } = await Promise.resolve().then(() => __importStar(require('ai')));
122
+ const { embeddings, usage } = await embedMany({
123
+ model: normalized.embedder,
124
+ values: candidates.map((entry) => entry.content),
125
+ });
126
+ (0, execution_counter_1.incrementTokenCountFromUsage)(opts.executionCounter, usage);
127
+ for (const [index, candidate] of candidates.entries()) {
128
+ const saved = await saveCandidate(opts, normalized, candidate, embeddings[index]);
129
+ if (saved)
130
+ savedEntries.push(saved);
131
+ }
132
+ }
133
+ if (savedEntries.length > 0 && normalized.reflect) {
134
+ await runEpisodicMemoryReflection(opts, normalized, savedEntries, observations);
135
+ }
136
+ await advanceEpisodicCursor(opts.memory, opts.observationScope, observations);
137
+ return {
138
+ status: 'ran',
139
+ entriesWritten: savedEntries.length,
140
+ observationsIndexed: observations.length,
141
+ };
142
+ }
143
+ function createRecallMemoryTool(opts) {
144
+ const normalized = withEpisodicMemoryDefaults(opts.config);
145
+ return new tool_1.Tool(exports.RECALL_MEMORY_TOOL_NAME)
146
+ .description('Recall source-backed prior-session entries for explicit asks about previous conversations, earlier decisions, exact names, prior artifacts, remembered details, or similar historical situations.')
147
+ .systemInstruction(normalized.recallToolInstruction)
148
+ .input(RecallMemoryInputSchema)
149
+ .output(RecallMemoryOutputSchema)
150
+ .handler(async ({ query }) => {
151
+ const { embed } = await Promise.resolve().then(() => __importStar(require('ai')));
152
+ const { embedding: queryEmbedding, usage } = await embed({
153
+ model: normalized.embedder,
154
+ value: query,
155
+ });
156
+ (0, execution_counter_1.incrementTokenCountFromUsage)(opts.executionCounter, usage);
157
+ const entries = await opts.memory.episodic.searchEntries(opts.scope, query, {
158
+ topK: normalized.topK,
159
+ queryEmbedding,
160
+ });
161
+ return { entries: entries.map(toRecallToolEntry) };
162
+ })
163
+ .toModelOutput((output) => ({
164
+ entries: output.entries.map((entry) => ({
165
+ content: `Prior/historical entry: ${entry.content}`,
166
+ createdAt: entry.createdAt,
167
+ })),
168
+ }))
169
+ .build();
170
+ }
171
+ function rankEpisodicMemoryEntries(entries, query, opts = {}) {
172
+ const topK = opts.topK ?? episodic_memory_defaults_1.DEFAULT_EPISODIC_MEMORY_TOP_K;
173
+ const statuses = new Set(opts.includeStatuses ?? ['active']);
174
+ const candidates = entries.filter((entry) => statuses.has(entry.status));
175
+ const queryTokens = tokenize(query);
176
+ const lexical = candidates
177
+ .map((entry) => ({ entry, score: lexicalScore(queryTokens, tokenize(entry.content)) }))
178
+ .filter((item) => item.score > 0)
179
+ .sort(compareScoredEntries);
180
+ const vector = candidates
181
+ .map((entry) => ({
182
+ entry,
183
+ score: opts.queryEmbedding && entry.embedding
184
+ ? cosineSimilarity(opts.queryEmbedding, entry.embedding)
185
+ : 0,
186
+ }))
187
+ .filter((item) => item.score >= MIN_VECTOR_RELEVANCE_SCORE)
188
+ .sort(compareScoredEntries);
189
+ const relevantIds = new Set([
190
+ ...lexical.map((item) => item.entry.id),
191
+ ...vector.map((item) => item.entry.id),
192
+ ]);
193
+ const recency = candidates
194
+ .filter((entry) => relevantIds.has(entry.id))
195
+ .sort((a, b) => getEntryRecencyDate(b).getTime() - getEntryRecencyDate(a).getTime());
196
+ const scores = new Map();
197
+ for (const entry of candidates) {
198
+ scores.set(entry.id, { entry, lexicalScore: 0, vectorScore: 0, rrfScore: 0 });
199
+ }
200
+ for (let rank = 0; rank < lexical.length; rank++) {
201
+ const score = scores.get(lexical[rank].entry.id);
202
+ if (!score)
203
+ continue;
204
+ score.lexicalScore = lexical[rank].score;
205
+ score.rrfScore += 1 / (RRF_K + rank + 1);
206
+ }
207
+ for (let rank = 0; rank < vector.length; rank++) {
208
+ const score = scores.get(vector[rank].entry.id);
209
+ if (!score)
210
+ continue;
211
+ score.vectorScore = vector[rank].score;
212
+ score.rrfScore += 1 / (RRF_K + rank + 1);
213
+ }
214
+ for (let rank = 0; rank < recency.length; rank++) {
215
+ const score = scores.get(recency[rank].id);
216
+ if (!score)
217
+ continue;
218
+ score.rrfScore += RECENCY_RRF_WEIGHT / (RRF_K + rank + 1);
219
+ }
220
+ return [...scores.values()]
221
+ .filter((score) => score.rrfScore > 0)
222
+ .map((score) => ({
223
+ ...score.entry,
224
+ lexicalScore: score.lexicalScore,
225
+ vectorScore: score.vectorScore,
226
+ rrfScore: score.rrfScore,
227
+ finalScore: score.rrfScore,
228
+ }))
229
+ .sort((a, b) => b.finalScore - a.finalScore ||
230
+ getEntryRecencyDate(b).getTime() - getEntryRecencyDate(a).getTime())
231
+ .slice(0, topK);
232
+ }
233
+ function hashEpisodicMemoryContent(content) {
234
+ return (0, crypto_1.createHash)('sha256').update(normalizeHashContent(content)).digest('hex');
235
+ }
236
+ function hashEpisodicMemoryEvidence(evidenceText) {
237
+ return (0, crypto_1.createHash)('sha256').update(normalizeHashContent(evidenceText)).digest('hex');
238
+ }
239
+ function requireEpisodicMemoryScope(persistence) {
240
+ if (!persistence?.resourceId)
241
+ return null;
242
+ return { resourceId: persistence.resourceId };
243
+ }
244
+ function getEpisodicMemoryScope(persistence) {
245
+ return requireEpisodicMemoryScope(persistence);
246
+ }
247
+ async function getNewActiveObservations(memory, scope) {
248
+ if (!('getActiveObservationLog' in memory) ||
249
+ typeof memory.getActiveObservationLog !== 'function') {
250
+ return [];
251
+ }
252
+ const observationMemory = memory;
253
+ const [cursor, active] = await Promise.all([
254
+ memory.episodic.getCursor(scope),
255
+ observationMemory.getActiveObservationLog({ ...scope, order: 'asc' }),
256
+ ]);
257
+ if (!cursor)
258
+ return active;
259
+ return active.filter((entry) => compareKeyset({ createdAt: entry.createdAt, id: entry.id }, {
260
+ createdAt: cursor.lastIndexedObservationCreatedAt,
261
+ id: cursor.lastIndexedObservationId,
262
+ }) > 0);
263
+ }
264
+ async function saveCandidate(opts, config, candidate, embedding) {
265
+ const now = opts.now ?? new Date();
266
+ return await opts.memory.episodic.saveEntryWithSources({
267
+ ...opts.scope,
268
+ content: candidate.content,
269
+ contentHash: hashEpisodicMemoryContent(candidate.content),
270
+ embedding,
271
+ embeddingModel: config.embeddingModel,
272
+ createdAt: now,
273
+ lastSeenAt: now,
274
+ }, candidate.sources.map((source) => ({
275
+ observationId: source.observationId,
276
+ threadId: opts.threadId,
277
+ evidenceText: source.evidence,
278
+ createdAt: now,
279
+ })));
280
+ }
281
+ async function runEpisodicMemoryReflection(opts, config, savedEntries, observations) {
282
+ if (!config.reflect)
283
+ return;
284
+ const cluster = await buildReflectionCluster(opts, config, savedEntries, observations);
285
+ if (cluster.length === 0)
286
+ return;
287
+ const sources = await opts.memory.episodic.getEntrySources(cluster.map((entry) => entry.id));
288
+ const reflection = normalizeEpisodicMemoryReflection(cluster, await config.reflect({
289
+ scope: opts.scope,
290
+ now: opts.now ?? new Date(),
291
+ seedEntryIds: savedEntries.map((entry) => entry.id),
292
+ entries: cluster,
293
+ sources,
294
+ executionCounter: opts.executionCounter,
295
+ }));
296
+ if (reflection.drop.length === 0 && reflection.merge.length === 0)
297
+ return;
298
+ const mergeContents = reflection.merge.map((entry) => entry.content);
299
+ let mergeEmbeddings = [];
300
+ if (mergeContents.length > 0) {
301
+ const { embedMany } = await Promise.resolve().then(() => __importStar(require('ai')));
302
+ const { embeddings, usage } = await embedMany({
303
+ model: config.embedder,
304
+ values: mergeContents,
305
+ });
306
+ mergeEmbeddings = embeddings;
307
+ (0, execution_counter_1.incrementTokenCountFromUsage)(opts.executionCounter, usage);
308
+ }
309
+ await opts.memory.episodic.applyReflection(opts.scope, {
310
+ drop: reflection.drop,
311
+ merge: reflection.merge.map((merge, index) => ({
312
+ supersedes: merge.supersedes,
313
+ entry: {
314
+ ...opts.scope,
315
+ content: merge.content,
316
+ contentHash: hashEpisodicMemoryContent(merge.content),
317
+ embedding: mergeEmbeddings[index],
318
+ embeddingModel: config.embeddingModel,
319
+ createdAt: opts.now ?? new Date(),
320
+ lastSeenAt: opts.now ?? new Date(),
321
+ },
322
+ })),
323
+ });
324
+ }
325
+ async function buildReflectionCluster(opts, config, savedEntries, observations) {
326
+ const query = [
327
+ ...savedEntries.map((entry) => entry.content),
328
+ ...observations.map((entry) => entry.text),
329
+ ].join('\n');
330
+ const related = await opts.memory.episodic.searchEntries(opts.scope, query, {
331
+ topK: Math.max(config.topK, 20),
332
+ });
333
+ const relatedById = new Map(related.map((entry) => [entry.id, entry]));
334
+ for (const saved of savedEntries) {
335
+ if (saved.status !== 'active' || relatedById.has(saved.id))
336
+ continue;
337
+ relatedById.set(saved.id, toRetrievedEntry(saved));
338
+ }
339
+ return [...relatedById.values()];
340
+ }
341
+ function normalizeEpisodicMemoryReflection(activeEntries, reflection) {
342
+ const activeIds = new Set(activeEntries.filter((entry) => entry.status === 'active').map((entry) => entry.id));
343
+ return (0, memory_lifecycle_1.normalizeFlatReflectionActions)({
344
+ activeIds,
345
+ drop: reflection.drop,
346
+ merge: reflection.merge,
347
+ normalizeMerge: (entry, supersedes) => {
348
+ const content = normalizeEntryContent(entry.content);
349
+ return content ? { supersedes, content } : null;
350
+ },
351
+ });
352
+ }
353
+ async function advanceEpisodicCursor(memory, scope, observations) {
354
+ const last = observations.at(-1);
355
+ if (!last)
356
+ return;
357
+ await memory.episodic.setCursor({
358
+ ...scope,
359
+ lastIndexedObservationId: last.id,
360
+ lastIndexedObservationCreatedAt: last.createdAt,
361
+ });
362
+ }
363
+ function validateCandidates(candidates, observations) {
364
+ const observationsById = new Map(observations.map((entry) => [entry.id, entry]));
365
+ const valid = [];
366
+ for (const candidate of candidates) {
367
+ const sourceKeys = new Set();
368
+ const sources = candidate.sources.flatMap((source) => {
369
+ const evidence = source.evidence.trim();
370
+ if (!evidence)
371
+ return [];
372
+ const observation = observationsById.get(source.observationId);
373
+ if (!observation?.text.includes(evidence))
374
+ return [];
375
+ const key = `${source.observationId}\n${evidence}`;
376
+ if (sourceKeys.has(key))
377
+ return [];
378
+ sourceKeys.add(key);
379
+ return [{ observationId: source.observationId, evidence }];
380
+ });
381
+ if (sources.length === 0)
382
+ continue;
383
+ const content = normalizeEntryContent(candidate.content);
384
+ if (!content)
385
+ continue;
386
+ const evidenceText = sources.map((source) => source.evidence).join('\n');
387
+ const sourceText = sources
388
+ .map((source) => observationsById.get(source.observationId)?.text ?? '')
389
+ .join('\n');
390
+ if (isFailedRecallCandidate(content, evidenceText, sourceText))
391
+ continue;
392
+ valid.push({
393
+ content,
394
+ sources,
395
+ });
396
+ }
397
+ return valid;
398
+ }
399
+ function isFailedRecallCandidate(content, evidence, sourceText) {
400
+ const text = `${content}\n${evidence}\n${sourceText}`.toLowerCase();
401
+ if (!/\b(memory|recall|prior notes|saved decisions)\b/.test(text))
402
+ return false;
403
+ return [
404
+ /no (?:entries|memory entries|prior notes|saved decisions|matching memory entries) (?:were )?found/,
405
+ /queried memory[^.]*no entries/,
406
+ /memory lookup[^.]*no saved/,
407
+ /could not (?:reliably )?(?:recover|confirm|recall)/,
408
+ /re-establish(?:ing)? .* baseline/,
409
+ ].some((pattern) => pattern.test(text));
410
+ }
411
+ function normalizeEntryContent(content) {
412
+ return content.replace(/\s+/g, ' ').trim();
413
+ }
414
+ function normalizeHashContent(content) {
415
+ return content.replace(/\s+/g, ' ').trim().toLowerCase();
416
+ }
417
+ function tokenize(text) {
418
+ return text
419
+ .toLowerCase()
420
+ .split(/[^a-z0-9_@./-]+/i)
421
+ .map((token) => token.trim())
422
+ .filter((token) => token.length > 1);
423
+ }
424
+ function lexicalScore(queryTokens, entryTokens) {
425
+ if (queryTokens.length === 0 || entryTokens.length === 0)
426
+ return 0;
427
+ const entryTokenSet = new Set(entryTokens);
428
+ const matches = queryTokens.filter((token) => entryTokenSet.has(token)).length;
429
+ return matches / Math.sqrt(entryTokens.length);
430
+ }
431
+ function cosineSimilarity(a, b) {
432
+ if (a.length !== b.length || a.length === 0)
433
+ return 0;
434
+ let dot = 0;
435
+ let aMagnitude = 0;
436
+ let bMagnitude = 0;
437
+ for (let index = 0; index < a.length; index++) {
438
+ dot += a[index] * b[index];
439
+ aMagnitude += a[index] * a[index];
440
+ bMagnitude += b[index] * b[index];
441
+ }
442
+ if (aMagnitude === 0 || bMagnitude === 0)
443
+ return 0;
444
+ return dot / (Math.sqrt(aMagnitude) * Math.sqrt(bMagnitude));
445
+ }
446
+ function getEntryRecencyDate(entry) {
447
+ return entry.lastSeenAt ?? entry.createdAt;
448
+ }
449
+ function compareScoredEntries(a, b) {
450
+ return (b.score - a.score ||
451
+ getEntryRecencyDate(b.entry).getTime() - getEntryRecencyDate(a.entry).getTime());
452
+ }
453
+ function compareKeyset(a, b) {
454
+ const t = a.createdAt.getTime() - b.createdAt.getTime();
455
+ if (t !== 0)
456
+ return t;
457
+ return a.id.localeCompare(b.id);
458
+ }
459
+ function toRecallToolEntry(entry) {
460
+ return {
461
+ id: entry.id,
462
+ content: entry.content,
463
+ createdAt: entry.createdAt.toISOString(),
464
+ lexicalScore: entry.lexicalScore,
465
+ vectorScore: entry.vectorScore,
466
+ rrfScore: entry.rrfScore,
467
+ finalScore: entry.finalScore,
468
+ };
469
+ }
470
+ function toRetrievedEntry(entry) {
471
+ return {
472
+ ...entry,
473
+ lexicalScore: 0,
474
+ vectorScore: 0,
475
+ rrfScore: 0,
476
+ finalScore: 0,
477
+ };
478
+ }
479
+ //# sourceMappingURL=episodic-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"episodic-memory.js","sourceRoot":"","sources":["../../src/runtime/episodic-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AgentExecutionCounter } from '../types/sdk/agent';
2
+ interface TokenUsageLike {
3
+ totalTokens?: number;
4
+ inputTokens?: number;
5
+ outputTokens?: number;
6
+ tokens?: number;
7
+ }
8
+ export declare function incrementTokenCountFromUsage(counter: AgentExecutionCounter | undefined, usage: TokenUsageLike | undefined): void;
9
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.incrementTokenCountFromUsage = incrementTokenCountFromUsage;
4
+ function incrementTokenCountFromUsage(counter, usage) {
5
+ if (!counter || !usage)
6
+ return;
7
+ const tokenCount = usage.totalTokens ?? usage.tokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
8
+ if (tokenCount <= 0)
9
+ return;
10
+ try {
11
+ counter.incrementTokenCount(tokenCount);
12
+ }
13
+ catch {
14
+ }
15
+ }
16
+ //# sourceMappingURL=execution-counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-counter.js","sourceRoot":"","sources":["../../src/runtime/execution-counter.ts"],"names":[],"mappings":";;AASA,oEAcC;AAdD,SAAgB,4BAA4B,CAC3C,OAA0C,EAC1C,KAAiC;IAEjC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;QAAE,OAAO;IAC/B,MAAM,UAAU,GACf,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IAC3F,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO;IAE5B,IAAI,CAAC;QACJ,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ToolCall } from '@ai-sdk/provider-utils';
2
+ import type { InvalidToolInputError, NoSuchToolError, ToolCallRepairFunction, ToolSet } from 'ai';
3
+ import type { BuiltTool } from '../types';
4
+ export declare const fixToolCall: (options: {
5
+ toolCall: ToolCall<string, unknown>;
6
+ error: NoSuchToolError | InvalidToolInputError;
7
+ }, toolMap: Map<string, BuiltTool>) => ReturnType<ToolCallRepairFunction<NoInfer<ToolSet>>>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fixToolCall = void 0;
4
+ const zod_1 = require("../utils/zod");
5
+ const isZodEmptyObject = (schema) => {
6
+ if (!(0, zod_1.isZodSchema)(schema))
7
+ return false;
8
+ const typeName = schema._def.typeName;
9
+ const shape = 'shape' in schema && typeName === 'ZodObject' ? schema.shape : undefined;
10
+ if (typeof shape === 'object' && shape !== null && Object.keys(shape).length === 0) {
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+ const isEmptyInputError = (tool, toolCall) => {
16
+ const isNullInput = toolCall.input === 'null' || toolCall.input === null;
17
+ const isEmtpyInputError = isZodEmptyObject(tool.inputSchema) && isNullInput;
18
+ return isEmtpyInputError && isNullInput;
19
+ };
20
+ const fixToolCall = async (options, toolMap) => {
21
+ const tool = toolMap.get(options.toolCall.toolName);
22
+ const isInvalidToolInputError = options.error.name === 'AI_InvalidToolInputError';
23
+ if (!tool || !isInvalidToolInputError || options.toolCall.providerExecuted)
24
+ return null;
25
+ if (isEmptyInputError(tool, options.toolCall)) {
26
+ return {
27
+ type: 'tool-call',
28
+ toolCallId: options.toolCall.toolCallId,
29
+ toolName: options.toolCall.toolName,
30
+ input: '{}',
31
+ providerExecuted: false,
32
+ dynamic: options.toolCall.dynamic,
33
+ };
34
+ }
35
+ return null;
36
+ };
37
+ exports.fixToolCall = fixToolCall;
38
+ //# sourceMappingURL=fix-tool-call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-tool-call.js","sourceRoot":"","sources":["../../src/runtime/fix-tool-call.ts"],"names":[],"mappings":";;;AAIA,sCAA2C;AAE3C,MAAM,gBAAgB,GAAG,CAAC,MAAe,EAAE,EAAE;IAC5C,IAAI,CAAC,IAAA,iBAAW,EAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,QAAQ,GAAI,MAAM,CAAC,IAA8B,CAAC,QAAQ,CAAC;IACjE,MAAM,KAAK,GAAG,OAAO,IAAI,MAAM,IAAI,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAe,EAAE,QAAmC,EAAE,EAAE;IAClF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,KAAK,MAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;IACzE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;IAC5E,OAAO,iBAAiB,IAAI,WAAW,CAAC;AACzC,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,KAAK,EAC/B,OAGC,EACD,OAA+B,EAEwB,EAAE;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,0BAA0B,CAAC;IAClF,IAAI,CAAC,IAAI,IAAI,CAAC,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAExF,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,OAAO;YACN,IAAI,EAAE,WAAoB;YAC1B,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;YACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;YACnC,KAAK,EAAE,IAAI;YACX,gBAAgB,EAAE,KAAK;YACvB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;SACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAvBW,QAAA,WAAW,eAuBtB"}
@@ -0,0 +1,2 @@
1
+ import type * as AiSdk from 'ai';
2
+ export declare function loadAi(): typeof AiSdk;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadAi = loadAi;
4
+ let _aiMod;
5
+ function loadAi() {
6
+ if (!_aiMod) {
7
+ const mod = require('ai');
8
+ _aiMod = mod;
9
+ }
10
+ return _aiMod;
11
+ }
12
+ //# sourceMappingURL=lazy-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-ai.js","sourceRoot":"","sources":["../../src/runtime/lazy-ai.ts"],"names":[],"mappings":";;AAIA,wBAOC;AATD,IAAI,MAAgC,CAAC;AAErC,SAAgB,MAAM;IACrB,IAAI,CAAC,MAAM,EAAE,CAAC;QAEb,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAiB,CAAC;QAC1C,MAAM,GAAG,GAAG,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
1
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
2
  import type { McpServerConfig } from '../types/sdk/mcp';
3
3
  import type { BuiltTool } from '../types/sdk/tool';
4
4
  export type McpCallToolResult = CallToolResult;