@n8n/agents 0.17.2 → 0.18.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/dist/build.tsbuildinfo +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/integrations/langsmith.js +1 -1
- package/dist/integrations/langsmith.js.map +1 -1
- package/dist/runtime/loop/agent-runtime.d.ts +2 -1
- package/dist/runtime/loop/agent-runtime.js +10 -0
- package/dist/runtime/loop/agent-runtime.js.map +1 -1
- package/dist/runtime/loop/runtime-helpers.d.ts +2 -1
- package/dist/runtime/loop/runtime-helpers.js +11 -0
- package/dist/runtime/loop/runtime-helpers.js.map +1 -1
- package/dist/runtime/mcp/mcp-connection.js +2 -0
- package/dist/runtime/mcp/mcp-connection.js.map +1 -1
- package/dist/runtime/memory/episodic-memory.js +3 -2
- package/dist/runtime/memory/episodic-memory.js.map +1 -1
- package/dist/runtime/memory/observation-log-defaults.d.ts +2 -2
- package/dist/runtime/memory/observation-log-defaults.js +14 -1
- package/dist/runtime/memory/observation-log-defaults.js.map +1 -1
- package/dist/runtime/memory/observation-log-observer.js +8 -13
- package/dist/runtime/memory/observation-log-observer.js.map +1 -1
- package/dist/runtime/memory/observation-log-reflector.js +6 -1
- package/dist/runtime/memory/observation-log-reflector.js.map +1 -1
- package/dist/runtime/model/message-list.d.ts +2 -1
- package/dist/runtime/model/message-list.js +7 -3
- package/dist/runtime/model/message-list.js.map +1 -1
- package/dist/runtime/model/provider-quirks.js +1 -0
- package/dist/runtime/model/provider-quirks.js.map +1 -1
- package/dist/runtime/telemetry/runtime-telemetry.d.ts +2 -1
- package/dist/runtime/telemetry/runtime-telemetry.js +55 -20
- package/dist/runtime/telemetry/runtime-telemetry.js.map +1 -1
- package/dist/runtime/telemetry/sub-agent-telemetry.d.ts +2 -0
- package/dist/runtime/telemetry/sub-agent-telemetry.js +14 -0
- package/dist/runtime/telemetry/sub-agent-telemetry.js.map +1 -0
- package/dist/runtime/tools/delegate-sub-agent-tool.d.ts +2 -0
- package/dist/runtime/tools/delegate-sub-agent-tool.js +1 -0
- package/dist/runtime/tools/delegate-sub-agent-tool.js.map +1 -1
- package/dist/runtime/tools/planner-todos-tool.d.ts +6 -0
- package/dist/runtime/tools/planner-todos-tool.js +47 -0
- package/dist/runtime/tools/planner-todos-tool.js.map +1 -0
- package/dist/runtime/tools/todos-core.d.ts +35 -0
- package/dist/runtime/tools/todos-core.js +52 -0
- package/dist/runtime/tools/todos-core.js.map +1 -0
- package/dist/runtime/tools/tool-call-executor.js +2 -2
- package/dist/runtime/tools/tool-call-executor.js.map +1 -1
- package/dist/runtime/tools/write-todos-tool.js +5 -40
- package/dist/runtime/tools/write-todos-tool.js.map +1 -1
- package/dist/sdk/agent.d.ts +4 -1
- package/dist/sdk/agent.js +18 -2
- package/dist/sdk/agent.js.map +1 -1
- package/dist/sdk/mcp-client.d.ts +4 -1
- package/dist/sdk/mcp-client.js +26 -13
- package/dist/sdk/mcp-client.js.map +1 -1
- package/dist/skills/index.d.ts +2 -2
- package/dist/skills/index.js +1 -3
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/prompt.d.ts +1 -1
- package/dist/skills/prompt.js +2 -3
- package/dist/skills/prompt.js.map +1 -1
- package/dist/skills/tools.d.ts +0 -1
- package/dist/skills/tools.js +4 -101
- package/dist/skills/tools.js.map +1 -1
- package/dist/skills/types.d.ts +0 -1
- package/dist/skills/types.js +1 -2
- package/dist/skills/types.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/sdk/agent.d.ts +6 -0
- package/dist/types/sdk/mcp.d.ts +5 -0
- package/dist/types/sdk/provider.d.ts +1 -0
- package/dist/types/telemetry.d.ts +3 -0
- package/dist/workspace/sandbox/index.d.ts +1 -1
- package/dist/workspace/sandbox/index.js +1 -3
- package/dist/workspace/sandbox/index.js.map +1 -1
- package/dist/workspace/sandbox/workspace-root.d.ts +0 -2
- package/dist/workspace/sandbox/workspace-root.js +0 -11
- package/dist/workspace/sandbox/workspace-root.js.map +1 -1
- package/package.json +5 -3
- package/dist/runtime/json-value.d.ts +0 -2
- package/dist/runtime/json-value.js +0 -43
- package/dist/runtime/json-value.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { TelemetryIntegration } from 'ai';
|
|
2
2
|
export type AttributeValue = string | number | boolean | string[] | number[] | boolean[];
|
|
3
3
|
export type OpaqueTracer = unknown;
|
|
4
|
+
export type OpaqueSpanLink = unknown;
|
|
4
5
|
export interface OpaqueTracerProvider {
|
|
5
6
|
forceFlush(): Promise<void>;
|
|
6
7
|
shutdown(): Promise<void>;
|
|
@@ -12,8 +13,10 @@ export interface BuiltTelemetry {
|
|
|
12
13
|
readonly recordInputs: boolean;
|
|
13
14
|
readonly recordOutputs: boolean;
|
|
14
15
|
readonly runtimeRootSpanEnabled?: boolean;
|
|
16
|
+
readonly rootAnchored?: boolean;
|
|
15
17
|
readonly integrations: TelemetryIntegration[];
|
|
16
18
|
readonly tracer?: OpaqueTracer;
|
|
17
19
|
readonly provider?: OpaqueTracerProvider;
|
|
18
20
|
readonly credentialName?: string;
|
|
21
|
+
readonly isLangSmith?: boolean;
|
|
19
22
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { DEFAULT_SANDBOX_PROVIDER, normalizeSandboxProvider, } from './provider';
|
|
2
|
-
export { WORKSPACE_DIR, DAYTONA_HOME, DAYTONA_WORKSPACE_ROOT, N8N_SANDBOX_HOME, N8N_SANDBOX_WORKSPACE_ROOT, getPromptWorkspaceRoot,
|
|
2
|
+
export { WORKSPACE_DIR, DAYTONA_HOME, DAYTONA_WORKSPACE_ROOT, N8N_SANDBOX_HOME, N8N_SANDBOX_WORKSPACE_ROOT, getPromptWorkspaceRoot, getWorkspaceRoot, type SandboxWorkspace, } from './workspace-root';
|
|
3
3
|
export { runInSandbox, type RunInSandboxOptions, type SandboxCommandTarget, } from './run-in-sandbox';
|
|
4
4
|
export { loadDaytona } from './lazy-daytona';
|
|
5
5
|
export { createFilesystem, createSandbox } from './create-workspace';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSandbox = exports.createFilesystem = exports.loadDaytona = exports.runInSandbox = exports.getWorkspaceRoot = exports.
|
|
3
|
+
exports.createSandbox = exports.createFilesystem = exports.loadDaytona = exports.runInSandbox = exports.getWorkspaceRoot = exports.getPromptWorkspaceRoot = exports.N8N_SANDBOX_WORKSPACE_ROOT = exports.N8N_SANDBOX_HOME = exports.DAYTONA_WORKSPACE_ROOT = exports.DAYTONA_HOME = exports.WORKSPACE_DIR = exports.normalizeSandboxProvider = exports.DEFAULT_SANDBOX_PROVIDER = void 0;
|
|
4
4
|
var provider_1 = require("./provider");
|
|
5
5
|
Object.defineProperty(exports, "DEFAULT_SANDBOX_PROVIDER", { enumerable: true, get: function () { return provider_1.DEFAULT_SANDBOX_PROVIDER; } });
|
|
6
6
|
Object.defineProperty(exports, "normalizeSandboxProvider", { enumerable: true, get: function () { return provider_1.normalizeSandboxProvider; } });
|
|
@@ -11,8 +11,6 @@ Object.defineProperty(exports, "DAYTONA_WORKSPACE_ROOT", { enumerable: true, get
|
|
|
11
11
|
Object.defineProperty(exports, "N8N_SANDBOX_HOME", { enumerable: true, get: function () { return workspace_root_1.N8N_SANDBOX_HOME; } });
|
|
12
12
|
Object.defineProperty(exports, "N8N_SANDBOX_WORKSPACE_ROOT", { enumerable: true, get: function () { return workspace_root_1.N8N_SANDBOX_WORKSPACE_ROOT; } });
|
|
13
13
|
Object.defineProperty(exports, "getPromptWorkspaceRoot", { enumerable: true, get: function () { return workspace_root_1.getPromptWorkspaceRoot; } });
|
|
14
|
-
Object.defineProperty(exports, "getPromptSandboxInstructions", { enumerable: true, get: function () { return workspace_root_1.getPromptSandboxInstructions; } });
|
|
15
|
-
Object.defineProperty(exports, "getPromptFilesystemInstructions", { enumerable: true, get: function () { return workspace_root_1.getPromptFilesystemInstructions; } });
|
|
16
14
|
Object.defineProperty(exports, "getWorkspaceRoot", { enumerable: true, get: function () { return workspace_root_1.getWorkspaceRoot; } });
|
|
17
15
|
var run_in_sandbox_1 = require("./run-in-sandbox");
|
|
18
16
|
Object.defineProperty(exports, "runInSandbox", { enumerable: true, get: function () { return run_in_sandbox_1.runInSandbox; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/index.ts"],"names":[],"mappings":";;;AAAA,uCAGoB;AAFnB,oHAAA,wBAAwB,OAAA;AACxB,oHAAA,wBAAwB,OAAA;AAEzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/index.ts"],"names":[],"mappings":";;;AAAA,uCAGoB;AAFnB,oHAAA,wBAAwB,OAAA;AACxB,oHAAA,wBAAwB,OAAA;AAEzB,mDAS0B;AARzB,+GAAA,aAAa,OAAA;AACb,8GAAA,YAAY,OAAA;AACZ,wHAAA,sBAAsB,OAAA;AACtB,kHAAA,gBAAgB,OAAA;AAChB,4HAAA,0BAA0B,OAAA;AAC1B,wHAAA,sBAAsB,OAAA;AACtB,kHAAA,gBAAgB,OAAA;AAGjB,mDAI0B;AAHzB,8GAAA,YAAY,OAAA;AAIb,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAqE;AAA5D,oHAAA,gBAAgB,OAAA;AAAE,iHAAA,aAAa,OAAA"}
|
|
@@ -6,8 +6,6 @@ export declare const DAYTONA_WORKSPACE_ROOT = "/home/daytona/workspace";
|
|
|
6
6
|
export declare const N8N_SANDBOX_HOME = "/home/user";
|
|
7
7
|
export declare const N8N_SANDBOX_WORKSPACE_ROOT = "/home/user/workspace";
|
|
8
8
|
export declare function getPromptWorkspaceRoot(provider: SandboxProvider): string;
|
|
9
|
-
export declare function getPromptSandboxInstructions(_provider: SandboxProvider): string;
|
|
10
|
-
export declare function getPromptFilesystemInstructions(provider: SandboxProvider): string;
|
|
11
9
|
export interface SandboxWorkspace extends SandboxCommandTarget {
|
|
12
10
|
filesystem?: {
|
|
13
11
|
provider?: string;
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.N8N_SANDBOX_WORKSPACE_ROOT = exports.N8N_SANDBOX_HOME = exports.DAYTONA_WORKSPACE_ROOT = exports.DAYTONA_HOME = exports.WORKSPACE_DIR = void 0;
|
|
4
4
|
exports.getPromptWorkspaceRoot = getPromptWorkspaceRoot;
|
|
5
|
-
exports.getPromptSandboxInstructions = getPromptSandboxInstructions;
|
|
6
|
-
exports.getPromptFilesystemInstructions = getPromptFilesystemInstructions;
|
|
7
5
|
exports.getWorkspaceRoot = getWorkspaceRoot;
|
|
8
6
|
const run_in_sandbox_1 = require("./run-in-sandbox");
|
|
9
7
|
exports.WORKSPACE_DIR = 'workspace';
|
|
@@ -19,15 +17,6 @@ function getPromptWorkspaceRoot(provider) {
|
|
|
19
17
|
return exports.N8N_SANDBOX_WORKSPACE_ROOT;
|
|
20
18
|
}
|
|
21
19
|
}
|
|
22
|
-
function getPromptSandboxInstructions(_provider) {
|
|
23
|
-
return 'Cloud sandbox with isolated execution (TypeScript runtime).';
|
|
24
|
-
}
|
|
25
|
-
function getPromptFilesystemInstructions(provider) {
|
|
26
|
-
return [
|
|
27
|
-
`Filesystem access is scoped to ${getPromptWorkspaceRoot(provider)}.`,
|
|
28
|
-
'Paths are relative to the workspace root unless you pass an absolute path under that root.',
|
|
29
|
-
].join(' ');
|
|
30
|
-
}
|
|
31
20
|
const workspaceRootCache = new WeakMap();
|
|
32
21
|
function getLocalFilesystemRoot(workspace) {
|
|
33
22
|
const filesystem = workspace.filesystem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-root.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/workspace-root.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace-root.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/workspace-root.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "AI agent SDK for n8n's code-first execution engine",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"undici": "^7.28.0",
|
|
98
98
|
"yaml": "2.8.3",
|
|
99
99
|
"zod-to-json-schema": "3.23.3",
|
|
100
|
-
"@n8n/
|
|
101
|
-
"@n8n/
|
|
100
|
+
"@n8n/utils": "1.41.0",
|
|
101
|
+
"@n8n/ai-utilities": "0.26.0"
|
|
102
102
|
},
|
|
103
103
|
"peerDependencies": {
|
|
104
104
|
"@pinecone-database/pinecone": "^5.0.2",
|
|
@@ -134,6 +134,8 @@
|
|
|
134
134
|
}
|
|
135
135
|
},
|
|
136
136
|
"devDependencies": {
|
|
137
|
+
"@opentelemetry/api": "^1.9.0",
|
|
138
|
+
"@opentelemetry/context-async-hooks": "^2.7.1",
|
|
137
139
|
"@pinecone-database/pinecone": "^5.0.2",
|
|
138
140
|
"@qdrant/js-client-rest": "^1.16.2",
|
|
139
141
|
"@supabase/supabase-js": "2.50.0",
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toJsonValue = toJsonValue;
|
|
4
|
-
function toJsonValue(value, seen = new WeakSet()) {
|
|
5
|
-
if (value === null || typeof value === 'string' || typeof value === 'boolean') {
|
|
6
|
-
return value;
|
|
7
|
-
}
|
|
8
|
-
if (typeof value === 'number') {
|
|
9
|
-
return Number.isFinite(value) ? value : null;
|
|
10
|
-
}
|
|
11
|
-
if (value === undefined || typeof value === 'function' || typeof value === 'symbol') {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
if (typeof value === 'bigint') {
|
|
15
|
-
return value.toString();
|
|
16
|
-
}
|
|
17
|
-
if (value instanceof Date) {
|
|
18
|
-
return value.toISOString();
|
|
19
|
-
}
|
|
20
|
-
if (value instanceof Error) {
|
|
21
|
-
return {
|
|
22
|
-
name: value.name,
|
|
23
|
-
message: value.message,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
if (Array.isArray(value)) {
|
|
27
|
-
return value.map((entry) => toJsonValue(entry, seen));
|
|
28
|
-
}
|
|
29
|
-
if (typeof value === 'object') {
|
|
30
|
-
if (seen.has(value)) {
|
|
31
|
-
return '[Circular]';
|
|
32
|
-
}
|
|
33
|
-
seen.add(value);
|
|
34
|
-
const result = {};
|
|
35
|
-
for (const [key, entryValue] of Object.entries(value)) {
|
|
36
|
-
result[key] = toJsonValue(entryValue, seen);
|
|
37
|
-
}
|
|
38
|
-
seen.delete(value);
|
|
39
|
-
return result;
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=json-value.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-value.js","sourceRoot":"","sources":["../../src/runtime/json-value.ts"],"names":[],"mappings":";;;AAEA,qBAA4B,KAAc,EAAE,IAAI,GAAG,IAAI,OAAO,EAAU;IACvE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC5B,OAAO;YACN,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,YAAY,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|