@n8n/agents 0.10.1 → 0.11.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 +8 -2
- package/dist/index.js +27 -5
- package/dist/index.js.map +1 -1
- package/dist/runtime/agent-runtime.d.ts +14 -6
- package/dist/runtime/agent-runtime.js +320 -243
- package/dist/runtime/agent-runtime.js.map +1 -1
- package/dist/runtime/delegate-sub-agent-tool.d.ts +87 -0
- package/dist/runtime/delegate-sub-agent-tool.js +362 -0
- package/dist/runtime/delegate-sub-agent-tool.js.map +1 -0
- package/dist/runtime/event-bus.d.ts +8 -0
- package/dist/runtime/event-bus.js +48 -0
- package/dist/runtime/event-bus.js.map +1 -1
- package/dist/runtime/mcp-connection.d.ts +1 -2
- package/dist/runtime/mcp-connection.js +1 -4
- package/dist/runtime/mcp-connection.js.map +1 -1
- package/dist/runtime/message-list.d.ts +9 -3
- package/dist/runtime/message-list.js +16 -5
- package/dist/runtime/message-list.js.map +1 -1
- package/dist/runtime/messages.js +10 -2
- package/dist/runtime/messages.js.map +1 -1
- package/dist/runtime/model-factory.js +12 -0
- package/dist/runtime/model-factory.js.map +1 -1
- package/dist/runtime/provider-credentials.d.ts +13 -0
- package/dist/runtime/provider-credentials.js +1 -0
- package/dist/runtime/provider-credentials.js.map +1 -1
- package/dist/runtime/runtime-helpers.d.ts +1 -2
- package/dist/runtime/runtime-helpers.js +0 -8
- package/dist/runtime/runtime-helpers.js.map +1 -1
- package/dist/runtime/sdk-owned-tool.d.ts +4 -0
- package/dist/runtime/sdk-owned-tool.js +19 -0
- package/dist/runtime/sdk-owned-tool.js.map +1 -0
- package/dist/runtime/stream.js +8 -0
- package/dist/runtime/stream.js.map +1 -1
- package/dist/runtime/sub-agent-task-path.d.ts +10 -0
- package/dist/runtime/sub-agent-task-path.js +39 -0
- package/dist/runtime/sub-agent-task-path.js.map +1 -0
- package/dist/runtime/title-generation.js +3 -5
- package/dist/runtime/title-generation.js.map +1 -1
- package/dist/runtime/tool-adapter.d.ts +0 -9
- package/dist/runtime/tool-adapter.js +12 -21
- package/dist/runtime/tool-adapter.js.map +1 -1
- package/dist/runtime/write-todos-tool.d.ts +3 -0
- package/dist/runtime/write-todos-tool.js +95 -0
- package/dist/runtime/write-todos-tool.js.map +1 -0
- package/dist/sdk/agent.d.ts +19 -12
- package/dist/sdk/agent.js +318 -91
- package/dist/sdk/agent.js.map +1 -1
- package/dist/sdk/cancellation.d.ts +7 -0
- package/dist/sdk/cancellation.js +16 -0
- package/dist/sdk/cancellation.js.map +1 -0
- package/dist/sdk/catalog.js +20 -4
- package/dist/sdk/catalog.js.map +1 -1
- package/dist/sdk/mcp-client.d.ts +1 -1
- package/dist/sdk/mcp-client.js +2 -2
- package/dist/sdk/mcp-client.js.map +1 -1
- package/dist/sdk/memory.d.ts +1 -3
- package/dist/sdk/memory.js +0 -14
- package/dist/sdk/memory.js.map +1 -1
- package/dist/sdk/provider-capabilities.js +1 -0
- package/dist/sdk/provider-capabilities.js.map +1 -1
- package/dist/sdk/tool.d.ts +3 -0
- package/dist/sdk/tool.js +42 -10
- package/dist/sdk/tool.js.map +1 -1
- package/dist/storage/base-memory.d.ts +0 -31
- package/dist/storage/base-memory.js +0 -9
- package/dist/storage/base-memory.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/runtime/event.d.ts +31 -1
- package/dist/types/runtime/event.js +2 -0
- package/dist/types/runtime/event.js.map +1 -1
- package/dist/types/sdk/agent-builder.d.ts +0 -1
- package/dist/types/sdk/agent.d.ts +20 -15
- package/dist/types/sdk/memory.d.ts +0 -42
- package/dist/types/sdk/message.d.ts +1 -0
- package/dist/types/sdk/tool.d.ts +19 -1
- package/dist/utils/json-schema.d.ts +3 -0
- package/dist/utils/json-schema.js +72 -0
- package/dist/utils/json-schema.js.map +1 -0
- package/dist/workspace/filesystem/daytona-filesystem.d.ts +25 -0
- package/dist/workspace/filesystem/daytona-filesystem.js +130 -0
- package/dist/workspace/filesystem/daytona-filesystem.js.map +1 -0
- package/dist/workspace/filesystem/n8n-sandbox-filesystem.d.ts +25 -0
- package/dist/workspace/filesystem/n8n-sandbox-filesystem.js +126 -0
- package/dist/workspace/filesystem/n8n-sandbox-filesystem.js.map +1 -0
- package/dist/workspace/sandbox/create-workspace.d.ts +4 -0
- package/dist/workspace/sandbox/create-workspace.js +58 -0
- package/dist/workspace/sandbox/create-workspace.js.map +1 -0
- package/dist/workspace/sandbox/daytona-auth-manager.d.ts +26 -0
- package/dist/workspace/sandbox/daytona-auth-manager.js +84 -0
- package/dist/workspace/sandbox/daytona-auth-manager.js.map +1 -0
- package/dist/workspace/sandbox/daytona-sandbox.d.ts +72 -0
- package/dist/workspace/sandbox/daytona-sandbox.js +357 -0
- package/dist/workspace/sandbox/daytona-sandbox.js.map +1 -0
- package/dist/workspace/sandbox/index.d.ts +7 -0
- package/dist/workspace/sandbox/index.js +22 -0
- package/dist/workspace/sandbox/index.js.map +1 -0
- package/dist/workspace/sandbox/lazy-daytona.d.ts +2 -0
- package/dist/workspace/sandbox/lazy-daytona.js +12 -0
- package/dist/workspace/sandbox/lazy-daytona.js.map +1 -0
- package/dist/workspace/sandbox/logger.d.ts +12 -0
- package/dist/workspace/sandbox/logger.js +3 -0
- package/dist/workspace/sandbox/logger.js.map +1 -0
- package/dist/workspace/sandbox/n8n-sandbox-sandbox.d.ts +35 -0
- package/dist/workspace/sandbox/n8n-sandbox-sandbox.js +138 -0
- package/dist/workspace/sandbox/n8n-sandbox-sandbox.js.map +1 -0
- package/dist/workspace/sandbox/provider.d.ts +4 -0
- package/dist/workspace/sandbox/provider.js +14 -0
- package/dist/workspace/sandbox/provider.js.map +1 -0
- package/dist/workspace/sandbox/run-in-sandbox.d.ts +26 -0
- package/dist/workspace/sandbox/run-in-sandbox.js +19 -0
- package/dist/workspace/sandbox/run-in-sandbox.js.map +1 -0
- package/dist/workspace/sandbox/types.d.ts +41 -0
- package/dist/workspace/sandbox/types.js +3 -0
- package/dist/workspace/sandbox/types.js.map +1 -0
- package/dist/workspace/sandbox/workspace-root.d.ts +16 -0
- package/dist/workspace/sandbox/workspace-root.js +69 -0
- package/dist/workspace/sandbox/workspace-root.js.map +1 -0
- package/dist/workspace/tools/batch-str-replace-file.js +2 -2
- package/dist/workspace/tools/batch-str-replace-file.js.map +1 -1
- package/dist/workspace/tools/str-replace-file.js +2 -2
- package/dist/workspace/tools/str-replace-file.js.map +1 -1
- package/package.json +29 -17
- package/dist/sdk/network.d.ts +0 -20
- package/dist/sdk/network.js +0 -46
- package/dist/sdk/network.js.map +0 -1
|
@@ -0,0 +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,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,mDAA2E;AAAlE,8GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAqE;AAA5D,oHAAA,gBAAgB,OAAA;AAAE,iHAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadDaytona = loadDaytona;
|
|
4
|
+
let _daytonaMod;
|
|
5
|
+
function loadDaytona() {
|
|
6
|
+
if (!_daytonaMod) {
|
|
7
|
+
const mod = require('@daytonaio/sdk');
|
|
8
|
+
_daytonaMod = mod;
|
|
9
|
+
}
|
|
10
|
+
return _daytonaMod;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=lazy-daytona.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-daytona.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/lazy-daytona.ts"],"names":[],"mappings":";;AAIA,kCAOC;AATD,IAAI,WAA0C,CAAC;AAE/C,SAAgB,WAAW;IAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QAElB,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAsB,CAAC;QAC3D,WAAW,GAAG,GAAG,CAAC;IACnB,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface Logger {
|
|
2
|
+
info(message: string, metadata?: Record<string, unknown>): void;
|
|
3
|
+
warn(message: string, metadata?: Record<string, unknown>): void;
|
|
4
|
+
error(message: string, metadata?: Record<string, unknown>): void;
|
|
5
|
+
debug(message: string, metadata?: Record<string, unknown>): void;
|
|
6
|
+
}
|
|
7
|
+
export interface ErrorReporter {
|
|
8
|
+
error(error: unknown, options?: {
|
|
9
|
+
tags?: Record<string, string>;
|
|
10
|
+
extra?: Record<string, unknown>;
|
|
11
|
+
}): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/logger.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { SandboxClient } from '@n8n/sandbox-client';
|
|
2
|
+
import { BaseSandbox } from './base-sandbox';
|
|
3
|
+
import type { CommandResult, ExecuteCommandOptions, ProviderStatus, SandboxInfo } from '../types';
|
|
4
|
+
export interface N8nSandboxServiceSandboxOptions {
|
|
5
|
+
id?: string;
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
serviceUrl?: string;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
env?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export declare class N8nSandboxServiceSandbox extends BaseSandbox {
|
|
12
|
+
private readonly options;
|
|
13
|
+
readonly name = "N8nSandboxServiceSandbox";
|
|
14
|
+
readonly provider = "n8n-sandbox";
|
|
15
|
+
status: ProviderStatus;
|
|
16
|
+
private readonly instanceId;
|
|
17
|
+
private readonly client;
|
|
18
|
+
private readonly timeout;
|
|
19
|
+
private static readonly HOME_DIR;
|
|
20
|
+
private static readonly WORKSPACE_DIR;
|
|
21
|
+
private sandboxId?;
|
|
22
|
+
private createdAt?;
|
|
23
|
+
constructor(options: N8nSandboxServiceSandboxOptions);
|
|
24
|
+
get id(): string;
|
|
25
|
+
start(): Promise<void>;
|
|
26
|
+
destroy(): Promise<void>;
|
|
27
|
+
stop(): Promise<void>;
|
|
28
|
+
getInfo(): Promise<SandboxInfo>;
|
|
29
|
+
getInstructions(): string;
|
|
30
|
+
executeCommand(command: string, args?: string[], options?: ExecuteCommandOptions): Promise<CommandResult>;
|
|
31
|
+
getClient(): SandboxClient;
|
|
32
|
+
private tryGetExistingSandbox;
|
|
33
|
+
private compactEnv;
|
|
34
|
+
private requireSandboxId;
|
|
35
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.N8nSandboxServiceSandbox = void 0;
|
|
7
|
+
const sandbox_client_1 = require("@n8n/sandbox-client");
|
|
8
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
9
|
+
const node_crypto_1 = require("node:crypto");
|
|
10
|
+
const base_sandbox_1 = require("./base-sandbox");
|
|
11
|
+
function shellEscape(value) {
|
|
12
|
+
return /^[A-Za-z0-9_./:=+-]+$/.test(value) ? value : `'${value.replace(/'/g, "'\\''")}'`;
|
|
13
|
+
}
|
|
14
|
+
function toShellCommand(command, args = []) {
|
|
15
|
+
if (args.length === 0)
|
|
16
|
+
return command;
|
|
17
|
+
return [command, ...args.map((arg) => shellEscape(arg))].join(' ');
|
|
18
|
+
}
|
|
19
|
+
class N8nSandboxServiceSandbox extends base_sandbox_1.BaseSandbox {
|
|
20
|
+
constructor(options) {
|
|
21
|
+
super();
|
|
22
|
+
this.options = options;
|
|
23
|
+
this.name = 'N8nSandboxServiceSandbox';
|
|
24
|
+
this.provider = 'n8n-sandbox';
|
|
25
|
+
this.status = 'pending';
|
|
26
|
+
this.instanceId = `n8n-sandbox-${(0, node_crypto_1.randomUUID)()}`;
|
|
27
|
+
this.client = new sandbox_client_1.SandboxClient({
|
|
28
|
+
apiKey: options.apiKey,
|
|
29
|
+
baseUrl: options.serviceUrl,
|
|
30
|
+
});
|
|
31
|
+
this.sandboxId = options.id;
|
|
32
|
+
this.timeout = options.timeout ?? 300_000;
|
|
33
|
+
}
|
|
34
|
+
get id() {
|
|
35
|
+
return this.sandboxId ?? this.instanceId;
|
|
36
|
+
}
|
|
37
|
+
async start() {
|
|
38
|
+
if (this.sandboxId) {
|
|
39
|
+
const existing = await this.tryGetExistingSandbox(this.sandboxId);
|
|
40
|
+
if (existing) {
|
|
41
|
+
this.createdAt = new Date(existing.createdAt * 1000);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const sandbox = await this.client.createSandbox();
|
|
46
|
+
this.sandboxId = sandbox.id;
|
|
47
|
+
this.createdAt = new Date();
|
|
48
|
+
}
|
|
49
|
+
async destroy() {
|
|
50
|
+
if (!this.sandboxId)
|
|
51
|
+
return;
|
|
52
|
+
try {
|
|
53
|
+
await this.client.deleteSandbox(this.sandboxId);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error instanceof sandbox_client_1.SandboxServiceError && error.status === 404)
|
|
57
|
+
return;
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async stop() {
|
|
62
|
+
}
|
|
63
|
+
async getInfo() {
|
|
64
|
+
await this.ensureRunning();
|
|
65
|
+
const sandbox = await this.client.getSandbox(this.requireSandboxId());
|
|
66
|
+
return {
|
|
67
|
+
id: sandbox.id,
|
|
68
|
+
name: this.name,
|
|
69
|
+
provider: this.provider,
|
|
70
|
+
status: this.status,
|
|
71
|
+
createdAt: this.createdAt ?? new Date(sandbox.createdAt * 1000),
|
|
72
|
+
metadata: {
|
|
73
|
+
lastActiveAt: new Date(sandbox.lastActiveAt * 1000).toISOString(),
|
|
74
|
+
remoteStatus: sandbox.status,
|
|
75
|
+
workingDirectory: N8nSandboxServiceSandbox.WORKSPACE_DIR,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
getInstructions() {
|
|
80
|
+
return [
|
|
81
|
+
'Cloud sandbox with isolated execution (TypeScript runtime).',
|
|
82
|
+
`Default working directory: ${N8nSandboxServiceSandbox.WORKSPACE_DIR}.`,
|
|
83
|
+
`Command timeout: ${Math.ceil(this.timeout / 1000)}s.`,
|
|
84
|
+
].join(' ');
|
|
85
|
+
}
|
|
86
|
+
async executeCommand(command, args = [], options) {
|
|
87
|
+
await this.ensureRunning();
|
|
88
|
+
const result = await this.client.exec(this.requireSandboxId(), {
|
|
89
|
+
command: toShellCommand(command, args),
|
|
90
|
+
env: this.compactEnv(options?.env),
|
|
91
|
+
workdir: options?.cwd,
|
|
92
|
+
timeoutMs: options?.timeout ?? this.timeout,
|
|
93
|
+
abortSignal: options?.abortSignal,
|
|
94
|
+
onStdout: options?.onStdout,
|
|
95
|
+
onStderr: options?.onStderr,
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
command,
|
|
99
|
+
args,
|
|
100
|
+
success: result.success,
|
|
101
|
+
exitCode: result.exitCode,
|
|
102
|
+
stdout: result.stdout,
|
|
103
|
+
stderr: result.stderr,
|
|
104
|
+
executionTimeMs: result.executionTimeMs,
|
|
105
|
+
timedOut: result.timedOut,
|
|
106
|
+
killed: result.killed,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
getClient() {
|
|
110
|
+
return this.client;
|
|
111
|
+
}
|
|
112
|
+
async tryGetExistingSandbox(sandboxId) {
|
|
113
|
+
try {
|
|
114
|
+
return await this.client.getSandbox(sandboxId);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (error instanceof sandbox_client_1.SandboxServiceError && error.status === 404)
|
|
118
|
+
return null;
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
compactEnv(env) {
|
|
123
|
+
const merged = {
|
|
124
|
+
...this.options.env,
|
|
125
|
+
...env,
|
|
126
|
+
};
|
|
127
|
+
const entries = Object.entries(merged).filter((entry) => typeof entry[1] === 'string');
|
|
128
|
+
return entries.length > 0 ? Object.fromEntries(entries) : undefined;
|
|
129
|
+
}
|
|
130
|
+
requireSandboxId() {
|
|
131
|
+
(0, strict_1.default)(this.sandboxId, 'Sandbox has not been created yet');
|
|
132
|
+
return this.sandboxId;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.N8nSandboxServiceSandbox = N8nSandboxServiceSandbox;
|
|
136
|
+
N8nSandboxServiceSandbox.HOME_DIR = '/home/user';
|
|
137
|
+
N8nSandboxServiceSandbox.WORKSPACE_DIR = `${N8nSandboxServiceSandbox.HOME_DIR}/workspace`;
|
|
138
|
+
//# sourceMappingURL=n8n-sandbox-sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n8n-sandbox-sandbox.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/n8n-sandbox-sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SandboxProvider } from './types';
|
|
2
|
+
export declare const DEFAULT_SANDBOX_PROVIDER: SandboxProvider;
|
|
3
|
+
export declare function isSandboxProvider(value: string | undefined): value is SandboxProvider;
|
|
4
|
+
export declare function normalizeSandboxProvider(value: string | undefined): SandboxProvider;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_SANDBOX_PROVIDER = void 0;
|
|
4
|
+
exports.isSandboxProvider = isSandboxProvider;
|
|
5
|
+
exports.normalizeSandboxProvider = normalizeSandboxProvider;
|
|
6
|
+
exports.DEFAULT_SANDBOX_PROVIDER = 'n8n-sandbox';
|
|
7
|
+
const SANDBOX_PROVIDERS = new Set(['daytona', 'n8n-sandbox']);
|
|
8
|
+
function isSandboxProvider(value) {
|
|
9
|
+
return typeof value === 'string' && SANDBOX_PROVIDERS.has(value);
|
|
10
|
+
}
|
|
11
|
+
function normalizeSandboxProvider(value) {
|
|
12
|
+
return isSandboxProvider(value) ? value : exports.DEFAULT_SANDBOX_PROVIDER;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/provider.ts"],"names":[],"mappings":";;;AAMA,8CAEC;AAED,4DAEC;AAVY,QAAA,wBAAwB,GAAoB,aAAa,CAAC;AAEvE,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAEnF,SAAgB,iBAAiB,CAAC,KAAyB;IAC1D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,wBAAwB,CAAC,KAAyB;IACjE,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAwB,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
interface SandboxCommandResult {
|
|
2
|
+
exitCode: number;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SandboxCommandTarget {
|
|
7
|
+
sandbox?: {
|
|
8
|
+
provider?: string;
|
|
9
|
+
executeCommand?: (command: string, args?: string[], options?: {
|
|
10
|
+
cwd?: string;
|
|
11
|
+
}) => Promise<SandboxCommandResult>;
|
|
12
|
+
processes?: {
|
|
13
|
+
spawn: (command: string, options?: {
|
|
14
|
+
cwd?: string;
|
|
15
|
+
}) => Promise<{
|
|
16
|
+
wait: () => Promise<SandboxCommandResult>;
|
|
17
|
+
}>;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare function runInSandbox(workspace: SandboxCommandTarget, command: string, cwd?: string): Promise<{
|
|
22
|
+
exitCode: number;
|
|
23
|
+
stdout: string;
|
|
24
|
+
stderr: string;
|
|
25
|
+
}>;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runInSandbox = runInSandbox;
|
|
4
|
+
async function runInSandbox(workspace, command, cwd) {
|
|
5
|
+
const sandbox = workspace.sandbox;
|
|
6
|
+
if (!sandbox)
|
|
7
|
+
throw new Error('Workspace has no sandbox');
|
|
8
|
+
if (sandbox.executeCommand) {
|
|
9
|
+
const result = await sandbox.executeCommand(command, [], { cwd });
|
|
10
|
+
return { exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
|
|
11
|
+
}
|
|
12
|
+
if (sandbox.processes) {
|
|
13
|
+
const handle = await sandbox.processes.spawn(command, { cwd });
|
|
14
|
+
const result = await handle.wait();
|
|
15
|
+
return { exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
|
|
16
|
+
}
|
|
17
|
+
throw new Error('Sandbox has neither executeCommand nor processes available');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=run-in-sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-in-sandbox.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/run-in-sandbox.ts"],"names":[],"mappings":";;AA2BA,oCAoBC;AApBM,KAAK,UAAU,YAAY,CACjC,SAA+B,EAC/B,OAAe,EACf,GAAY;IAEZ,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAClC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACpF,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { CreateSandboxFromImageParams } from '@daytonaio/sdk';
|
|
2
|
+
import type { BaseFilesystemOptions } from '../filesystem/base-filesystem';
|
|
3
|
+
import type { BaseSandboxOptions, CommandOptions, CommandResult, CopyOptions, ExecuteCommandOptions, FileContent, FileEntry, FileStat, ListOptions, MountConfig, ProcessHandle, ProcessInfo, ProviderStatus, ReadOptions, RemoveOptions, SandboxInfo, SandboxProcessManager, SpawnProcessOptions, WorkspaceFilesystem, WorkspaceSandbox, WriteOptions } from '../types';
|
|
4
|
+
import type { ErrorReporter, Logger } from './logger';
|
|
5
|
+
export type { BaseFilesystemOptions, BaseSandboxOptions, CommandOptions, CommandResult, CopyOptions, ExecuteCommandOptions, FileContent, FileEntry, FileStat, ListOptions, MountConfig, ProcessHandle, ProcessInfo, ProviderStatus, ReadOptions, RemoveOptions, SandboxInfo, SandboxProcessManager, SpawnProcessOptions, WorkspaceFilesystem, WorkspaceSandbox, WriteOptions, };
|
|
6
|
+
export type SandboxProvider = 'daytona' | 'n8n-sandbox';
|
|
7
|
+
export interface SandboxConfigBase {
|
|
8
|
+
provider: SandboxProvider;
|
|
9
|
+
timeout?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface DisabledSandboxConfig extends SandboxConfigBase {
|
|
12
|
+
enabled: false;
|
|
13
|
+
}
|
|
14
|
+
export interface DaytonaSandboxConfig extends SandboxConfigBase {
|
|
15
|
+
enabled: true;
|
|
16
|
+
provider: 'daytona';
|
|
17
|
+
id?: string;
|
|
18
|
+
name?: string;
|
|
19
|
+
labels?: Record<string, string>;
|
|
20
|
+
daytonaApiUrl?: string;
|
|
21
|
+
daytonaApiKey?: string;
|
|
22
|
+
image?: CreateSandboxFromImageParams['image'];
|
|
23
|
+
snapshot?: string;
|
|
24
|
+
createTimeoutSeconds?: number;
|
|
25
|
+
getAuthToken?: () => Promise<string>;
|
|
26
|
+
refreshSkewMs?: number;
|
|
27
|
+
logger?: Logger;
|
|
28
|
+
}
|
|
29
|
+
export interface N8nSandboxConfig extends SandboxConfigBase {
|
|
30
|
+
enabled: true;
|
|
31
|
+
provider: 'n8n-sandbox';
|
|
32
|
+
serviceUrl: string;
|
|
33
|
+
apiKey?: string;
|
|
34
|
+
}
|
|
35
|
+
export type SandboxConfig = DisabledSandboxConfig | DaytonaSandboxConfig | N8nSandboxConfig;
|
|
36
|
+
export type SandboxInstance = WorkspaceSandbox;
|
|
37
|
+
export type SandboxFilesystem = WorkspaceFilesystem;
|
|
38
|
+
export interface CreateSandboxOptions {
|
|
39
|
+
logger?: Logger;
|
|
40
|
+
errorReporter?: ErrorReporter;
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type SandboxCommandTarget } from './run-in-sandbox';
|
|
2
|
+
import type { SandboxProvider } from './types';
|
|
3
|
+
export declare const WORKSPACE_DIR = "workspace";
|
|
4
|
+
export declare const DAYTONA_HOME = "/home/daytona";
|
|
5
|
+
export declare const DAYTONA_WORKSPACE_ROOT = "/home/daytona/workspace";
|
|
6
|
+
export declare const N8N_SANDBOX_HOME = "/home/user";
|
|
7
|
+
export declare const N8N_SANDBOX_WORKSPACE_ROOT = "/home/user/workspace";
|
|
8
|
+
export declare function getPromptWorkspaceRoot(provider: SandboxProvider): string;
|
|
9
|
+
export interface SandboxWorkspace extends SandboxCommandTarget {
|
|
10
|
+
filesystem?: {
|
|
11
|
+
provider?: string;
|
|
12
|
+
basePath?: string;
|
|
13
|
+
init?: () => Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function getWorkspaceRoot(workspace: SandboxWorkspace): Promise<string>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.N8N_SANDBOX_WORKSPACE_ROOT = exports.N8N_SANDBOX_HOME = exports.DAYTONA_WORKSPACE_ROOT = exports.DAYTONA_HOME = exports.WORKSPACE_DIR = void 0;
|
|
4
|
+
exports.getPromptWorkspaceRoot = getPromptWorkspaceRoot;
|
|
5
|
+
exports.getWorkspaceRoot = getWorkspaceRoot;
|
|
6
|
+
const run_in_sandbox_1 = require("./run-in-sandbox");
|
|
7
|
+
exports.WORKSPACE_DIR = 'workspace';
|
|
8
|
+
exports.DAYTONA_HOME = '/home/daytona';
|
|
9
|
+
exports.DAYTONA_WORKSPACE_ROOT = `${exports.DAYTONA_HOME}/${exports.WORKSPACE_DIR}`;
|
|
10
|
+
exports.N8N_SANDBOX_HOME = '/home/user';
|
|
11
|
+
exports.N8N_SANDBOX_WORKSPACE_ROOT = `${exports.N8N_SANDBOX_HOME}/${exports.WORKSPACE_DIR}`;
|
|
12
|
+
function getPromptWorkspaceRoot(provider) {
|
|
13
|
+
switch (provider) {
|
|
14
|
+
case 'daytona':
|
|
15
|
+
return exports.DAYTONA_WORKSPACE_ROOT;
|
|
16
|
+
case 'n8n-sandbox':
|
|
17
|
+
return exports.N8N_SANDBOX_WORKSPACE_ROOT;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const workspaceRootCache = new WeakMap();
|
|
21
|
+
function getLocalFilesystemRoot(workspace) {
|
|
22
|
+
const filesystem = workspace.filesystem;
|
|
23
|
+
if (!filesystem)
|
|
24
|
+
return null;
|
|
25
|
+
const provider = filesystem.provider;
|
|
26
|
+
if (provider !== 'local' && provider !== 'lazy')
|
|
27
|
+
return null;
|
|
28
|
+
const basePath = Reflect.get(filesystem, 'basePath');
|
|
29
|
+
return typeof basePath === 'string' && basePath.length > 0 ? basePath : null;
|
|
30
|
+
}
|
|
31
|
+
async function initializeLazyFilesystem(workspace) {
|
|
32
|
+
const filesystem = workspace.filesystem;
|
|
33
|
+
if (filesystem?.provider !== 'lazy')
|
|
34
|
+
return;
|
|
35
|
+
await filesystem.init?.();
|
|
36
|
+
}
|
|
37
|
+
function getFallbackHome(workspace) {
|
|
38
|
+
switch (workspace.sandbox?.provider) {
|
|
39
|
+
case 'n8n-sandbox':
|
|
40
|
+
return exports.N8N_SANDBOX_HOME;
|
|
41
|
+
case 'daytona':
|
|
42
|
+
return exports.DAYTONA_HOME;
|
|
43
|
+
case undefined:
|
|
44
|
+
default:
|
|
45
|
+
return exports.DAYTONA_HOME;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async function getWorkspaceRoot(workspace) {
|
|
49
|
+
const cached = workspaceRootCache.get(workspace);
|
|
50
|
+
if (cached)
|
|
51
|
+
return cached;
|
|
52
|
+
const localRoot = getLocalFilesystemRoot(workspace);
|
|
53
|
+
if (localRoot) {
|
|
54
|
+
workspaceRootCache.set(workspace, localRoot);
|
|
55
|
+
return localRoot;
|
|
56
|
+
}
|
|
57
|
+
await initializeLazyFilesystem(workspace);
|
|
58
|
+
const initializedLocalRoot = getLocalFilesystemRoot(workspace);
|
|
59
|
+
if (initializedLocalRoot) {
|
|
60
|
+
workspaceRootCache.set(workspace, initializedLocalRoot);
|
|
61
|
+
return initializedLocalRoot;
|
|
62
|
+
}
|
|
63
|
+
const result = await (0, run_in_sandbox_1.runInSandbox)(workspace, 'echo $HOME');
|
|
64
|
+
const home = result.stdout.trim() || getFallbackHome(workspace);
|
|
65
|
+
const root = `${home}/${exports.WORKSPACE_DIR}`;
|
|
66
|
+
workspaceRootCache.set(workspace, root);
|
|
67
|
+
return root;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=workspace-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-root.js","sourceRoot":"","sources":["../../../src/workspace/sandbox/workspace-root.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createBatchStrReplaceFileTool = createBatchStrReplaceFileTool;
|
|
4
|
-
const
|
|
4
|
+
const generic_text_editor_1 = require("@n8n/ai-utilities/generic-text-editor");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
const tool_1 = require("../../sdk/tool");
|
|
7
7
|
const strReplacementSchema = zod_1.z.object({
|
|
@@ -46,7 +46,7 @@ function createBatchStrReplaceFileTool(filesystem) {
|
|
|
46
46
|
.handler(async (input) => {
|
|
47
47
|
try {
|
|
48
48
|
const content = await filesystem.readFile(input.path, { encoding: 'utf-8' });
|
|
49
|
-
const editor = new
|
|
49
|
+
const editor = new generic_text_editor_1.TextEditorDocument({ initialText: content.toString() });
|
|
50
50
|
const result = editor.executeBatch(input.replacements);
|
|
51
51
|
if (isBatchReplaceResult(result)) {
|
|
52
52
|
return { success: false, error: 'Batch replacement failed.', results: result };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-str-replace-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/batch-str-replace-file.ts"],"names":[],"mappings":";;AAmDA,sEA6BC;AAhFD,+
|
|
1
|
+
{"version":3,"file":"batch-str-replace-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/batch-str-replace-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createStrReplaceFileTool = createStrReplaceFileTool;
|
|
4
|
-
const
|
|
4
|
+
const generic_text_editor_1 = require("@n8n/ai-utilities/generic-text-editor");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
const tool_1 = require("../../sdk/tool");
|
|
7
7
|
const inputSchema = zod_1.z.object({
|
|
@@ -28,7 +28,7 @@ function createStrReplaceFileTool(filesystem) {
|
|
|
28
28
|
.handler(async (input) => {
|
|
29
29
|
try {
|
|
30
30
|
const content = await filesystem.readFile(input.path, { encoding: 'utf-8' });
|
|
31
|
-
const editor = new
|
|
31
|
+
const editor = new generic_text_editor_1.TextEditorDocument({ initialText: content.toString() });
|
|
32
32
|
const result = editor.execute({
|
|
33
33
|
command: 'str_replace',
|
|
34
34
|
path: input.path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"str-replace-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/str-replace-file.ts"],"names":[],"mappings":";;AA4BA,4DA6BC;AAzDD,+
|
|
1
|
+
{"version":3,"file":"str-replace-file.js","sourceRoot":"","sources":["../../../src/workspace/tools/str-replace-file.ts"],"names":[],"mappings":";;AA4BA,4DA6BC;AAzDD,+EAA2E;AAC3E,6BAAwB;AAExB,yCAAsC;AAItC,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACrD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACxF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;CAC9E,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC7D,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACzD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CACzF,CAAC,CAAC;AAIH,SAAS,iBAAiB,CAAC,KAAc;IACxC,OAAO;QACN,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;KAC/E,CAAC;AACH,CAAC;AAED,SAAgB,wBAAwB,CAAC,UAA+B;IACvE,OAAO,IAAI,WAAI,CAAC,4BAA4B,CAAC;SAC3C,WAAW,CACX,4FAA4F,CAC5F;SACA,KAAK,CAAC,WAAW,CAAC;SAClB,MAAM,CAAC,YAAY,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,IAAI,wCAAkB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,OAAO,EAAE,aAAa;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.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",
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
],
|
|
13
13
|
"catalog": [
|
|
14
14
|
"dist/sdk/catalog.d.ts"
|
|
15
|
+
],
|
|
16
|
+
"sandbox": [
|
|
17
|
+
"dist/workspace/sandbox/index.d.ts"
|
|
15
18
|
]
|
|
16
19
|
}
|
|
17
20
|
},
|
|
@@ -28,6 +31,10 @@
|
|
|
28
31
|
"./catalog": {
|
|
29
32
|
"types": "./dist/sdk/catalog.d.ts",
|
|
30
33
|
"default": "./dist/sdk/catalog.js"
|
|
34
|
+
},
|
|
35
|
+
"./sandbox": {
|
|
36
|
+
"types": "./dist/workspace/sandbox/index.d.ts",
|
|
37
|
+
"default": "./dist/workspace/sandbox/index.js"
|
|
31
38
|
}
|
|
32
39
|
},
|
|
33
40
|
"files": [
|
|
@@ -36,25 +43,29 @@
|
|
|
36
43
|
"LICENSE_EE.md"
|
|
37
44
|
],
|
|
38
45
|
"dependencies": {
|
|
39
|
-
"@ai-sdk/amazon-bedrock": "^4.0.
|
|
40
|
-
"@ai-sdk/anthropic": "3.0.
|
|
41
|
-
"@ai-sdk/azure": "^3.0.
|
|
42
|
-
"@ai-sdk/cohere": "^3.0.
|
|
43
|
-
"@ai-sdk/deepseek": "^2.0.
|
|
44
|
-
"@ai-sdk/gateway": "^3.0.
|
|
45
|
-
"@ai-sdk/google": "^3.0.
|
|
46
|
-
"@ai-sdk/groq": "^3.0.
|
|
47
|
-
"@ai-sdk/mistral": "^3.0.
|
|
48
|
-
"@ai-sdk/openai": "^3.0.
|
|
49
|
-
"@ai-sdk/
|
|
50
|
-
"@ai-sdk/
|
|
46
|
+
"@ai-sdk/amazon-bedrock": "^4.0.113",
|
|
47
|
+
"@ai-sdk/anthropic": "^3.0.81",
|
|
48
|
+
"@ai-sdk/azure": "^3.0.70",
|
|
49
|
+
"@ai-sdk/cohere": "^3.0.36",
|
|
50
|
+
"@ai-sdk/deepseek": "^2.0.35",
|
|
51
|
+
"@ai-sdk/gateway": "^3.0.125",
|
|
52
|
+
"@ai-sdk/google": "^3.0.80",
|
|
53
|
+
"@ai-sdk/groq": "^3.0.39",
|
|
54
|
+
"@ai-sdk/mistral": "^3.0.37",
|
|
55
|
+
"@ai-sdk/openai": "^3.0.68",
|
|
56
|
+
"@ai-sdk/openai-compatible": "^2.0.48",
|
|
57
|
+
"@ai-sdk/provider-utils": "^4.0.27",
|
|
58
|
+
"@ai-sdk/xai": "^3.0.93",
|
|
59
|
+
"@daytonaio/sdk": "0.175.0",
|
|
51
60
|
"@modelcontextprotocol/sdk": "1.26.0",
|
|
61
|
+
"@n8n/sandbox-client": "0.0.4",
|
|
52
62
|
"@openrouter/ai-sdk-provider": "^2.8.0",
|
|
53
|
-
"ai": "^6.0.
|
|
63
|
+
"ai": "^6.0.197",
|
|
54
64
|
"ajv": "^8.18.0",
|
|
55
65
|
"yaml": "2.8.3",
|
|
56
66
|
"zod": "3.25.67",
|
|
57
|
-
"@n8n/
|
|
67
|
+
"@n8n/utils": "1.34.0",
|
|
68
|
+
"@n8n/ai-utilities": "0.19.0"
|
|
58
69
|
},
|
|
59
70
|
"peerDependencies": {
|
|
60
71
|
"@opentelemetry/exporter-trace-otlp-http": ">=0.50.0",
|
|
@@ -81,8 +92,8 @@
|
|
|
81
92
|
"@vitest/coverage-v8": "4.1.1",
|
|
82
93
|
"vitest": "^4.1.1",
|
|
83
94
|
"vitest-mock-extended": "^3.1.0",
|
|
84
|
-
"@n8n/typescript-config": "1.
|
|
85
|
-
"@n8n/vitest-config": "1.
|
|
95
|
+
"@n8n/typescript-config": "1.5.0",
|
|
96
|
+
"@n8n/vitest-config": "1.14.0"
|
|
86
97
|
},
|
|
87
98
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
88
99
|
"homepage": "https://n8n.io",
|
|
@@ -99,6 +110,7 @@
|
|
|
99
110
|
"dev": "pnpm watch",
|
|
100
111
|
"typecheck": "tsc --noEmit",
|
|
101
112
|
"build": "rimraf dist && tsc -p tsconfig.build.json",
|
|
113
|
+
"build:unchecked": "rimraf dist && tsc -p tsconfig.build.json --noCheck",
|
|
102
114
|
"format": "biome format --write src examples",
|
|
103
115
|
"format:check": "biome ci src examples",
|
|
104
116
|
"lint": "eslint . --quiet",
|
package/dist/sdk/network.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Agent } from './agent';
|
|
2
|
-
import type { GenerateResult, RunOptions } from '../types';
|
|
3
|
-
interface BuiltNetwork {
|
|
4
|
-
readonly name: string;
|
|
5
|
-
run(prompt: string, options?: RunOptions): Promise<GenerateResult>;
|
|
6
|
-
}
|
|
7
|
-
export declare class Network {
|
|
8
|
-
private networkName;
|
|
9
|
-
private coordinatorAgent?;
|
|
10
|
-
private agents;
|
|
11
|
-
private built?;
|
|
12
|
-
constructor(name: string);
|
|
13
|
-
coordinator(a: Agent): this;
|
|
14
|
-
agent(a: Agent): this;
|
|
15
|
-
private ensureBuilt;
|
|
16
|
-
get name(): string;
|
|
17
|
-
run(prompt: string, options?: RunOptions): Promise<GenerateResult>;
|
|
18
|
-
protected build(): BuiltNetwork;
|
|
19
|
-
}
|
|
20
|
-
export {};
|