@n8n/agents 0.1.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.
- package/LICENSE.md +88 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/evals/categorization.d.ts +2 -0
- package/dist/evals/categorization.js +23 -0
- package/dist/evals/categorization.js.map +1 -0
- package/dist/evals/contains-keywords.d.ts +2 -0
- package/dist/evals/contains-keywords.js +29 -0
- package/dist/evals/contains-keywords.js.map +1 -0
- package/dist/evals/correctness.d.ts +2 -0
- package/dist/evals/correctness.js +28 -0
- package/dist/evals/correctness.js.map +1 -0
- package/dist/evals/helpfulness.d.ts +2 -0
- package/dist/evals/helpfulness.js +26 -0
- package/dist/evals/helpfulness.js.map +1 -0
- package/dist/evals/index.d.ts +7 -0
- package/dist/evals/index.js +18 -0
- package/dist/evals/index.js.map +1 -0
- package/dist/evals/json-validity.d.ts +2 -0
- package/dist/evals/json-validity.js +21 -0
- package/dist/evals/json-validity.js.map +1 -0
- package/dist/evals/parse-judge-response.d.ts +2 -0
- package/dist/evals/parse-judge-response.js +25 -0
- package/dist/evals/parse-judge-response.js.map +1 -0
- package/dist/evals/string-similarity.d.ts +2 -0
- package/dist/evals/string-similarity.js +42 -0
- package/dist/evals/string-similarity.js.map +1 -0
- package/dist/evals/tool-call-accuracy.d.ts +2 -0
- package/dist/evals/tool-call-accuracy.js +29 -0
- package/dist/evals/tool-call-accuracy.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/langsmith.d.ts +13 -0
- package/dist/integrations/langsmith.js +77 -0
- package/dist/integrations/langsmith.js.map +1 -0
- package/dist/runtime/agent-runtime.d.ts +80 -0
- package/dist/runtime/agent-runtime.js +1246 -0
- package/dist/runtime/agent-runtime.js.map +1 -0
- package/dist/runtime/event-bus.d.ts +14 -0
- package/dist/runtime/event-bus.js +53 -0
- package/dist/runtime/event-bus.js.map +1 -0
- package/dist/runtime/logger.d.ts +22 -0
- package/dist/runtime/logger.js +40 -0
- package/dist/runtime/logger.js.map +1 -0
- package/dist/runtime/mcp-connection.d.ts +23 -0
- package/dist/runtime/mcp-connection.js +135 -0
- package/dist/runtime/mcp-connection.js.map +1 -0
- package/dist/runtime/mcp-tool-resolver.d.ts +7 -0
- package/dist/runtime/mcp-tool-resolver.js +64 -0
- package/dist/runtime/mcp-tool-resolver.js.map +1 -0
- package/dist/runtime/memory-store.d.ts +29 -0
- package/dist/runtime/memory-store.js +68 -0
- package/dist/runtime/memory-store.js.map +1 -0
- package/dist/runtime/message-list.d.ts +25 -0
- package/dist/runtime/message-list.js +79 -0
- package/dist/runtime/message-list.js.map +1 -0
- package/dist/runtime/messages.d.ts +8 -0
- package/dist/runtime/messages.js +239 -0
- package/dist/runtime/messages.js.map +1 -0
- package/dist/runtime/model-factory.d.ts +33 -0
- package/dist/runtime/model-factory.js +68 -0
- package/dist/runtime/model-factory.js.map +1 -0
- package/dist/runtime/run-state.d.ts +9 -0
- package/dist/runtime/run-state.js +49 -0
- package/dist/runtime/run-state.js.map +1 -0
- package/dist/runtime/runtime-helpers.d.ts +21 -0
- package/dist/runtime/runtime-helpers.js +96 -0
- package/dist/runtime/runtime-helpers.js.map +1 -0
- package/dist/runtime/stream.d.ts +15 -0
- package/dist/runtime/stream.js +94 -0
- package/dist/runtime/stream.js.map +1 -0
- package/dist/runtime/strip-orphaned-tool-messages.d.ts +2 -0
- package/dist/runtime/strip-orphaned-tool-messages.js +48 -0
- package/dist/runtime/strip-orphaned-tool-messages.js.map +1 -0
- package/dist/runtime/title-generation.d.ts +11 -0
- package/dist/runtime/title-generation.js +56 -0
- package/dist/runtime/title-generation.js.map +1 -0
- package/dist/runtime/tool-adapter.d.ts +23 -0
- package/dist/runtime/tool-adapter.js +104 -0
- package/dist/runtime/tool-adapter.js.map +1 -0
- package/dist/runtime/working-memory.d.ts +21 -0
- package/dist/runtime/working-memory.js +138 -0
- package/dist/runtime/working-memory.js.map +1 -0
- package/dist/sdk/agent.d.ts +88 -0
- package/dist/sdk/agent.js +327 -0
- package/dist/sdk/agent.js.map +1 -0
- package/dist/sdk/catalog.d.ts +31 -0
- package/dist/sdk/catalog.js +80 -0
- package/dist/sdk/catalog.js.map +1 -0
- package/dist/sdk/eval.d.ts +23 -0
- package/dist/sdk/eval.js +99 -0
- package/dist/sdk/eval.js.map +1 -0
- package/dist/sdk/evaluate.d.ts +13 -0
- package/dist/sdk/evaluate.js +84 -0
- package/dist/sdk/evaluate.js.map +1 -0
- package/dist/sdk/guardrail.d.ts +14 -0
- package/dist/sdk/guardrail.js +41 -0
- package/dist/sdk/guardrail.js.map +1 -0
- package/dist/sdk/mcp-client.d.ts +16 -0
- package/dist/sdk/mcp-client.js +128 -0
- package/dist/sdk/mcp-client.js.map +1 -0
- package/dist/sdk/memory.d.ts +22 -0
- package/dist/sdk/memory.js +101 -0
- package/dist/sdk/memory.js.map +1 -0
- package/dist/sdk/message.d.ts +4 -0
- package/dist/sdk/message.js +18 -0
- package/dist/sdk/message.js.map +1 -0
- package/dist/sdk/network.d.ts +20 -0
- package/dist/sdk/network.js +46 -0
- package/dist/sdk/network.js.map +1 -0
- package/dist/sdk/provider-tools.d.ts +18 -0
- package/dist/sdk/provider-tools.js +31 -0
- package/dist/sdk/provider-tools.js.map +1 -0
- package/dist/sdk/telemetry.d.ts +31 -0
- package/dist/sdk/telemetry.js +186 -0
- package/dist/sdk/telemetry.js.map +1 -0
- package/dist/sdk/tool.d.ts +38 -0
- package/dist/sdk/tool.js +143 -0
- package/dist/sdk/tool.js.map +1 -0
- package/dist/sdk/verify.d.ts +5 -0
- package/dist/sdk/verify.js +37 -0
- package/dist/sdk/verify.js.map +1 -0
- package/dist/storage/postgres-memory.d.ts +79 -0
- package/dist/storage/postgres-memory.js +411 -0
- package/dist/storage/postgres-memory.js.map +1 -0
- package/dist/storage/sqlite-memory.d.ts +60 -0
- package/dist/storage/sqlite-memory.js +349 -0
- package/dist/storage/sqlite-memory.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/runtime/event.d.ts +41 -0
- package/dist/types/runtime/event.js +14 -0
- package/dist/types/runtime/event.js.map +1 -0
- package/dist/types/runtime/message-list.d.ts +7 -0
- package/dist/types/runtime/message-list.js +3 -0
- package/dist/types/runtime/message-list.js.map +1 -0
- package/dist/types/sdk/agent.d.ts +174 -0
- package/dist/types/sdk/agent.js +3 -0
- package/dist/types/sdk/agent.js.map +1 -0
- package/dist/types/sdk/eval.d.ts +41 -0
- package/dist/types/sdk/eval.js +3 -0
- package/dist/types/sdk/eval.js.map +1 -0
- package/dist/types/sdk/guardrail.d.ts +9 -0
- package/dist/types/sdk/guardrail.js +3 -0
- package/dist/types/sdk/guardrail.js.map +1 -0
- package/dist/types/sdk/mcp.d.ts +24 -0
- package/dist/types/sdk/mcp.js +3 -0
- package/dist/types/sdk/mcp.js.map +1 -0
- package/dist/types/sdk/memory.d.ts +99 -0
- package/dist/types/sdk/memory.js +3 -0
- package/dist/types/sdk/memory.js.map +1 -0
- package/dist/types/sdk/message.d.ts +79 -0
- package/dist/types/sdk/message.js +3 -0
- package/dist/types/sdk/message.js.map +1 -0
- package/dist/types/sdk/provider.d.ts +16 -0
- package/dist/types/sdk/provider.js +3 -0
- package/dist/types/sdk/provider.js.map +1 -0
- package/dist/types/sdk/tool.d.ts +32 -0
- package/dist/types/sdk/tool.js +3 -0
- package/dist/types/sdk/tool.js.map +1 -0
- package/dist/types/telemetry.d.ts +18 -0
- package/dist/types/telemetry.js +3 -0
- package/dist/types/telemetry.js.map +1 -0
- package/dist/types/utils/json.d.ts +5 -0
- package/dist/types/utils/json.js +3 -0
- package/dist/types/utils/json.js.map +1 -0
- package/dist/utils/zod.d.ts +3 -0
- package/dist/utils/zod.js +7 -0
- package/dist/utils/zod.js.map +1 -0
- package/dist/workspace/filesystem/base-filesystem.d.ts +40 -0
- package/dist/workspace/filesystem/base-filesystem.js +99 -0
- package/dist/workspace/filesystem/base-filesystem.js.map +1 -0
- package/dist/workspace/index.d.ts +8 -0
- package/dist/workspace/index.js +17 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/lifecycle.d.ts +13 -0
- package/dist/workspace/lifecycle.js +11 -0
- package/dist/workspace/lifecycle.js.map +1 -0
- package/dist/workspace/process.d.ts +36 -0
- package/dist/workspace/process.js +76 -0
- package/dist/workspace/process.js.map +1 -0
- package/dist/workspace/sandbox/base-sandbox.d.ts +28 -0
- package/dist/workspace/sandbox/base-sandbox.js +163 -0
- package/dist/workspace/sandbox/base-sandbox.js.map +1 -0
- package/dist/workspace/tools/append-file.d.ts +3 -0
- package/dist/workspace/tools/append-file.js +22 -0
- package/dist/workspace/tools/append-file.js.map +1 -0
- package/dist/workspace/tools/copy-file.d.ts +3 -0
- package/dist/workspace/tools/copy-file.js +26 -0
- package/dist/workspace/tools/copy-file.js.map +1 -0
- package/dist/workspace/tools/delete-file.d.ts +3 -0
- package/dist/workspace/tools/delete-file.js +26 -0
- package/dist/workspace/tools/delete-file.js.map +1 -0
- package/dist/workspace/tools/execute-command.d.ts +3 -0
- package/dist/workspace/tools/execute-command.js +39 -0
- package/dist/workspace/tools/execute-command.js.map +1 -0
- package/dist/workspace/tools/file-stat.d.ts +3 -0
- package/dist/workspace/tools/file-stat.js +33 -0
- package/dist/workspace/tools/file-stat.js.map +1 -0
- package/dist/workspace/tools/list-files.d.ts +3 -0
- package/dist/workspace/tools/list-files.js +28 -0
- package/dist/workspace/tools/list-files.js.map +1 -0
- package/dist/workspace/tools/mkdir.d.ts +3 -0
- package/dist/workspace/tools/mkdir.js +22 -0
- package/dist/workspace/tools/mkdir.js.map +1 -0
- package/dist/workspace/tools/move-file.d.ts +3 -0
- package/dist/workspace/tools/move-file.js +26 -0
- package/dist/workspace/tools/move-file.js.map +1 -0
- package/dist/workspace/tools/process-tools.d.ts +4 -0
- package/dist/workspace/tools/process-tools.js +37 -0
- package/dist/workspace/tools/process-tools.js.map +1 -0
- package/dist/workspace/tools/read-file.d.ts +3 -0
- package/dist/workspace/tools/read-file.js +24 -0
- package/dist/workspace/tools/read-file.js.map +1 -0
- package/dist/workspace/tools/rmdir.d.ts +3 -0
- package/dist/workspace/tools/rmdir.js +26 -0
- package/dist/workspace/tools/rmdir.js.map +1 -0
- package/dist/workspace/tools/workspace-tools.d.ts +8 -0
- package/dist/workspace/tools/workspace-tools.js +39 -0
- package/dist/workspace/tools/workspace-tools.js.map +1 -0
- package/dist/workspace/tools/write-file.d.ts +3 -0
- package/dist/workspace/tools/write-file.js +26 -0
- package/dist/workspace/tools/write-file.js.map +1 -0
- package/dist/workspace/types.d.ts +178 -0
- package/dist/workspace/types.js +7 -0
- package/dist/workspace/types.js.map +1 -0
- package/dist/workspace/workspace.d.ts +21 -0
- package/dist/workspace/workspace.js +131 -0
- package/dist/workspace/workspace.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,186 @@
|
|
|
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.Telemetry = void 0;
|
|
37
|
+
function redactValue(value, redact) {
|
|
38
|
+
if (Array.isArray(value)) {
|
|
39
|
+
return value.map((item) => redactValue(item, redact));
|
|
40
|
+
}
|
|
41
|
+
if (typeof value === 'object' &&
|
|
42
|
+
value !== null &&
|
|
43
|
+
Object.getPrototypeOf(value) === Object.prototype) {
|
|
44
|
+
const redacted = redact(value);
|
|
45
|
+
for (const key of Object.keys(redacted)) {
|
|
46
|
+
redacted[key] = redactValue(redacted[key], redact);
|
|
47
|
+
}
|
|
48
|
+
return redacted;
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
function redactEvent(event, redact) {
|
|
53
|
+
const cloned = { ...event };
|
|
54
|
+
const redacted = redact(cloned);
|
|
55
|
+
for (const key of Object.keys(redacted)) {
|
|
56
|
+
const value = redacted[key];
|
|
57
|
+
redacted[key] = redactValue(value, redact);
|
|
58
|
+
}
|
|
59
|
+
return redacted;
|
|
60
|
+
}
|
|
61
|
+
function wrapIntegrationWithRedaction(integration, redact) {
|
|
62
|
+
const wrapped = {};
|
|
63
|
+
if (integration.onStart) {
|
|
64
|
+
const orig = integration.onStart;
|
|
65
|
+
wrapped.onStart = (event) => orig(redactEvent(event, redact));
|
|
66
|
+
}
|
|
67
|
+
if (integration.onStepStart) {
|
|
68
|
+
const orig = integration.onStepStart;
|
|
69
|
+
wrapped.onStepStart = (event) => orig(redactEvent(event, redact));
|
|
70
|
+
}
|
|
71
|
+
if (integration.onToolCallStart) {
|
|
72
|
+
const orig = integration.onToolCallStart;
|
|
73
|
+
wrapped.onToolCallStart = (event) => orig(redactEvent(event, redact));
|
|
74
|
+
}
|
|
75
|
+
if (integration.onToolCallFinish) {
|
|
76
|
+
const orig = integration.onToolCallFinish;
|
|
77
|
+
wrapped.onToolCallFinish = (event) => orig(redactEvent(event, redact));
|
|
78
|
+
}
|
|
79
|
+
if (integration.onStepFinish) {
|
|
80
|
+
const orig = integration.onStepFinish;
|
|
81
|
+
wrapped.onStepFinish = (event) => orig(redactEvent(event, redact));
|
|
82
|
+
}
|
|
83
|
+
if (integration.onFinish) {
|
|
84
|
+
const orig = integration.onFinish;
|
|
85
|
+
wrapped.onFinish = (event) => orig(redactEvent(event, redact));
|
|
86
|
+
}
|
|
87
|
+
return wrapped;
|
|
88
|
+
}
|
|
89
|
+
async function createOtlpTracer(endpoint) {
|
|
90
|
+
const { NodeTracerProvider } = (await Promise.resolve().then(() => __importStar(require('@opentelemetry/sdk-trace-node'))));
|
|
91
|
+
const { OTLPTraceExporter } = (await Promise.resolve().then(() => __importStar(require('@opentelemetry/exporter-trace-otlp-http'))));
|
|
92
|
+
const { SimpleSpanProcessor } = (await Promise.resolve().then(() => __importStar(require('@opentelemetry/sdk-trace-base'))));
|
|
93
|
+
const exporter = new OTLPTraceExporter({ url: endpoint });
|
|
94
|
+
const provider = new NodeTracerProvider({
|
|
95
|
+
spanProcessors: [new SimpleSpanProcessor(exporter)],
|
|
96
|
+
});
|
|
97
|
+
const tracer = provider.getTracer('@n8n/agents');
|
|
98
|
+
return { tracer, provider };
|
|
99
|
+
}
|
|
100
|
+
class Telemetry {
|
|
101
|
+
constructor() {
|
|
102
|
+
this.enabledValue = true;
|
|
103
|
+
this.recordInputsValue = true;
|
|
104
|
+
this.recordOutputsValue = true;
|
|
105
|
+
this.integrationsList = [];
|
|
106
|
+
}
|
|
107
|
+
credential(name) {
|
|
108
|
+
this.credentialNameValue = name;
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
get declaredCredential() {
|
|
112
|
+
return this.credentialNameValue;
|
|
113
|
+
}
|
|
114
|
+
set resolvedApiKey(key) {
|
|
115
|
+
this.resolvedKey = key;
|
|
116
|
+
}
|
|
117
|
+
enabled(value) {
|
|
118
|
+
this.enabledValue = value;
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
functionId(value) {
|
|
122
|
+
this.functionIdValue = value;
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
metadata(value) {
|
|
126
|
+
this.metadataValue = value;
|
|
127
|
+
return this;
|
|
128
|
+
}
|
|
129
|
+
recordInputs(value) {
|
|
130
|
+
this.recordInputsValue = value;
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
recordOutputs(value) {
|
|
134
|
+
this.recordOutputsValue = value;
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
redact(fn) {
|
|
138
|
+
this.redactFn = fn;
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
integration(value) {
|
|
142
|
+
this.integrationsList.push(value);
|
|
143
|
+
return this;
|
|
144
|
+
}
|
|
145
|
+
tracer(value) {
|
|
146
|
+
this.tracerValue = value;
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
otlpEndpoint(value) {
|
|
150
|
+
this.otlpEndpointValue = value;
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
153
|
+
async build() {
|
|
154
|
+
if (this.tracerValue !== undefined && this.otlpEndpointValue !== undefined) {
|
|
155
|
+
throw new Error('Cannot set both .tracer() and .otlpEndpoint() — use one or the other.');
|
|
156
|
+
}
|
|
157
|
+
let tracer = this.tracerValue;
|
|
158
|
+
let provider;
|
|
159
|
+
if (this.otlpEndpointValue !== undefined) {
|
|
160
|
+
const otlp = await createOtlpTracer(this.otlpEndpointValue);
|
|
161
|
+
tracer = otlp.tracer;
|
|
162
|
+
provider = otlp.provider;
|
|
163
|
+
}
|
|
164
|
+
const integrations = this.redactFn
|
|
165
|
+
? this.integrationsList.map((i) => wrapIntegrationWithRedaction(i, this.redactFn))
|
|
166
|
+
: [...this.integrationsList];
|
|
167
|
+
return {
|
|
168
|
+
enabled: this.enabledValue,
|
|
169
|
+
functionId: this.functionIdValue,
|
|
170
|
+
metadata: this.metadataValue,
|
|
171
|
+
recordInputs: this.recordInputsValue,
|
|
172
|
+
recordOutputs: this.recordOutputsValue,
|
|
173
|
+
integrations,
|
|
174
|
+
tracer,
|
|
175
|
+
provider,
|
|
176
|
+
credentialName: this.credentialNameValue,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
static async shutdown(telemetry) {
|
|
180
|
+
if (telemetry.provider) {
|
|
181
|
+
await telemetry.provider.shutdown();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.Telemetry = Telemetry;
|
|
186
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/sdk/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { BuiltTool, InterruptibleToolContext, ToolContext } from '../types';
|
|
3
|
+
import type { AgentMessage } from '../types/sdk/message';
|
|
4
|
+
import type { JSONObject } from '../types/utils/json';
|
|
5
|
+
export interface ApprovalConfig {
|
|
6
|
+
requireApproval?: boolean;
|
|
7
|
+
needsApprovalFn?: (args: unknown) => Promise<boolean> | boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function wrapToolForApproval(tool: BuiltTool, config: ApprovalConfig): BuiltTool;
|
|
10
|
+
type HandlerContext<S, R> = S extends z.ZodTypeAny ? R extends z.ZodTypeAny ? InterruptibleToolContext<z.infer<S>, z.infer<R>> : ToolContext : ToolContext;
|
|
11
|
+
export declare class Tool<TInput extends z.ZodTypeAny = z.ZodTypeAny, TOutput extends z.ZodTypeAny = z.ZodTypeAny, TSuspend extends z.ZodTypeAny | undefined = undefined, TResume extends z.ZodTypeAny | undefined = undefined> {
|
|
12
|
+
private name;
|
|
13
|
+
private desc?;
|
|
14
|
+
private inputSchema?;
|
|
15
|
+
private outputSchema?;
|
|
16
|
+
private suspendSchemaValue?;
|
|
17
|
+
private resumeSchemaValue?;
|
|
18
|
+
private handlerFn?;
|
|
19
|
+
private toMessageFn?;
|
|
20
|
+
private toModelOutputFn?;
|
|
21
|
+
private providerOptionsValue?;
|
|
22
|
+
private requireApprovalValue?;
|
|
23
|
+
private needsApprovalFnValue?;
|
|
24
|
+
constructor(name: string);
|
|
25
|
+
description(desc: string): this;
|
|
26
|
+
input<S extends z.ZodTypeAny>(schema: S): Tool<S, TOutput, TSuspend, TResume>;
|
|
27
|
+
output<S extends z.ZodTypeAny>(schema: S): Tool<TInput, S, TSuspend, TResume>;
|
|
28
|
+
suspend<S extends z.ZodTypeAny>(schema: S): Tool<TInput, TOutput, S, TResume>;
|
|
29
|
+
resume<R extends z.ZodTypeAny>(schema: R): Tool<TInput, TOutput, TSuspend, R>;
|
|
30
|
+
handler(fn: (input: z.infer<TInput>, ctx: HandlerContext<TSuspend, TResume>) => Promise<z.infer<TOutput>>): this;
|
|
31
|
+
toMessage(toMessage: (output: z.infer<TOutput>) => AgentMessage): this;
|
|
32
|
+
toModelOutput(fn: (output: z.infer<TOutput>) => unknown): this;
|
|
33
|
+
requireApproval(): this;
|
|
34
|
+
needsApprovalFn(fn: (args: z.infer<TInput>) => Promise<boolean> | boolean): this;
|
|
35
|
+
providerOptions(options: Record<string, JSONObject>): this;
|
|
36
|
+
build(): BuiltTool;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
package/dist/sdk/tool.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Tool = void 0;
|
|
4
|
+
exports.wrapToolForApproval = wrapToolForApproval;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const APPROVAL_SUSPEND_SCHEMA = zod_1.z.object({
|
|
7
|
+
type: zod_1.z.literal('approval'),
|
|
8
|
+
toolName: zod_1.z.string(),
|
|
9
|
+
args: zod_1.z.unknown(),
|
|
10
|
+
});
|
|
11
|
+
const APPROVAL_RESUME_SCHEMA = zod_1.z.object({
|
|
12
|
+
approved: zod_1.z.boolean(),
|
|
13
|
+
});
|
|
14
|
+
function wrapToolForApproval(tool, config) {
|
|
15
|
+
const originalHandler = tool.handler;
|
|
16
|
+
return {
|
|
17
|
+
...tool,
|
|
18
|
+
suspendSchema: APPROVAL_SUSPEND_SCHEMA,
|
|
19
|
+
resumeSchema: APPROVAL_RESUME_SCHEMA,
|
|
20
|
+
handler: async (input, ctx) => {
|
|
21
|
+
const interruptCtx = ctx;
|
|
22
|
+
if (interruptCtx.resumeData === undefined) {
|
|
23
|
+
let needs = config.requireApproval ?? false;
|
|
24
|
+
if (!needs && config.needsApprovalFn) {
|
|
25
|
+
needs = await config.needsApprovalFn(input);
|
|
26
|
+
}
|
|
27
|
+
if (needs) {
|
|
28
|
+
return await interruptCtx.suspend({ type: 'approval', toolName: tool.name, args: input });
|
|
29
|
+
}
|
|
30
|
+
return await originalHandler(input, {
|
|
31
|
+
parentTelemetry: interruptCtx.parentTelemetry,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const { approved } = interruptCtx.resumeData;
|
|
35
|
+
if (!approved) {
|
|
36
|
+
return { declined: true, message: `Tool "${tool.name}" was not approved` };
|
|
37
|
+
}
|
|
38
|
+
return await originalHandler(input, {
|
|
39
|
+
parentTelemetry: interruptCtx.parentTelemetry,
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
class Tool {
|
|
45
|
+
constructor(name) {
|
|
46
|
+
this.name = name;
|
|
47
|
+
}
|
|
48
|
+
description(desc) {
|
|
49
|
+
this.desc = desc;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
input(schema) {
|
|
53
|
+
const self = this;
|
|
54
|
+
self.inputSchema = schema;
|
|
55
|
+
return self;
|
|
56
|
+
}
|
|
57
|
+
output(schema) {
|
|
58
|
+
const self = this;
|
|
59
|
+
self.outputSchema = schema;
|
|
60
|
+
return self;
|
|
61
|
+
}
|
|
62
|
+
suspend(schema) {
|
|
63
|
+
const self = this;
|
|
64
|
+
self.suspendSchemaValue = schema;
|
|
65
|
+
return self;
|
|
66
|
+
}
|
|
67
|
+
resume(schema) {
|
|
68
|
+
const self = this;
|
|
69
|
+
self.resumeSchemaValue = schema;
|
|
70
|
+
return self;
|
|
71
|
+
}
|
|
72
|
+
handler(fn) {
|
|
73
|
+
this.handlerFn = fn;
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
toMessage(toMessage) {
|
|
77
|
+
this.toMessageFn = toMessage;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
toModelOutput(fn) {
|
|
81
|
+
this.toModelOutputFn = fn;
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
requireApproval() {
|
|
85
|
+
this.requireApprovalValue = true;
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
needsApprovalFn(fn) {
|
|
89
|
+
this.needsApprovalFnValue = fn;
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
providerOptions(options) {
|
|
93
|
+
this.providerOptionsValue = { ...this.providerOptionsValue, ...options };
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
build() {
|
|
97
|
+
if (!this.name) {
|
|
98
|
+
throw new Error('Tool name is required');
|
|
99
|
+
}
|
|
100
|
+
if (!this.desc) {
|
|
101
|
+
throw new Error(`Tool "${this.name}" requires a description`);
|
|
102
|
+
}
|
|
103
|
+
if (!this.inputSchema) {
|
|
104
|
+
throw new Error(`Tool "${this.name}" requires an input schema`);
|
|
105
|
+
}
|
|
106
|
+
if (!this.handlerFn) {
|
|
107
|
+
throw new Error(`Tool "${this.name}" requires a handler`);
|
|
108
|
+
}
|
|
109
|
+
const hasSuspend = this.suspendSchemaValue !== undefined;
|
|
110
|
+
const hasResume = this.resumeSchemaValue !== undefined;
|
|
111
|
+
if (hasSuspend && !hasResume) {
|
|
112
|
+
throw new Error(`Tool "${this.name}" has .suspend() but missing .resume()`);
|
|
113
|
+
}
|
|
114
|
+
if (hasResume && !hasSuspend) {
|
|
115
|
+
throw new Error(`Tool "${this.name}" has .resume() but missing .suspend()`);
|
|
116
|
+
}
|
|
117
|
+
const hasApproval = (this.requireApprovalValue ?? false) || this.needsApprovalFnValue !== undefined;
|
|
118
|
+
if (hasApproval && (hasSuspend || hasResume)) {
|
|
119
|
+
throw new Error(`Tool "${this.name}" cannot use both approval (.requireApproval/.needsApprovalFn) and suspend/resume (.suspend/.resume)`);
|
|
120
|
+
}
|
|
121
|
+
const built = {
|
|
122
|
+
name: this.name,
|
|
123
|
+
description: this.desc,
|
|
124
|
+
suspendSchema: this.suspendSchemaValue,
|
|
125
|
+
resumeSchema: this.resumeSchemaValue,
|
|
126
|
+
toMessage: this.toMessageFn,
|
|
127
|
+
toModelOutput: this.toModelOutputFn,
|
|
128
|
+
handler: this.handlerFn,
|
|
129
|
+
inputSchema: this.inputSchema,
|
|
130
|
+
outputSchema: this.outputSchema,
|
|
131
|
+
providerOptions: this.providerOptionsValue,
|
|
132
|
+
};
|
|
133
|
+
if (this.requireApprovalValue ?? this.needsApprovalFnValue) {
|
|
134
|
+
return wrapToolForApproval(built, {
|
|
135
|
+
requireApproval: this.requireApprovalValue,
|
|
136
|
+
needsApprovalFn: this.needsApprovalFnValue,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return built;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.Tool = Tool;
|
|
143
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/sdk/tool.ts"],"names":[],"mappings":";;;AA8BA,kDAiCC;AA/DD,6BAAwB;AAMxB,MAAM,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC;AAgBH,SAAgB,mBAAmB,CAAC,IAAe,EAAE,MAAsB;IAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAQ,CAAC;IAEtC,OAAO;QACN,GAAG,IAAI;QACP,aAAa,EAAE,uBAAuB;QACtC,YAAY,EAAE,sBAAsB;QACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAG7B,MAAM,YAAY,GAAG,GAA+B,CAAC;YACrD,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;gBAC5C,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;oBACtC,KAAK,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACX,OAAO,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3F,CAAC;gBACD,OAAO,MAAM,eAAe,CAAC,KAAK,EAAE;oBACnC,eAAe,EAAE,YAAY,CAAC,eAAe;iBAC9B,CAAC,CAAC;YACnB,CAAC;YAED,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,UAAoD,CAAC;YACvF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,oBAAoB,EAAE,CAAC;YAC5E,CAAC;YACD,OAAO,MAAM,eAAe,CAAC,KAAK,EAAE;gBACnC,eAAe,EAAE,YAAY,CAAC,eAAe;aAC9B,CAAC,CAAC;QACnB,CAAC;KACD,CAAC;AACH,CAAC;AA0BD,MAAa,IAAI;IAiChB,YAAY,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAGD,WAAW,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,KAAK,CAAyB,MAAS;QACtC,MAAM,IAAI,GAAG,IAAsD,CAAC;QACpE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,MAAM,CAAyB,MAAS;QACvC,MAAM,IAAI,GAAG,IAAqD,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,OAAO,CAAyB,MAAS;QACxC,MAAM,IAAI,GAAG,IAAoD,CAAC;QAClE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,MAAM,CAAyB,MAAS;QACvC,MAAM,IAAI,GAAG,IAAqD,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IAMD,OAAO,CACN,EAG8B;QAE9B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS,CAAC,SAAqD;QAC9D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,OAAO,IAAI,CAAC;IACb,CAAC;IASD,aAAa,CAAC,EAAyC;QACtD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,eAAe;QACd,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,eAAe,CAAC,EAAyD;QACxE,IAAI,CAAC,oBAAoB,GAAG,EAAmD,CAAC;QAChF,OAAO,IAAI,CAAC;IACb,CAAC;IAQD,eAAe,CAAC,OAAmC;QAClD,IAAI,CAAC,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACb,CAAC;IAQD,KAAK;QACJ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC;QAEvD,IAAI,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,wCAAwC,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,wCAAwC,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,WAAW,GAChB,CAAC,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,CAAC;QACjF,IAAI,WAAW,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACd,SAAS,IAAI,CAAC,IAAI,sGAAsG,CACxH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAc;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,aAAa,EAAE,IAAI,CAAC,kBAAkB;YACtC,YAAY,EAAE,IAAI,CAAC,iBAAiB;YACpC,SAAS,EAAE,IAAI,CAAC,WAA4D;YAC5E,aAAa,EAAE,IAAI,CAAC,eAA6D;YACjF,OAAO,EAAE,IAAI,CAAC,SAGO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,oBAAoB;SAC1C,CAAC;QAEF,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5D,OAAO,mBAAmB,CAAC,KAAK,EAAE;gBACjC,eAAe,EAAE,IAAI,CAAC,oBAAoB;gBAC1C,eAAe,EAAE,IAAI,CAAC,oBAAoB;aAC1C,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AA5LD,oBA4LC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verify = verify;
|
|
4
|
+
function verify(source) {
|
|
5
|
+
const errors = [];
|
|
6
|
+
if (!source?.trim()) {
|
|
7
|
+
return { ok: false, errors: ['No source code provided'] };
|
|
8
|
+
}
|
|
9
|
+
if (/\.build\s*\(/.test(source)) {
|
|
10
|
+
errors.push('Do not call .build() — the engine handles this automatically. Remove all .build() calls.');
|
|
11
|
+
}
|
|
12
|
+
if (!/export\s+default\b/.test(source)) {
|
|
13
|
+
errors.push('No default export found. Export an agent as the default: export default agent;');
|
|
14
|
+
}
|
|
15
|
+
if (/\bScorer\b/.test(source)) {
|
|
16
|
+
errors.push("Scorer is deprecated. Use the Eval system instead: new Eval('name').check(...) or evals.correctness()");
|
|
17
|
+
}
|
|
18
|
+
if (/process\.env\b/.test(source)) {
|
|
19
|
+
errors.push('process.env is not available. Use .credential() for API keys, or const variables for configuration.');
|
|
20
|
+
}
|
|
21
|
+
{
|
|
22
|
+
let stripped = source;
|
|
23
|
+
stripped = stripped.replace(/return\s+(?:await\s+)?(?:ctx\.)?suspend\s*\(/g, '');
|
|
24
|
+
stripped = stripped.replace(/return\s+[^\n;]+\?\s*(?:await\s+)?(?:ctx\.)?suspend\s*\(/g, '');
|
|
25
|
+
stripped = stripped.replace(/=>\s*(?:await\s+)?(?:ctx\.)?suspend\s*\(/g, '');
|
|
26
|
+
stripped = stripped.replace(/\.suspend\s*\(\s*z\./g, '');
|
|
27
|
+
if (/(?:ctx\.)?suspend\s*\(/.test(stripped)) {
|
|
28
|
+
errors.push('ctx.suspend() must be returned: use `return await ctx.suspend(...)` or `return ctx.suspend(...)`. ' +
|
|
29
|
+
'Without return, the handler continues executing after suspension.');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!/\.credential\s*\(/.test(source)) {
|
|
33
|
+
errors.push("No .credential() found. Every agent must declare a credential (e.g. .credential('anthropic')).");
|
|
34
|
+
}
|
|
35
|
+
return { ok: errors.length === 0, errors };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/sdk/verify.ts"],"names":[],"mappings":";;AAuBA,wBAgEC;AAhED,SAAgB,MAAM,CAAC,MAAc;IACpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CACV,0FAA0F,CAC1F,CAAC;IACH,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CACV,uGAAuG,CACvG,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CACV,qGAAqG,CACrG,CAAC;IACH,CAAC;IAYD,CAAC;QACA,IAAI,QAAQ,GAAG,MAAM,CAAC;QAEtB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;QAEjF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,2DAA2D,EAAE,EAAE,CAAC,CAAC;QAE7F,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;QAE7E,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CACV,oGAAoG;gBACnG,mEAAmE,CACpE,CAAC;QACH,CAAC;IACF,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CACV,gGAAgG,CAChG,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { ConnectionOptions } from 'tls';
|
|
2
|
+
import type { BuiltMemory, Thread } from '../types/sdk/memory';
|
|
3
|
+
import type { AgentDbMessage, AgentMessage } from '../types/sdk/message';
|
|
4
|
+
export interface PostgresConnectionConfig {
|
|
5
|
+
host?: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
database?: string;
|
|
8
|
+
user?: string;
|
|
9
|
+
password?: string | (() => string | Promise<string>);
|
|
10
|
+
}
|
|
11
|
+
export interface PostgresMemoryConfig {
|
|
12
|
+
connection: string | PostgresConnectionConfig;
|
|
13
|
+
pool?: {
|
|
14
|
+
max?: number;
|
|
15
|
+
min?: number;
|
|
16
|
+
idleTimeoutMillis?: number;
|
|
17
|
+
connectionTimeoutMillis?: number;
|
|
18
|
+
allowExitOnIdle?: boolean;
|
|
19
|
+
};
|
|
20
|
+
ssl?: boolean | ConnectionOptions;
|
|
21
|
+
namespace?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class PostgresMemory implements BuiltMemory {
|
|
24
|
+
private initPromise;
|
|
25
|
+
private embeddingsInitPromise;
|
|
26
|
+
private readonly config;
|
|
27
|
+
private readonly ns;
|
|
28
|
+
constructor(config: PostgresMemoryConfig);
|
|
29
|
+
private ensureInitialized;
|
|
30
|
+
private _initialize;
|
|
31
|
+
getThread(threadId: string): Promise<Thread | null>;
|
|
32
|
+
saveThread(thread: Omit<Thread, 'createdAt' | 'updatedAt'>): Promise<Thread>;
|
|
33
|
+
deleteThread(threadId: string): Promise<void>;
|
|
34
|
+
getMessages(threadId: string, opts?: {
|
|
35
|
+
limit?: number;
|
|
36
|
+
before?: Date;
|
|
37
|
+
}): Promise<AgentDbMessage[]>;
|
|
38
|
+
saveMessages(args: {
|
|
39
|
+
threadId: string;
|
|
40
|
+
resourceId?: string;
|
|
41
|
+
messages: AgentMessage[];
|
|
42
|
+
}): Promise<void>;
|
|
43
|
+
deleteMessages(messageIds: string[]): Promise<void>;
|
|
44
|
+
getWorkingMemory(params: {
|
|
45
|
+
threadId: string;
|
|
46
|
+
resourceId: string;
|
|
47
|
+
scope: 'resource' | 'thread';
|
|
48
|
+
}): Promise<string | null>;
|
|
49
|
+
saveWorkingMemory(params: {
|
|
50
|
+
threadId: string;
|
|
51
|
+
resourceId: string;
|
|
52
|
+
scope: 'resource' | 'thread';
|
|
53
|
+
}, content: string): Promise<void>;
|
|
54
|
+
private embeddingDimension;
|
|
55
|
+
private ensureEmbeddingsTable;
|
|
56
|
+
private _initializeEmbeddingsTable;
|
|
57
|
+
saveEmbeddings(opts: {
|
|
58
|
+
scope?: 'thread' | 'resource';
|
|
59
|
+
threadId?: string;
|
|
60
|
+
resourceId?: string;
|
|
61
|
+
entries: Array<{
|
|
62
|
+
id: string;
|
|
63
|
+
vector: number[];
|
|
64
|
+
text: string;
|
|
65
|
+
model: string;
|
|
66
|
+
}>;
|
|
67
|
+
}): Promise<void>;
|
|
68
|
+
queryEmbeddings(opts: {
|
|
69
|
+
scope?: 'thread' | 'resource';
|
|
70
|
+
threadId?: string;
|
|
71
|
+
resourceId?: string;
|
|
72
|
+
vector: number[];
|
|
73
|
+
topK: number;
|
|
74
|
+
}): Promise<Array<{
|
|
75
|
+
id: string;
|
|
76
|
+
score: number;
|
|
77
|
+
}>>;
|
|
78
|
+
close(): Promise<void>;
|
|
79
|
+
}
|