@n8n/instance-ai 1.24.4 → 1.25.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/README.md +2 -3
- package/dist/agent/credential-guardrails.prompt.d.ts +1 -0
- package/dist/agent/credential-guardrails.prompt.js +2 -1
- package/dist/agent/credential-guardrails.prompt.js.map +1 -1
- package/dist/agent/instance-agent.js +11 -18
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/shared-prompts.d.ts +2 -2
- package/dist/agent/shared-prompts.js +2 -2
- package/dist/agent/shared-prompts.js.map +1 -1
- package/dist/agent/sub-agent-factory.d.ts +1 -1
- package/dist/agent/sub-agent-factory.js +2 -1
- package/dist/agent/sub-agent-factory.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -0
- package/dist/agent/system-prompt.js +29 -4
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/constants/max-steps.d.ts +0 -1
- package/dist/constants/max-steps.js +0 -1
- package/dist/constants/max-steps.js.map +1 -1
- package/dist/debug/sanitize-debug-snapshot.js +3 -3
- package/dist/debug/sanitize-debug-snapshot.js.map +1 -1
- package/dist/error-formatting.js +5 -12
- package/dist/error-formatting.js.map +1 -1
- package/dist/index.d.ts +5 -10
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/knowledge-base/materialize-knowledge-base.js +24 -16
- package/dist/knowledge-base/materialize-knowledge-base.js.map +1 -1
- package/dist/mcp/mcp-client-manager.js +3 -4
- package/dist/mcp/mcp-client-manager.js.map +1 -1
- package/dist/runtime/background-task-manager.js +5 -5
- package/dist/runtime/background-task-manager.js.map +1 -1
- package/dist/runtime/resumable-stream-executor.js +2 -3
- package/dist/runtime/resumable-stream-executor.js.map +1 -1
- package/dist/runtime/run-state-registry.js +1 -1
- package/dist/runtime/run-state-registry.js.map +1 -1
- package/dist/skills/materialize-runtime-skills.js +30 -23
- package/dist/skills/materialize-runtime-skills.js.map +1 -1
- package/dist/skills/runtime-skills.d.ts +1 -0
- package/dist/skills/runtime-skills.js +11 -0
- package/dist/skills/runtime-skills.js.map +1 -1
- package/dist/skills/skill-gates.d.ts +2 -0
- package/dist/skills/skill-gates.js +4 -1
- package/dist/skills/skill-gates.js.map +1 -1
- package/dist/storage/workflow-loop-storage.d.ts +550 -0
- package/dist/storage/workflow-loop-storage.js +31 -1
- package/dist/storage/workflow-loop-storage.js.map +1 -1
- package/dist/stream/consume-with-hitl.d.ts +0 -28
- package/dist/stream/consume-with-hitl.js +0 -50
- package/dist/stream/consume-with-hitl.js.map +1 -1
- package/dist/tools/activity.tool.d.ts +2 -0
- package/dist/tools/activity.tool.js +102 -0
- package/dist/tools/activity.tool.js.map +1 -0
- package/dist/tools/credentials.tool.js +5 -3
- package/dist/tools/credentials.tool.js.map +1 -1
- package/dist/tools/executions.tool.js +47 -10
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/filesystem/create-tools-from-mcp-server.js +1 -0
- package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.js +45 -55
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/n8n-docs/schemas.js +1 -1
- package/dist/tools/n8n-docs/schemas.js.map +1 -1
- package/dist/tools/n8n-docs.tool.d.ts +2 -1
- package/dist/tools/n8n-docs.tool.js +11 -3
- package/dist/tools/n8n-docs.tool.js.map +1 -1
- package/dist/tools/orchestration/agent-persistence.d.ts +0 -12
- package/dist/tools/orchestration/agent-persistence.js +0 -34
- package/dist/tools/orchestration/agent-persistence.js.map +1 -1
- package/dist/tools/orchestration/build-agent.tool.js +3 -3
- package/dist/tools/orchestration/build-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/complete-checkpoint.tool.js +1 -1
- package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
- package/dist/tools/orchestration/plan.tool.js +5 -1
- package/dist/tools/orchestration/plan.tool.js.map +1 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.js +7 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
- package/dist/tools/orchestration/tracing-utils.d.ts +1 -6
- package/dist/tools/orchestration/tracing-utils.js +0 -99
- package/dist/tools/orchestration/tracing-utils.js.map +1 -1
- package/dist/tools/orchestration/verification/analyze-result.d.ts +5 -0
- package/dist/tools/orchestration/verification/analyze-result.js +27 -5
- package/dist/tools/orchestration/verification/analyze-result.js.map +1 -1
- package/dist/tools/orchestration/verification/claim.d.ts +14 -0
- package/dist/tools/orchestration/verification/claim.js +52 -0
- package/dist/tools/orchestration/verification/claim.js.map +1 -0
- package/dist/tools/orchestration/verification/finalize-result.d.ts +5 -2
- package/dist/tools/orchestration/verification/finalize-result.js +21 -25
- package/dist/tools/orchestration/verification/finalize-result.js.map +1 -1
- package/dist/tools/orchestration/verification/resolve-target.js +39 -15
- package/dist/tools/orchestration/verification/resolve-target.js.map +1 -1
- package/dist/tools/orchestration/verification/resolved-parameter-warnings.d.ts +58 -0
- package/dist/tools/orchestration/verification/resolved-parameter-warnings.js +127 -0
- package/dist/tools/orchestration/verification/resolved-parameter-warnings.js.map +1 -0
- package/dist/tools/orchestration/verification/scripted-gate-run.d.ts +3 -0
- package/dist/tools/orchestration/verification/scripted-gate-run.js +22 -2
- package/dist/tools/orchestration/verification/scripted-gate-run.js.map +1 -1
- package/dist/tools/orchestration/verification/types.d.ts +8 -1
- package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +3 -0
- package/dist/tools/orchestration/verify-built-workflow.tool.js +141 -18
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/research.tool.js +3 -2
- package/dist/tools/research.tool.js.map +1 -1
- package/dist/tools/task-control.tool.js +8 -1
- package/dist/tools/task-control.tool.js.map +1 -1
- package/dist/tools/tool-ids.d.ts +1 -3
- package/dist/tools/tool-ids.js +2 -3
- package/dist/tools/tool-ids.js.map +1 -1
- package/dist/tools/web-research/sanitize-web-content.d.ts +1 -2
- package/dist/tools/web-research/sanitize-web-content.js +6 -19
- package/dist/tools/web-research/sanitize-web-content.js.map +1 -1
- package/dist/tools/workflows/build-workflow.tool.d.ts +12 -0
- package/dist/tools/workflows/build-workflow.tool.js +158 -12
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/detect-unparseable-openai-schema.js +1 -1
- package/dist/tools/workflows/detect-unparseable-openai-schema.js.map +1 -1
- package/dist/tools/workflows/detect-wrong-kind-locator.js +7 -9
- package/dist/tools/workflows/detect-wrong-kind-locator.js.map +1 -1
- package/dist/tools/workflows/reconcile-simulation-plan.js +1 -1
- package/dist/tools/workflows/reconcile-simulation-plan.js.map +1 -1
- package/dist/tools/workflows/resolve-credentials.js.map +1 -1
- package/dist/tools/workflows/setup-items.d.ts +5 -0
- package/dist/tools/workflows/setup-items.js +29 -0
- package/dist/tools/workflows/setup-items.js.map +1 -1
- package/dist/tools/workflows/setup-panel-state.d.ts +31 -0
- package/dist/tools/workflows/setup-panel-state.js +197 -0
- package/dist/tools/workflows/setup-panel-state.js.map +1 -0
- package/dist/tools/workflows/setup-workflow.service.d.ts +3 -1
- package/dist/tools/workflows/setup-workflow.service.js +20 -13
- package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
- package/dist/tools/workflows/validate-workflow.service.js.map +1 -1
- package/dist/tools/workflows/wait-gate-script.js +1 -1
- package/dist/tools/workflows/wait-gate-script.js.map +1 -1
- package/dist/tools/workflows/workflow-build-reporting.d.ts +1 -0
- package/dist/tools/workflows/workflow-build-reporting.js +1 -0
- package/dist/tools/workflows/workflow-build-reporting.js.map +1 -1
- package/dist/tools/workflows/workflow-build-telemetry.d.ts +5 -1
- package/dist/tools/workflows/workflow-build-telemetry.js +8 -0
- package/dist/tools/workflows/workflow-build-telemetry.js.map +1 -1
- package/dist/tools/workflows/workflow-file-bindings.js +0 -2
- package/dist/tools/workflows/workflow-file-bindings.js.map +1 -1
- package/dist/tools/workflows/workflow-source-compiler.js +80 -25
- package/dist/tools/workflows/workflow-source-compiler.js.map +1 -1
- package/dist/tools/workflows/workflow-validation-warnings.d.ts +13 -2
- package/dist/tools/workflows/workflow-validation-warnings.js +55 -1
- package/dist/tools/workflows/workflow-validation-warnings.js.map +1 -1
- package/dist/tools/workflows.tool.d.ts +1 -5
- package/dist/tools/workflows.tool.js +112 -136
- package/dist/tools/workflows.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.d.ts +10 -22
- package/dist/tracing/langsmith-tracing.js +106 -110
- package/dist/tracing/langsmith-tracing.js.map +1 -1
- package/dist/tracing/sandbox-tracing.d.ts +17 -0
- package/dist/tracing/sandbox-tracing.js +60 -0
- package/dist/tracing/sandbox-tracing.js.map +1 -0
- package/dist/tracing/trace-payloads.d.ts +1 -0
- package/dist/tracing/trace-payloads.js +17 -4
- package/dist/tracing/trace-payloads.js.map +1 -1
- package/dist/tracing/trace-replay.js.map +1 -1
- package/dist/types.d.ts +53 -66
- package/dist/types.js.map +1 -1
- package/dist/utils/eval-agents.js +3 -7
- package/dist/utils/eval-agents.js.map +1 -1
- package/dist/utils/generate-validated-json.js +2 -6
- package/dist/utils/generate-validated-json.js.map +1 -1
- package/dist/workflow-loop/guidance.d.ts +1 -0
- package/dist/workflow-loop/guidance.js +48 -4
- package/dist/workflow-loop/guidance.js.map +1 -1
- package/dist/workflow-loop/render-claim.d.ts +6 -0
- package/dist/workflow-loop/render-claim.js +61 -0
- package/dist/workflow-loop/render-claim.js.map +1 -0
- package/dist/workflow-loop/setup-verification-policy.d.ts +3 -1
- package/dist/workflow-loop/setup-verification-policy.js +38 -0
- package/dist/workflow-loop/setup-verification-policy.js.map +1 -1
- package/dist/workflow-loop/verification-obligation.d.ts +1 -0
- package/dist/workflow-loop/verification-obligation.js +47 -14
- package/dist/workflow-loop/verification-obligation.js.map +1 -1
- package/dist/workflow-loop/verification-progress.d.ts +62 -0
- package/dist/workflow-loop/verification-progress.js +64 -0
- package/dist/workflow-loop/verification-progress.js.map +1 -0
- package/dist/workflow-loop/workflow-loop-controller.js +2 -0
- package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +993 -0
- package/dist/workflow-loop/workflow-loop-state.js +32 -1
- package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
- package/dist/workflow-loop/workflow-task-service.d.ts +6 -1
- package/dist/workflow-loop/workflow-task-service.js +86 -6
- package/dist/workflow-loop/workflow-task-service.js.map +1 -1
- package/dist/workspace/lazy-runtime-workspace.js +57 -9
- package/dist/workspace/lazy-runtime-workspace.js.map +1 -1
- package/dist/workspace/prebaked-workspace-bundle.js +93 -58
- package/dist/workspace/prebaked-workspace-bundle.js.map +1 -1
- package/dist/workspace/sandbox-fs.js +56 -32
- package/dist/workspace/sandbox-fs.js.map +1 -1
- package/dist/workspace/sandbox-setup.js +65 -52
- package/dist/workspace/sandbox-setup.js.map +1 -1
- package/dist/workspace/workspace-files.js +76 -57
- package/dist/workspace/workspace-files.js.map +1 -1
- package/knowledge-base/reference/workflow-builder-guardrails.md +4 -2
- package/package.json +12 -12
- package/skills/agent-builder/SKILL.md +15 -6
- package/skills/credential-recipe-research/SKILL.md +1 -1
- package/skills/debugging-executions/SKILL.md +24 -0
- package/skills/instance-awareness/SKILL.md +122 -0
- package/skills/intent-recognition/SKILL.md +83 -49
- package/skills/n8n-docs-assistant/SKILL.md +5 -9
- package/skills/planned-task-runtime/SKILL.md +2 -2
- package/skills/post-build-flow/SKILL.md +173 -23
- package/skills/workflow-builder/SKILL.md +45 -21
- package/dist/agent/sub-agent-briefing.d.ts +0 -20
- package/dist/agent/sub-agent-briefing.js +0 -39
- package/dist/agent/sub-agent-briefing.js.map +0 -1
- package/dist/tools/evals/analyze-agent-input-columns.service.d.ts +0 -6
- package/dist/tools/evals/analyze-agent-input-columns.service.js +0 -17
- package/dist/tools/evals/analyze-agent-input-columns.service.js.map +0 -1
- package/dist/tools/evals/apply-pin-data.service.d.ts +0 -3
- package/dist/tools/evals/apply-pin-data.service.js +0 -19
- package/dist/tools/evals/apply-pin-data.service.js.map +0 -1
- package/dist/tools/evals/column-ref-utils.d.ts +0 -20
- package/dist/tools/evals/column-ref-utils.js +0 -274
- package/dist/tools/evals/column-ref-utils.js.map +0 -1
- package/dist/tools/evals/describe-metric-for-workflow.service.d.ts +0 -6
- package/dist/tools/evals/describe-metric-for-workflow.service.js +0 -90
- package/dist/tools/evals/describe-metric-for-workflow.service.js.map +0 -1
- package/dist/tools/evals/detect-agent-named-refs.service.d.ts +0 -9
- package/dist/tools/evals/detect-agent-named-refs.service.js +0 -83
- package/dist/tools/evals/detect-agent-named-refs.service.js.map +0 -1
- package/dist/tools/evals/detect-ai-nodes.d.ts +0 -7
- package/dist/tools/evals/detect-ai-nodes.js +0 -75
- package/dist/tools/evals/detect-ai-nodes.js.map +0 -1
- package/dist/tools/evals/detect-tool-refs.service.d.ts +0 -7
- package/dist/tools/evals/detect-tool-refs.service.js +0 -66
- package/dist/tools/evals/detect-tool-refs.service.js.map +0 -1
- package/dist/tools/evals/ensure-eval-data-table.service.d.ts +0 -15
- package/dist/tools/evals/ensure-eval-data-table.service.js +0 -83
- package/dist/tools/evals/ensure-eval-data-table.service.js.map +0 -1
- package/dist/tools/evals/eval-data-requirements.service.d.ts +0 -20
- package/dist/tools/evals/eval-data-requirements.service.js +0 -187
- package/dist/tools/evals/eval-data-requirements.service.js.map +0 -1
- package/dist/tools/evals/evals.tool.d.ts +0 -45
- package/dist/tools/evals/evals.tool.js +0 -454
- package/dist/tools/evals/evals.tool.js.map +0 -1
- package/dist/tools/evals/extract-rows-from-history.service.d.ts +0 -17
- package/dist/tools/evals/extract-rows-from-history.service.js +0 -103
- package/dist/tools/evals/extract-rows-from-history.service.js.map +0 -1
- package/dist/tools/evals/format-eval-setup-task.d.ts +0 -16
- package/dist/tools/evals/format-eval-setup-task.js +0 -167
- package/dist/tools/evals/format-eval-setup-task.js.map +0 -1
- package/dist/tools/evals/generate-sample-rows.service.d.ts +0 -35
- package/dist/tools/evals/generate-sample-rows.service.js +0 -259
- package/dist/tools/evals/generate-sample-rows.service.js.map +0 -1
- package/dist/tools/evals/generate-tool-ref-pin-data.service.d.ts +0 -11
- package/dist/tools/evals/generate-tool-ref-pin-data.service.js +0 -112
- package/dist/tools/evals/generate-tool-ref-pin-data.service.js.map +0 -1
- package/dist/tools/evals/metric-catalog.d.ts +0 -63
- package/dist/tools/evals/metric-catalog.js +0 -81
- package/dist/tools/evals/metric-catalog.js.map +0 -1
- package/dist/tools/orchestration/eval-data-agent.tool.d.ts +0 -2
- package/dist/tools/orchestration/eval-data-agent.tool.js +0 -184
- package/dist/tools/orchestration/eval-data-agent.tool.js.map +0 -1
- package/dist/tools/orchestration/eval-setup-agent.prompt.d.ts +0 -1
- package/dist/tools/orchestration/eval-setup-agent.prompt.js +0 -238
- package/dist/tools/orchestration/eval-setup-agent.prompt.js.map +0 -1
- package/dist/tools/orchestration/eval-setup-agent.tool.d.ts +0 -31
- package/dist/tools/orchestration/eval-setup-agent.tool.js +0 -204
- package/dist/tools/orchestration/eval-setup-agent.tool.js.map +0 -1
- package/dist/tools/workflows/observed-workflow-checksums.d.ts +0 -4
- package/dist/tools/workflows/observed-workflow-checksums.js +0 -82
- package/dist/tools/workflows/observed-workflow-checksums.js.map +0 -1
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.unique = unique;
|
|
4
|
-
exports.nodeTypeEndsWith = nodeTypeEndsWith;
|
|
5
|
-
exports.nodeHasName = nodeHasName;
|
|
6
|
-
exports.collectStrings = collectStrings;
|
|
7
|
-
exports.jsonFieldAccessor = jsonFieldAccessor;
|
|
8
|
-
exports.currentJsonExpression = currentJsonExpression;
|
|
9
|
-
exports.nodeItemJsonExpression = nodeItemJsonExpression;
|
|
10
|
-
exports.extractJsonColumnRefs = extractJsonColumnRefs;
|
|
11
|
-
exports.extractNamedRefMatches = extractNamedRefMatches;
|
|
12
|
-
exports.connectionSlotTargetsNode = connectionSlotTargetsNode;
|
|
13
|
-
exports.findAgentSubComponents = findAgentSubComponents;
|
|
14
|
-
const is_record_1 = require("@n8n/utils/is-record");
|
|
15
|
-
function unique(values) {
|
|
16
|
-
return [...new Set(values.filter((value) => value.length > 0))];
|
|
17
|
-
}
|
|
18
|
-
function nodeTypeEndsWith(node, suffix) {
|
|
19
|
-
return node.type === suffix || node.type.endsWith(`.${suffix}`);
|
|
20
|
-
}
|
|
21
|
-
function nodeHasName(node) {
|
|
22
|
-
return typeof node.name === 'string' && node.name.length > 0;
|
|
23
|
-
}
|
|
24
|
-
function collectStrings(value) {
|
|
25
|
-
if (typeof value === 'string')
|
|
26
|
-
return [value];
|
|
27
|
-
if (Array.isArray(value))
|
|
28
|
-
return value.flatMap(collectStrings);
|
|
29
|
-
if (!(0, is_record_1.isRecord)(value))
|
|
30
|
-
return [];
|
|
31
|
-
return Object.values(value).flatMap(collectStrings);
|
|
32
|
-
}
|
|
33
|
-
const JS_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
34
|
-
const JS_IDENTIFIER_START = /^[A-Za-z_$]$/;
|
|
35
|
-
const JS_IDENTIFIER_PART = /^[A-Za-z0-9_$]$/;
|
|
36
|
-
function charAt(text, index) {
|
|
37
|
-
return text[index] ?? '';
|
|
38
|
-
}
|
|
39
|
-
function isIdentifierPart(char) {
|
|
40
|
-
return JS_IDENTIFIER_PART.test(char);
|
|
41
|
-
}
|
|
42
|
-
function skipWhitespace(text, start) {
|
|
43
|
-
let index = start;
|
|
44
|
-
while (/\s/.test(charAt(text, index)))
|
|
45
|
-
index++;
|
|
46
|
-
return index;
|
|
47
|
-
}
|
|
48
|
-
function readIdentifier(text, start) {
|
|
49
|
-
const first = charAt(text, start);
|
|
50
|
-
if (!JS_IDENTIFIER_START.test(first))
|
|
51
|
-
return undefined;
|
|
52
|
-
let endIndex = start + 1;
|
|
53
|
-
while (JS_IDENTIFIER_PART.test(charAt(text, endIndex)))
|
|
54
|
-
endIndex++;
|
|
55
|
-
return { value: text.slice(start, endIndex), endIndex };
|
|
56
|
-
}
|
|
57
|
-
function readQuotedString(text, start) {
|
|
58
|
-
const quote = charAt(text, start);
|
|
59
|
-
if (quote !== "'" && quote !== '"')
|
|
60
|
-
return undefined;
|
|
61
|
-
let value = '';
|
|
62
|
-
for (let index = start + 1; index < text.length; index++) {
|
|
63
|
-
const char = charAt(text, index);
|
|
64
|
-
if (char === '\\') {
|
|
65
|
-
const next = charAt(text, index + 1);
|
|
66
|
-
if (next.length === 0)
|
|
67
|
-
return undefined;
|
|
68
|
-
value += next;
|
|
69
|
-
index++;
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
if (char === quote) {
|
|
73
|
-
return { value, endIndex: index + 1 };
|
|
74
|
-
}
|
|
75
|
-
value += char;
|
|
76
|
-
}
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
function readFieldAccessor(text, start) {
|
|
80
|
-
if (charAt(text, start) === '.') {
|
|
81
|
-
const identifier = readIdentifier(text, start + 1);
|
|
82
|
-
if (!identifier)
|
|
83
|
-
return undefined;
|
|
84
|
-
return { field: identifier.value, endIndex: identifier.endIndex };
|
|
85
|
-
}
|
|
86
|
-
if (charAt(text, start) !== '[')
|
|
87
|
-
return undefined;
|
|
88
|
-
const quoteStart = skipWhitespace(text, start + 1);
|
|
89
|
-
const quoted = readQuotedString(text, quoteStart);
|
|
90
|
-
if (!quoted)
|
|
91
|
-
return undefined;
|
|
92
|
-
const closeBracketIndex = skipWhitespace(text, quoted.endIndex);
|
|
93
|
-
if (charAt(text, closeBracketIndex) !== ']')
|
|
94
|
-
return undefined;
|
|
95
|
-
return { field: quoted.value, endIndex: closeBracketIndex + 1 };
|
|
96
|
-
}
|
|
97
|
-
const ITEM_JSON_ACCESSOR_PATTERNS = [
|
|
98
|
-
'.item.json',
|
|
99
|
-
'.first().json',
|
|
100
|
-
'.last().json',
|
|
101
|
-
'.all().json',
|
|
102
|
-
];
|
|
103
|
-
function readItemJsonField(text, start) {
|
|
104
|
-
for (const accessor of ITEM_JSON_ACCESSOR_PATTERNS) {
|
|
105
|
-
if (!text.startsWith(accessor, start))
|
|
106
|
-
continue;
|
|
107
|
-
return readFieldAccessor(text, start + accessor.length);
|
|
108
|
-
}
|
|
109
|
-
const itemMatching = /^\.itemMatching\(\d+\)\.json/.exec(text.slice(start));
|
|
110
|
-
if (itemMatching) {
|
|
111
|
-
return readFieldAccessor(text, start + itemMatching[0].length);
|
|
112
|
-
}
|
|
113
|
-
const allItem = /^\.all\(\)\[\d+\]\.json/.exec(text.slice(start));
|
|
114
|
-
if (allItem) {
|
|
115
|
-
return readFieldAccessor(text, start + allItem[0].length);
|
|
116
|
-
}
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
|
-
function readDirectJsonField(text, start) {
|
|
120
|
-
if (!text.startsWith('.json', start))
|
|
121
|
-
return undefined;
|
|
122
|
-
return readFieldAccessor(text, start + '.json'.length);
|
|
123
|
-
}
|
|
124
|
-
function readItemsJsonField(text, start) {
|
|
125
|
-
const itemIndex = /^\[\d+\]/.exec(text.slice(start));
|
|
126
|
-
const jsonStart = start + (itemIndex?.[0].length ?? 0);
|
|
127
|
-
return readDirectJsonField(text, jsonStart);
|
|
128
|
-
}
|
|
129
|
-
function readNamedNodeJsonField(text, start) {
|
|
130
|
-
return readItemJsonField(text, start) ?? readDirectJsonField(text, start);
|
|
131
|
-
}
|
|
132
|
-
function jsonFieldAccessor(field) {
|
|
133
|
-
return JS_IDENTIFIER.test(field) ? `.${field}` : `[${JSON.stringify(field)}]`;
|
|
134
|
-
}
|
|
135
|
-
function currentJsonExpression(field) {
|
|
136
|
-
return `$json${jsonFieldAccessor(field)}`;
|
|
137
|
-
}
|
|
138
|
-
function nodeItemJsonExpression(nodeName, field) {
|
|
139
|
-
return `$(${JSON.stringify(nodeName)}).item.json${jsonFieldAccessor(field)}`;
|
|
140
|
-
}
|
|
141
|
-
function extractJsonColumnRefs(text) {
|
|
142
|
-
const refs = [];
|
|
143
|
-
for (let index = 0; index < text.length; index++) {
|
|
144
|
-
if (text.startsWith('$json', index) && !isIdentifierPart(charAt(text, index + 5))) {
|
|
145
|
-
const match = readFieldAccessor(text, index + 5);
|
|
146
|
-
if (match) {
|
|
147
|
-
refs.push(match.field);
|
|
148
|
-
index = match.endIndex - 1;
|
|
149
|
-
}
|
|
150
|
-
continue;
|
|
151
|
-
}
|
|
152
|
-
if (text.startsWith('$input', index) && !isIdentifierPart(charAt(text, index + 6))) {
|
|
153
|
-
const match = readItemJsonField(text, index + 6) ?? readItemsJsonField(text, index + 6);
|
|
154
|
-
if (match) {
|
|
155
|
-
refs.push(match.field);
|
|
156
|
-
index = match.endIndex - 1;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return unique(refs);
|
|
161
|
-
}
|
|
162
|
-
function readDollarNodeRef(text, start) {
|
|
163
|
-
const quoteStart = skipWhitespace(text, start + '$('.length);
|
|
164
|
-
const nodeName = readQuotedString(text, quoteStart);
|
|
165
|
-
if (!nodeName)
|
|
166
|
-
return undefined;
|
|
167
|
-
const closeParenIndex = skipWhitespace(text, nodeName.endIndex);
|
|
168
|
-
if (charAt(text, closeParenIndex) !== ')')
|
|
169
|
-
return undefined;
|
|
170
|
-
const field = readItemJsonField(text, closeParenIndex + 1);
|
|
171
|
-
if (!field)
|
|
172
|
-
return undefined;
|
|
173
|
-
return {
|
|
174
|
-
nodeName: nodeName.value,
|
|
175
|
-
field: field.field,
|
|
176
|
-
originalExpression: text.slice(start, field.endIndex),
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
function readItemsNodeRef(text, start) {
|
|
180
|
-
const quoteStart = skipWhitespace(text, start + '$items('.length);
|
|
181
|
-
const nodeName = readQuotedString(text, quoteStart);
|
|
182
|
-
if (!nodeName)
|
|
183
|
-
return undefined;
|
|
184
|
-
const closeParenIndex = text.indexOf(')', nodeName.endIndex);
|
|
185
|
-
if (closeParenIndex < 0)
|
|
186
|
-
return undefined;
|
|
187
|
-
const field = readItemsJsonField(text, closeParenIndex + 1);
|
|
188
|
-
if (!field)
|
|
189
|
-
return undefined;
|
|
190
|
-
return {
|
|
191
|
-
nodeName: nodeName.value,
|
|
192
|
-
field: field.field,
|
|
193
|
-
originalExpression: text.slice(start, field.endIndex),
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
function readNodeBracketRef(text, start) {
|
|
197
|
-
const quoteStart = skipWhitespace(text, start + '$node['.length);
|
|
198
|
-
const nodeName = readQuotedString(text, quoteStart);
|
|
199
|
-
if (!nodeName)
|
|
200
|
-
return undefined;
|
|
201
|
-
const closeBracketIndex = skipWhitespace(text, nodeName.endIndex);
|
|
202
|
-
if (charAt(text, closeBracketIndex) !== ']')
|
|
203
|
-
return undefined;
|
|
204
|
-
const field = readNamedNodeJsonField(text, closeBracketIndex + 1);
|
|
205
|
-
if (!field)
|
|
206
|
-
return undefined;
|
|
207
|
-
return {
|
|
208
|
-
nodeName: nodeName.value,
|
|
209
|
-
field: field.field,
|
|
210
|
-
originalExpression: text.slice(start, field.endIndex),
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
function readNodeDotRef(text, start) {
|
|
214
|
-
const nodeName = readIdentifier(text, start + '$node.'.length);
|
|
215
|
-
if (!nodeName)
|
|
216
|
-
return undefined;
|
|
217
|
-
const field = readNamedNodeJsonField(text, nodeName.endIndex);
|
|
218
|
-
if (!field)
|
|
219
|
-
return undefined;
|
|
220
|
-
return {
|
|
221
|
-
nodeName: nodeName.value,
|
|
222
|
-
field: field.field,
|
|
223
|
-
originalExpression: text.slice(start, field.endIndex),
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
function readNamedRefAt(text, start) {
|
|
227
|
-
if (text.startsWith('$items(', start))
|
|
228
|
-
return readItemsNodeRef(text, start);
|
|
229
|
-
if (text.startsWith('$(', start))
|
|
230
|
-
return readDollarNodeRef(text, start);
|
|
231
|
-
if (text.startsWith('$node[', start))
|
|
232
|
-
return readNodeBracketRef(text, start);
|
|
233
|
-
if (text.startsWith('$node.', start))
|
|
234
|
-
return readNodeDotRef(text, start);
|
|
235
|
-
return undefined;
|
|
236
|
-
}
|
|
237
|
-
function extractNamedRefMatches(text) {
|
|
238
|
-
const matches = [];
|
|
239
|
-
for (let index = 0; index < text.length; index++) {
|
|
240
|
-
const match = readNamedRefAt(text, index);
|
|
241
|
-
if (match) {
|
|
242
|
-
matches.push(match);
|
|
243
|
-
index += match.originalExpression.length - 1;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return matches;
|
|
247
|
-
}
|
|
248
|
-
function connectionSlotTargetsNode(slot, targetNodeName) {
|
|
249
|
-
if (!Array.isArray(slot))
|
|
250
|
-
return false;
|
|
251
|
-
for (const inner of slot) {
|
|
252
|
-
if (!Array.isArray(inner))
|
|
253
|
-
continue;
|
|
254
|
-
for (const conn of inner) {
|
|
255
|
-
if ((0, is_record_1.isRecord)(conn) && conn.node === targetNodeName)
|
|
256
|
-
return true;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
return false;
|
|
260
|
-
}
|
|
261
|
-
function findAgentSubComponents(workflow, agentNodeName) {
|
|
262
|
-
const subs = new Set();
|
|
263
|
-
for (const [sourceName, byType] of Object.entries(workflow.connections ?? {})) {
|
|
264
|
-
if (!(0, is_record_1.isRecord)(byType))
|
|
265
|
-
continue;
|
|
266
|
-
for (const [connType, slot] of Object.entries(byType)) {
|
|
267
|
-
if (connType.startsWith('ai_') && connectionSlotTargetsNode(slot, agentNodeName)) {
|
|
268
|
-
subs.add(sourceName);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
return [...subs];
|
|
273
|
-
}
|
|
274
|
-
//# sourceMappingURL=column-ref-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"column-ref-utils.js","sourceRoot":"","sources":["../../../src/tools/evals/column-ref-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,oDAAgD;AAKhD,gBAAuB,MAAgB;IACtC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,0BAAiC,IAAkB,EAAE,MAAc;IAClE,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,qBAA4B,IAAkB;IAC7C,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,wBAA+B,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAA,oBAAQ,EAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,aAAa,GAAG,4BAA4B,CAAC;AACnD,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,SAAS,MAAM,CAAC,IAAY,EAAE,KAAa;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,KAAK,EAAE,CAAC;IAC/C,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACtB,IAAY,EACZ,KAAa;IAEb,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,IAAI,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAAE,QAAQ,EAAE,CAAC;IACnE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,CACxB,IAAY,EACZ,KAAa;IAEb,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IAErD,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YACxC,KAAK,IAAI,IAAI,CAAC;YACd,KAAK,EAAE,CAAC;YACR,SAAS;QACV,CAAC;QACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;QACvC,CAAC;QACD,KAAK,IAAI,IAAI,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CACzB,IAAY,EACZ,KAAa;IAEb,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,GAAG,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,2BAA2B,GAAG;IACnC,YAAY;IACZ,eAAe;IACf,cAAc;IACd,aAAa;CACJ,CAAC;AAEX,SAAS,iBAAiB,CACzB,IAAY,EACZ,KAAa;IAEb,KAAK,MAAM,QAAQ,IAAI,2BAA2B,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;YAAE,SAAS;QAChD,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,YAAY,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,IAAI,YAAY,EAAE,CAAC;QAClB,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAC3B,IAAY,EACZ,KAAa;IAEb,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,kBAAkB,CAC1B,IAAY,EACZ,KAAa;IAEb,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,sBAAsB,CAC9B,IAAY,EACZ,KAAa;IAEb,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,2BAAkC,KAAa;IAC9C,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/E,CAAC;AAED,+BAAsC,KAAa;IAClD,OAAO,QAAQ,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,gCAAuC,QAAgB,EAAE,KAAa;IACrE,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,+BAAsC,IAAY;IACjD,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvB,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5B,CAAC;YACD,SAAS;QACV,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACxF,IAAI,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvB,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5B,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAiBD,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACrD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,KAAK;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;KACrD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa;IACpD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,eAAe,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,KAAK;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;KACrD,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,KAAK;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;KACrD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,KAAK;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;KACrD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzE,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,gCAAuC,IAAY;IAClD,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9C,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAMD,mCAA0C,IAAa,EAAE,cAAsB;IAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;gBAAE,OAAO,IAAI,CAAC;QACjE,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,gCAAuC,QAAsB,EAAE,aAAqB;IACnF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAA,oBAAQ,EAAC,MAAM,CAAC;YAAE,SAAS;QAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,yBAAyB,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC;gBAClF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { WorkflowJSON } from '@n8n/workflow-sdk';
|
|
2
|
-
import type { MetricId } from './metric-catalog';
|
|
3
|
-
type RecommendedMetricId = Exclude<MetricId, 'helpfulness'>;
|
|
4
|
-
export declare function describeMetricForWorkflow(workflow: WorkflowJSON, agentNodeName: string, metricId: string): string;
|
|
5
|
-
export declare function recommendedMetricId(workflow: WorkflowJSON, agentNodeName: string): RecommendedMetricId;
|
|
6
|
-
export {};
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.describeMetricForWorkflow = describeMetricForWorkflow;
|
|
4
|
-
exports.recommendedMetricId = recommendedMetricId;
|
|
5
|
-
const is_record_1 = require("@n8n/utils/is-record");
|
|
6
|
-
const column_ref_utils_1 = require("./column-ref-utils");
|
|
7
|
-
function findSourceNodesByConnectionType(workflow, targetNodeName, connectionType) {
|
|
8
|
-
const sources = [];
|
|
9
|
-
const connections = workflow.connections ?? {};
|
|
10
|
-
for (const [sourceName, byType] of Object.entries(connections)) {
|
|
11
|
-
if (!(0, is_record_1.isRecord)(byType))
|
|
12
|
-
continue;
|
|
13
|
-
if ((0, column_ref_utils_1.connectionSlotTargetsNode)(byType[connectionType], targetNodeName)) {
|
|
14
|
-
sources.push(sourceName);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return sources;
|
|
18
|
-
}
|
|
19
|
-
function getAgentToolNames(workflow, agentNodeName) {
|
|
20
|
-
return findSourceNodesByConnectionType(workflow, agentNodeName, 'ai_tool');
|
|
21
|
-
}
|
|
22
|
-
function getAgentRetrieverNames(workflow, agentNodeName) {
|
|
23
|
-
const connections = workflow.connections ?? {};
|
|
24
|
-
const candidates = new Set();
|
|
25
|
-
for (const [sourceName, byType] of Object.entries(connections)) {
|
|
26
|
-
if (!(0, is_record_1.isRecord)(byType))
|
|
27
|
-
continue;
|
|
28
|
-
for (const [connType, slot] of Object.entries(byType)) {
|
|
29
|
-
if (connType.startsWith('ai_') && (0, column_ref_utils_1.connectionSlotTargetsNode)(slot, agentNodeName)) {
|
|
30
|
-
candidates.add(sourceName);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
const nodeTypes = new Map();
|
|
35
|
-
for (const node of workflow.nodes ?? []) {
|
|
36
|
-
if (typeof node.name === 'string' && typeof node.type === 'string') {
|
|
37
|
-
nodeTypes.set(node.name, node.type);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return [...candidates].filter((name) => {
|
|
41
|
-
const type = (nodeTypes.get(name) ?? '').toLowerCase();
|
|
42
|
-
return /\.(retriever|vectorstore)/.test(type);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
function formatNameList(names) {
|
|
46
|
-
if (names.length === 0)
|
|
47
|
-
return '';
|
|
48
|
-
if (names.length === 1)
|
|
49
|
-
return `\`${names[0]}\``;
|
|
50
|
-
if (names.length === 2)
|
|
51
|
-
return `\`${names[0]}\`, \`${names[1]}\``;
|
|
52
|
-
const last = names[names.length - 1];
|
|
53
|
-
const head = names
|
|
54
|
-
.slice(0, -1)
|
|
55
|
-
.map((n) => `\`${n}\``)
|
|
56
|
-
.join(', ');
|
|
57
|
-
return `${head}, \`${last}\``;
|
|
58
|
-
}
|
|
59
|
-
function describeMetricForWorkflow(workflow, agentNodeName, metricId) {
|
|
60
|
-
switch (metricId) {
|
|
61
|
-
case 'correctness':
|
|
62
|
-
return `Compares ${agentNodeName}'s response to a ground-truth column in your dataset`;
|
|
63
|
-
case 'tool_use': {
|
|
64
|
-
const tools = getAgentToolNames(workflow, agentNodeName);
|
|
65
|
-
if (tools.length === 0) {
|
|
66
|
-
return 'Add tools to your agent first to use this metric';
|
|
67
|
-
}
|
|
68
|
-
return `Verifies the agent picks correctly between ${formatNameList(tools)}`;
|
|
69
|
-
}
|
|
70
|
-
case 'relevance': {
|
|
71
|
-
const retrievers = getAgentRetrieverNames(workflow, agentNodeName);
|
|
72
|
-
if (retrievers.length === 0) {
|
|
73
|
-
return 'Rates retrieved context relevance — best for RAG workflows';
|
|
74
|
-
}
|
|
75
|
-
return `Rates whether retrieved context from ${formatNameList(retrievers)} matches the user query`;
|
|
76
|
-
}
|
|
77
|
-
case 'helpfulness':
|
|
78
|
-
return "Rates whether the agent's response addresses the user's intent";
|
|
79
|
-
default:
|
|
80
|
-
return '';
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
function recommendedMetricId(workflow, agentNodeName) {
|
|
84
|
-
if (getAgentToolNames(workflow, agentNodeName).length > 0)
|
|
85
|
-
return 'tool_use';
|
|
86
|
-
if (getAgentRetrieverNames(workflow, agentNodeName).length > 0)
|
|
87
|
-
return 'relevance';
|
|
88
|
-
return 'correctness';
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=describe-metric-for-workflow.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"describe-metric-for-workflow.service.js","sourceRoot":"","sources":["../../../src/tools/evals/describe-metric-for-workflow.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { WorkflowJSON } from '@n8n/workflow-sdk';
|
|
2
|
-
export interface NamedRef {
|
|
3
|
-
nodeName: string;
|
|
4
|
-
field: string;
|
|
5
|
-
originalExpression: string;
|
|
6
|
-
column: string;
|
|
7
|
-
targetNodeName: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function detectAgentNamedRefs(workflow: WorkflowJSON, agentNodeName: string): NamedRef[];
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectAgentNamedRefs = detectAgentNamedRefs;
|
|
4
|
-
const column_ref_utils_1 = require("./column-ref-utils");
|
|
5
|
-
function slug(name) {
|
|
6
|
-
const result = name
|
|
7
|
-
.toLowerCase()
|
|
8
|
-
.replace(/[^a-z0-9]+/g, '_')
|
|
9
|
-
.replace(/^_+|_+$/g, '');
|
|
10
|
-
return result.length > 0 ? result : 'node';
|
|
11
|
-
}
|
|
12
|
-
function detectAgentNamedRefs(workflow, agentNodeName) {
|
|
13
|
-
const node = (workflow.nodes ?? []).find((n) => (0, column_ref_utils_1.nodeHasName)(n) && n.name === agentNodeName);
|
|
14
|
-
if (!node) {
|
|
15
|
-
throw new Error(`Agent node "${agentNodeName}" not found in workflow`);
|
|
16
|
-
}
|
|
17
|
-
const targets = [agentNodeName, ...(0, column_ref_utils_1.findAgentSubComponents)(workflow, agentNodeName)];
|
|
18
|
-
const nodesByName = new Map((workflow.nodes ?? []).filter(column_ref_utils_1.nodeHasName).map((n) => [n.name, n]));
|
|
19
|
-
const targetMatches = new Map();
|
|
20
|
-
for (const target of targets) {
|
|
21
|
-
const tNode = nodesByName.get(target);
|
|
22
|
-
if (!tNode)
|
|
23
|
-
continue;
|
|
24
|
-
const matches = (0, column_ref_utils_1.collectStrings)(tNode.parameters).flatMap((text) => (0, column_ref_utils_1.extractNamedRefMatches)(text));
|
|
25
|
-
const dedup = new Map();
|
|
26
|
-
for (const m of matches) {
|
|
27
|
-
const key = `${m.nodeName}\x00${m.field}`;
|
|
28
|
-
if (!dedup.has(key))
|
|
29
|
-
dedup.set(key, m);
|
|
30
|
-
}
|
|
31
|
-
if (dedup.size > 0)
|
|
32
|
-
targetMatches.set(target, [...dedup.values()]);
|
|
33
|
-
}
|
|
34
|
-
const allPairs = new Map();
|
|
35
|
-
for (const matches of targetMatches.values()) {
|
|
36
|
-
for (const m of matches) {
|
|
37
|
-
const key = `${m.nodeName}\x00${m.field}`;
|
|
38
|
-
if (!allPairs.has(key)) {
|
|
39
|
-
allPairs.set(key, { nodeName: m.nodeName, field: m.field });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const byField = new Map();
|
|
44
|
-
for (const p of allPairs.values()) {
|
|
45
|
-
const arr = byField.get(p.field) ?? [];
|
|
46
|
-
arr.push(p);
|
|
47
|
-
byField.set(p.field, arr);
|
|
48
|
-
}
|
|
49
|
-
const columnsByPair = new Map();
|
|
50
|
-
const usedColumns = new Set();
|
|
51
|
-
function uniqueColumn(base) {
|
|
52
|
-
let candidate = base;
|
|
53
|
-
let suffix = 1;
|
|
54
|
-
while (usedColumns.has(candidate)) {
|
|
55
|
-
candidate = `${base}_${suffix}`;
|
|
56
|
-
suffix++;
|
|
57
|
-
}
|
|
58
|
-
usedColumns.add(candidate);
|
|
59
|
-
return candidate;
|
|
60
|
-
}
|
|
61
|
-
for (const p of allPairs.values()) {
|
|
62
|
-
const group = byField.get(p.field) ?? [];
|
|
63
|
-
const base = group.length === 1 ? p.field : `${slug(p.nodeName)}_${p.field}`;
|
|
64
|
-
columnsByPair.set(`${p.nodeName}\x00${p.field}`, uniqueColumn(base));
|
|
65
|
-
}
|
|
66
|
-
const result = [];
|
|
67
|
-
for (const [target, matches] of targetMatches) {
|
|
68
|
-
for (const m of matches) {
|
|
69
|
-
const column = columnsByPair.get(`${m.nodeName}\x00${m.field}`);
|
|
70
|
-
if (!column)
|
|
71
|
-
continue;
|
|
72
|
-
result.push({
|
|
73
|
-
nodeName: m.nodeName,
|
|
74
|
-
field: m.field,
|
|
75
|
-
originalExpression: m.originalExpression,
|
|
76
|
-
column,
|
|
77
|
-
targetNodeName: target,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return result;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=detect-agent-named-refs.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detect-agent-named-refs.service.js","sourceRoot":"","sources":["../../../src/tools/evals/detect-agent-named-refs.service.ts"],"names":[],"mappings":";;;AAEA,yDAM4B;AAe5B,SAAS,IAAI,CAAC,IAAY;IACzB,MAAM,MAAM,GAAG,IAAI;SACjB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAID,8BAAqC,QAAsB,EAAE,aAAqB;IACjF,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,8BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAC5F,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,eAAe,aAAa,yBAAyB,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,aAAa,EAAE,GAAG,IAAA,yCAAsB,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,IAAI,GAAG,CAC1B,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,8BAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAU,CAAC,CAC3E,CAAC;IAGF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,OAAO,GAAG,IAAA,iCAAc,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACjE,IAAA,yCAAsB,EAAC,IAAI,CAAC,CAC5B,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;YAAE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAGD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;IACxE,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;IACF,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsD,CAAC;IAC9E,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,SAAS,YAAY,CAAC,IAAY;QACjC,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,SAAS,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC;QACV,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7E,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAGD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;gBACxC,MAAM;gBACN,cAAc,EAAE,MAAM;aACtB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectAiNodes = detectAiNodes;
|
|
4
|
-
const LANGCHAIN_TYPE_PREFIX = '@n8n/n8n-nodes-langchain.';
|
|
5
|
-
const EVALUATION_TYPES = new Set([
|
|
6
|
-
'n8n-nodes-base.evaluation',
|
|
7
|
-
'n8n-nodes-base.evaluationTrigger',
|
|
8
|
-
]);
|
|
9
|
-
const ROOT_AI_TYPES = new Set([
|
|
10
|
-
`${LANGCHAIN_TYPE_PREFIX}agent`,
|
|
11
|
-
`${LANGCHAIN_TYPE_PREFIX}openAiAssistant`,
|
|
12
|
-
`${LANGCHAIN_TYPE_PREFIX}chainLlm`,
|
|
13
|
-
`${LANGCHAIN_TYPE_PREFIX}chainRetrievalQa`,
|
|
14
|
-
`${LANGCHAIN_TYPE_PREFIX}chainSummarization`,
|
|
15
|
-
`${LANGCHAIN_TYPE_PREFIX}informationExtractor`,
|
|
16
|
-
`${LANGCHAIN_TYPE_PREFIX}sentimentAnalysis`,
|
|
17
|
-
`${LANGCHAIN_TYPE_PREFIX}textClassifier`,
|
|
18
|
-
`${LANGCHAIN_TYPE_PREFIX}openAi`,
|
|
19
|
-
`${LANGCHAIN_TYPE_PREFIX}anthropic`,
|
|
20
|
-
`${LANGCHAIN_TYPE_PREFIX}googleGemini`,
|
|
21
|
-
`${LANGCHAIN_TYPE_PREFIX}ollama`,
|
|
22
|
-
`${LANGCHAIN_TYPE_PREFIX}alibabaCloud`,
|
|
23
|
-
`${LANGCHAIN_TYPE_PREFIX}miniMax`,
|
|
24
|
-
`${LANGCHAIN_TYPE_PREFIX}moonshot`,
|
|
25
|
-
]);
|
|
26
|
-
const SUB_COMPONENT_PREFIXES = [
|
|
27
|
-
'lm',
|
|
28
|
-
'embedding',
|
|
29
|
-
'memory',
|
|
30
|
-
'tool',
|
|
31
|
-
'outputparser',
|
|
32
|
-
'document',
|
|
33
|
-
'textsplitter',
|
|
34
|
-
'vectorstore',
|
|
35
|
-
'retriever',
|
|
36
|
-
'chattrigger',
|
|
37
|
-
'manualchattrigger',
|
|
38
|
-
];
|
|
39
|
-
function isRootAgentType(type) {
|
|
40
|
-
return ROOT_AI_TYPES.has(type);
|
|
41
|
-
}
|
|
42
|
-
function isAnyLangchainNode(type) {
|
|
43
|
-
return type.startsWith(LANGCHAIN_TYPE_PREFIX);
|
|
44
|
-
}
|
|
45
|
-
function isLikelySubComponent(type) {
|
|
46
|
-
if (!type.startsWith(LANGCHAIN_TYPE_PREFIX))
|
|
47
|
-
return false;
|
|
48
|
-
const localPart = type.slice(LANGCHAIN_TYPE_PREFIX.length).toLowerCase();
|
|
49
|
-
return SUB_COMPONENT_PREFIXES.some((prefix) => localPart.startsWith(prefix));
|
|
50
|
-
}
|
|
51
|
-
function detectAiNodes(workflow) {
|
|
52
|
-
const aiNodeNames = [];
|
|
53
|
-
const fallbackCandidates = [];
|
|
54
|
-
let alreadyConfigured = false;
|
|
55
|
-
for (const node of workflow.nodes ?? []) {
|
|
56
|
-
if (!node.name)
|
|
57
|
-
continue;
|
|
58
|
-
if (isRootAgentType(node.type)) {
|
|
59
|
-
aiNodeNames.push(node.name);
|
|
60
|
-
}
|
|
61
|
-
else if (isAnyLangchainNode(node.type) && !isLikelySubComponent(node.type)) {
|
|
62
|
-
fallbackCandidates.push(node.name);
|
|
63
|
-
}
|
|
64
|
-
if (EVALUATION_TYPES.has(node.type)) {
|
|
65
|
-
alreadyConfigured = true;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
const finalAiNodeNames = aiNodeNames.length > 0 ? aiNodeNames : fallbackCandidates;
|
|
69
|
-
return {
|
|
70
|
-
isAiWorkflow: finalAiNodeNames.length > 0,
|
|
71
|
-
aiNodeNames: finalAiNodeNames,
|
|
72
|
-
alreadyConfigured,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=detect-ai-nodes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detect-ai-nodes.js","sourceRoot":"","sources":["../../../src/tools/evals/detect-ai-nodes.ts"],"names":[],"mappings":";;;AAEA,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS;IACxC,2BAA2B;IAC3B,kCAAkC;CAClC,CAAC,CAAC;AASH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;IAErC,GAAG,qBAAqB,OAAO;IAC/B,GAAG,qBAAqB,iBAAiB;IACzC,GAAG,qBAAqB,UAAU;IAClC,GAAG,qBAAqB,kBAAkB;IAC1C,GAAG,qBAAqB,oBAAoB;IAC5C,GAAG,qBAAqB,sBAAsB;IAC9C,GAAG,qBAAqB,mBAAmB;IAC3C,GAAG,qBAAqB,gBAAgB;IAGxC,GAAG,qBAAqB,QAAQ;IAChC,GAAG,qBAAqB,WAAW;IACnC,GAAG,qBAAqB,cAAc;IACtC,GAAG,qBAAqB,QAAQ;IAChC,GAAG,qBAAqB,cAAc;IACtC,GAAG,qBAAqB,SAAS;IACjC,GAAG,qBAAqB,UAAU;CAClC,CAAC,CAAC;AAKH,MAAM,sBAAsB,GAAG;IAC9B,IAAI;IACJ,WAAW;IACX,QAAQ;IACR,MAAM;IACN,cAAc;IACd,UAAU;IACV,cAAc;IACd,aAAa;IACb,WAAW;IACX,aAAa;IACb,mBAAmB;CACnB,CAAC;AAQF,SAAS,eAAe,CAAC,IAAY;IACpC,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC/C,CAAC;AAKD,SAAS,oBAAoB,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACzE,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,uBAA8B,QAAsB;IACnD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,SAAS;QACzB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAI9E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,iBAAiB,GAAG,IAAI,CAAC;QAC1B,CAAC;IACF,CAAC;IAID,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEnF,OAAO;QACN,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACzC,WAAW,EAAE,gBAAgB;QAC7B,iBAAiB;KACjB,CAAC;AACH,CAAC"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectToolRefs = detectToolRefs;
|
|
4
|
-
const is_record_1 = require("@n8n/utils/is-record");
|
|
5
|
-
const column_ref_utils_1 = require("./column-ref-utils");
|
|
6
|
-
function reachableDownstreamMain(workflow, startNodeName) {
|
|
7
|
-
const reached = new Set();
|
|
8
|
-
const queue = [startNodeName];
|
|
9
|
-
while (queue.length > 0) {
|
|
10
|
-
const current = queue.shift();
|
|
11
|
-
const slot = workflow.connections?.[current]?.main;
|
|
12
|
-
if (!Array.isArray(slot))
|
|
13
|
-
continue;
|
|
14
|
-
for (const inner of slot) {
|
|
15
|
-
if (!Array.isArray(inner))
|
|
16
|
-
continue;
|
|
17
|
-
for (const conn of inner) {
|
|
18
|
-
if (!(0, is_record_1.isRecord)(conn) || typeof conn.node !== 'string')
|
|
19
|
-
continue;
|
|
20
|
-
if (reached.has(conn.node))
|
|
21
|
-
continue;
|
|
22
|
-
reached.add(conn.node);
|
|
23
|
-
queue.push(conn.node);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return reached;
|
|
28
|
-
}
|
|
29
|
-
function detectToolRefs(workflow, agentNodeName) {
|
|
30
|
-
const agent = (workflow.nodes ?? []).find((n) => (0, column_ref_utils_1.nodeHasName)(n) && n.name === agentNodeName);
|
|
31
|
-
if (!agent) {
|
|
32
|
-
throw new Error(`Agent node "${agentNodeName}" not found in workflow`);
|
|
33
|
-
}
|
|
34
|
-
const subComponents = (0, column_ref_utils_1.findAgentSubComponents)(workflow, agentNodeName);
|
|
35
|
-
if (subComponents.length === 0)
|
|
36
|
-
return [];
|
|
37
|
-
const nodesByName = new Map((workflow.nodes ?? []).filter(column_ref_utils_1.nodeHasName).map((n) => [n.name, n]));
|
|
38
|
-
const downstream = reachableDownstreamMain(workflow, agentNodeName);
|
|
39
|
-
const seen = new Set();
|
|
40
|
-
const result = [];
|
|
41
|
-
for (const toolNodeName of subComponents) {
|
|
42
|
-
const toolNode = nodesByName.get(toolNodeName);
|
|
43
|
-
if (!toolNode)
|
|
44
|
-
continue;
|
|
45
|
-
const matches = (0, column_ref_utils_1.collectStrings)(toolNode.parameters).flatMap((text) => (0, column_ref_utils_1.extractNamedRefMatches)(text));
|
|
46
|
-
for (const m of matches) {
|
|
47
|
-
if (m.nodeName === agentNodeName)
|
|
48
|
-
continue;
|
|
49
|
-
if (downstream.has(m.nodeName))
|
|
50
|
-
continue;
|
|
51
|
-
if (!nodesByName.has(m.nodeName))
|
|
52
|
-
continue;
|
|
53
|
-
const key = `${toolNodeName}\x00${m.nodeName}\x00${m.field}`;
|
|
54
|
-
if (seen.has(key))
|
|
55
|
-
continue;
|
|
56
|
-
seen.add(key);
|
|
57
|
-
result.push({
|
|
58
|
-
sourceNodeName: m.nodeName,
|
|
59
|
-
field: m.field,
|
|
60
|
-
toolNodeName,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=detect-tool-refs.service.js.map
|