@n8n/instance-ai 1.14.7 → 1.15.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/agent/apply-agent-thinking.js +3 -3
- package/dist/agent/apply-agent-thinking.js.map +1 -1
- package/dist/agent/computer-use-prompt.js +12 -10
- package/dist/agent/computer-use-prompt.js.map +1 -1
- package/dist/agent/instance-agent.js +5 -2
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/sanitize-mcp-schemas.js +3 -3
- package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
- package/dist/agent/shared-prompts.js +3 -5
- package/dist/agent/shared-prompts.js.map +1 -1
- package/dist/agent/sub-agent-debriefing.d.ts +4 -4
- package/dist/agent/system-prompt.d.ts +1 -0
- package/dist/agent/system-prompt.js +10 -5
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/debug/run-debug-buffer.js +4 -4
- package/dist/debug/run-debug-buffer.js.map +1 -1
- package/dist/debug/sanitize-debug-snapshot.js +6 -5
- package/dist/debug/sanitize-debug-snapshot.js.map +1 -1
- package/dist/domain-access/domain-access-tracker.d.ts +8 -4
- package/dist/domain-access/domain-access-tracker.js +12 -7
- package/dist/domain-access/domain-access-tracker.js.map +1 -1
- package/dist/domain-access/domain-gating.d.ts +4 -4
- package/dist/domain-access/domain-gating.js +5 -5
- package/dist/domain-access/domain-gating.js.map +1 -1
- package/dist/error-formatting.js +3 -3
- package/dist/error-formatting.js.map +1 -1
- package/dist/index.d.ts +3 -20
- package/dist/index.js +4 -22
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-client-manager.d.ts +11 -2
- package/dist/mcp/mcp-client-manager.js +17 -9
- package/dist/mcp/mcp-client-manager.js.map +1 -1
- package/dist/runtime/resumable-stream-executor.js +8 -8
- package/dist/runtime/resumable-stream-executor.js.map +1 -1
- package/dist/runtime/run-state-registry.d.ts +4 -0
- package/dist/runtime/run-state-registry.js +22 -8
- package/dist/runtime/run-state-registry.js.map +1 -1
- package/dist/runtime/terminal-response-guard.js +6 -1
- package/dist/runtime/terminal-response-guard.js.map +1 -1
- package/dist/storage/terminal-outcome-storage.d.ts +4 -4
- package/dist/storage/workflow-loop-storage.d.ts +94 -94
- package/dist/stream/map-chunk.js +17 -17
- package/dist/stream/map-chunk.js.map +1 -1
- package/dist/stream/output-redaction.js +8 -6
- package/dist/stream/output-redaction.js.map +1 -1
- package/dist/stream/usage-accumulator.d.ts +18 -18
- package/dist/stream/work-summary-accumulator.d.ts +6 -6
- package/dist/tools/attachments/parse-file.tool.d.ts +18 -18
- package/dist/tools/credentials.tool.d.ts +2 -2
- package/dist/tools/data-tables.tool.js +2 -2
- package/dist/tools/data-tables.tool.js.map +1 -1
- package/dist/tools/evals/column-ref-utils.js +4 -4
- package/dist/tools/evals/column-ref-utils.js.map +1 -1
- package/dist/tools/evals/describe-metric-for-workflow.service.js +3 -3
- package/dist/tools/evals/describe-metric-for-workflow.service.js.map +1 -1
- package/dist/tools/evals/detect-tool-refs.service.js +2 -2
- package/dist/tools/evals/detect-tool-refs.service.js.map +1 -1
- package/dist/tools/evals/eval-data-requirements.service.js +10 -10
- package/dist/tools/evals/eval-data-requirements.service.js.map +1 -1
- package/dist/tools/evals/evals.tool.js +7 -8
- package/dist/tools/evals/evals.tool.js.map +1 -1
- package/dist/tools/evals/extract-rows-from-history.service.js +7 -7
- package/dist/tools/evals/extract-rows-from-history.service.js.map +1 -1
- package/dist/tools/evals/generate-sample-rows.service.js +5 -5
- package/dist/tools/evals/generate-sample-rows.service.js.map +1 -1
- package/dist/tools/evals/metric-catalog.js +3 -3
- package/dist/tools/evals/metric-catalog.js.map +1 -1
- package/dist/tools/executions.tool.js +4 -6
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/filesystem/create-tools-from-mcp-server.js +6 -6
- package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
- package/dist/tools/n8n-docs/schemas.d.ts +4 -4
- package/dist/tools/nodes/node-search-engine.js +3 -3
- package/dist/tools/nodes/node-search-engine.js.map +1 -1
- package/dist/tools/nodes.tool.js +13 -30
- package/dist/tools/nodes.tool.js.map +1 -1
- package/dist/tools/orchestration/complete-checkpoint.tool.js +2 -2
- package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
- package/dist/tools/orchestration/delegate.schemas.d.ts +1 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +8 -8
- package/dist/tools/orchestration/verification/analyze-result.js +4 -3
- package/dist/tools/orchestration/verification/analyze-result.js.map +1 -1
- package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +2 -2
- package/dist/tools/orchestration/verify-built-workflow.tool.js +4 -7
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/research.tool.js +2 -2
- package/dist/tools/research.tool.js.map +1 -1
- package/dist/tools/shared/ask-user.tool.d.ts +4 -4
- package/dist/tools/shared/ask-user.tool.js +11 -21
- package/dist/tools/shared/ask-user.tool.js.map +1 -1
- package/dist/tools/tool-ids.d.ts +1 -0
- package/dist/tools/tool-ids.js +2 -1
- package/dist/tools/tool-ids.js.map +1 -1
- package/dist/tools/workflows/apply-workflow-credentials.tool.js +6 -11
- package/dist/tools/workflows/apply-workflow-credentials.tool.js.map +1 -1
- package/dist/tools/workflows/build-workflow.tool.d.ts +9 -2
- package/dist/tools/workflows/build-workflow.tool.js +127 -5
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/classify-node-destructiveness.service.js +4 -4
- package/dist/tools/workflows/classify-node-destructiveness.service.js.map +1 -1
- package/dist/tools/workflows/credential-url-resolver.d.ts +21 -0
- package/dist/tools/workflows/credential-url-resolver.js +79 -0
- package/dist/tools/workflows/credential-url-resolver.js.map +1 -0
- package/dist/tools/workflows/credential-utils.d.ts +28 -0
- package/dist/tools/workflows/credential-utils.js +61 -0
- package/dist/tools/workflows/credential-utils.js.map +1 -0
- package/dist/tools/workflows/detect-array-input-collapse.js +4 -4
- package/dist/tools/workflows/detect-array-input-collapse.js.map +1 -1
- package/dist/tools/workflows/detect-wrong-kind-locator.d.ts +10 -0
- package/dist/tools/workflows/detect-wrong-kind-locator.js +105 -0
- package/dist/tools/workflows/detect-wrong-kind-locator.js.map +1 -0
- package/dist/tools/workflows/generate-simulation-fixtures.service.js +3 -3
- package/dist/tools/workflows/generate-simulation-fixtures.service.js.map +1 -1
- package/dist/tools/workflows/materialize-node-type.tool.d.ts +4 -4
- package/dist/tools/workflows/setup-workflow.schema.d.ts +63 -27
- package/dist/tools/workflows/setup-workflow.service.js +26 -43
- package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
- package/dist/tools/workflows/summarize-workflow.d.ts +5 -0
- package/dist/tools/workflows/summarize-workflow.js +114 -0
- package/dist/tools/workflows/summarize-workflow.js.map +1 -0
- package/dist/tools/workflows/workflow-json-utils.js +6 -5
- package/dist/tools/workflows/workflow-json-utils.js.map +1 -1
- package/dist/tools/workflows/workflow-source-compiler.js +48 -9
- package/dist/tools/workflows/workflow-source-compiler.js.map +1 -1
- package/dist/tools/workflows/workflow-validation-warnings.js +5 -1
- package/dist/tools/workflows/workflow-validation-warnings.js.map +1 -1
- package/dist/tools/workflows.tool.d.ts +1 -1
- package/dist/tools/workflows.tool.js +47 -22
- package/dist/tools/workflows.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.d.ts +5 -1
- package/dist/tracing/langsmith-tracing.js +66 -13
- package/dist/tracing/langsmith-tracing.js.map +1 -1
- package/dist/tracing/trace-payloads.d.ts +1 -0
- package/dist/tracing/trace-payloads.js +46 -29
- package/dist/tracing/trace-payloads.js.map +1 -1
- package/dist/types.d.ts +16 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/stream-helpers.js +5 -5
- package/dist/utils/stream-helpers.js.map +1 -1
- package/dist/workflow-builder/index.d.ts +0 -1
- package/dist/workflow-builder/index.js +1 -6
- package/dist/workflow-builder/index.js.map +1 -1
- package/dist/workflow-loop/index.d.ts +0 -1
- package/dist/workflow-loop/index.js +1 -3
- package/dist/workflow-loop/index.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +112 -112
- package/dist/workspace/snapshot-image-context.js +24 -11
- package/dist/workspace/snapshot-image-context.js.map +1 -1
- package/dist/workspace/snapshot-manager.d.ts +0 -1
- package/dist/workspace/snapshot-manager.js +0 -7
- package/dist/workspace/snapshot-manager.js.map +1 -1
- package/dist/workspace/template-telemetry.js +5 -4
- package/dist/workspace/template-telemetry.js.map +1 -1
- package/dist/workspace/workspace-manifest.js +2 -2
- package/dist/workspace/workspace-manifest.js.map +1 -1
- package/knowledge-base/reference/workflow-builder-guardrails.md +33 -0
- package/package.json +14 -12
- package/skills/post-build-flow/SKILL.md +106 -10
- package/skills/workflow-builder/SKILL.md +174 -225
- package/skills/workflow-builder/references/compositional-workflows.md +66 -0
- package/skills/workflow-builder/references/error-workflows.md +35 -0
- package/dist/tools/nodes/suggested-nodes-data.d.ts +0 -11
- package/dist/tools/nodes/suggested-nodes-data.js +0 -333
- package/dist/tools/nodes/suggested-nodes-data.js.map +0 -1
- package/dist/workflow-builder/sdk-prompt-sections.d.ts +0 -1
- package/dist/workflow-builder/sdk-prompt-sections.js +0 -9
- package/dist/workflow-builder/sdk-prompt-sections.js.map +0 -1
- package/dist/workflow-loop/terminal-remediation-guard.d.ts +0 -6
- package/dist/workflow-loop/terminal-remediation-guard.js +0 -18
- package/dist/workflow-loop/terminal-remediation-guard.js.map +0 -1
|
@@ -6,6 +6,7 @@ const promises_1 = require("node:fs/promises");
|
|
|
6
6
|
const node_os_1 = require("node:os");
|
|
7
7
|
const node_path_1 = require("node:path");
|
|
8
8
|
const SNAPSHOT_CONTEXT_PREFIX = 'n8n-snapshot-context-';
|
|
9
|
+
const stagingByCacheKey = new Map();
|
|
9
10
|
function workspaceRelativePath(filePath, workspaceRoot) {
|
|
10
11
|
const root = workspaceRoot.endsWith('/') ? workspaceRoot : `${workspaceRoot}/`;
|
|
11
12
|
if (!filePath.startsWith(root)) {
|
|
@@ -13,22 +14,34 @@ function workspaceRelativePath(filePath, workspaceRoot) {
|
|
|
13
14
|
}
|
|
14
15
|
return filePath.slice(root.length);
|
|
15
16
|
}
|
|
16
|
-
async function
|
|
17
|
-
let stagingDir;
|
|
18
|
-
if (cacheKey) {
|
|
19
|
-
stagingDir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `${SNAPSHOT_CONTEXT_PREFIX}${cacheKey}`);
|
|
20
|
-
await (0, promises_1.rm)(stagingDir, { recursive: true, force: true });
|
|
21
|
-
await (0, promises_1.mkdir)(stagingDir, { recursive: true });
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
stagingDir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), `${SNAPSHOT_CONTEXT_PREFIX}temp-`));
|
|
25
|
-
}
|
|
17
|
+
async function writeStagedFiles(stagingDir, files, workspaceRoot) {
|
|
26
18
|
for (const [filePath, content] of files) {
|
|
27
19
|
const targetPath = (0, node_path_1.join)(stagingDir, workspaceRelativePath(filePath, workspaceRoot));
|
|
28
20
|
await (0, promises_1.mkdir)((0, node_path_1.dirname)(targetPath), { recursive: true });
|
|
29
21
|
await (0, promises_1.writeFile)(targetPath, content, 'utf-8');
|
|
30
22
|
}
|
|
31
|
-
|
|
23
|
+
}
|
|
24
|
+
async function stageWorkspaceFilesForImage(files, workspaceRoot, cacheKey) {
|
|
25
|
+
if (!cacheKey) {
|
|
26
|
+
const stagingDir = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), `${SNAPSHOT_CONTEXT_PREFIX}temp-`));
|
|
27
|
+
await writeStagedFiles(stagingDir, files, workspaceRoot);
|
|
28
|
+
return { stagingDir };
|
|
29
|
+
}
|
|
30
|
+
const inFlightOrDone = stagingByCacheKey.get(cacheKey);
|
|
31
|
+
if (inFlightOrDone)
|
|
32
|
+
return await inFlightOrDone;
|
|
33
|
+
const staging = (async () => {
|
|
34
|
+
const stagingDir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `${SNAPSHOT_CONTEXT_PREFIX}${cacheKey}`);
|
|
35
|
+
await (0, promises_1.rm)(stagingDir, { recursive: true, force: true });
|
|
36
|
+
await (0, promises_1.mkdir)(stagingDir, { recursive: true });
|
|
37
|
+
await writeStagedFiles(stagingDir, files, workspaceRoot);
|
|
38
|
+
return { stagingDir };
|
|
39
|
+
})().catch((error) => {
|
|
40
|
+
stagingByCacheKey.delete(cacheKey);
|
|
41
|
+
throw error;
|
|
42
|
+
});
|
|
43
|
+
stagingByCacheKey.set(cacheKey, staging);
|
|
44
|
+
return await staging;
|
|
32
45
|
}
|
|
33
46
|
async function disposeSnapshotImageContext(stagingDir) {
|
|
34
47
|
await (0, promises_1.rm)(stagingDir, { recursive: true, force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-image-context.js","sourceRoot":"","sources":["../../src/workspace/snapshot-image-context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"snapshot-image-context.js","sourceRoot":"","sources":["../../src/workspace/snapshot-image-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,6 @@ export declare class SnapshotManager {
|
|
|
15
15
|
private cachedImage;
|
|
16
16
|
private runtimeSkillBundlePromise;
|
|
17
17
|
private knowledgeBaseBundlePromise;
|
|
18
|
-
private stagingDir;
|
|
19
18
|
constructor(baseImage: string | undefined, logger: Logger, n8nVersion: string | undefined, runtimeSkillSource?: RuntimeSkillSource | undefined, templatesService?: BuilderTemplatesService | undefined);
|
|
20
19
|
ensureImage(): Promise<Image>;
|
|
21
20
|
private prepareImage;
|
|
@@ -27,7 +27,6 @@ class SnapshotManager {
|
|
|
27
27
|
cachedImage = null;
|
|
28
28
|
runtimeSkillBundlePromise = null;
|
|
29
29
|
knowledgeBaseBundlePromise = null;
|
|
30
|
-
stagingDir = null;
|
|
31
30
|
constructor(baseImage, logger, n8nVersion, runtimeSkillSource, templatesService) {
|
|
32
31
|
this.baseImage = baseImage;
|
|
33
32
|
this.logger = logger;
|
|
@@ -52,7 +51,6 @@ class SnapshotManager {
|
|
|
52
51
|
workspaceFiles.set(`${sandbox_1.DAYTONA_WORKSPACE_ROOT}/tsconfig.json`, sandbox_setup_1.TSCONFIG_JSON);
|
|
53
52
|
workspaceFiles.set(`${sandbox_1.DAYTONA_WORKSPACE_ROOT}/build.mjs`, sandbox_setup_1.BUILD_MJS);
|
|
54
53
|
const { stagingDir } = await (0, snapshot_image_context_1.stageWorkspaceFilesForImage)(workspaceFiles, sandbox_1.DAYTONA_WORKSPACE_ROOT, cacheKey);
|
|
55
|
-
this.stagingDir = stagingDir;
|
|
56
54
|
const { Image } = (0, sandbox_1.loadDaytona)();
|
|
57
55
|
const layoutDirs = SNAPSHOT_WORKSPACE_LAYOUT_DIRS.map((dir) => `${sandbox_1.DAYTONA_WORKSPACE_ROOT}/${dir}`).join(' ');
|
|
58
56
|
const image = Image.base(base)
|
|
@@ -115,14 +113,9 @@ class SnapshotManager {
|
|
|
115
113
|
});
|
|
116
114
|
}
|
|
117
115
|
invalidate() {
|
|
118
|
-
const stagingDir = this.stagingDir;
|
|
119
116
|
this.cachedImage = null;
|
|
120
117
|
this.runtimeSkillBundlePromise = null;
|
|
121
118
|
this.knowledgeBaseBundlePromise = null;
|
|
122
|
-
this.stagingDir = null;
|
|
123
|
-
if (stagingDir) {
|
|
124
|
-
void (0, snapshot_image_context_1.disposeSnapshotImageContext)(stagingDir);
|
|
125
|
-
}
|
|
126
119
|
}
|
|
127
120
|
}
|
|
128
121
|
exports.SnapshotManager = SnapshotManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-manager.js","sourceRoot":"","sources":["../../src/workspace/snapshot-manager.ts"],"names":[],"mappings":";;;AAgBA,iDAA0E;AAE1E,6FAGsD;AAEtD,2EAGqC;AACrC,mDAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"snapshot-manager.js","sourceRoot":"","sources":["../../src/workspace/snapshot-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@ exports.attachTemplateTelemetrySession = attachTemplateTelemetrySession;
|
|
|
6
6
|
exports.detachTemplateTelemetrySession = detachTemplateTelemetrySession;
|
|
7
7
|
exports.getTemplateTelemetrySession = getTemplateTelemetrySession;
|
|
8
8
|
exports.createTypedToolObserver = createTypedToolObserver;
|
|
9
|
-
const
|
|
9
|
+
const is_record_1 = require("@n8n/utils/is-record");
|
|
10
|
+
const scrub_secrets_1 = require("@n8n/utils/scrub-secrets");
|
|
10
11
|
const MAX_QUERY_LENGTH = 200;
|
|
11
12
|
const MAX_USER_REQUEST_LENGTH = 120;
|
|
12
13
|
const SEARCH_PATTERN = /\bgrep\b[^|]*\bknowledge-base\/templates(?:\/|\s|$)/;
|
|
@@ -79,7 +80,7 @@ function createTemplateTelemetrySession(opts) {
|
|
|
79
80
|
templates_read: templatesRead,
|
|
80
81
|
unique_templates_read: Array.from(new Set(templatesRead)).length,
|
|
81
82
|
user_request_excerpt: opts.userRequestExcerpt
|
|
82
|
-
? truncate((0,
|
|
83
|
+
? truncate((0, scrub_secrets_1.scrubSecretsInText)(opts.userRequestExcerpt), MAX_USER_REQUEST_LENGTH)
|
|
83
84
|
: null,
|
|
84
85
|
});
|
|
85
86
|
}
|
|
@@ -114,7 +115,7 @@ function truncate(s, max) {
|
|
|
114
115
|
return s.slice(0, max);
|
|
115
116
|
}
|
|
116
117
|
function scrubAndTruncateQuery(query) {
|
|
117
|
-
return truncate((0,
|
|
118
|
+
return truncate((0, scrub_secrets_1.scrubSecretsInText)(query), MAX_QUERY_LENGTH);
|
|
118
119
|
}
|
|
119
120
|
const SESSIONS = new WeakMap();
|
|
120
121
|
function attachTemplateTelemetrySession(workspace, session) {
|
|
@@ -181,7 +182,7 @@ function matchTypedTemplateCall(toolName, args) {
|
|
|
181
182
|
function extractTypedToolResultText(result) {
|
|
182
183
|
if (typeof result === 'string')
|
|
183
184
|
return result;
|
|
184
|
-
if (!(0,
|
|
185
|
+
if (!(0, is_record_1.isRecord)(result))
|
|
185
186
|
return null;
|
|
186
187
|
const { content } = result;
|
|
187
188
|
return typeof content === 'string' ? content : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-telemetry.js","sourceRoot":"","sources":["../../src/workspace/template-telemetry.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"template-telemetry.js","sourceRoot":"","sources":["../../src/workspace/template-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WORKSPACE_MANIFEST_FILE = void 0;
|
|
4
4
|
exports.parseVersionedWorkspaceManifest = parseVersionedWorkspaceManifest;
|
|
5
|
-
const
|
|
5
|
+
const is_record_1 = require("@n8n/utils/is-record");
|
|
6
6
|
exports.WORKSPACE_MANIFEST_FILE = '.manifest.json';
|
|
7
7
|
function parseVersionedWorkspaceManifest(raw, options) {
|
|
8
8
|
let parsed;
|
|
@@ -12,7 +12,7 @@ function parseVersionedWorkspaceManifest(raw, options) {
|
|
|
12
12
|
catch {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
if (!(0,
|
|
15
|
+
if (!(0, is_record_1.isRecord)(parsed))
|
|
16
16
|
return null;
|
|
17
17
|
if (parsed.schemaVersion !== options.schemaVersion)
|
|
18
18
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-manifest.js","sourceRoot":"","sources":["../../src/workspace/workspace-manifest.ts"],"names":[],"mappings":";;;AAgBA,0EAsBC;AAtCD,
|
|
1
|
+
{"version":3,"file":"workspace-manifest.js","sourceRoot":"","sources":["../../src/workspace/workspace-manifest.ts"],"names":[],"mappings":";;;AAgBA,0EAsBC;AAtCD,oDAAgD;AAEnC,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAcxD,SAAgB,+BAA+B,CAC9C,GAAW,EACX,OAA2D;IAE3D,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,IAAA,oBAAQ,EAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,OAAO;QACN,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI;KACJ,CAAC;AACH,CAAC"}
|
|
@@ -67,6 +67,18 @@ sources in a digest/report path. Its done branch does not accumulate loop-body
|
|
|
67
67
|
outputs. Prefer parallel source branches plus explicit fan-in, or emit one
|
|
68
68
|
success/empty/failure record per source before aggregation.
|
|
69
69
|
|
|
70
|
+
## HTTP Request Output Field Names
|
|
71
|
+
|
|
72
|
+
The HTTP Request node's output field depends on Response Format. With `json`
|
|
73
|
+
(the default), the parsed body is the item json itself — or under `body` when
|
|
74
|
+
"Include Response Headers and Status" (full response) is enabled. With `text`,
|
|
75
|
+
the body string is under the Output Field option (default `data`) — even with
|
|
76
|
+
full response enabled it stays under `data` next to `headers`/`statusCode`,
|
|
77
|
+
never under `body`. A Code node reading `$json.body` after a text-format fetch
|
|
78
|
+
gets `undefined`, which silently breaks length/emptiness checks (e.g. scraped
|
|
79
|
+
HTML misclassified as blocked). Read the field the chosen format actually
|
|
80
|
+
emits.
|
|
81
|
+
|
|
70
82
|
## Fetch Complete External Data
|
|
71
83
|
|
|
72
84
|
If downstream logic depends on labels, memberships, related records, nested
|
|
@@ -80,6 +92,27 @@ reachable read/query/fetch node before the formatter and final action. A
|
|
|
80
92
|
schedule item, date-window calculator, placeholder row, or final formatter is
|
|
81
93
|
not source data.
|
|
82
94
|
|
|
95
|
+
## Structured-Output Schema Fields Are JSON Strings
|
|
96
|
+
|
|
97
|
+
On OpenAI/LM nodes, the structured-output schema field
|
|
98
|
+
(`textFormat.textOptions.schema` and equivalents) must be a STRING containing
|
|
99
|
+
strict, valid JSON — the node runs JSON.parse on it at execution time. A
|
|
100
|
+
JS/TS object literal, single-quoted keys, trailing commas, comments, or an
|
|
101
|
+
expression there produce "Failed to parse schema" and crash the node before
|
|
102
|
+
any output. Serialize the schema with double-quoted keys and strings, keep it
|
|
103
|
+
minimal, and set the sibling `name` field.
|
|
104
|
+
|
|
105
|
+
## Data After Side-Effect Nodes
|
|
106
|
+
|
|
107
|
+
Send/notify/write nodes (Gmail, Slack, Telegram, email send, most "create"
|
|
108
|
+
actions) output their own API response — message IDs, thread stamps, `ok`
|
|
109
|
+
flags — not the data that flowed into them. A node chained after a send that
|
|
110
|
+
reads `$json.someField` from the original data gets `null`/undefined and
|
|
111
|
+
silently no-ops (an update matching no rows, an empty mapped column). When a
|
|
112
|
+
node after a side-effect needs the original data, reference it by node name
|
|
113
|
+
(`$('Compute Change').item.json.status`) or wire it in parallel from the
|
|
114
|
+
data-producing node instead of chaining through the send.
|
|
115
|
+
|
|
83
116
|
## Keep Code Nodes Parseable
|
|
84
117
|
|
|
85
118
|
Prefer built-in nodes for simple split, map, filter, merge, and aggregate work.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n/instance-ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"dist/**/*",
|
|
9
9
|
"knowledge-base/**/*",
|
|
10
10
|
"skills/**/*",
|
|
11
|
-
"
|
|
12
|
-
"
|
|
11
|
+
"LICENSE_EE.md",
|
|
12
|
+
"LICENSE.md"
|
|
13
13
|
],
|
|
14
14
|
"exports": {
|
|
15
15
|
".": {
|
|
@@ -52,15 +52,17 @@
|
|
|
52
52
|
"psl": "1.9.0",
|
|
53
53
|
"source-map-support": "0.5.21",
|
|
54
54
|
"turndown": "^7.2.2",
|
|
55
|
+
"undici": "^7.28.0",
|
|
55
56
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz",
|
|
56
57
|
"zod": "3.25.67",
|
|
57
58
|
"zod-from-json-schema-v3": "npm:zod-from-json-schema@^0.0.5",
|
|
58
|
-
"@n8n/
|
|
59
|
-
"@n8n/
|
|
60
|
-
"@n8n/
|
|
61
|
-
"@n8n/
|
|
62
|
-
"@n8n/
|
|
63
|
-
"n8n-
|
|
59
|
+
"@n8n/api-types": "1.30.0",
|
|
60
|
+
"@n8n/agents": "0.15.0",
|
|
61
|
+
"@n8n/ai-utilities": "0.23.0",
|
|
62
|
+
"@n8n/mcp-browser": "0.13.0",
|
|
63
|
+
"@n8n/utils": "1.38.0",
|
|
64
|
+
"@n8n/workflow-sdk": "0.23.0",
|
|
65
|
+
"n8n-workflow": "2.30.0"
|
|
64
66
|
},
|
|
65
67
|
"devDependencies": {
|
|
66
68
|
"@ai-sdk/anthropic": "^3.0.81",
|
|
@@ -70,11 +72,11 @@
|
|
|
70
72
|
"@types/turndown": "^5.0.6",
|
|
71
73
|
"@vitest/coverage-v8": "4.1.9",
|
|
72
74
|
"tsx": "^4.19.3",
|
|
75
|
+
"vite": "^8.0.2",
|
|
73
76
|
"vitest": "^4.1.9",
|
|
74
77
|
"vitest-mock-extended": "^3.1.0",
|
|
75
|
-
"@n8n/typescript-config": "1.
|
|
76
|
-
"@n8n/vitest-config": "1.
|
|
77
|
-
"@n8n/ai-workflow-builder": "1.29.6"
|
|
78
|
+
"@n8n/typescript-config": "1.8.0",
|
|
79
|
+
"@n8n/vitest-config": "1.17.0"
|
|
78
80
|
},
|
|
79
81
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
80
82
|
"homepage": "https://n8n.io",
|
|
@@ -6,6 +6,7 @@ description: >-
|
|
|
6
6
|
Load after direct builds, when verificationReadiness requires action, or on
|
|
7
7
|
orchestrator verify/setup follow-up turns.
|
|
8
8
|
recommended_tools:
|
|
9
|
+
- ask-user
|
|
9
10
|
- verify-built-workflow
|
|
10
11
|
- workflows
|
|
11
12
|
- build-workflow
|
|
@@ -14,8 +15,9 @@ recommended_tools:
|
|
|
14
15
|
|
|
15
16
|
# Post-Build Flow
|
|
16
17
|
|
|
17
|
-
Use this skill after `build-workflow` succeeds on a direct orchestrator build,
|
|
18
|
-
when the
|
|
18
|
+
Use this skill after `build-workflow` succeeds on a direct orchestrator build,
|
|
19
|
+
especially when the build result contains `postBuildFlow.required: true`, or when
|
|
20
|
+
the current message contains `<workflow-verification-follow-up>` or
|
|
19
21
|
`<workflow-setup-required>`.
|
|
20
22
|
|
|
21
23
|
For trigger `inputData` shapes, read
|
|
@@ -35,11 +37,16 @@ verification.
|
|
|
35
37
|
|
|
36
38
|
## Setup follow-up
|
|
37
39
|
|
|
38
|
-
When the current message contains `<workflow-setup-required>`, your
|
|
39
|
-
to call `workflows(action="setup")` with the `workflowId` from the payload. Do
|
|
40
|
+
When the current message contains `<workflow-setup-required>`, your first action
|
|
41
|
+
is to call `workflows(action="setup")` with the `workflowId` from the payload. Do
|
|
40
42
|
not verify, do not ask, do not write a message first — the inline setup card in
|
|
41
43
|
the AI Assistant panel is the user-visible surface. If it returns `deferred:
|
|
42
44
|
true`, respect the user's choice and do not retry with any other setup tool.
|
|
45
|
+
After setup completes or is applied, follow
|
|
46
|
+
[Mocked verification live-test follow-up](#mocked-verification-live-test-follow-up)
|
|
47
|
+
if the payload or prior verification evidence says mocked credentials,
|
|
48
|
+
simulated node output, fixture overrides, temporary pin data, or another mocked
|
|
49
|
+
input was used.
|
|
43
50
|
|
|
44
51
|
## Publishing and testing
|
|
45
52
|
|
|
@@ -76,9 +83,9 @@ again.
|
|
|
76
83
|
|
|
77
84
|
## After build-workflow succeeds
|
|
78
85
|
|
|
79
|
-
1. Read `workflowId`, `workItemId`, `triggerNodes`, `verificationReadiness`,
|
|
80
|
-
`setupRequirement` from the tool output. If the output
|
|
81
|
-
`workflowId`, explain that the build did not submit.
|
|
86
|
+
1. Read `workflowId`, `workItemId`, `triggerNodes`, `verificationReadiness`,
|
|
87
|
+
`setupRequirement`, and `postBuildFlow` from the tool output. If the output
|
|
88
|
+
is missing a `workflowId`, explain that the build did not submit.
|
|
82
89
|
- Before treating a saved workflow as done, inspect the persisted workflow
|
|
83
90
|
with `workflows(action="get-as-code", workflowId)` or read the bound
|
|
84
91
|
workspace source file, and compare the actual graph to the user's requested
|
|
@@ -132,12 +139,101 @@ again.
|
|
|
132
139
|
5. When `workflows(action="setup")` returns `deferred: true`, respect the user's
|
|
133
140
|
decision — do not retry with `credentials(action="setup")` or any other
|
|
134
141
|
setup tool. The user chose to set things up later.
|
|
135
|
-
6.
|
|
142
|
+
6. After setup completes or is applied, follow
|
|
143
|
+
[Mocked verification live-test follow-up](#mocked-verification-live-test-follow-up)
|
|
144
|
+
when the latest verification evidence used mocks or simulations. If this
|
|
145
|
+
follow-up is due, ask only that question now; do not also ask about the error
|
|
146
|
+
workflow in the same response.
|
|
147
|
+
7. For a direct new primary workflow, follow
|
|
148
|
+
[Error workflow follow-up](#error-workflow-follow-up) after the mocked
|
|
149
|
+
live-test follow-up is no longer pending for this workflow. If no mocked
|
|
150
|
+
live-test follow-up is due, ask about the error workflow before any generic
|
|
151
|
+
testing prompt. Do not replace this explicit opt-in with a generic "add
|
|
152
|
+
anything else?", publish, or test question.
|
|
153
|
+
8. Ask the user if they want to test the workflow (skip this if
|
|
136
154
|
`verify-built-workflow` already proved it works end-to-end with full
|
|
137
|
-
coverage).
|
|
138
|
-
|
|
155
|
+
coverage). If you need to ask about both generic testing and an error
|
|
156
|
+
workflow, ask the error-workflow opt-in first and leave generic testing as a
|
|
157
|
+
later follow-up unless the user already requested testing.
|
|
158
|
+
9. Only call `workflows(action="publish")` when the user explicitly asks to
|
|
139
159
|
publish. Never publish automatically.
|
|
140
160
|
|
|
161
|
+
## Error workflow follow-up
|
|
162
|
+
|
|
163
|
+
This follow-up comes after the mocked verification live-test follow-up when that
|
|
164
|
+
follow-up is due, and before generic "want to test it?" prompts. For a direct
|
|
165
|
+
new primary workflow, ask about the error workflow after the user answers,
|
|
166
|
+
declines, or defers any pending live/no-mock testing question. If no mocked
|
|
167
|
+
live-test follow-up is due, ask about the error workflow first.
|
|
168
|
+
|
|
169
|
+
If you just built an Error Trigger workflow because the user opted into adding
|
|
170
|
+
one for a known target workflow, do not ask whether to build another error
|
|
171
|
+
workflow. Continue the publish-before-assign flow for the target workflow:
|
|
172
|
+
ask whether to publish the error workflow and set it on that target workflow,
|
|
173
|
+
then publish and assign only after the user approves.
|
|
174
|
+
|
|
175
|
+
After saving and handling verification/setup for a direct new primary workflow,
|
|
176
|
+
ask once whether the user wants to build an error workflow for that workflow.
|
|
177
|
+
Use `ask-user` with a yes/no choice or a concise visible question. Do **not**
|
|
178
|
+
create an error workflow before the user opts in.
|
|
179
|
+
|
|
180
|
+
The opt-in must explicitly mention an error workflow and the target workflow
|
|
181
|
+
name. A generic follow-up like "Want me to add anything else?", "Want me to
|
|
182
|
+
publish it?", or "Want to test it?" does not satisfy this step.
|
|
183
|
+
|
|
184
|
+
Skip this follow-up when:
|
|
185
|
+
|
|
186
|
+
- The workflow you just built is itself an error workflow or starts with an
|
|
187
|
+
Error Trigger.
|
|
188
|
+
- The build is a supporting workflow, repair, small edit, planned-task
|
|
189
|
+
subtask, or workflow-level settings patch.
|
|
190
|
+
- The user already asked for an error workflow in the original request, already
|
|
191
|
+
declined one, or the target workflow already has the desired error workflow
|
|
192
|
+
set.
|
|
193
|
+
|
|
194
|
+
If the user says yes:
|
|
195
|
+
|
|
196
|
+
1. Load `workflow-builder` and build a separate error workflow using the user's
|
|
197
|
+
requested notification destination. Keep the error workflow scoped to the
|
|
198
|
+
target workflow the user opted in for.
|
|
199
|
+
2. Do not ask whether this new error workflow needs its own error workflow.
|
|
200
|
+
3. The error workflow must be published before it can be assigned. If the user
|
|
201
|
+
has not already asked you to publish and attach it, ask whether to publish it
|
|
202
|
+
and set it as the error workflow for the named target workflow. When the user
|
|
203
|
+
agrees, call `workflows(action="publish")` for the error workflow and let the
|
|
204
|
+
HITL approval card handle confirmation.
|
|
205
|
+
4. After publish succeeds, set the original workflow's workflow-level
|
|
206
|
+
`settings.errorWorkflow` to the **error workflow's workflowId**. Do not use
|
|
207
|
+
the published `activeVersionId`, workflow name, a placeholder, or a local SDK
|
|
208
|
+
id. If you have the original source file, edit it; otherwise call
|
|
209
|
+
`workflows(action="get-as-code", workflowId)` for the original workflow,
|
|
210
|
+
write the returned code to a `.workflow.ts` file, add
|
|
211
|
+
`.settings({ errorWorkflow: '<published-error-workflow-id>' })`, and call
|
|
212
|
+
`build-workflow` for the original workflow. The workflow edit approval card
|
|
213
|
+
is the HITL surface for this assignment.
|
|
214
|
+
5. Summarize the result with explicit per-workflow language: this error
|
|
215
|
+
workflow was assigned only to the named target workflow. Mention that n8n has
|
|
216
|
+
no global or instance-wide error workflow setting only when the user
|
|
217
|
+
explicitly asked about, requested, or referenced global/instance-wide error
|
|
218
|
+
workflow behavior.
|
|
219
|
+
|
|
220
|
+
## Mocked verification live-test follow-up
|
|
221
|
+
|
|
222
|
+
After workflow setup completes or is applied, if the latest verification for
|
|
223
|
+
that workflow used mocked credentials, simulated node output, fixture overrides,
|
|
224
|
+
temporary pin data, or another mocked input, ask whether the user wants a live
|
|
225
|
+
test without mocks. Do not run the live test automatically.
|
|
226
|
+
|
|
227
|
+
This follow-up has priority over the error-workflow opt-in for a direct new
|
|
228
|
+
primary workflow. If both follow-ups are due, ask about the live/no-mock test
|
|
229
|
+
first and ask the error-workflow question only after the user has answered,
|
|
230
|
+
declined, or deferred the live/no-mock test follow-up.
|
|
231
|
+
|
|
232
|
+
If the user agrees, use the explicit live execution path (`executions(action="run")`
|
|
233
|
+
for a direct live run) and report the result separately from the earlier mocked
|
|
234
|
+
verification. If the user declines or defers, state what remains untested and do
|
|
235
|
+
not claim live end-to-end verification.
|
|
236
|
+
|
|
141
237
|
## Claiming success
|
|
142
238
|
|
|
143
239
|
Do not tell the user a workflow is "fixed", "verified", "tested", "working", or
|