@n8n/instance-ai 1.13.2 → 1.14.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 +24 -19
- package/dist/agent/apply-agent-thinking.js.map +1 -1
- package/dist/agent/computer-use-prompt.js +5 -6
- package/dist/agent/computer-use-prompt.js.map +1 -1
- package/dist/agent/shared-prompts.d.ts +1 -1
- package/dist/agent/shared-prompts.js +1 -1
- package/dist/agent/shared-prompts.js.map +1 -1
- package/dist/agent/sub-agent-factory.d.ts +1 -1
- package/dist/agent/system-prompt.js +20 -3
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/orchestrator-identity.d.ts +1 -0
- package/dist/runtime/orchestrator-identity.js +7 -0
- package/dist/runtime/orchestrator-identity.js.map +1 -0
- package/dist/runtime/orchestrator-run-control.d.ts +16 -0
- package/dist/runtime/orchestrator-run-control.js +26 -0
- package/dist/runtime/orchestrator-run-control.js.map +1 -0
- package/dist/runtime/resumable-stream-executor.d.ts +3 -0
- package/dist/runtime/resumable-stream-executor.js +26 -0
- 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.map +1 -1
- package/dist/runtime/stream-runner.d.ts +3 -0
- package/dist/runtime/stream-runner.js +2 -0
- package/dist/runtime/stream-runner.js.map +1 -1
- package/dist/storage/terminal-outcome-storage.d.ts +2 -2
- package/dist/storage/workflow-loop-storage.d.ts +5 -0
- package/dist/tools/executions.tool.js +2 -1
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/n8n-docs/ranking.d.ts +12 -0
- package/dist/tools/n8n-docs/ranking.js +170 -0
- package/dist/tools/n8n-docs/ranking.js.map +1 -0
- package/dist/tools/n8n-docs/registry.d.ts +34 -0
- package/dist/tools/n8n-docs/registry.js +216 -0
- package/dist/tools/n8n-docs/registry.js.map +1 -0
- package/dist/tools/n8n-docs/schemas.d.ts +163 -0
- package/dist/tools/n8n-docs/schemas.js +89 -0
- package/dist/tools/n8n-docs/schemas.js.map +1 -0
- package/dist/tools/n8n-docs.tool.d.ts +7 -0
- package/dist/tools/n8n-docs.tool.js +147 -0
- package/dist/tools/n8n-docs.tool.js.map +1 -0
- package/dist/tools/nodes/suggested-nodes-data.js +1 -4
- package/dist/tools/nodes/suggested-nodes-data.js.map +1 -1
- package/dist/tools/orchestration/plan.tool.js +1 -0
- package/dist/tools/orchestration/plan.tool.js.map +1 -1
- package/dist/tools/orchestration/verification/analyze-result.d.ts +28 -0
- package/dist/tools/orchestration/verification/analyze-result.js +238 -0
- package/dist/tools/orchestration/verification/analyze-result.js.map +1 -0
- package/dist/tools/orchestration/verification/finalize-result.d.ts +18 -0
- package/dist/tools/orchestration/verification/finalize-result.js +137 -0
- package/dist/tools/orchestration/verification/finalize-result.js.map +1 -0
- package/dist/tools/orchestration/verification/prepare-run.d.ts +16 -0
- package/dist/tools/orchestration/verification/prepare-run.js +58 -0
- package/dist/tools/orchestration/verification/prepare-run.js.map +1 -0
- package/dist/tools/orchestration/verification/resolve-target.d.ts +18 -0
- package/dist/tools/orchestration/verification/resolve-target.js +113 -0
- package/dist/tools/orchestration/verification/resolve-target.js.map +1 -0
- package/dist/tools/orchestration/verification/types.d.ts +44 -0
- package/dist/tools/orchestration/verification/types.js +3 -0
- package/dist/tools/orchestration/verification/types.js.map +1 -0
- package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +6 -3
- package/dist/tools/orchestration/verify-built-workflow.tool.js +70 -448
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/shared/ask-user.tool.d.ts +4 -4
- package/dist/tools/shared/ask-user.tool.js +6 -0
- package/dist/tools/shared/ask-user.tool.js.map +1 -1
- package/dist/tools/tool-ids.d.ts +2 -0
- package/dist/tools/tool-ids.js +4 -1
- package/dist/tools/tool-ids.js.map +1 -1
- package/dist/tools/workflows/build-workflow.tool.js +4 -0
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/detect-array-input-collapse.d.ts +3 -0
- package/dist/tools/workflows/detect-array-input-collapse.js +76 -0
- package/dist/tools/workflows/detect-array-input-collapse.js.map +1 -0
- package/dist/tools/workflows/generate-simulation-fixtures.service.js +1 -1
- package/dist/tools/workflows/generate-simulation-fixtures.service.js.map +1 -1
- package/dist/tools/workflows/setup-workflow.schema.d.ts +26 -26
- package/dist/tools/workflows/setup-workflow.service.d.ts +1 -1
- package/dist/tools/workflows/setup-workflow.service.js +24 -1
- package/dist/tools/workflows/setup-workflow.service.js.map +1 -1
- package/dist/tools/workflows/workflow-build-routing.d.ts +5 -1
- package/dist/tools/workflows/workflow-build-routing.js +9 -1
- package/dist/tools/workflows/workflow-build-routing.js.map +1 -1
- package/dist/tools/workflows/workflow-json-utils.d.ts +1 -0
- package/dist/tools/workflows/workflow-json-utils.js +95 -0
- package/dist/tools/workflows/workflow-json-utils.js.map +1 -1
- package/dist/tools/workflows/workflow-source-compiler.js +2 -0
- package/dist/tools/workflows/workflow-source-compiler.js.map +1 -1
- package/dist/tools/workflows.tool.js +1 -1
- package/dist/tools/workflows.tool.js.map +1 -1
- package/dist/types.d.ts +4 -5
- package/dist/types.js.map +1 -1
- package/dist/workflow-loop/guidance.js +4 -2
- package/dist/workflow-loop/guidance.js.map +1 -1
- package/dist/workflow-loop/remediation.d.ts +1 -0
- package/dist/workflow-loop/remediation.js +2 -1
- package/dist/workflow-loop/remediation.js.map +1 -1
- package/dist/workflow-loop/verification-obligation.js +10 -0
- package/dist/workflow-loop/verification-obligation.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +3 -0
- package/dist/workflow-loop/workflow-loop-state.js +1 -0
- package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
- package/dist/workflow-loop/workflow-task-service.d.ts +1 -0
- package/dist/workflow-loop/workflow-task-service.js +13 -0
- package/dist/workflow-loop/workflow-task-service.js.map +1 -1
- package/package.json +16 -15
- package/skills/data-table-manager/SKILL.md +21 -0
- package/skills/data-table-manager/references/data-table-playbook.md +9 -0
- package/skills/debugging-executions/SKILL.md +15 -2
- package/skills/n8n-docs-assistant/SKILL.md +49 -0
- package/skills/planned-task-runtime/SKILL.md +4 -2
- package/skills/post-build-flow/SKILL.md +51 -5
- package/skills/workflow-builder/SKILL.md +65 -12
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type N8nDocsRegistryEntry } from './registry';
|
|
2
|
+
import type { N8nDocsLookupInput, N8nDocsSearchInput } from './schemas';
|
|
3
|
+
type LookupLikeInput = Pick<N8nDocsLookupInput | N8nDocsSearchInput, 'query' | 'credentialDisplayName' | 'credentialType' | 'documentationUrl' | 'nodeType'>;
|
|
4
|
+
type RankInput = Pick<N8nDocsLookupInput | N8nDocsSearchInput, 'query' | 'intent' | 'credentialType' | 'credentialDisplayName' | 'documentationUrl' | 'nodeType'>;
|
|
5
|
+
export interface N8nDocsMatch extends N8nDocsRegistryEntry {
|
|
6
|
+
score: number;
|
|
7
|
+
reason: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function getLookupQuery(input: LookupLikeInput): string;
|
|
10
|
+
export declare function rankN8nDocsEntries(entries: N8nDocsRegistryEntry[], input: RankInput): N8nDocsMatch[];
|
|
11
|
+
export declare function pickLookupMatches(matches: N8nDocsMatch[], maxPages: number): N8nDocsMatch[];
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLookupQuery = getLookupQuery;
|
|
4
|
+
exports.rankN8nDocsEntries = rankN8nDocsEntries;
|
|
5
|
+
exports.pickLookupMatches = pickLookupMatches;
|
|
6
|
+
const registry_1 = require("./registry");
|
|
7
|
+
const CREDENTIAL_SETUP_DOC_PATH = '/build/understand-workflows/create-and-edit-credentials.md';
|
|
8
|
+
const MEANINGFUL_TOKEN_WEIGHT = 2;
|
|
9
|
+
function normalizeTokenSource(value) {
|
|
10
|
+
return value
|
|
11
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
12
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
|
|
13
|
+
.replace(/oauth\s*2/gi, 'oauth2')
|
|
14
|
+
.toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
function tokenize(...values) {
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
const tokens = [];
|
|
19
|
+
const addToken = (token) => {
|
|
20
|
+
if (token.length < 2 || seen.has(token))
|
|
21
|
+
return;
|
|
22
|
+
seen.add(token);
|
|
23
|
+
tokens.push(token);
|
|
24
|
+
};
|
|
25
|
+
for (const value of values) {
|
|
26
|
+
if (!value)
|
|
27
|
+
continue;
|
|
28
|
+
for (const token of normalizeTokenSource(value).match(/[a-z0-9]+/g) ?? []) {
|
|
29
|
+
addToken(token);
|
|
30
|
+
const versionedToken = /^([a-z]+)[0-9]+$/.exec(token);
|
|
31
|
+
if (versionedToken)
|
|
32
|
+
addToken(versionedToken[1]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return tokens;
|
|
36
|
+
}
|
|
37
|
+
function getTokenWeights(entries) {
|
|
38
|
+
const documentFrequencies = new Map();
|
|
39
|
+
for (const entry of entries) {
|
|
40
|
+
const tokens = new Set(tokenize(entry.title, entry.path));
|
|
41
|
+
for (const token of tokens) {
|
|
42
|
+
documentFrequencies.set(token, (documentFrequencies.get(token) ?? 0) + 1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const weights = new Map();
|
|
46
|
+
for (const [token, count] of documentFrequencies) {
|
|
47
|
+
weights.set(token, Math.log((entries.length + 1) / (count + 1)) + 1);
|
|
48
|
+
}
|
|
49
|
+
return weights;
|
|
50
|
+
}
|
|
51
|
+
function getTokenWeight(tokenWeights, token) {
|
|
52
|
+
return tokenWeights.get(token) ?? 1;
|
|
53
|
+
}
|
|
54
|
+
function includesAll(value, tokens) {
|
|
55
|
+
return tokens.length > 0 && tokens.every((token) => value.includes(token));
|
|
56
|
+
}
|
|
57
|
+
function hasMeaningfulTokenMatch(value, tokens, tokenWeights) {
|
|
58
|
+
return tokens.some((token) => value.includes(token) && getTokenWeight(tokenWeights, token) >= MEANINGFUL_TOKEN_WEIGHT);
|
|
59
|
+
}
|
|
60
|
+
function pathStartsWith(entry, prefix) {
|
|
61
|
+
return entry.path.startsWith(prefix);
|
|
62
|
+
}
|
|
63
|
+
function isCredentialSetupIntent(intent) {
|
|
64
|
+
return intent === 'credential-setup';
|
|
65
|
+
}
|
|
66
|
+
function isGeneralCredentialSetupDocs(entry) {
|
|
67
|
+
return entry.path === CREDENTIAL_SETUP_DOC_PATH;
|
|
68
|
+
}
|
|
69
|
+
function getLookupQuery(input) {
|
|
70
|
+
return (input.query ??
|
|
71
|
+
input.credentialDisplayName ??
|
|
72
|
+
input.credentialType ??
|
|
73
|
+
input.nodeType ??
|
|
74
|
+
input.documentationUrl ??
|
|
75
|
+
'');
|
|
76
|
+
}
|
|
77
|
+
function scoreEntry(entry, input, tokenWeights) {
|
|
78
|
+
const reasons = [];
|
|
79
|
+
let score = 0;
|
|
80
|
+
const documentationUrlCandidates = input.documentationUrl
|
|
81
|
+
? new Set((0, registry_1.getDocsUrlCandidates)(input.documentationUrl))
|
|
82
|
+
: undefined;
|
|
83
|
+
const isDocumentationUrlMatch = documentationUrlCandidates?.has(entry.url) ?? false;
|
|
84
|
+
if (isDocumentationUrlMatch) {
|
|
85
|
+
score += 500;
|
|
86
|
+
reasons.push('documentation URL match');
|
|
87
|
+
}
|
|
88
|
+
const query = getLookupQuery(input);
|
|
89
|
+
const queryTokens = tokenize(query);
|
|
90
|
+
const credentialTokens = tokenize(input.credentialType, input.credentialDisplayName);
|
|
91
|
+
const nodeTokens = tokenize(input.nodeType);
|
|
92
|
+
const allTokens = [...new Set([...queryTokens, ...credentialTokens, ...nodeTokens])];
|
|
93
|
+
const title = normalizeTokenSource(entry.title);
|
|
94
|
+
const path = normalizeTokenSource(entry.path);
|
|
95
|
+
const titleAndPath = `${title} ${path}`;
|
|
96
|
+
for (const token of allTokens) {
|
|
97
|
+
const tokenWeight = getTokenWeight(tokenWeights, token);
|
|
98
|
+
if (title.includes(token))
|
|
99
|
+
score += 12 * tokenWeight;
|
|
100
|
+
if (path.includes(token))
|
|
101
|
+
score += 5 * tokenWeight;
|
|
102
|
+
}
|
|
103
|
+
const normalizedQuery = normalizeTokenSource(query).trim();
|
|
104
|
+
if (normalizedQuery && title.includes(normalizedQuery)) {
|
|
105
|
+
score += 40;
|
|
106
|
+
reasons.push('title phrase match');
|
|
107
|
+
}
|
|
108
|
+
if (queryTokens.length > 0 && includesAll(titleAndPath, queryTokens)) {
|
|
109
|
+
score += 30;
|
|
110
|
+
reasons.push('query token match');
|
|
111
|
+
}
|
|
112
|
+
if (credentialTokens.length > 0 && includesAll(titleAndPath, credentialTokens)) {
|
|
113
|
+
score += 30;
|
|
114
|
+
reasons.push('credential token match');
|
|
115
|
+
}
|
|
116
|
+
if (isCredentialSetupIntent(input.intent)) {
|
|
117
|
+
if (pathStartsWith(entry, '/integrations/builtin/credentials/') &&
|
|
118
|
+
(isDocumentationUrlMatch || hasMeaningfulTokenMatch(titleAndPath, allTokens, tokenWeights))) {
|
|
119
|
+
score += 90;
|
|
120
|
+
reasons.push('credential docs');
|
|
121
|
+
}
|
|
122
|
+
if (isGeneralCredentialSetupDocs(entry)) {
|
|
123
|
+
score += 55;
|
|
124
|
+
reasons.push('general credential setup docs');
|
|
125
|
+
}
|
|
126
|
+
if (pathStartsWith(entry, '/integrations/builtin/app-nodes/')) {
|
|
127
|
+
score -= 25;
|
|
128
|
+
}
|
|
129
|
+
if (credentialTokens.includes('oauth') || credentialTokens.includes('oauth2')) {
|
|
130
|
+
if (title.includes('oauth') || path.includes('oauth')) {
|
|
131
|
+
score += 45;
|
|
132
|
+
reasons.push('OAuth docs');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (!/release-notes|breaking-changes/.test(normalizedQuery) &&
|
|
137
|
+
entry.path.includes('/release-notes/')) {
|
|
138
|
+
score -= 30;
|
|
139
|
+
}
|
|
140
|
+
if (score <= 0)
|
|
141
|
+
return undefined;
|
|
142
|
+
return {
|
|
143
|
+
...entry,
|
|
144
|
+
score,
|
|
145
|
+
reason: reasons.length > 0 ? reasons.join(', ') : 'text match',
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function rankN8nDocsEntries(entries, input) {
|
|
149
|
+
const tokenWeights = getTokenWeights(entries);
|
|
150
|
+
return entries
|
|
151
|
+
.map((entry) => scoreEntry(entry, input, tokenWeights))
|
|
152
|
+
.filter((match) => match !== undefined)
|
|
153
|
+
.sort((a, b) => b.score - a.score || a.title.localeCompare(b.title));
|
|
154
|
+
}
|
|
155
|
+
function pickLookupMatches(matches, maxPages) {
|
|
156
|
+
if (matches.length <= maxPages)
|
|
157
|
+
return matches;
|
|
158
|
+
const generalCredentialSetup = matches.find(isGeneralCredentialSetupDocs);
|
|
159
|
+
if (!generalCredentialSetup || maxPages <= 1)
|
|
160
|
+
return matches.slice(0, maxPages);
|
|
161
|
+
const firstMatch = matches.find((match) => !isGeneralCredentialSetupDocs(match));
|
|
162
|
+
if (!firstMatch)
|
|
163
|
+
return matches.slice(0, maxPages);
|
|
164
|
+
const picked = [firstMatch];
|
|
165
|
+
if (generalCredentialSetup && !picked.some((match) => match.url === generalCredentialSetup.url)) {
|
|
166
|
+
picked.push(generalCredentialSetup);
|
|
167
|
+
}
|
|
168
|
+
return picked.slice(0, maxPages);
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=ranking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranking.js","sourceRoot":"","sources":["../../../src/tools/n8n-docs/ranking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Logger } from '../../logger';
|
|
2
|
+
export declare const N8N_DOCS_REGISTRY_URL = "https://docs.n8n.io/llms.txt";
|
|
3
|
+
export interface N8nDocsRegistryEntry {
|
|
4
|
+
title: string;
|
|
5
|
+
url: string;
|
|
6
|
+
path: string;
|
|
7
|
+
section: string;
|
|
8
|
+
}
|
|
9
|
+
export interface N8nDocsDocument extends N8nDocsRegistryEntry {
|
|
10
|
+
content: string;
|
|
11
|
+
contentLength: number;
|
|
12
|
+
truncated: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface ParsedN8nDocsRegistry {
|
|
15
|
+
entries: N8nDocsRegistryEntry[];
|
|
16
|
+
byUrl: Map<string, N8nDocsRegistryEntry>;
|
|
17
|
+
fetchedAt: string;
|
|
18
|
+
}
|
|
19
|
+
export interface N8nDocsRegistryResult {
|
|
20
|
+
registry?: ParsedN8nDocsRegistry;
|
|
21
|
+
hint?: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface N8nDocsRegistryContext {
|
|
25
|
+
logger?: Pick<Logger, 'warn' | 'debug'>;
|
|
26
|
+
}
|
|
27
|
+
export declare function getFetchErrorMessage(error: unknown): string;
|
|
28
|
+
export declare function normalizeDocsUrl(rawUrl: string): string | undefined;
|
|
29
|
+
export declare function getDocsUrlCandidates(rawUrl: string): string[];
|
|
30
|
+
export declare function toPublicDocsUrl(rawUrl: string): string;
|
|
31
|
+
export declare function parseN8nDocsRegistry(registryText: string, fetchedAt: string): ParsedN8nDocsRegistry;
|
|
32
|
+
export declare function getN8nDocsRegistry(context: N8nDocsRegistryContext): Promise<N8nDocsRegistryResult>;
|
|
33
|
+
export declare function readN8nDocsEntry(entry: N8nDocsRegistryEntry, maxContentLength: number): Promise<N8nDocsDocument>;
|
|
34
|
+
export declare function resetN8nDocsRegistryCacheForTests(): void;
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.N8N_DOCS_REGISTRY_URL = void 0;
|
|
4
|
+
exports.getFetchErrorMessage = getFetchErrorMessage;
|
|
5
|
+
exports.normalizeDocsUrl = normalizeDocsUrl;
|
|
6
|
+
exports.getDocsUrlCandidates = getDocsUrlCandidates;
|
|
7
|
+
exports.toPublicDocsUrl = toPublicDocsUrl;
|
|
8
|
+
exports.parseN8nDocsRegistry = parseN8nDocsRegistry;
|
|
9
|
+
exports.getN8nDocsRegistry = getN8nDocsRegistry;
|
|
10
|
+
exports.readN8nDocsEntry = readN8nDocsEntry;
|
|
11
|
+
exports.resetN8nDocsRegistryCacheForTests = resetN8nDocsRegistryCacheForTests;
|
|
12
|
+
const sanitize_web_content_1 = require("../web-research/sanitize-web-content");
|
|
13
|
+
const N8N_DOCS_ORIGIN = 'https://docs.n8n.io';
|
|
14
|
+
exports.N8N_DOCS_REGISTRY_URL = `${N8N_DOCS_ORIGIN}/llms.txt`;
|
|
15
|
+
const REGISTRY_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
16
|
+
const FETCH_TIMEOUT_MS = 10_000;
|
|
17
|
+
const REGISTRY_MAX_BYTES = 1_000_000;
|
|
18
|
+
let registryCache;
|
|
19
|
+
let registryFetchedAtMs = 0;
|
|
20
|
+
let registryFetchPromise;
|
|
21
|
+
function parseDocsUrl(rawUrl) {
|
|
22
|
+
let parsed;
|
|
23
|
+
try {
|
|
24
|
+
parsed = new URL(rawUrl);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
if (parsed.protocol !== 'https:' || parsed.hostname !== 'docs.n8n.io')
|
|
30
|
+
return undefined;
|
|
31
|
+
parsed.hash = '';
|
|
32
|
+
parsed.search = '';
|
|
33
|
+
return parsed;
|
|
34
|
+
}
|
|
35
|
+
function getFetchErrorMessage(error) {
|
|
36
|
+
return error instanceof Error ? error.message : String(error);
|
|
37
|
+
}
|
|
38
|
+
function normalizeDocsUrl(rawUrl) {
|
|
39
|
+
const parsed = parseDocsUrl(rawUrl);
|
|
40
|
+
if (!parsed)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (parsed.pathname === '/')
|
|
43
|
+
return undefined;
|
|
44
|
+
if (parsed.pathname.endsWith('/')) {
|
|
45
|
+
parsed.pathname = `${parsed.pathname.slice(0, -1)}.md`;
|
|
46
|
+
}
|
|
47
|
+
else if (!parsed.pathname.endsWith('.md')) {
|
|
48
|
+
parsed.pathname = `${parsed.pathname}.md`;
|
|
49
|
+
}
|
|
50
|
+
return parsed.toString();
|
|
51
|
+
}
|
|
52
|
+
function getDocsUrlCandidates(rawUrl) {
|
|
53
|
+
const parsed = parseDocsUrl(rawUrl);
|
|
54
|
+
if (!parsed)
|
|
55
|
+
return [];
|
|
56
|
+
const candidates = new Set();
|
|
57
|
+
const addCandidate = (pathname) => {
|
|
58
|
+
const candidate = new URL(parsed.toString());
|
|
59
|
+
candidate.pathname = pathname;
|
|
60
|
+
candidates.add(candidate.toString());
|
|
61
|
+
};
|
|
62
|
+
const { pathname } = parsed;
|
|
63
|
+
if (pathname === '/') {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
if (pathname.endsWith('.md')) {
|
|
67
|
+
addCandidate(pathname);
|
|
68
|
+
}
|
|
69
|
+
else if (pathname.endsWith('/')) {
|
|
70
|
+
const pathWithoutTrailingSlash = pathname.slice(0, -1);
|
|
71
|
+
if (pathWithoutTrailingSlash.length > 0) {
|
|
72
|
+
addCandidate(`${pathWithoutTrailingSlash}.md`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
addCandidate(`${pathname}.md`);
|
|
77
|
+
}
|
|
78
|
+
return [...candidates];
|
|
79
|
+
}
|
|
80
|
+
function toPublicDocsUrl(rawUrl) {
|
|
81
|
+
const normalizedUrl = normalizeDocsUrl(rawUrl) ?? rawUrl;
|
|
82
|
+
let parsed;
|
|
83
|
+
try {
|
|
84
|
+
parsed = new URL(normalizedUrl);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return rawUrl;
|
|
88
|
+
}
|
|
89
|
+
if (parsed.protocol !== 'https:' || parsed.hostname !== 'docs.n8n.io')
|
|
90
|
+
return rawUrl;
|
|
91
|
+
parsed.hash = '';
|
|
92
|
+
parsed.search = '';
|
|
93
|
+
if (parsed.pathname.endsWith('.md')) {
|
|
94
|
+
parsed.pathname = `${parsed.pathname.slice(0, -'.md'.length)}/`;
|
|
95
|
+
}
|
|
96
|
+
return parsed.toString();
|
|
97
|
+
}
|
|
98
|
+
function normalizeAllowedDocsFetchUrl(rawUrl) {
|
|
99
|
+
return parseDocsUrl(rawUrl)?.toString();
|
|
100
|
+
}
|
|
101
|
+
function parseN8nDocsRegistry(registryText, fetchedAt) {
|
|
102
|
+
const entries = [];
|
|
103
|
+
let section = '';
|
|
104
|
+
for (const line of registryText.split(/\r?\n/)) {
|
|
105
|
+
const heading = /^##+\s+(.+?)\s*$/.exec(line);
|
|
106
|
+
if (heading?.[1]) {
|
|
107
|
+
section = heading[1];
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const match = /^-\s+\[([^\]]+)]\((https:\/\/docs\.n8n\.io\/[^)]+)\)/.exec(line);
|
|
111
|
+
if (!match?.[1] || !match[2])
|
|
112
|
+
continue;
|
|
113
|
+
const normalizedUrl = normalizeDocsUrl(match[2]);
|
|
114
|
+
if (!normalizedUrl)
|
|
115
|
+
continue;
|
|
116
|
+
const url = new URL(normalizedUrl);
|
|
117
|
+
entries.push({
|
|
118
|
+
title: match[1],
|
|
119
|
+
url: normalizedUrl,
|
|
120
|
+
path: url.pathname,
|
|
121
|
+
section,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
entries,
|
|
126
|
+
byUrl: new Map(entries.map((entry) => [entry.url, entry])),
|
|
127
|
+
fetchedAt,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
async function fetchText(url, options) {
|
|
131
|
+
const response = await globalThis.fetch(url, {
|
|
132
|
+
headers: { accept: 'text/markdown,text/plain,*/*' },
|
|
133
|
+
redirect: 'follow',
|
|
134
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
135
|
+
});
|
|
136
|
+
const finalUrl = normalizeAllowedDocsFetchUrl(response.url || url);
|
|
137
|
+
if (!finalUrl) {
|
|
138
|
+
throw new Error('Docs request redirected outside docs.n8n.io');
|
|
139
|
+
}
|
|
140
|
+
if (!response.ok) {
|
|
141
|
+
throw new Error(`Docs request failed with HTTP ${response.status}`);
|
|
142
|
+
}
|
|
143
|
+
const contentLength = response.headers.get('content-length');
|
|
144
|
+
const maxBytes = options.maxBytes ?? Buffer.byteLength('x'.repeat(options.maxLength));
|
|
145
|
+
if (contentLength && Number(contentLength) > maxBytes) {
|
|
146
|
+
throw new Error(`Docs response exceeds ${maxBytes} bytes`);
|
|
147
|
+
}
|
|
148
|
+
const text = await response.text();
|
|
149
|
+
if (/^\s*<!doctype html/i.test(text) || /^\s*<html[\s>]/i.test(text)) {
|
|
150
|
+
throw new Error('Docs page returned HTML instead of markdown');
|
|
151
|
+
}
|
|
152
|
+
const truncated = text.length > options.maxLength;
|
|
153
|
+
return {
|
|
154
|
+
url: finalUrl,
|
|
155
|
+
text: truncated ? text.slice(0, options.maxLength) : text,
|
|
156
|
+
truncated,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
async function fetchRegistry() {
|
|
160
|
+
const fetchedAt = new Date().toISOString();
|
|
161
|
+
const response = await fetchText(exports.N8N_DOCS_REGISTRY_URL, {
|
|
162
|
+
maxLength: REGISTRY_MAX_BYTES,
|
|
163
|
+
maxBytes: REGISTRY_MAX_BYTES,
|
|
164
|
+
});
|
|
165
|
+
const registry = parseN8nDocsRegistry(response.text, fetchedAt);
|
|
166
|
+
if (registry.entries.length === 0) {
|
|
167
|
+
throw new Error('n8n docs registry was empty');
|
|
168
|
+
}
|
|
169
|
+
registryCache = registry;
|
|
170
|
+
registryFetchedAtMs = Date.now();
|
|
171
|
+
return registry;
|
|
172
|
+
}
|
|
173
|
+
async function getN8nDocsRegistry(context) {
|
|
174
|
+
const now = Date.now();
|
|
175
|
+
if (registryCache && now - registryFetchedAtMs < REGISTRY_CACHE_TTL_MS) {
|
|
176
|
+
return { registry: registryCache };
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
registryFetchPromise ??= fetchRegistry();
|
|
180
|
+
const registry = await registryFetchPromise;
|
|
181
|
+
return { registry };
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
const message = getFetchErrorMessage(error);
|
|
185
|
+
context.logger?.warn('Failed to fetch n8n docs registry', { error: message });
|
|
186
|
+
if (registryCache) {
|
|
187
|
+
return {
|
|
188
|
+
registry: registryCache,
|
|
189
|
+
hint: `Using cached n8n docs registry because refresh failed: ${message}`,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
return { error: message, hint: `Could not load n8n docs registry: ${message}` };
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
registryFetchPromise = undefined;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async function readN8nDocsEntry(entry, maxContentLength) {
|
|
199
|
+
const fetched = await fetchText(entry.url, { maxLength: maxContentLength });
|
|
200
|
+
const sanitized = (0, sanitize_web_content_1.sanitizeWebContent)(fetched.text);
|
|
201
|
+
const publicUrl = toPublicDocsUrl(fetched.url);
|
|
202
|
+
return {
|
|
203
|
+
...entry,
|
|
204
|
+
url: publicUrl,
|
|
205
|
+
path: new URL(publicUrl).pathname,
|
|
206
|
+
content: (0, sanitize_web_content_1.wrapUntrustedData)(sanitized, publicUrl, entry.title),
|
|
207
|
+
contentLength: sanitized.length,
|
|
208
|
+
truncated: fetched.truncated,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function resetN8nDocsRegistryCacheForTests() {
|
|
212
|
+
registryCache = undefined;
|
|
213
|
+
registryFetchedAtMs = 0;
|
|
214
|
+
registryFetchPromise = undefined;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/n8n-docs/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const DEFAULT_MAX_PAGES = 3;
|
|
3
|
+
export declare const MAX_PAGES = 5;
|
|
4
|
+
export declare const DEFAULT_MAX_RESULTS = 8;
|
|
5
|
+
export declare const MAX_RESULTS = 20;
|
|
6
|
+
export declare const DEFAULT_MAX_CONTENT_LENGTH = 30000;
|
|
7
|
+
export declare const MAX_CONTENT_LENGTH = 100000;
|
|
8
|
+
export declare const n8nDocsRuntimeInputSchema: z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
|
|
9
|
+
oauthRedirectUrl: z.ZodOptional<z.ZodString>;
|
|
10
|
+
maxPages: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
11
|
+
maxContentLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
12
|
+
query: z.ZodOptional<z.ZodString>;
|
|
13
|
+
intent: z.ZodOptional<z.ZodEnum<["credential-setup", "node-help", "hosting", "api", "general"]>>;
|
|
14
|
+
credentialType: z.ZodOptional<z.ZodString>;
|
|
15
|
+
credentialDisplayName: z.ZodOptional<z.ZodString>;
|
|
16
|
+
documentationUrl: z.ZodOptional<z.ZodString>;
|
|
17
|
+
nodeType: z.ZodOptional<z.ZodString>;
|
|
18
|
+
action: z.ZodLiteral<"lookup">;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
action: "lookup";
|
|
21
|
+
nodeType?: string | undefined;
|
|
22
|
+
query?: string | undefined;
|
|
23
|
+
credentialType?: string | undefined;
|
|
24
|
+
oauthRedirectUrl?: string | undefined;
|
|
25
|
+
maxPages?: number | undefined;
|
|
26
|
+
maxContentLength?: number | undefined;
|
|
27
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
28
|
+
credentialDisplayName?: string | undefined;
|
|
29
|
+
documentationUrl?: string | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
action: "lookup";
|
|
32
|
+
nodeType?: string | undefined;
|
|
33
|
+
query?: string | undefined;
|
|
34
|
+
credentialType?: string | undefined;
|
|
35
|
+
oauthRedirectUrl?: string | undefined;
|
|
36
|
+
maxPages?: number | undefined;
|
|
37
|
+
maxContentLength?: number | undefined;
|
|
38
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
39
|
+
credentialDisplayName?: string | undefined;
|
|
40
|
+
documentationUrl?: string | undefined;
|
|
41
|
+
}>, z.ZodObject<{
|
|
42
|
+
maxResults: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
43
|
+
query: z.ZodOptional<z.ZodString>;
|
|
44
|
+
intent: z.ZodOptional<z.ZodEnum<["credential-setup", "node-help", "hosting", "api", "general"]>>;
|
|
45
|
+
credentialType: z.ZodOptional<z.ZodString>;
|
|
46
|
+
credentialDisplayName: z.ZodOptional<z.ZodString>;
|
|
47
|
+
documentationUrl: z.ZodOptional<z.ZodString>;
|
|
48
|
+
nodeType: z.ZodOptional<z.ZodString>;
|
|
49
|
+
action: z.ZodLiteral<"search">;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
action: "search";
|
|
52
|
+
nodeType?: string | undefined;
|
|
53
|
+
query?: string | undefined;
|
|
54
|
+
credentialType?: string | undefined;
|
|
55
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
56
|
+
credentialDisplayName?: string | undefined;
|
|
57
|
+
documentationUrl?: string | undefined;
|
|
58
|
+
maxResults?: number | undefined;
|
|
59
|
+
}, {
|
|
60
|
+
action: "search";
|
|
61
|
+
nodeType?: string | undefined;
|
|
62
|
+
query?: string | undefined;
|
|
63
|
+
credentialType?: string | undefined;
|
|
64
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
65
|
+
credentialDisplayName?: string | undefined;
|
|
66
|
+
documentationUrl?: string | undefined;
|
|
67
|
+
maxResults?: number | undefined;
|
|
68
|
+
}>, z.ZodObject<{
|
|
69
|
+
action: z.ZodLiteral<"read">;
|
|
70
|
+
url: z.ZodString;
|
|
71
|
+
maxContentLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
72
|
+
}, "strip", z.ZodTypeAny, {
|
|
73
|
+
action: "read";
|
|
74
|
+
url: string;
|
|
75
|
+
maxContentLength?: number | undefined;
|
|
76
|
+
}, {
|
|
77
|
+
action: "read";
|
|
78
|
+
url: string;
|
|
79
|
+
maxContentLength?: number | undefined;
|
|
80
|
+
}>]>;
|
|
81
|
+
export declare const n8nDocsToolInputSchema: z.ZodDiscriminatedUnion<"action", [z.ZodObject<{
|
|
82
|
+
oauthRedirectUrl: z.ZodOptional<z.ZodString>;
|
|
83
|
+
maxPages: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
84
|
+
maxContentLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
85
|
+
query: z.ZodOptional<z.ZodString>;
|
|
86
|
+
intent: z.ZodOptional<z.ZodEnum<["credential-setup", "node-help", "hosting", "api", "general"]>>;
|
|
87
|
+
credentialType: z.ZodOptional<z.ZodString>;
|
|
88
|
+
credentialDisplayName: z.ZodOptional<z.ZodString>;
|
|
89
|
+
documentationUrl: z.ZodOptional<z.ZodString>;
|
|
90
|
+
nodeType: z.ZodOptional<z.ZodString>;
|
|
91
|
+
action: z.ZodLiteral<"lookup">;
|
|
92
|
+
}, "strip", z.ZodTypeAny, {
|
|
93
|
+
action: "lookup";
|
|
94
|
+
nodeType?: string | undefined;
|
|
95
|
+
query?: string | undefined;
|
|
96
|
+
credentialType?: string | undefined;
|
|
97
|
+
oauthRedirectUrl?: string | undefined;
|
|
98
|
+
maxPages?: number | undefined;
|
|
99
|
+
maxContentLength?: number | undefined;
|
|
100
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
101
|
+
credentialDisplayName?: string | undefined;
|
|
102
|
+
documentationUrl?: string | undefined;
|
|
103
|
+
}, {
|
|
104
|
+
action: "lookup";
|
|
105
|
+
nodeType?: string | undefined;
|
|
106
|
+
query?: string | undefined;
|
|
107
|
+
credentialType?: string | undefined;
|
|
108
|
+
oauthRedirectUrl?: string | undefined;
|
|
109
|
+
maxPages?: number | undefined;
|
|
110
|
+
maxContentLength?: number | undefined;
|
|
111
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
112
|
+
credentialDisplayName?: string | undefined;
|
|
113
|
+
documentationUrl?: string | undefined;
|
|
114
|
+
}>, z.ZodObject<{
|
|
115
|
+
maxResults: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
116
|
+
query: z.ZodOptional<z.ZodString>;
|
|
117
|
+
intent: z.ZodOptional<z.ZodEnum<["credential-setup", "node-help", "hosting", "api", "general"]>>;
|
|
118
|
+
credentialType: z.ZodOptional<z.ZodString>;
|
|
119
|
+
credentialDisplayName: z.ZodOptional<z.ZodString>;
|
|
120
|
+
documentationUrl: z.ZodOptional<z.ZodString>;
|
|
121
|
+
nodeType: z.ZodOptional<z.ZodString>;
|
|
122
|
+
action: z.ZodLiteral<"search">;
|
|
123
|
+
}, "strip", z.ZodTypeAny, {
|
|
124
|
+
action: "search";
|
|
125
|
+
nodeType?: string | undefined;
|
|
126
|
+
query?: string | undefined;
|
|
127
|
+
credentialType?: string | undefined;
|
|
128
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
129
|
+
credentialDisplayName?: string | undefined;
|
|
130
|
+
documentationUrl?: string | undefined;
|
|
131
|
+
maxResults?: number | undefined;
|
|
132
|
+
}, {
|
|
133
|
+
action: "search";
|
|
134
|
+
nodeType?: string | undefined;
|
|
135
|
+
query?: string | undefined;
|
|
136
|
+
credentialType?: string | undefined;
|
|
137
|
+
intent?: "credential-setup" | "node-help" | "hosting" | "api" | "general" | undefined;
|
|
138
|
+
credentialDisplayName?: string | undefined;
|
|
139
|
+
documentationUrl?: string | undefined;
|
|
140
|
+
maxResults?: number | undefined;
|
|
141
|
+
}>, z.ZodObject<{
|
|
142
|
+
action: z.ZodLiteral<"read">;
|
|
143
|
+
url: z.ZodString;
|
|
144
|
+
maxContentLength: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
145
|
+
}, "strip", z.ZodTypeAny, {
|
|
146
|
+
action: "read";
|
|
147
|
+
url: string;
|
|
148
|
+
maxContentLength?: number | undefined;
|
|
149
|
+
}, {
|
|
150
|
+
action: "read";
|
|
151
|
+
url: string;
|
|
152
|
+
maxContentLength?: number | undefined;
|
|
153
|
+
}>]>;
|
|
154
|
+
export type N8nDocsInput = z.infer<typeof n8nDocsRuntimeInputSchema>;
|
|
155
|
+
export type N8nDocsLookupInput = Extract<N8nDocsInput, {
|
|
156
|
+
action: 'lookup';
|
|
157
|
+
}>;
|
|
158
|
+
export type N8nDocsSearchInput = Extract<N8nDocsInput, {
|
|
159
|
+
action: 'search';
|
|
160
|
+
}>;
|
|
161
|
+
export type N8nDocsReadInput = Extract<N8nDocsInput, {
|
|
162
|
+
action: 'read';
|
|
163
|
+
}>;
|