@n8n/instance-ai 1.16.2 → 1.17.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/instance-agent.js +7 -1
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/system-prompt.js +3 -3
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/event-bus/event-bus.interface.d.ts +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/parsers/xlsx-parser.js +1 -1
- package/dist/parsers/xlsx-parser.js.map +1 -1
- package/dist/runtime/terminal-response-guard.js +2 -1
- package/dist/runtime/terminal-response-guard.js.map +1 -1
- package/dist/skills/skill-gates.d.ts +5 -0
- package/dist/skills/skill-gates.js +12 -0
- package/dist/skills/skill-gates.js.map +1 -0
- package/dist/storage/workflow-loop-storage.d.ts +7 -7
- package/dist/stream/consume-with-hitl.d.ts +3 -0
- package/dist/stream/consume-with-hitl.js +2 -0
- package/dist/stream/consume-with-hitl.js.map +1 -1
- package/dist/stream/map-chunk.js +7 -0
- package/dist/stream/map-chunk.js.map +1 -1
- package/dist/stream/usage-accumulator.d.ts +2 -0
- package/dist/stream/usage-accumulator.js +13 -3
- package/dist/stream/usage-accumulator.js.map +1 -1
- package/dist/tool-registry.js +5 -1
- package/dist/tool-registry.js.map +1 -1
- package/dist/tools/agents.tool.d.ts +2 -0
- package/dist/tools/agents.tool.js +40 -0
- package/dist/tools/agents.tool.js.map +1 -0
- package/dist/tools/credentials.tool.js +8 -3
- package/dist/tools/credentials.tool.js.map +1 -1
- package/dist/tools/evals/eval-config.tool.js +10 -2
- package/dist/tools/evals/eval-config.tool.js.map +1 -1
- package/dist/tools/executions.tool.js +3 -2
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/filesystem/create-tools-from-mcp-server.js +2 -2
- package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
- package/dist/tools/index.js +15 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/n8n-docs/registry.d.ts +2 -2
- package/dist/tools/n8n-docs/registry.js +20 -8
- package/dist/tools/n8n-docs/registry.js.map +1 -1
- package/dist/tools/n8n-docs.tool.js +18 -12
- package/dist/tools/n8n-docs.tool.js.map +1 -1
- package/dist/tools/nodes.tool.js +1 -1
- package/dist/tools/orchestration/agent-preview-session-binding.d.ts +20 -0
- package/dist/tools/orchestration/agent-preview-session-binding.js +47 -0
- package/dist/tools/orchestration/agent-preview-session-binding.js.map +1 -0
- package/dist/tools/orchestration/agent-target-binding.d.ts +6 -1
- package/dist/tools/orchestration/agent-target-binding.js +43 -4
- package/dist/tools/orchestration/agent-target-binding.js.map +1 -1
- package/dist/tools/orchestration/build-agent.tool.js +365 -71
- package/dist/tools/orchestration/build-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/builder-thread-id.d.ts +1 -0
- package/dist/tools/orchestration/builder-thread-id.js +7 -0
- package/dist/tools/orchestration/builder-thread-id.js.map +1 -0
- package/dist/tools/orchestration/get-session.tool.d.ts +2 -0
- package/dist/tools/orchestration/get-session.tool.js +49 -0
- package/dist/tools/orchestration/get-session.tool.js.map +1 -0
- package/dist/tools/orchestration/verification/reconcile-plan.js +4 -1
- package/dist/tools/orchestration/verification/reconcile-plan.js.map +1 -1
- package/dist/tools/orchestration/verify-built-workflow.tool.js +1 -0
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/research.tool.js +2 -0
- package/dist/tools/research.tool.js.map +1 -1
- package/dist/tools/tool-ids.d.ts +2 -0
- package/dist/tools/tool-ids.js +3 -0
- package/dist/tools/tool-ids.js.map +1 -1
- package/dist/tools/workflows/build-workflow.tool.js +12 -4
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/classify-node-destructiveness.service.d.ts +1 -1
- package/dist/tools/workflows/classify-node-destructiveness.service.js +5 -7
- package/dist/tools/workflows/classify-node-destructiveness.service.js.map +1 -1
- package/dist/tools/workflows/credential-utils.d.ts +1 -1
- package/dist/tools/workflows/credential-utils.js +2 -2
- package/dist/tools/workflows/credential-utils.js.map +1 -1
- package/dist/tools/workflows/detect-unparseable-openai-schema.d.ts +3 -0
- package/dist/tools/workflows/detect-unparseable-openai-schema.js +85 -0
- package/dist/tools/workflows/detect-unparseable-openai-schema.js.map +1 -0
- package/dist/tools/workflows/generate-simulation-fixtures.service.d.ts +2 -1
- package/dist/tools/workflows/generate-simulation-fixtures.service.js +27 -5
- package/dist/tools/workflows/generate-simulation-fixtures.service.js.map +1 -1
- package/dist/tools/workflows/materialize-node-type.tool.js +4 -2
- package/dist/tools/workflows/materialize-node-type.tool.js.map +1 -1
- package/dist/tools/workflows/plan-verification-simulation.d.ts +5 -2
- package/dist/tools/workflows/plan-verification-simulation.js +117 -2
- package/dist/tools/workflows/plan-verification-simulation.js.map +1 -1
- package/dist/tools/workflows/reconcile-simulation-plan.js +48 -17
- package/dist/tools/workflows/reconcile-simulation-plan.js.map +1 -1
- package/dist/tools/workflows/resolve-credentials.js +35 -1
- package/dist/tools/workflows/resolve-credentials.js.map +1 -1
- package/dist/tools/workflows/setup-workflow.schema.d.ts +66 -66
- package/dist/tools/workflows/validate-workflow.service.js +4 -4
- package/dist/tools/workflows/workflow-build-routing.js +3 -3
- package/dist/tools/workflows/workflow-build-routing.js.map +1 -1
- package/dist/tools/workflows/workflow-file-bindings.d.ts +1 -1
- package/dist/tools/workflows/workflow-file-bindings.js +2 -1
- package/dist/tools/workflows/workflow-file-bindings.js.map +1 -1
- package/dist/tools/workflows/workflow-json-utils.js +11 -12
- package/dist/tools/workflows/workflow-json-utils.js.map +1 -1
- package/dist/tools/workflows/workflow-source-compiler.d.ts +1 -1
- package/dist/tools/workflows/workflow-source-compiler.js +11 -4
- package/dist/tools/workflows/workflow-source-compiler.js.map +1 -1
- package/dist/tools/workflows/write-sandbox-file.tool.js +4 -2
- package/dist/tools/workflows/write-sandbox-file.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.d.ts +1 -0
- package/dist/tracing/langsmith-tracing.js +69 -9
- package/dist/tracing/langsmith-tracing.js.map +1 -1
- package/dist/tracing/trace-payloads.js +8 -0
- package/dist/tracing/trace-payloads.js.map +1 -1
- package/dist/types.d.ts +52 -5
- package/dist/types.js.map +1 -1
- package/dist/utils/stream-helpers.d.ts +1 -0
- package/dist/utils/stream-helpers.js +2 -1
- package/dist/utils/stream-helpers.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +13 -13
- package/dist/workflow-loop/workflow-loop-state.js +6 -1
- package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
- package/dist/workspace/create-workspace.js +24 -1
- package/dist/workspace/create-workspace.js.map +1 -1
- package/dist/workspace/lazy-runtime-workspace.js +19 -19
- package/dist/workspace/lazy-runtime-workspace.js.map +1 -1
- package/dist/workspace/sandbox-fs.d.ts +16 -4
- package/dist/workspace/sandbox-fs.js +80 -25
- package/dist/workspace/sandbox-fs.js.map +1 -1
- package/dist/workspace/scoped-workspace.js +6 -6
- package/dist/workspace/scoped-workspace.js.map +1 -1
- package/dist/workspace/snapshot-manager.d.ts +1 -0
- package/dist/workspace/snapshot-manager.js +37 -5
- package/dist/workspace/snapshot-manager.js.map +1 -1
- package/dist/workspace/workspace-files.d.ts +4 -0
- package/dist/workspace/workspace-files.js +21 -7
- package/dist/workspace/workspace-files.js.map +1 -1
- package/knowledge-base/reference/workflow-builder-guardrails.md +3 -0
- package/package.json +12 -12
- package/skills/config-evals/SKILL.md +96 -0
- package/skills/config-evals/references/config-eval-playbook.md +109 -0
- package/skills/intent-recognition/SKILL.md +145 -34
- package/skills/workflow-builder/SKILL.md +25 -17
|
@@ -41,8 +41,8 @@ function emptyLookupResult(input, registry) {
|
|
|
41
41
|
...(registry.error ? { error: registry.error } : {}),
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
-
async function handleSearch(context, input) {
|
|
45
|
-
const registry = await (0, registry_1.getN8nDocsRegistry)(context);
|
|
44
|
+
async function handleSearch(context, input, abortSignal) {
|
|
45
|
+
const registry = await (0, registry_1.getN8nDocsRegistry)(context, abortSignal);
|
|
46
46
|
if (!registry.registry)
|
|
47
47
|
return emptyLookupResult(input, registry);
|
|
48
48
|
const maxResults = clamp(input.maxResults, schemas_1.DEFAULT_MAX_RESULTS, schemas_1.MAX_RESULTS);
|
|
@@ -56,8 +56,8 @@ async function handleSearch(context, input) {
|
|
|
56
56
|
...(registry.hint ? { hint: registry.hint } : {}),
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
-
async function handleLookup(context, input) {
|
|
60
|
-
const registry = await (0, registry_1.getN8nDocsRegistry)(context);
|
|
59
|
+
async function handleLookup(context, input, abortSignal) {
|
|
60
|
+
const registry = await (0, registry_1.getN8nDocsRegistry)(context, abortSignal);
|
|
61
61
|
if (!registry.registry)
|
|
62
62
|
return emptyLookupResult(input, registry);
|
|
63
63
|
const maxPages = clamp(input.maxPages, schemas_1.DEFAULT_MAX_PAGES, schemas_1.MAX_PAGES);
|
|
@@ -66,7 +66,7 @@ async function handleLookup(context, input) {
|
|
|
66
66
|
const pagesToRead = (0, ranking_1.pickLookupMatches)(matches, maxPages);
|
|
67
67
|
const documents = [];
|
|
68
68
|
const readErrors = [];
|
|
69
|
-
const readResults = await Promise.allSettled(pagesToRead.map(async (match) => await (0, registry_1.readN8nDocsEntry)(match, maxContentLength)));
|
|
69
|
+
const readResults = await Promise.allSettled(pagesToRead.map(async (match) => await (0, registry_1.readN8nDocsEntry)(match, maxContentLength, abortSignal)));
|
|
70
70
|
for (const [index, result] of readResults.entries()) {
|
|
71
71
|
const match = pagesToRead[index];
|
|
72
72
|
if (!match)
|
|
@@ -74,6 +74,11 @@ async function handleLookup(context, input) {
|
|
|
74
74
|
if (result.status === 'fulfilled') {
|
|
75
75
|
documents.push(result.value);
|
|
76
76
|
}
|
|
77
|
+
else if ((0, agents_1.isAbortError)(result.reason) || abortSignal?.aborted) {
|
|
78
|
+
throw result.reason instanceof Error
|
|
79
|
+
? result.reason
|
|
80
|
+
: new Error('This operation was aborted');
|
|
81
|
+
}
|
|
77
82
|
else {
|
|
78
83
|
readErrors.push(`${match.title}: ${(0, registry_1.getFetchErrorMessage)(result.reason)}`);
|
|
79
84
|
}
|
|
@@ -92,8 +97,8 @@ async function handleLookup(context, input) {
|
|
|
92
97
|
...(hints.length ? { hint: hints.join(' ') } : {}),
|
|
93
98
|
};
|
|
94
99
|
}
|
|
95
|
-
async function handleRead(context, input) {
|
|
96
|
-
const registry = await (0, registry_1.getN8nDocsRegistry)(context);
|
|
100
|
+
async function handleRead(context, input, abortSignal) {
|
|
101
|
+
const registry = await (0, registry_1.getN8nDocsRegistry)(context, abortSignal);
|
|
97
102
|
if (!registry.registry) {
|
|
98
103
|
return {
|
|
99
104
|
url: input.url,
|
|
@@ -123,7 +128,7 @@ async function handleRead(context, input) {
|
|
|
123
128
|
url: (0, registry_1.toPublicDocsUrl)(entry.url),
|
|
124
129
|
registryUrl: registry_1.N8N_DOCS_REGISTRY_URL,
|
|
125
130
|
registryFetchedAt: docsRegistry.fetchedAt,
|
|
126
|
-
documents: [await (0, registry_1.readN8nDocsEntry)(entry, maxContentLength)],
|
|
131
|
+
documents: [await (0, registry_1.readN8nDocsEntry)(entry, maxContentLength, abortSignal)],
|
|
127
132
|
...(registry.hint ? { hint: registry.hint } : {}),
|
|
128
133
|
};
|
|
129
134
|
}
|
|
@@ -131,15 +136,16 @@ function createN8nDocsTool(context) {
|
|
|
131
136
|
return new agents_1.Tool(tool_ids_1.N8N_DOCS_TOOL_ID)
|
|
132
137
|
.description(`Search and read current n8n documentation from docs.n8n.io. Load via \`load_tool\` before calling (search "n8n docs" if not visible). Use for n8n product, setup, credential, node, hosting, API, and troubleshooting questions. ${SOURCE_ATTRIBUTION_INSTRUCTION}`)
|
|
133
138
|
.input(schemas_1.n8nDocsToolInputSchema)
|
|
134
|
-
.handler(async (input) => {
|
|
139
|
+
.handler(async (input, ctx) => {
|
|
135
140
|
const parsedInput = schemas_1.n8nDocsRuntimeInputSchema.parse(input);
|
|
141
|
+
const abortSignal = ctx.abortSignal;
|
|
136
142
|
switch (parsedInput.action) {
|
|
137
143
|
case 'lookup':
|
|
138
|
-
return await handleLookup(context, parsedInput);
|
|
144
|
+
return await handleLookup(context, parsedInput, abortSignal);
|
|
139
145
|
case 'search':
|
|
140
|
-
return await handleSearch(context, parsedInput);
|
|
146
|
+
return await handleSearch(context, parsedInput, abortSignal);
|
|
141
147
|
case 'read':
|
|
142
|
-
return await handleRead(context, parsedInput);
|
|
148
|
+
return await handleRead(context, parsedInput, abortSignal);
|
|
143
149
|
}
|
|
144
150
|
})
|
|
145
151
|
.build();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-docs.tool.js","sourceRoot":"","sources":["../../src/tools/n8n-docs.tool.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"n8n-docs.tool.js","sourceRoot":"","sources":["../../src/tools/n8n-docs.tool.ts"],"names":[],"mappings":";;;;AAAA,wCAAiD;AAGjD,gDAK4B;mGAF3B,4BAAkB;AAGnB,kDAW6B;qGAT5B,+BAAoB;iGAEpB,2BAAgB;sGAChB,gCAAqB;kHAErB,4CAAiC;gGACjC,0BAAe;qGAEf,+BAAoB;AAErB,gDAY4B;AAC5B,yCAA8C;iGAArC,2BAAgB;AAezB,MAAM,8BAA8B,GACnC,uKAAuK,CAAC;AAEzK,SAAS,KAAK,CAAC,KAAyB,EAAE,QAAgB,EAAE,GAAW;IACtE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,KAAmB;IACzC,MAAM,SAAS,GAAG,IAAA,0BAAe,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO;QACN,GAAG,KAAK;QACR,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ;KACjC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACzB,KAA8C,EAC9C,QAAwD;IAExD,OAAO;QACN,KAAK,EAAE,IAAA,wBAAc,EAAC,KAAK,CAAC;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,WAAW,EAAE,gCAAqB;QAClC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE;QACrD,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAC1B,OAA0C,EAC1C,KAAyB,EACzB,WAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,IAAA,6BAAkB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,6BAAmB,EAAE,qBAAW,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAA,4BAAkB,EAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAE1F,OAAO;QACN,KAAK,EAAE,IAAA,wBAAc,EAAC,KAAK,CAAC;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,WAAW,EAAE,gCAAqB;QAClC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;QAC9C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAC1B,OAA0C,EAC1C,KAAyB,EACzB,WAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,IAAA,6BAAkB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,2BAAiB,EAAE,mBAAS,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,KAAK,CAC7B,KAAK,CAAC,gBAAgB,EACtB,oCAA0B,EAC1B,4BAAkB,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,IAAA,4BAAkB,EAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAA,2BAAiB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAC3C,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,IAAA,2BAAgB,EAAC,KAAK,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAC9F,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAA,qBAAY,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YAChE,MAAM,MAAM,CAAC,MAAM,YAAY,KAAK;gBACnC,CAAC,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,IAAA,+BAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;IAED,MAAM,KAAK,GAAG;QACb,QAAQ,CAAC,IAAI;QACb,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,sCAAsC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KAC7F,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEhF,OAAO;QACN,KAAK,EAAE,IAAA,wBAAc,EAAC,KAAK,CAAC;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,WAAW,EAAE,gCAAqB;QAClC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;QAC9C,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC;QACvC,SAAS;QACT,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACxB,OAA0C,EAC1C,KAAuB,EACvB,WAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,IAAA,6BAAkB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO;YACN,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,WAAW,EAAE,gCAAqB;YAClC,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE;YACb,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACvC,MAAM,KAAK,GAAG,IAAA,+BAAoB,EAAC,KAAK,CAAC,GAAG,CAAC;SAC3C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACrD,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO;YACN,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,WAAW,EAAE,gCAAqB;YAClC,iBAAiB,EAAE,YAAY,CAAC,SAAS;YACzC,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,wCAAwC;YAC/C,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAC7B,KAAK,CAAC,gBAAgB,EACtB,oCAA0B,EAC1B,4BAAkB,CAClB,CAAC;IACF,OAAO;QACN,GAAG,EAAE,IAAA,0BAAe,EAAC,KAAK,CAAC,GAAG,CAAC;QAC/B,WAAW,EAAE,gCAAqB;QAClC,iBAAiB,EAAE,YAAY,CAAC,SAAS;QACzC,SAAS,EAAE,CAAC,MAAM,IAAA,2BAAgB,EAAC,KAAK,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACzE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACH,CAAC;AAED,2BAAkC,OAA0C;IAC3E,OAAO,IAAI,aAAI,CAAC,2BAAgB,CAAC;SAC/B,WAAW,CACX,oOAAoO,8BAA8B,EAAE,CACpQ;SACA,KAAK,CAAC,gCAAsB,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,WAAW,GAAG,mCAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACpC,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;YAC5B,KAAK,QAAQ;gBACZ,OAAO,MAAM,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAC9D,KAAK,QAAQ;gBACZ,OAAO,MAAM,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAC9D,KAAK,MAAM;gBACV,OAAO,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACX,CAAC"}
|
package/dist/tools/nodes.tool.js
CHANGED
|
@@ -24,7 +24,7 @@ const listAction = zod_1.z.object({
|
|
|
24
24
|
n8nConnectOnly: zod_1.z
|
|
25
25
|
.boolean()
|
|
26
26
|
.optional()
|
|
27
|
-
.describe('When true, return only nodes supported by n8n
|
|
27
|
+
.describe('When true, return only nodes supported by n8n credits (each carries an `aiGateway` field with minVersion/operations). Use to answer "which nodes support n8n credits?".'),
|
|
28
28
|
});
|
|
29
29
|
const searchAction = zod_1.z.object({
|
|
30
30
|
action: zod_1.z
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { InstanceAiContext } from '../../types';
|
|
3
|
+
export declare const AGENT_PREVIEW_SESSION_METADATA_KEY = "instanceAiAgentPreviewSession";
|
|
4
|
+
declare const agentPreviewSessionSchema: z.ZodObject<{
|
|
5
|
+
agentId: z.ZodString;
|
|
6
|
+
threadId: z.ZodString;
|
|
7
|
+
executionId: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
agentId: string;
|
|
10
|
+
threadId: string;
|
|
11
|
+
executionId?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
agentId: string;
|
|
14
|
+
threadId: string;
|
|
15
|
+
executionId?: string | undefined;
|
|
16
|
+
}>;
|
|
17
|
+
export type AgentPreviewSession = z.infer<typeof agentPreviewSessionSchema>;
|
|
18
|
+
export declare function resolveAgentPreviewSession(context: InstanceAiContext): Promise<AgentPreviewSession | undefined>;
|
|
19
|
+
export declare function saveAgentPreviewSession(context: InstanceAiContext, session: AgentPreviewSession): Promise<void>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AGENT_PREVIEW_SESSION_METADATA_KEY = void 0;
|
|
4
|
+
exports.resolveAgentPreviewSession = resolveAgentPreviewSession;
|
|
5
|
+
exports.saveAgentPreviewSession = saveAgentPreviewSession;
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const thread_patch_1 = require("../../storage/thread-patch");
|
|
8
|
+
exports.AGENT_PREVIEW_SESSION_METADATA_KEY = 'instanceAiAgentPreviewSession';
|
|
9
|
+
const agentPreviewSessionSchema = zod_1.z.object({
|
|
10
|
+
agentId: zod_1.z.string(),
|
|
11
|
+
threadId: zod_1.z.string(),
|
|
12
|
+
executionId: zod_1.z.string().optional(),
|
|
13
|
+
});
|
|
14
|
+
function parseSession(raw) {
|
|
15
|
+
const parsed = agentPreviewSessionSchema.safeParse(raw);
|
|
16
|
+
return parsed.success ? parsed.data : undefined;
|
|
17
|
+
}
|
|
18
|
+
async function readThreadSession(context) {
|
|
19
|
+
if (!context.threadMemory || !context.threadId)
|
|
20
|
+
return undefined;
|
|
21
|
+
const thread = await (0, thread_patch_1.getThread)(context.threadMemory, context.threadId);
|
|
22
|
+
return parseSession(thread?.metadata?.[exports.AGENT_PREVIEW_SESSION_METADATA_KEY]);
|
|
23
|
+
}
|
|
24
|
+
async function resolveAgentPreviewSession(context) {
|
|
25
|
+
if (context.agentPreviewSession)
|
|
26
|
+
return context.agentPreviewSession;
|
|
27
|
+
const session = await readThreadSession(context);
|
|
28
|
+
if (session)
|
|
29
|
+
context.agentPreviewSession = session;
|
|
30
|
+
return session;
|
|
31
|
+
}
|
|
32
|
+
async function saveAgentPreviewSession(context, session) {
|
|
33
|
+
if (!context.threadMemory || !context.threadId) {
|
|
34
|
+
context.logger?.warn('Cannot persist agent-preview session: no thread persistence available', {
|
|
35
|
+
agentId: session.agentId,
|
|
36
|
+
previewThreadId: session.threadId,
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
await (0, thread_patch_1.patchThread)(context.threadMemory, {
|
|
41
|
+
threadId: context.threadId,
|
|
42
|
+
update: ({ metadata = {} }) => ({
|
|
43
|
+
metadata: { ...metadata, [exports.AGENT_PREVIEW_SESSION_METADATA_KEY]: session },
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=agent-preview-session-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-preview-session-binding.js","sourceRoot":"","sources":["../../../src/tools/orchestration/agent-preview-session-binding.ts"],"names":[],"mappings":";;;;;AAMA,6BAAwB;AAExB,6DAAoE;AAGvD,QAAA,kCAAkC,GAAG,+BAA+B,CAAC;AAElF,MAAM,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIH,SAAS,YAAY,CAAC,GAAY;IACjC,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC/B,OAA0B;IAE1B,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAS,EAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvE,OAAO,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,QAAA,kCAAkC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAOM,KAAK,qCACX,OAA0B;IAE1B,IAAI,OAAO,CAAC,mBAAmB;QAAE,OAAO,OAAO,CAAC,mBAAmB,CAAC;IAEpE,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,OAAO;QAAE,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACnD,OAAO,OAAO,CAAC;AAChB,CAAC;AAMM,KAAK,kCACX,OAA0B,EAC1B,OAA4B;IAE5B,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChD,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,uEAAuE,EAAE;YAC7F,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,QAAQ;SACjC,CAAC,CAAC;QACH,OAAO;IACR,CAAC;IAED,MAAM,IAAA,0BAAW,EAAC,OAAO,CAAC,YAAY,EAAE;QACvC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/B,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,QAAA,kCAAkC,CAAC,EAAE,OAAO,EAAE;SACxE,CAAC;KACF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { type AgentPreviewSession } from './agent-preview-session-binding';
|
|
2
3
|
import type { InstanceAiContext } from '../../types';
|
|
3
4
|
declare const agentBuilderTargetSchema: z.ZodObject<{
|
|
4
5
|
agentId: z.ZodString;
|
|
@@ -15,5 +16,9 @@ declare const agentBuilderTargetSchema: z.ZodObject<{
|
|
|
15
16
|
}>;
|
|
16
17
|
export type AgentBuilderTarget = z.infer<typeof agentBuilderTargetSchema>;
|
|
17
18
|
export declare function resolveAgentBuilderTarget(context: InstanceAiContext): Promise<AgentBuilderTarget | undefined>;
|
|
18
|
-
export declare function saveAgentBuilderTarget(context: InstanceAiContext, target: AgentBuilderTarget
|
|
19
|
+
export declare function saveAgentBuilderTarget(context: InstanceAiContext, target: AgentBuilderTarget, options?: {
|
|
20
|
+
previewSession?: AgentPreviewSession;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
export declare function agentNamesMatch(a: string | undefined, b: string | undefined): boolean;
|
|
23
|
+
export declare function findSessionAgentByName(context: InstanceAiContext, name: string): Promise<AgentBuilderTarget | undefined>;
|
|
19
24
|
export {};
|
|
@@ -2,14 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveAgentBuilderTarget = resolveAgentBuilderTarget;
|
|
4
4
|
exports.saveAgentBuilderTarget = saveAgentBuilderTarget;
|
|
5
|
+
exports.agentNamesMatch = agentNamesMatch;
|
|
6
|
+
exports.findSessionAgentByName = findSessionAgentByName;
|
|
5
7
|
const zod_1 = require("zod");
|
|
8
|
+
const agent_preview_session_binding_1 = require("./agent-preview-session-binding");
|
|
6
9
|
const thread_patch_1 = require("../../storage/thread-patch");
|
|
7
10
|
const METADATA_KEY = 'instanceAiAgentBuilderTarget';
|
|
11
|
+
const REGISTRY_METADATA_KEY = 'instanceAiAgentBuilderTargets';
|
|
8
12
|
const agentBuilderTargetSchema = zod_1.z.object({
|
|
9
13
|
agentId: zod_1.z.string(),
|
|
10
14
|
projectId: zod_1.z.string(),
|
|
11
15
|
name: zod_1.z.string().optional(),
|
|
12
16
|
});
|
|
17
|
+
const agentBuilderTargetRegistrySchema = zod_1.z.array(agentBuilderTargetSchema);
|
|
13
18
|
function parseTarget(raw) {
|
|
14
19
|
const parsed = agentBuilderTargetSchema.safeParse(raw);
|
|
15
20
|
return parsed.success ? parsed.data : undefined;
|
|
@@ -28,7 +33,7 @@ async function resolveAgentBuilderTarget(context) {
|
|
|
28
33
|
context.agentBuilderTarget = target;
|
|
29
34
|
return target;
|
|
30
35
|
}
|
|
31
|
-
async function saveAgentBuilderTarget(context, target) {
|
|
36
|
+
async function saveAgentBuilderTarget(context, target, options) {
|
|
32
37
|
if (!context.threadMemory || !context.threadId) {
|
|
33
38
|
context.logger?.warn('Cannot persist agent-builder target: no thread persistence available', {
|
|
34
39
|
agentId: target.agentId,
|
|
@@ -37,9 +42,43 @@ async function saveAgentBuilderTarget(context, target) {
|
|
|
37
42
|
}
|
|
38
43
|
await (0, thread_patch_1.patchThread)(context.threadMemory, {
|
|
39
44
|
threadId: context.threadId,
|
|
40
|
-
update: ({ metadata = {} }) =>
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
update: ({ metadata = {} }) => {
|
|
46
|
+
const parsed = agentBuilderTargetRegistrySchema.safeParse(metadata[REGISTRY_METADATA_KEY]);
|
|
47
|
+
const existingRegistry = parsed.success ? parsed.data : [];
|
|
48
|
+
const previous = existingRegistry.find((entry) => entry.agentId === target.agentId);
|
|
49
|
+
const entry = target.name === undefined && previous?.name !== undefined
|
|
50
|
+
? { ...target, name: previous.name }
|
|
51
|
+
: target;
|
|
52
|
+
const registry = existingRegistry.filter((e) => e.agentId !== target.agentId);
|
|
53
|
+
registry.push(entry);
|
|
54
|
+
return {
|
|
55
|
+
metadata: {
|
|
56
|
+
...metadata,
|
|
57
|
+
[METADATA_KEY]: entry,
|
|
58
|
+
[REGISTRY_METADATA_KEY]: registry,
|
|
59
|
+
...(options?.previewSession
|
|
60
|
+
? { [agent_preview_session_binding_1.AGENT_PREVIEW_SESSION_METADATA_KEY]: options.previewSession }
|
|
61
|
+
: {}),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
},
|
|
43
65
|
});
|
|
44
66
|
}
|
|
67
|
+
function agentNamesMatch(a, b) {
|
|
68
|
+
if (a === undefined || b === undefined)
|
|
69
|
+
return false;
|
|
70
|
+
return a.trim().toLowerCase() === b.trim().toLowerCase();
|
|
71
|
+
}
|
|
72
|
+
async function findSessionAgentByName(context, name) {
|
|
73
|
+
if (!context.threadMemory || !context.threadId)
|
|
74
|
+
return undefined;
|
|
75
|
+
const thread = await (0, thread_patch_1.getThread)(context.threadMemory, context.threadId);
|
|
76
|
+
const parsed = agentBuilderTargetRegistrySchema.safeParse(thread?.metadata?.[REGISTRY_METADATA_KEY]);
|
|
77
|
+
const registry = parsed.success ? parsed.data : [];
|
|
78
|
+
for (let i = registry.length - 1; i >= 0; i--) {
|
|
79
|
+
if (agentNamesMatch(registry[i].name, name))
|
|
80
|
+
return registry[i];
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
45
84
|
//# sourceMappingURL=agent-target-binding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-target-binding.js","sourceRoot":"","sources":["../../../src/tools/orchestration/agent-target-binding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-target-binding.js","sourceRoot":"","sources":["../../../src/tools/orchestration/agent-target-binding.ts"],"names":[],"mappings":"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"}
|