@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.
- package/dist/build.tsbuildinfo +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.js +57 -4
- package/dist/index.js.map +1 -1
- package/dist/integrations/langsmith.js +28 -2
- package/dist/integrations/langsmith.js.map +1 -1
- package/dist/runtime/agent-runtime.d.ts +12 -1
- package/dist/runtime/agent-runtime.js +243 -119
- package/dist/runtime/agent-runtime.js.map +1 -1
- package/dist/runtime/episodic-memory-defaults.d.ts +17 -0
- package/dist/runtime/episodic-memory-defaults.js +615 -0
- package/dist/runtime/episodic-memory-defaults.js.map +1 -0
- package/dist/runtime/episodic-memory.d.ts +45 -0
- package/dist/runtime/episodic-memory.js +479 -0
- package/dist/runtime/episodic-memory.js.map +1 -0
- package/dist/runtime/execution-counter.d.ts +9 -0
- package/dist/runtime/execution-counter.js +16 -0
- package/dist/runtime/execution-counter.js.map +1 -0
- package/dist/runtime/fix-tool-call.d.ts +7 -0
- package/dist/runtime/fix-tool-call.js +38 -0
- package/dist/runtime/fix-tool-call.js.map +1 -0
- package/dist/runtime/lazy-ai.d.ts +2 -0
- package/dist/runtime/lazy-ai.js +12 -0
- package/dist/runtime/lazy-ai.js.map +1 -0
- package/dist/runtime/mcp-connection.d.ts +1 -1
- package/dist/runtime/mcp-connection.js +71 -16
- package/dist/runtime/mcp-connection.js.map +1 -1
- package/dist/runtime/memory-lifecycle.d.ts +34 -0
- package/dist/runtime/memory-lifecycle.js +63 -0
- package/dist/runtime/memory-lifecycle.js.map +1 -0
- package/dist/runtime/memory-store.d.ts +22 -7
- package/dist/runtime/memory-store.js +240 -50
- package/dist/runtime/memory-store.js.map +1 -1
- package/dist/runtime/message-list.d.ts +1 -0
- package/dist/runtime/message-list.js +5 -0
- package/dist/runtime/message-list.js.map +1 -1
- package/dist/runtime/messages.js +14 -1
- package/dist/runtime/messages.js.map +1 -1
- package/dist/runtime/model-factory.d.ts +5 -1
- package/dist/runtime/model-factory.js +3 -2
- package/dist/runtime/model-factory.js.map +1 -1
- package/dist/runtime/observation-log-defaults.js +6 -5
- package/dist/runtime/observation-log-defaults.js.map +1 -1
- package/dist/runtime/observation-log-observer.d.ts +7 -13
- package/dist/runtime/observation-log-observer.js +11 -21
- package/dist/runtime/observation-log-observer.js.map +1 -1
- package/dist/runtime/observation-log-reflector.d.ts +5 -5
- package/dist/runtime/observation-log-reflector.js +9 -21
- package/dist/runtime/observation-log-reflector.js.map +1 -1
- package/dist/runtime/scoped-memory-task-runner.d.ts +2 -4
- package/dist/runtime/scoped-memory-task-runner.js +3 -7
- package/dist/runtime/scoped-memory-task-runner.js.map +1 -1
- package/dist/runtime/stream.js +11 -1
- package/dist/runtime/stream.js.map +1 -1
- package/dist/runtime/title-generation.d.ts +5 -2
- package/dist/runtime/title-generation.js +7 -3
- package/dist/runtime/title-generation.js.map +1 -1
- package/dist/runtime/tool-adapter.d.ts +1 -1
- package/dist/runtime/tool-adapter.js +5 -4
- package/dist/runtime/tool-adapter.js.map +1 -1
- package/dist/sdk/agent.d.ts +10 -0
- package/dist/sdk/agent.js +77 -11
- package/dist/sdk/agent.js.map +1 -1
- package/dist/sdk/memory.d.ts +6 -2
- package/dist/sdk/memory.js +57 -3
- package/dist/sdk/memory.js.map +1 -1
- package/dist/sdk/telemetry.d.ts +1 -0
- package/dist/sdk/telemetry.js +7 -0
- package/dist/sdk/telemetry.js.map +1 -1
- package/dist/skills/index.d.ts +6 -0
- package/dist/skills/index.js +29 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/prompt.d.ts +6 -0
- package/dist/skills/prompt.js +49 -0
- package/dist/skills/prompt.js.map +1 -0
- package/dist/skills/registry.d.ts +14 -0
- package/dist/skills/registry.js +380 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/tools.d.ts +6 -0
- package/dist/skills/tools.js +312 -0
- package/dist/skills/tools.js.map +1 -0
- package/dist/skills/types.d.ts +141 -0
- package/dist/skills/types.js +15 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validator.d.ts +15 -0
- package/dist/skills/validator.js +336 -0
- package/dist/skills/validator.js.map +1 -0
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.js +1 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/runtime/event.d.ts +1 -1
- package/dist/types/sdk/agent-builder.d.ts +4 -1
- package/dist/types/sdk/agent.d.ts +2 -1
- package/dist/types/sdk/memory.d.ts +153 -2
- package/dist/types/sdk/observation-log.d.ts +7 -10
- package/dist/types/sdk/observation-log.js +0 -9
- package/dist/types/sdk/observation-log.js.map +1 -1
- package/dist/types/sdk/observation.d.ts +1 -4
- package/dist/workspace/tools/execute-command.js +2 -0
- package/dist/workspace/tools/execute-command.js.map +1 -1
- package/dist/workspace/types.d.ts +1 -0
- package/dist/workspace/types.js.map +1 -1
- package/package.json +28 -3
|
@@ -1,13 +1,58 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.McpConnection = void 0;
|
|
4
|
-
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
5
|
-
const sse_js_1 = require("@modelcontextprotocol/sdk/client/sse.js");
|
|
6
|
-
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
7
|
-
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
|
|
8
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
9
37
|
const mcp_tool_resolver_1 = require("./mcp-tool-resolver");
|
|
10
38
|
const tool_1 = require("../sdk/tool");
|
|
39
|
+
let mcpSdkPromise;
|
|
40
|
+
async function loadMcpSdk() {
|
|
41
|
+
mcpSdkPromise ??= Promise.all([
|
|
42
|
+
Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/client/index.js'))),
|
|
43
|
+
Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/client/sse.js'))),
|
|
44
|
+
Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/client/stdio.js'))),
|
|
45
|
+
Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/client/streamableHttp.js'))),
|
|
46
|
+
Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/types.js'))),
|
|
47
|
+
]).then(([{ Client }, { SSEClientTransport }, { StdioClientTransport }, { StreamableHTTPClientTransport }, { CallToolResultSchema },]) => ({
|
|
48
|
+
Client,
|
|
49
|
+
SSEClientTransport,
|
|
50
|
+
StdioClientTransport,
|
|
51
|
+
StreamableHTTPClientTransport,
|
|
52
|
+
CallToolResultSchema,
|
|
53
|
+
}));
|
|
54
|
+
return await mcpSdkPromise;
|
|
55
|
+
}
|
|
11
56
|
class McpConnection {
|
|
12
57
|
constructor(config, requireToolApproval = false) {
|
|
13
58
|
this.connectionPromise = undefined;
|
|
@@ -15,13 +60,14 @@ class McpConnection {
|
|
|
15
60
|
this.closed = false;
|
|
16
61
|
this.config = config;
|
|
17
62
|
this.shouldRequireToolApproval = requireToolApproval;
|
|
18
|
-
this.client = new index_js_1.Client({ name: '@n8n/agents', version: '0.1.0' }, { capabilities: {} });
|
|
19
63
|
}
|
|
20
64
|
async connect() {
|
|
21
65
|
if (this.connectionPromise !== undefined) {
|
|
22
66
|
return await this.connectionPromise;
|
|
23
67
|
}
|
|
24
|
-
|
|
68
|
+
const sdk = await loadMcpSdk();
|
|
69
|
+
this.client = new sdk.Client({ name: '@n8n/agents', version: '0.1.0' }, { capabilities: {} });
|
|
70
|
+
this.connectionPromise = this.connectWithTransport(this.createTransport(this.config, sdk));
|
|
25
71
|
try {
|
|
26
72
|
await this.connectionPromise;
|
|
27
73
|
}
|
|
@@ -31,9 +77,12 @@ class McpConnection {
|
|
|
31
77
|
}
|
|
32
78
|
}
|
|
33
79
|
async connectWithTransport(transport) {
|
|
80
|
+
if (!this.client)
|
|
81
|
+
throw new Error('MCP client not initialized; connect() must be called first');
|
|
82
|
+
const client = this.client;
|
|
34
83
|
const timeoutMs = this.config.connectionTimeoutMs;
|
|
35
84
|
if (timeoutMs === undefined) {
|
|
36
|
-
await
|
|
85
|
+
await client.connect(transport);
|
|
37
86
|
return;
|
|
38
87
|
}
|
|
39
88
|
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
@@ -42,7 +91,7 @@ class McpConnection {
|
|
|
42
91
|
let timeoutId;
|
|
43
92
|
try {
|
|
44
93
|
await Promise.race([
|
|
45
|
-
|
|
94
|
+
client.connect(transport),
|
|
46
95
|
new Promise((_, reject) => {
|
|
47
96
|
timeoutId = setTimeout(() => {
|
|
48
97
|
reject(new Error(`MCP server "${this.config.name}": connection timed out after ${timeoutMs}ms`));
|
|
@@ -51,7 +100,7 @@ class McpConnection {
|
|
|
51
100
|
]);
|
|
52
101
|
}
|
|
53
102
|
catch (error) {
|
|
54
|
-
await
|
|
103
|
+
await client.close().catch(() => { });
|
|
55
104
|
throw error;
|
|
56
105
|
}
|
|
57
106
|
finally {
|
|
@@ -60,6 +109,8 @@ class McpConnection {
|
|
|
60
109
|
}
|
|
61
110
|
}
|
|
62
111
|
async listTools() {
|
|
112
|
+
if (!this.client)
|
|
113
|
+
throw new Error('MCP client not initialized; connect() must be called first');
|
|
63
114
|
const result = await this.client.listTools();
|
|
64
115
|
const resolver = new mcp_tool_resolver_1.McpToolResolver();
|
|
65
116
|
const tools = resolver.resolve(this, result.tools);
|
|
@@ -83,7 +134,10 @@ class McpConnection {
|
|
|
83
134
|
return false;
|
|
84
135
|
}
|
|
85
136
|
async callTool(name, args) {
|
|
86
|
-
|
|
137
|
+
if (!this.client)
|
|
138
|
+
throw new Error('MCP client not initialized; connect() must be called first');
|
|
139
|
+
const { CallToolResultSchema } = await loadMcpSdk();
|
|
140
|
+
const result = await this.client.callTool({ name, arguments: args }, CallToolResultSchema);
|
|
87
141
|
return result;
|
|
88
142
|
}
|
|
89
143
|
async disconnect() {
|
|
@@ -99,7 +153,8 @@ class McpConnection {
|
|
|
99
153
|
async doDisconnect() {
|
|
100
154
|
if (this.closed)
|
|
101
155
|
return;
|
|
102
|
-
|
|
156
|
+
if (this.client)
|
|
157
|
+
await this.client.close();
|
|
103
158
|
this.connectionPromise = undefined;
|
|
104
159
|
this.closed = true;
|
|
105
160
|
}
|
|
@@ -110,9 +165,9 @@ class McpConnection {
|
|
|
110
165
|
const { requireApproval } = this.config;
|
|
111
166
|
return (requireApproval === true || (Array.isArray(requireApproval) && requireApproval.length > 0));
|
|
112
167
|
}
|
|
113
|
-
createTransport(config) {
|
|
168
|
+
createTransport(config, sdk) {
|
|
114
169
|
if (config.command) {
|
|
115
|
-
return new
|
|
170
|
+
return new sdk.StdioClientTransport({
|
|
116
171
|
command: config.command,
|
|
117
172
|
args: config.args,
|
|
118
173
|
env: config.env,
|
|
@@ -124,9 +179,9 @@ class McpConnection {
|
|
|
124
179
|
? { headers: config.headers }
|
|
125
180
|
: undefined;
|
|
126
181
|
if (config.transport === 'streamableHttp') {
|
|
127
|
-
return new
|
|
182
|
+
return new sdk.StreamableHTTPClientTransport(url, { requestInit });
|
|
128
183
|
}
|
|
129
|
-
return new
|
|
184
|
+
return new sdk.SSEClientTransport(url, { requestInit });
|
|
130
185
|
}
|
|
131
186
|
throw new Error(`MCP server "${config.name}": provide either "url" or "command"`);
|
|
132
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-connection.js","sourceRoot":"","sources":["../../src/runtime/mcp-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-connection.js","sourceRoot":"","sources":["../../src/runtime/mcp-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type MemoryLifecycleStatus = 'active' | 'superseded' | 'dropped';
|
|
2
|
+
export interface MemoryLifecycleState {
|
|
3
|
+
status: MemoryLifecycleStatus;
|
|
4
|
+
supersededBy: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function activeLifecycleState(): {
|
|
7
|
+
status: 'active';
|
|
8
|
+
supersededBy: null;
|
|
9
|
+
};
|
|
10
|
+
export declare function droppedLifecycleState(): {
|
|
11
|
+
status: 'dropped';
|
|
12
|
+
supersededBy: null;
|
|
13
|
+
};
|
|
14
|
+
export declare function supersededLifecycleState(supersededBy: string): {
|
|
15
|
+
status: 'superseded';
|
|
16
|
+
supersededBy: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function markLifecycleActive(entry: MemoryLifecycleState): void;
|
|
19
|
+
export declare function markLifecycleDropped(entry: MemoryLifecycleState): void;
|
|
20
|
+
export declare function markLifecycleSuperseded(entry: MemoryLifecycleState, supersededBy: string): void;
|
|
21
|
+
export declare function uniqueStrings(values: Iterable<string>): string[];
|
|
22
|
+
export declare function normalizeFlatReflectionActions<TInput extends {
|
|
23
|
+
supersedes: string[];
|
|
24
|
+
}, TOutput extends {
|
|
25
|
+
supersedes: string[];
|
|
26
|
+
}>(opts: {
|
|
27
|
+
activeIds: Iterable<string>;
|
|
28
|
+
drop: string[];
|
|
29
|
+
merge: TInput[];
|
|
30
|
+
normalizeMerge: (entry: TInput, supersedes: string[]) => TOutput | null;
|
|
31
|
+
}): {
|
|
32
|
+
drop: string[];
|
|
33
|
+
merge: TOutput[];
|
|
34
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.activeLifecycleState = activeLifecycleState;
|
|
4
|
+
exports.droppedLifecycleState = droppedLifecycleState;
|
|
5
|
+
exports.supersededLifecycleState = supersededLifecycleState;
|
|
6
|
+
exports.markLifecycleActive = markLifecycleActive;
|
|
7
|
+
exports.markLifecycleDropped = markLifecycleDropped;
|
|
8
|
+
exports.markLifecycleSuperseded = markLifecycleSuperseded;
|
|
9
|
+
exports.uniqueStrings = uniqueStrings;
|
|
10
|
+
exports.normalizeFlatReflectionActions = normalizeFlatReflectionActions;
|
|
11
|
+
function activeLifecycleState() {
|
|
12
|
+
return { status: 'active', supersededBy: null };
|
|
13
|
+
}
|
|
14
|
+
function droppedLifecycleState() {
|
|
15
|
+
return { status: 'dropped', supersededBy: null };
|
|
16
|
+
}
|
|
17
|
+
function supersededLifecycleState(supersededBy) {
|
|
18
|
+
return { status: 'superseded', supersededBy };
|
|
19
|
+
}
|
|
20
|
+
function markLifecycleActive(entry) {
|
|
21
|
+
entry.status = 'active';
|
|
22
|
+
entry.supersededBy = null;
|
|
23
|
+
}
|
|
24
|
+
function markLifecycleDropped(entry) {
|
|
25
|
+
entry.status = 'dropped';
|
|
26
|
+
entry.supersededBy = null;
|
|
27
|
+
}
|
|
28
|
+
function markLifecycleSuperseded(entry, supersededBy) {
|
|
29
|
+
entry.status = 'superseded';
|
|
30
|
+
entry.supersededBy = supersededBy;
|
|
31
|
+
}
|
|
32
|
+
function uniqueStrings(values) {
|
|
33
|
+
const seen = new Set();
|
|
34
|
+
const unique = [];
|
|
35
|
+
for (const value of values) {
|
|
36
|
+
if (seen.has(value))
|
|
37
|
+
continue;
|
|
38
|
+
seen.add(value);
|
|
39
|
+
unique.push(value);
|
|
40
|
+
}
|
|
41
|
+
return unique;
|
|
42
|
+
}
|
|
43
|
+
function normalizeFlatReflectionActions(opts) {
|
|
44
|
+
const activeIds = new Set(opts.activeIds);
|
|
45
|
+
const claimedIds = new Set();
|
|
46
|
+
const merge = [];
|
|
47
|
+
for (const item of opts.merge) {
|
|
48
|
+
const supersedes = uniqueStrings(item.supersedes).filter((id) => activeIds.has(id) && !claimedIds.has(id));
|
|
49
|
+
if (supersedes.length === 0)
|
|
50
|
+
continue;
|
|
51
|
+
const normalized = opts.normalizeMerge(item, supersedes);
|
|
52
|
+
if (!normalized)
|
|
53
|
+
continue;
|
|
54
|
+
for (const id of supersedes)
|
|
55
|
+
claimedIds.add(id);
|
|
56
|
+
merge.push(normalized);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
drop: uniqueStrings(opts.drop).filter((id) => activeIds.has(id) && !claimedIds.has(id)),
|
|
60
|
+
merge,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=memory-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-lifecycle.js","sourceRoot":"","sources":["../../src/runtime/memory-lifecycle.ts"],"names":[],"mappings":";;AAOA,oDAEC;AAED,sDAEC;AAED,4DAKC;AAED,kDAGC;AAED,oDAGC;AAED,0DAGC;AAED,sCASC;AAED,wEA8BC;AAvED,SAAgB,oBAAoB;IACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,SAAgB,qBAAqB;IACpC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,SAAgB,wBAAwB,CAAC,YAAoB;IAI5D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAA2B;IAC9D,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;IACxB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAA2B;IAC/D,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,SAAgB,uBAAuB,CAAC,KAA2B,EAAE,YAAoB;IACxF,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;IAC5B,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AACnC,CAAC;AAED,SAAgB,aAAa,CAAC,MAAwB;IACrD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAgB,8BAA8B,CAG5C,IAKD;IACA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,KAAK,GAAc,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CACvD,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAChD,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,KAAK,MAAM,EAAE,IAAI,UAAU;YAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACN,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvF,KAAK;KACL,CAAC;AACH,CAAC"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import type { BuiltMemory, MemoryDescriptor, Thread } from '../types';
|
|
1
|
+
import type { BuiltEpisodicMemoryStore, BuiltMemory, EpisodicMemoryMethods, MemoryDescriptor, Thread } from '../types';
|
|
2
2
|
import type { AgentDbMessage } from '../types/sdk/message';
|
|
3
3
|
import type { ObservationCursor } from '../types/sdk/observation';
|
|
4
|
-
import type { BuiltObservationLogStore, BuiltObservationLogTaskLockStore, NewObservationLogEntry, ObservationLogEntry, ObservationLogReadOptions, ObservationLogReflection, ObservationLogReflectionResult, ObservationLogScope,
|
|
5
|
-
export declare class InMemoryMemory implements BuiltMemory, BuiltObservationLogStore, BuiltObservationLogTaskLockStore {
|
|
4
|
+
import type { BuiltObservationLogStore, BuiltObservationLogTaskLockStore, NewObservationLogEntry, ObservationLogEntry, ObservationLogReadOptions, ObservationLogReflection, ObservationLogReflectionResult, ObservationLogScope, ObservationLogTaskKind, ObservationLogTaskLockHandle } from '../types/sdk/observation-log';
|
|
5
|
+
export declare class InMemoryMemory implements BuiltMemory, BuiltObservationLogStore, BuiltObservationLogTaskLockStore, BuiltEpisodicMemoryStore {
|
|
6
6
|
private threads;
|
|
7
7
|
private messagesByThread;
|
|
8
8
|
private observationLogByScope;
|
|
9
9
|
private cursorsByScope;
|
|
10
10
|
private locksByScope;
|
|
11
|
+
private episodicMemory;
|
|
12
|
+
private episodicMemorySources;
|
|
13
|
+
private episodicMemoryCursorsByScope;
|
|
14
|
+
private episodicMemoryLocksByResource;
|
|
15
|
+
readonly episodic: EpisodicMemoryMethods;
|
|
11
16
|
getThread(threadId: string): Promise<Thread | null>;
|
|
12
17
|
saveThread(thread: Omit<Thread, 'createdAt' | 'updatedAt'>): Promise<Thread>;
|
|
13
18
|
deleteThread(threadId: string): Promise<void>;
|
|
@@ -32,21 +37,31 @@ export declare class InMemoryMemory implements BuiltMemory, BuiltObservationLogS
|
|
|
32
37
|
dropObservationLogEntries(ids: string[]): Promise<void>;
|
|
33
38
|
supersedeObservationLogEntries(ids: string[], supersededBy: string): Promise<void>;
|
|
34
39
|
applyObservationLogReflection(scope: ObservationLogScope, reflection: ObservationLogReflection): Promise<ObservationLogReflectionResult>;
|
|
35
|
-
|
|
40
|
+
getMessagesForObservationScope(observationScopeId: string, opts?: {
|
|
36
41
|
since?: {
|
|
37
42
|
sinceCreatedAt: Date;
|
|
38
43
|
sinceMessageId: string;
|
|
39
44
|
};
|
|
40
|
-
resourceId?: string;
|
|
41
45
|
}): Promise<AgentDbMessage[]>;
|
|
42
|
-
getCursor(
|
|
46
|
+
getCursor(observationScopeId: string): Promise<ObservationCursor | null>;
|
|
43
47
|
setCursor(cursor: ObservationCursor): Promise<void>;
|
|
44
|
-
acquireObservationLogTaskLock(
|
|
48
|
+
acquireObservationLogTaskLock(observationScopeId: string, taskKind: ObservationLogTaskKind, opts: {
|
|
45
49
|
ttlMs: number;
|
|
46
50
|
holderId: string;
|
|
47
51
|
}): Promise<ObservationLogTaskLockHandle | null>;
|
|
48
52
|
private acquireScopeLock;
|
|
49
53
|
releaseObservationLogTaskLock(handle: ObservationLogTaskLockHandle): Promise<void>;
|
|
50
54
|
private releaseScopeLock;
|
|
55
|
+
private saveEpisodicMemoryEntries;
|
|
56
|
+
private saveEpisodicMemoryEntrySources;
|
|
57
|
+
private saveEpisodicMemoryEntryWithSources;
|
|
58
|
+
private searchEpisodicMemoryEntries;
|
|
59
|
+
private supersedeEpisodicMemoryEntries;
|
|
60
|
+
private getEpisodicMemoryEntrySources;
|
|
61
|
+
private applyEpisodicMemoryReflection;
|
|
62
|
+
private getEpisodicMemoryCursor;
|
|
63
|
+
private setEpisodicMemoryCursor;
|
|
64
|
+
private acquireEpisodicMemoryTaskLock;
|
|
65
|
+
private releaseEpisodicMemoryTaskLock;
|
|
51
66
|
}
|
|
52
67
|
export declare function saveMessagesToThread(memory: BuiltMemory, threadId: string, resourceId: string, messages: AgentDbMessage[]): Promise<void>;
|