@n8n/ai-utilities 0.23.3 → 0.24.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/cjs/adapters/langchain-chat-model.js +174 -184
- package/dist/cjs/adapters/langchain-chat-model.js.map +1 -1
- package/dist/cjs/adapters/langchain-history.js +23 -33
- package/dist/cjs/adapters/langchain-history.js.map +1 -1
- package/dist/cjs/adapters/langchain-memory.js +32 -42
- package/dist/cjs/adapters/langchain-memory.js.map +1 -1
- package/dist/cjs/agent-config/config-normalization.d.ts +11 -0
- package/dist/cjs/agent-config/config-normalization.js +134 -0
- package/dist/cjs/agent-config/config-normalization.js.map +1 -0
- package/dist/cjs/agent-config/from-ai-node-parameters.d.ts +7 -0
- package/dist/cjs/agent-config/from-ai-node-parameters.js +43 -0
- package/dist/cjs/agent-config/from-ai-node-parameters.js.map +1 -0
- package/dist/cjs/agent-config/index.d.ts +3 -0
- package/dist/cjs/agent-config/index.js +17 -0
- package/dist/cjs/agent-config/index.js.map +1 -0
- package/dist/cjs/agent-config/model-id.d.ts +5 -0
- package/dist/cjs/agent-config/model-id.js +16 -0
- package/dist/cjs/agent-config/model-id.js.map +1 -0
- package/dist/cjs/agent-config/native-web-search-provider-tools.d.ts +7 -0
- package/dist/cjs/agent-config/native-web-search-provider-tools.js +55 -0
- package/dist/cjs/agent-config/native-web-search-provider-tools.js.map +1 -0
- package/dist/cjs/ai-node-sdk-version.js +4 -14
- package/dist/cjs/ai-node-sdk-version.js.map +1 -1
- package/dist/cjs/chat-model/base.js +21 -31
- package/dist/cjs/chat-model/base.js.map +1 -1
- package/dist/cjs/converters/message.js +308 -318
- package/dist/cjs/converters/message.js.map +1 -1
- package/dist/cjs/converters/tool.js +50 -60
- package/dist/cjs/converters/tool.js.map +1 -1
- package/dist/cjs/guards.js +26 -36
- package/dist/cjs/guards.js.map +1 -1
- package/dist/cjs/index.js +99 -108
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/memory/base-chat-history.js +9 -19
- package/dist/cjs/memory/base-chat-history.js.map +1 -1
- package/dist/cjs/memory/base-chat-memory.js +6 -16
- package/dist/cjs/memory/base-chat-memory.js.map +1 -1
- package/dist/cjs/memory/windowed-chat-memory.js +33 -43
- package/dist/cjs/memory/windowed-chat-memory.js.map +1 -1
- package/dist/cjs/model-discovery/index.js +61 -71
- package/dist/cjs/model-discovery/index.js.map +1 -1
- package/dist/cjs/model-discovery/providers/anthropic.js +12 -22
- package/dist/cjs/model-discovery/providers/anthropic.js.map +1 -1
- package/dist/cjs/model-discovery/providers/cohere.js +12 -22
- package/dist/cjs/model-discovery/providers/cohere.js.map +1 -1
- package/dist/cjs/model-discovery/providers/deepseek.js +5 -15
- package/dist/cjs/model-discovery/providers/deepseek.js.map +1 -1
- package/dist/cjs/model-discovery/providers/google.js +15 -25
- package/dist/cjs/model-discovery/providers/google.js.map +1 -1
- package/dist/cjs/model-discovery/providers/groq.js +9 -19
- package/dist/cjs/model-discovery/providers/groq.js.map +1 -1
- package/dist/cjs/model-discovery/providers/mistral.js +11 -21
- package/dist/cjs/model-discovery/providers/mistral.js.map +1 -1
- package/dist/cjs/model-discovery/providers/nvidia.js +21 -31
- package/dist/cjs/model-discovery/providers/nvidia.js.map +1 -1
- package/dist/cjs/model-discovery/providers/openai.js +31 -41
- package/dist/cjs/model-discovery/providers/openai.js.map +1 -1
- package/dist/cjs/model-discovery/providers/openrouter.js +5 -15
- package/dist/cjs/model-discovery/providers/openrouter.js.map +1 -1
- package/dist/cjs/model-discovery/providers/vercel.js +5 -15
- package/dist/cjs/model-discovery/providers/vercel.js.map +1 -1
- package/dist/cjs/model-discovery/providers/xai.js +5 -15
- package/dist/cjs/model-discovery/providers/xai.js.map +1 -1
- package/dist/cjs/model-discovery/request.js +40 -50
- package/dist/cjs/model-discovery/request.js.map +1 -1
- package/dist/cjs/model-discovery/types.js +2 -12
- package/dist/cjs/node-catalog/discriminator-utils.js +75 -85
- package/dist/cjs/node-catalog/discriminator-utils.js.map +1 -1
- package/dist/cjs/node-catalog/dynamic-node-parameters.js +169 -179
- package/dist/cjs/node-catalog/dynamic-node-parameters.js.map +1 -1
- package/dist/cjs/node-catalog/get.js +349 -359
- package/dist/cjs/node-catalog/get.js.map +1 -1
- package/dist/cjs/node-catalog/index.js +42 -52
- package/dist/cjs/node-catalog/index.js.map +1 -1
- package/dist/cjs/node-catalog/lean-node-type.js +46 -56
- package/dist/cjs/node-catalog/lean-node-type.js.map +1 -1
- package/dist/cjs/node-catalog/node-type-parser.js +61 -71
- package/dist/cjs/node-catalog/node-type-parser.js.map +1 -1
- package/dist/cjs/node-catalog/resource-operation-extractor.js +133 -143
- package/dist/cjs/node-catalog/resource-operation-extractor.js.map +1 -1
- package/dist/cjs/node-catalog/search-engine.js +285 -295
- package/dist/cjs/node-catalog/search-engine.js.map +1 -1
- package/dist/cjs/node-catalog/search.js +280 -290
- package/dist/cjs/node-catalog/search.js.map +1 -1
- package/dist/cjs/node-catalog/suggested-nodes-data.js +235 -245
- package/dist/cjs/node-catalog/suggested-nodes-data.js.map +1 -1
- package/dist/cjs/node-catalog/suggested.js +63 -73
- package/dist/cjs/node-catalog/suggested.js.map +1 -1
- package/dist/cjs/node-catalog/types.js +2 -12
- package/dist/cjs/suppliers/supplyMemory.js +13 -23
- package/dist/cjs/suppliers/supplyMemory.js.map +1 -1
- package/dist/cjs/suppliers/supplyModel.js +72 -82
- package/dist/cjs/suppliers/supplyModel.js.map +1 -1
- package/dist/cjs/typecheck.tsbuildinfo +1 -1
- package/dist/cjs/types/chat-model.js +2 -12
- package/dist/cjs/types/json.js +2 -12
- package/dist/cjs/types/memory.js +2 -12
- package/dist/cjs/types/message.js +2 -12
- package/dist/cjs/types/openai.js +2 -12
- package/dist/cjs/types/output.js +2 -12
- package/dist/cjs/types/tool.js +2 -12
- package/dist/cjs/utils/embeddings-input-validation.js +24 -34
- package/dist/cjs/utils/embeddings-input-validation.js.map +1 -1
- package/dist/cjs/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js +27 -37
- package/dist/cjs/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js.map +1 -1
- package/dist/cjs/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.d.ts +1 -1
- package/dist/cjs/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js +23 -33
- package/dist/cjs/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js.map +1 -1
- package/dist/cjs/utils/follow-redirects.js +38 -48
- package/dist/cjs/utils/follow-redirects.js.map +1 -1
- package/dist/cjs/utils/fromai-helpers.js +21 -31
- package/dist/cjs/utils/fromai-helpers.js.map +1 -1
- package/dist/cjs/utils/fromai-tool-factory.js +18 -28
- package/dist/cjs/utils/fromai-tool-factory.js.map +1 -1
- package/dist/cjs/utils/helpers.js +44 -54
- package/dist/cjs/utils/helpers.js.map +1 -1
- package/dist/cjs/utils/http-proxy-agent.js +38 -48
- package/dist/cjs/utils/http-proxy-agent.js.map +1 -1
- package/dist/cjs/utils/lazy-import.d.ts +1 -0
- package/dist/cjs/utils/lazy-import.js +7 -0
- package/dist/cjs/utils/lazy-import.js.map +1 -0
- package/dist/cjs/utils/loaders/n8n-pdf-loader.js +50 -94
- package/dist/cjs/utils/loaders/n8n-pdf-loader.js.map +1 -1
- package/dist/cjs/utils/log-ai-event.js +10 -20
- package/dist/cjs/utils/log-ai-event.js.map +1 -1
- package/dist/cjs/utils/log-wrapper.d.ts +1 -1
- package/dist/cjs/utils/log-wrapper.js +313 -323
- package/dist/cjs/utils/log-wrapper.js.map +1 -1
- package/dist/cjs/utils/n8n-binary-loader.js +143 -153
- package/dist/cjs/utils/n8n-binary-loader.js.map +1 -1
- package/dist/cjs/utils/n8n-json-loader.js +57 -67
- package/dist/cjs/utils/n8n-json-loader.js.map +1 -1
- package/dist/cjs/utils/n8n-llm-tracing.js +164 -174
- package/dist/cjs/utils/n8n-llm-tracing.js.map +1 -1
- package/dist/cjs/utils/redact-headers.js +42 -52
- package/dist/cjs/utils/redact-headers.js.map +1 -1
- package/dist/cjs/utils/shared-fields.js +137 -147
- package/dist/cjs/utils/shared-fields.js.map +1 -1
- package/dist/cjs/utils/sse.js +83 -93
- package/dist/cjs/utils/sse.js.map +1 -1
- package/dist/cjs/utils/text-editor.js +274 -284
- package/dist/cjs/utils/text-editor.js.map +1 -1
- package/dist/cjs/utils/tokenizer/tiktoken.js +38 -48
- package/dist/cjs/utils/tokenizer/tiktoken.js.map +1 -1
- package/dist/cjs/utils/tokenizer/token-estimator.js +86 -96
- package/dist/cjs/utils/tokenizer/token-estimator.js.map +1 -1
- package/dist/cjs/utils/vector-store/MemoryManager/MemoryCalculator.js +43 -53
- package/dist/cjs/utils/vector-store/MemoryManager/MemoryCalculator.js.map +1 -1
- package/dist/cjs/utils/vector-store/MemoryManager/MemoryVectorStoreManager.js +154 -164
- package/dist/cjs/utils/vector-store/MemoryManager/MemoryVectorStoreManager.js.map +1 -1
- package/dist/cjs/utils/vector-store/MemoryManager/StoreCleanupService.js +82 -92
- package/dist/cjs/utils/vector-store/MemoryManager/StoreCleanupService.js.map +1 -1
- package/dist/cjs/utils/vector-store/MemoryManager/config.js +34 -44
- package/dist/cjs/utils/vector-store/MemoryManager/config.js.map +1 -1
- package/dist/cjs/utils/vector-store/MemoryManager/types.js +2 -12
- package/dist/cjs/utils/vector-store/createVectorStoreNode/constants.js +44 -54
- package/dist/cjs/utils/vector-store/createVectorStoreNode/constants.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js +229 -229
- package/dist/cjs/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/index.js +8 -18
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/index.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/insertOperation.js +33 -43
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/insertOperation.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/loadOperation.js +41 -51
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/loadOperation.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js +59 -69
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js +58 -68
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.js +26 -36
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/updateOperation.js +34 -44
- package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/updateOperation.js.map +1 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/types.js +2 -12
- package/dist/cjs/utils/vector-store/createVectorStoreNode/utils.d.ts +2 -1
- package/dist/cjs/utils/vector-store/createVectorStoreNode/utils.js +34 -29
- package/dist/cjs/utils/vector-store/createVectorStoreNode/utils.js.map +1 -1
- package/dist/cjs/utils/vector-store/processDocuments.js +37 -47
- package/dist/cjs/utils/vector-store/processDocuments.js.map +1 -1
- package/dist/cjs/utils/workflow-text-editor.js +50 -60
- package/dist/cjs/utils/workflow-text-editor.js.map +1 -1
- package/dist/cjs/web-search/brave-search.js +38 -48
- package/dist/cjs/web-search/brave-search.js.map +1 -1
- package/dist/cjs/web-search/index.js +7 -17
- package/dist/cjs/web-search/index.js.map +1 -1
- package/dist/cjs/web-search/searxng-search.js +35 -45
- package/dist/cjs/web-search/searxng-search.js.map +1 -1
- package/dist/cjs/web-search/types.js +2 -12
- package/dist/esm/adapters/langchain-chat-model.js.map +1 -1
- package/dist/esm/adapters/langchain-history.js.map +1 -1
- package/dist/esm/adapters/langchain-memory.js.map +1 -1
- package/dist/esm/agent-config/config-normalization.d.ts +11 -0
- package/dist/esm/agent-config/config-normalization.js +134 -0
- package/dist/esm/agent-config/config-normalization.js.map +1 -0
- package/dist/esm/agent-config/from-ai-node-parameters.d.ts +7 -0
- package/dist/esm/agent-config/from-ai-node-parameters.js +43 -0
- package/dist/esm/agent-config/from-ai-node-parameters.js.map +1 -0
- package/dist/esm/agent-config/index.d.ts +3 -0
- package/dist/esm/agent-config/index.js +17 -0
- package/dist/esm/agent-config/index.js.map +1 -0
- package/dist/esm/agent-config/model-id.d.ts +5 -0
- package/dist/esm/agent-config/model-id.js +16 -0
- package/dist/esm/agent-config/model-id.js.map +1 -0
- package/dist/esm/agent-config/native-web-search-provider-tools.d.ts +7 -0
- package/dist/esm/agent-config/native-web-search-provider-tools.js +55 -0
- package/dist/esm/agent-config/native-web-search-provider-tools.js.map +1 -0
- package/dist/esm/chat-model/base.js.map +1 -1
- package/dist/esm/converters/message.js.map +1 -1
- package/dist/esm/converters/tool.js.map +1 -1
- package/dist/esm/guards.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/memory/base-chat-history.js.map +1 -1
- package/dist/esm/memory/base-chat-memory.js.map +1 -1
- package/dist/esm/memory/windowed-chat-memory.js.map +1 -1
- package/dist/esm/model-discovery/index.js.map +1 -1
- package/dist/esm/model-discovery/providers/anthropic.js.map +1 -1
- package/dist/esm/model-discovery/providers/cohere.js.map +1 -1
- package/dist/esm/model-discovery/providers/google.js.map +1 -1
- package/dist/esm/model-discovery/providers/groq.js.map +1 -1
- package/dist/esm/model-discovery/providers/mistral.js.map +1 -1
- package/dist/esm/model-discovery/providers/nvidia.js.map +1 -1
- package/dist/esm/model-discovery/providers/openai.js.map +1 -1
- package/dist/esm/model-discovery/request.js.map +1 -1
- package/dist/esm/node-catalog/discriminator-utils.js.map +1 -1
- package/dist/esm/node-catalog/dynamic-node-parameters.js.map +1 -1
- package/dist/esm/node-catalog/get.js.map +1 -1
- package/dist/esm/node-catalog/lean-node-type.js.map +1 -1
- package/dist/esm/node-catalog/node-type-parser.js.map +1 -1
- package/dist/esm/node-catalog/resource-operation-extractor.js.map +1 -1
- package/dist/esm/node-catalog/search-engine.js.map +1 -1
- package/dist/esm/node-catalog/search.js.map +1 -1
- package/dist/esm/node-catalog/suggested-nodes-data.js.map +1 -1
- package/dist/esm/node-catalog/suggested.js.map +1 -1
- package/dist/esm/suppliers/supplyMemory.js.map +1 -1
- package/dist/esm/suppliers/supplyModel.js.map +1 -1
- package/dist/esm/typecheck.tsbuildinfo +1 -1
- package/dist/esm/utils/embeddings-input-validation.js.map +1 -1
- package/dist/esm/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js.map +1 -1
- package/dist/esm/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.d.ts +1 -1
- package/dist/esm/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js.map +1 -1
- package/dist/esm/utils/follow-redirects.js.map +1 -1
- package/dist/esm/utils/fromai-helpers.js.map +1 -1
- package/dist/esm/utils/fromai-tool-factory.js.map +1 -1
- package/dist/esm/utils/helpers.js.map +1 -1
- package/dist/esm/utils/http-proxy-agent.js.map +1 -1
- package/dist/esm/utils/lazy-import.d.ts +1 -0
- package/dist/esm/utils/lazy-import.js +7 -0
- package/dist/esm/utils/lazy-import.js.map +1 -0
- package/dist/esm/utils/loaders/n8n-pdf-loader.js +2 -35
- package/dist/esm/utils/loaders/n8n-pdf-loader.js.map +1 -1
- package/dist/esm/utils/log-ai-event.js.map +1 -1
- package/dist/esm/utils/log-wrapper.d.ts +1 -1
- package/dist/esm/utils/log-wrapper.js.map +1 -1
- package/dist/esm/utils/n8n-binary-loader.js.map +1 -1
- package/dist/esm/utils/n8n-json-loader.js.map +1 -1
- package/dist/esm/utils/n8n-llm-tracing.js.map +1 -1
- package/dist/esm/utils/redact-headers.js.map +1 -1
- package/dist/esm/utils/shared-fields.js.map +1 -1
- package/dist/esm/utils/sse.js.map +1 -1
- package/dist/esm/utils/text-editor.js.map +1 -1
- package/dist/esm/utils/tokenizer/tiktoken.js.map +1 -1
- package/dist/esm/utils/tokenizer/token-estimator.js.map +1 -1
- package/dist/esm/utils/vector-store/MemoryManager/MemoryCalculator.js.map +1 -1
- package/dist/esm/utils/vector-store/MemoryManager/MemoryVectorStoreManager.js.map +1 -1
- package/dist/esm/utils/vector-store/MemoryManager/StoreCleanupService.js.map +1 -1
- package/dist/esm/utils/vector-store/MemoryManager/config.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js +43 -33
- package/dist/esm/utils/vector-store/createVectorStoreNode/createVectorStoreNode.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/operations/insertOperation.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/operations/loadOperation.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveOperation.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/operations/updateOperation.js.map +1 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/utils.d.ts +2 -1
- package/dist/esm/utils/vector-store/createVectorStoreNode/utils.js +15 -0
- package/dist/esm/utils/vector-store/createVectorStoreNode/utils.js.map +1 -1
- package/dist/esm/utils/vector-store/processDocuments.js.map +1 -1
- package/dist/esm/utils/workflow-text-editor.js.map +1 -1
- package/dist/esm/web-search/brave-search.js.map +1 -1
- package/dist/esm/web-search/searxng-search.js.map +1 -1
- package/package.json +24 -9
|
@@ -1,241 +1,262 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatNodeResult = formatNodeResult;
|
|
4
|
+
exports.searchCodeBuilderNodes = searchCodeBuilderNodes;
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
function formatBuilderHint(nodeTypeParser, nodeId, version) {
|
|
7
|
+
const nodeType = nodeTypeParser.getLeanNodeType(nodeId, version);
|
|
8
|
+
const hint = nodeType?.builderHint?.searchHint;
|
|
9
|
+
if (!hint)
|
|
10
|
+
return '';
|
|
11
|
+
return ` @builderHint ${hint}`;
|
|
12
|
+
}
|
|
13
|
+
function getDirectRelatedNodeIds(nodeTypeParser, nodeId, version) {
|
|
14
|
+
const nodeType = nodeTypeParser.getLeanNodeType(nodeId, version);
|
|
15
|
+
const relatedNodes = nodeType?.builderHint?.relatedNodes;
|
|
16
|
+
if (!relatedNodes)
|
|
17
|
+
return [];
|
|
18
|
+
return relatedNodes.map((r) => r.nodeType);
|
|
19
|
+
}
|
|
20
|
+
function getRelatedNodesWithHints(nodeTypeParser, nodeId, version, nodeFilter) {
|
|
21
|
+
const nodeType = nodeTypeParser.getLeanNodeType(nodeId, version);
|
|
22
|
+
return nodeType?.builderHint?.relatedNodes?.filter((r) => nodeFilter?.(r.nodeType) ?? true);
|
|
23
|
+
}
|
|
24
|
+
function formatRelatedNodesWithHints(relatedNodes) {
|
|
25
|
+
if (relatedNodes.length === 0)
|
|
26
|
+
return '';
|
|
27
|
+
const lines = [' @relatedNodes'];
|
|
28
|
+
for (const related of relatedNodes) {
|
|
29
|
+
lines.push(` - ${related.nodeType}: "${related.relationHint}"`);
|
|
5
30
|
}
|
|
6
|
-
|
|
7
|
-
|
|
31
|
+
return lines.join('\n');
|
|
32
|
+
}
|
|
33
|
+
function collectAllRelatedNodeIds(nodeTypeParser, initialNodeIds, excludeNodeIds) {
|
|
34
|
+
const allRelated = new Set();
|
|
35
|
+
const visited = new Set();
|
|
36
|
+
for (const node of initialNodeIds) {
|
|
37
|
+
visited.add(node.id);
|
|
8
38
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.formatNodeResult = formatNodeResult;
|
|
13
|
-
exports.searchCodeBuilderNodes = searchCodeBuilderNodes;
|
|
14
|
-
const n8n_workflow_1 = require("n8n-workflow");
|
|
15
|
-
function formatBuilderHint(nodeTypeParser, nodeId, version) {
|
|
16
|
-
const nodeType = nodeTypeParser.getLeanNodeType(nodeId, version);
|
|
17
|
-
const hint = nodeType?.builderHint?.searchHint;
|
|
18
|
-
if (!hint)
|
|
19
|
-
return '';
|
|
20
|
-
return ` @builderHint ${hint}`;
|
|
39
|
+
for (const id of excludeNodeIds) {
|
|
40
|
+
visited.add(id);
|
|
21
41
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
function getRelatedNodesWithHints(nodeTypeParser, nodeId, version, nodeFilter) {
|
|
30
|
-
const nodeType = nodeTypeParser.getLeanNodeType(nodeId, version);
|
|
31
|
-
return nodeType?.builderHint?.relatedNodes?.filter((r) => nodeFilter?.(r.nodeType) ?? true);
|
|
32
|
-
}
|
|
33
|
-
function formatRelatedNodesWithHints(relatedNodes) {
|
|
34
|
-
if (relatedNodes.length === 0)
|
|
35
|
-
return '';
|
|
36
|
-
const lines = [' @relatedNodes'];
|
|
37
|
-
for (const related of relatedNodes) {
|
|
38
|
-
lines.push(` - ${related.nodeType}: "${related.relationHint}"`);
|
|
39
|
-
}
|
|
40
|
-
return lines.join('\n');
|
|
41
|
-
}
|
|
42
|
-
function collectAllRelatedNodeIds(nodeTypeParser, initialNodeIds, excludeNodeIds) {
|
|
43
|
-
const allRelated = new Set();
|
|
44
|
-
const visited = new Set();
|
|
45
|
-
for (const node of initialNodeIds) {
|
|
46
|
-
visited.add(node.id);
|
|
47
|
-
}
|
|
48
|
-
for (const id of excludeNodeIds) {
|
|
49
|
-
visited.add(id);
|
|
50
|
-
}
|
|
51
|
-
const queue = [...initialNodeIds];
|
|
52
|
-
while (queue.length > 0) {
|
|
53
|
-
const current = queue.shift();
|
|
54
|
-
const relatedIds = getDirectRelatedNodeIds(nodeTypeParser, current.id, current.version);
|
|
55
|
-
for (const relatedId of relatedIds) {
|
|
56
|
-
if (visited.has(relatedId)) {
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
visited.add(relatedId);
|
|
60
|
-
allRelated.add(relatedId);
|
|
61
|
-
const relatedNodeType = nodeTypeParser.getLeanNodeType(relatedId);
|
|
62
|
-
if (relatedNodeType) {
|
|
63
|
-
const relatedVersion = Array.isArray(relatedNodeType.version)
|
|
64
|
-
? relatedNodeType.version[relatedNodeType.version.length - 1]
|
|
65
|
-
: relatedNodeType.version;
|
|
66
|
-
queue.push({ id: relatedId, version: relatedVersion });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return allRelated;
|
|
71
|
-
}
|
|
72
|
-
const CONNECTION_TYPE_TO_SDK = {
|
|
73
|
-
ai_tool: { fn: 'tool()', subnodeField: 'subnodes.tools' },
|
|
74
|
-
ai_vectorStore: { fn: 'vectorStore()', subnodeField: 'subnodes.vectorStore' },
|
|
75
|
-
ai_retriever: { fn: 'retriever()', subnodeField: 'subnodes.retriever' },
|
|
76
|
-
ai_languageModel: { fn: 'languageModel()', subnodeField: 'subnodes.model' },
|
|
77
|
-
ai_memory: { fn: 'memory()', subnodeField: 'subnodes.memory' },
|
|
78
|
-
ai_outputParser: { fn: 'outputParser()', subnodeField: 'subnodes.outputParser' },
|
|
79
|
-
ai_embedding: { fn: 'embeddings()', subnodeField: 'subnodes.embeddings' },
|
|
80
|
-
ai_document: { fn: 'documentLoader()', subnodeField: 'subnodes.documentLoader' },
|
|
81
|
-
ai_textSplitter: { fn: 'textSplitter()', subnodeField: 'subnodes.textSplitter' },
|
|
82
|
-
};
|
|
83
|
-
const MODE_DISPLAY_NAME_OVERRIDES = {
|
|
84
|
-
retrieve: {
|
|
85
|
-
'Retrieve Documents (As Vector Store for Chain/Tool)': 'Retrieve Documents (As Vector Store for Chain)',
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
function formatModeForDisplay(mode, showSdkMapping) {
|
|
89
|
-
const lines = [];
|
|
90
|
-
const displayName = MODE_DISPLAY_NAME_OVERRIDES[mode.value]?.[mode.displayName] ?? mode.displayName;
|
|
91
|
-
let firstLine = ` - ${mode.value}: "${displayName}"`;
|
|
92
|
-
if (showSdkMapping) {
|
|
93
|
-
const sdkMapping = mode.outputConnectionType
|
|
94
|
-
? CONNECTION_TYPE_TO_SDK[mode.outputConnectionType]
|
|
95
|
-
: undefined;
|
|
96
|
-
if (sdkMapping) {
|
|
97
|
-
const fnWithMode = sdkMapping.fn.replace('()', `({ mode: '${mode.value}' })`);
|
|
98
|
-
firstLine += ` → use ${fnWithMode} for ${sdkMapping.subnodeField}`;
|
|
42
|
+
const queue = [...initialNodeIds];
|
|
43
|
+
while (queue.length > 0) {
|
|
44
|
+
const current = queue.shift();
|
|
45
|
+
const relatedIds = getDirectRelatedNodeIds(nodeTypeParser, current.id, current.version);
|
|
46
|
+
for (const relatedId of relatedIds) {
|
|
47
|
+
if (visited.has(relatedId)) {
|
|
48
|
+
continue;
|
|
99
49
|
}
|
|
100
|
-
|
|
101
|
-
|
|
50
|
+
visited.add(relatedId);
|
|
51
|
+
allRelated.add(relatedId);
|
|
52
|
+
const relatedNodeType = nodeTypeParser.getLeanNodeType(relatedId);
|
|
53
|
+
if (relatedNodeType) {
|
|
54
|
+
const relatedVersion = Array.isArray(relatedNodeType.version)
|
|
55
|
+
? relatedNodeType.version[relatedNodeType.version.length - 1]
|
|
56
|
+
: relatedNodeType.version;
|
|
57
|
+
queue.push({ id: relatedId, version: relatedVersion });
|
|
102
58
|
}
|
|
103
59
|
}
|
|
104
|
-
lines.push(firstLine);
|
|
105
|
-
if (mode.description) {
|
|
106
|
-
lines.push(` ${mode.description}`);
|
|
107
|
-
}
|
|
108
|
-
if (mode.builderHint) {
|
|
109
|
-
lines.push(` @builderHint ${mode.builderHint.propertyHint}`);
|
|
110
|
-
}
|
|
111
|
-
return lines.join('\n');
|
|
112
60
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
61
|
+
return allRelated;
|
|
62
|
+
}
|
|
63
|
+
const CONNECTION_TYPE_TO_SDK = {
|
|
64
|
+
ai_tool: { fn: 'tool()', subnodeField: 'subnodes.tools' },
|
|
65
|
+
ai_vectorStore: { fn: 'vectorStore()', subnodeField: 'subnodes.vectorStore' },
|
|
66
|
+
ai_retriever: { fn: 'retriever()', subnodeField: 'subnodes.retriever' },
|
|
67
|
+
ai_languageModel: { fn: 'languageModel()', subnodeField: 'subnodes.model' },
|
|
68
|
+
ai_memory: { fn: 'memory()', subnodeField: 'subnodes.memory' },
|
|
69
|
+
ai_outputParser: { fn: 'outputParser()', subnodeField: 'subnodes.outputParser' },
|
|
70
|
+
ai_embedding: { fn: 'embeddings()', subnodeField: 'subnodes.embeddings' },
|
|
71
|
+
ai_document: { fn: 'documentLoader()', subnodeField: 'subnodes.documentLoader' },
|
|
72
|
+
ai_textSplitter: { fn: 'textSplitter()', subnodeField: 'subnodes.textSplitter' },
|
|
73
|
+
};
|
|
74
|
+
const MODE_DISPLAY_NAME_OVERRIDES = {
|
|
75
|
+
retrieve: {
|
|
76
|
+
'Retrieve Documents (As Vector Store for Chain/Tool)': 'Retrieve Documents (As Vector Store for Chain)',
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
function formatModeForDisplay(mode, showSdkMapping) {
|
|
80
|
+
const lines = [];
|
|
81
|
+
const displayName = MODE_DISPLAY_NAME_OVERRIDES[mode.value]?.[mode.displayName] ?? mode.displayName;
|
|
82
|
+
let firstLine = ` - ${mode.value}: "${displayName}"`;
|
|
83
|
+
if (showSdkMapping) {
|
|
84
|
+
const sdkMapping = mode.outputConnectionType
|
|
85
|
+
? CONNECTION_TYPE_TO_SDK[mode.outputConnectionType]
|
|
86
|
+
: undefined;
|
|
87
|
+
if (sdkMapping) {
|
|
88
|
+
const fnWithMode = sdkMapping.fn.replace('()', `({ mode: '${mode.value}' })`);
|
|
89
|
+
firstLine += ` → use ${fnWithMode} for ${sdkMapping.subnodeField}`;
|
|
117
90
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
const resources = resourceOperations.resources
|
|
121
|
-
.filter((r) => r.value !== '__CUSTOM_API_CALL__')
|
|
122
|
-
.map((r) => ({
|
|
123
|
-
value: r.value,
|
|
124
|
-
description: r.description,
|
|
125
|
-
builderHint: r.builderHint,
|
|
126
|
-
operations: r.operations
|
|
127
|
-
.filter((op) => op.value !== '__CUSTOM_API_CALL__')
|
|
128
|
-
.map((op) => ({
|
|
129
|
-
value: op.value,
|
|
130
|
-
description: op.description,
|
|
131
|
-
builderHint: op.builderHint,
|
|
132
|
-
})),
|
|
133
|
-
}));
|
|
134
|
-
if (resources.length > 0) {
|
|
135
|
-
return { type: 'resource_operation', resources };
|
|
136
|
-
}
|
|
91
|
+
else {
|
|
92
|
+
firstLine += ' → use node()';
|
|
137
93
|
}
|
|
138
|
-
|
|
139
|
-
|
|
94
|
+
}
|
|
95
|
+
lines.push(firstLine);
|
|
96
|
+
if (mode.description) {
|
|
97
|
+
lines.push(` ${mode.description}`);
|
|
98
|
+
}
|
|
99
|
+
if (mode.builderHint) {
|
|
100
|
+
lines.push(` @builderHint ${mode.builderHint.propertyHint}`);
|
|
101
|
+
}
|
|
102
|
+
return lines.join('\n');
|
|
103
|
+
}
|
|
104
|
+
function getDiscriminatorInfo(nodeTypeParser, nodeId, version) {
|
|
105
|
+
const precomputed = nodeTypeParser.getVersionDiscriminators(nodeId, version);
|
|
106
|
+
if (!precomputed) {
|
|
107
|
+
return { type: 'none' };
|
|
108
|
+
}
|
|
109
|
+
const { resourceOperations, operationDiscriminator, modeDiscriminator } = precomputed;
|
|
110
|
+
if (resourceOperations && resourceOperations.resources.length > 0) {
|
|
111
|
+
const resources = resourceOperations.resources
|
|
112
|
+
.filter((r) => r.value !== '__CUSTOM_API_CALL__')
|
|
113
|
+
.map((r) => ({
|
|
114
|
+
value: r.value,
|
|
115
|
+
description: r.description,
|
|
116
|
+
builderHint: r.builderHint,
|
|
117
|
+
operations: r.operations
|
|
140
118
|
.filter((op) => op.value !== '__CUSTOM_API_CALL__')
|
|
141
119
|
.map((op) => ({
|
|
142
120
|
value: op.value,
|
|
143
121
|
description: op.description,
|
|
144
122
|
builderHint: op.builderHint,
|
|
145
|
-
}))
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
if (modeDiscriminator && modeDiscriminator.modes.length > 0) {
|
|
151
|
-
return { type: 'mode', modes: modeDiscriminator.modes };
|
|
123
|
+
})),
|
|
124
|
+
}));
|
|
125
|
+
if (resources.length > 0) {
|
|
126
|
+
return { type: 'resource_operation', resources };
|
|
152
127
|
}
|
|
153
|
-
return { type: 'none' };
|
|
154
128
|
}
|
|
155
|
-
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
lines.push(' operations:');
|
|
166
|
-
for (const op of resource.operations) {
|
|
167
|
-
lines.push(` - ${op.value}`);
|
|
168
|
-
if (op.description) {
|
|
169
|
-
lines.push(` ${op.description}`);
|
|
170
|
-
}
|
|
171
|
-
if (op.builderHint) {
|
|
172
|
-
lines.push(` @builderHint ${op.builderHint.propertyHint}`);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
129
|
+
if (operationDiscriminator && operationDiscriminator.operations.length > 0) {
|
|
130
|
+
const operations = operationDiscriminator.operations
|
|
131
|
+
.filter((op) => op.value !== '__CUSTOM_API_CALL__')
|
|
132
|
+
.map((op) => ({
|
|
133
|
+
value: op.value,
|
|
134
|
+
description: op.description,
|
|
135
|
+
builderHint: op.builderHint,
|
|
136
|
+
}));
|
|
137
|
+
if (operations.length > 0) {
|
|
138
|
+
return { type: 'operation', operations };
|
|
175
139
|
}
|
|
176
|
-
const firstResource = resources[0];
|
|
177
|
-
const firstOp = firstResource?.operations[0]?.value || 'get';
|
|
178
|
-
lines.push('');
|
|
179
|
-
lines.push(' Use get_node_types with discriminators:');
|
|
180
|
-
lines.push(` get_node_types({ nodeIds: [{ nodeId: "${nodeId}", resource: "${firstResource?.value}", operation: "${firstOp}" }] })`);
|
|
181
|
-
return lines;
|
|
182
140
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
141
|
+
if (modeDiscriminator && modeDiscriminator.modes.length > 0) {
|
|
142
|
+
return { type: 'mode', modes: modeDiscriminator.modes };
|
|
143
|
+
}
|
|
144
|
+
return { type: 'none' };
|
|
145
|
+
}
|
|
146
|
+
function formatResourceOperationLines(resources, nodeId) {
|
|
147
|
+
const lines = [' resource:'];
|
|
148
|
+
for (const resource of resources) {
|
|
149
|
+
lines.push(` - ${resource.value}:`);
|
|
150
|
+
if (resource.description) {
|
|
151
|
+
lines.push(` ${resource.description}`);
|
|
152
|
+
}
|
|
153
|
+
if (resource.builderHint) {
|
|
154
|
+
lines.push(` @builderHint ${resource.builderHint.propertyHint}`);
|
|
155
|
+
}
|
|
156
|
+
lines.push(' operations:');
|
|
157
|
+
for (const op of resource.operations) {
|
|
158
|
+
lines.push(` - ${op.value}`);
|
|
187
159
|
if (op.description) {
|
|
188
|
-
lines.push(`
|
|
160
|
+
lines.push(` ${op.description}`);
|
|
189
161
|
}
|
|
190
162
|
if (op.builderHint) {
|
|
191
|
-
lines.push(`
|
|
163
|
+
lines.push(` @builderHint ${op.builderHint.propertyHint}`);
|
|
192
164
|
}
|
|
193
165
|
}
|
|
194
|
-
const firstOp = operations[0]?.value ?? 'default';
|
|
195
|
-
lines.push('');
|
|
196
|
-
lines.push(' Use get_node_types with discriminators:');
|
|
197
|
-
lines.push(` get_node_types({ nodeIds: [{ nodeId: "${nodeId}", operation: "${firstOp}" }] })`);
|
|
198
|
-
return lines;
|
|
199
|
-
}
|
|
200
|
-
function formatModeLines(modes, nodeId) {
|
|
201
|
-
const lines = [' mode:'];
|
|
202
|
-
const hasSubnodeModes = modes.some((m) => m.outputConnectionType);
|
|
203
|
-
for (const mode of modes) {
|
|
204
|
-
lines.push(formatModeForDisplay(mode, hasSubnodeModes));
|
|
205
|
-
}
|
|
206
|
-
const firstMode = modes[0];
|
|
207
|
-
lines.push('');
|
|
208
|
-
lines.push(' Use get_node_types with discriminators:');
|
|
209
|
-
lines.push(` get_node_types({ nodeIds: [{ nodeId: "${nodeId}", mode: "${firstMode.value}" }] })`);
|
|
210
|
-
return lines;
|
|
211
166
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
167
|
+
const firstResource = resources[0];
|
|
168
|
+
const firstOp = firstResource?.operations[0]?.value || 'get';
|
|
169
|
+
lines.push('');
|
|
170
|
+
lines.push(' Use get_node_types with discriminators:');
|
|
171
|
+
lines.push(` get_node_types({ nodeIds: [{ nodeId: "${nodeId}", resource: "${firstResource?.value}", operation: "${firstOp}" }] })`);
|
|
172
|
+
return lines;
|
|
173
|
+
}
|
|
174
|
+
function formatOperationLines(operations, nodeId) {
|
|
175
|
+
const lines = [' operation:'];
|
|
176
|
+
for (const op of operations) {
|
|
177
|
+
lines.push(` - ${op.value}`);
|
|
178
|
+
if (op.description) {
|
|
179
|
+
lines.push(` ${op.description}`);
|
|
222
180
|
}
|
|
223
|
-
|
|
224
|
-
lines.push(
|
|
181
|
+
if (op.builderHint) {
|
|
182
|
+
lines.push(` @builderHint ${op.builderHint.propertyHint}`);
|
|
225
183
|
}
|
|
226
|
-
return lines.join('\n');
|
|
227
184
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
185
|
+
const firstOp = operations[0]?.value ?? 'default';
|
|
186
|
+
lines.push('');
|
|
187
|
+
lines.push(' Use get_node_types with discriminators:');
|
|
188
|
+
lines.push(` get_node_types({ nodeIds: [{ nodeId: "${nodeId}", operation: "${firstOp}" }] })`);
|
|
189
|
+
return lines;
|
|
190
|
+
}
|
|
191
|
+
function formatModeLines(modes, nodeId) {
|
|
192
|
+
const lines = [' mode:'];
|
|
193
|
+
const hasSubnodeModes = modes.some((m) => m.outputConnectionType);
|
|
194
|
+
for (const mode of modes) {
|
|
195
|
+
lines.push(formatModeForDisplay(mode, hasSubnodeModes));
|
|
196
|
+
}
|
|
197
|
+
const firstMode = modes[0];
|
|
198
|
+
lines.push('');
|
|
199
|
+
lines.push(' Use get_node_types with discriminators:');
|
|
200
|
+
lines.push(` get_node_types({ nodeIds: [{ nodeId: "${nodeId}", mode: "${firstMode.value}" }] })`);
|
|
201
|
+
return lines;
|
|
202
|
+
}
|
|
203
|
+
function formatDiscriminatorInfo(info, nodeId) {
|
|
204
|
+
if (info.type === 'none') {
|
|
205
|
+
return ' Discriminators: none (use node directly without resource/operation/mode)';
|
|
206
|
+
}
|
|
207
|
+
const lines = [' Discriminators:'];
|
|
208
|
+
if (info.type === 'resource_operation' && info.resources) {
|
|
209
|
+
lines.push(...formatResourceOperationLines(info.resources, nodeId));
|
|
210
|
+
}
|
|
211
|
+
else if (info.type === 'operation' && info.operations) {
|
|
212
|
+
lines.push(...formatOperationLines(info.operations, nodeId));
|
|
213
|
+
}
|
|
214
|
+
else if (info.type === 'mode' && info.modes) {
|
|
215
|
+
lines.push(...formatModeLines(info.modes, nodeId));
|
|
216
|
+
}
|
|
217
|
+
return lines.join('\n');
|
|
218
|
+
}
|
|
219
|
+
function formatNodeResult(nodeTypeParser, nodeId, version) {
|
|
220
|
+
const nodeType = nodeTypeParser.getLeanNodeType(nodeId, version);
|
|
221
|
+
if (!nodeType)
|
|
222
|
+
return undefined;
|
|
223
|
+
const resolvedVersion = version ?? (Array.isArray(nodeType.version) ? Math.max(...nodeType.version) : nodeType.version);
|
|
224
|
+
const triggerTag = (0, n8n_workflow_1.isTriggerNodeType)(nodeId) ? ' [TRIGGER]' : '';
|
|
225
|
+
const basicInfo = `- ${nodeId}${triggerTag}\n Display Name: ${nodeType.displayName}\n Version: ${resolvedVersion}\n Description: ${nodeType.description}`;
|
|
226
|
+
const builderHint = formatBuilderHint(nodeTypeParser, nodeId, resolvedVersion);
|
|
227
|
+
const relatedNodesWithHints = getRelatedNodesWithHints(nodeTypeParser, nodeId, resolvedVersion);
|
|
228
|
+
const discInfo = getDiscriminatorInfo(nodeTypeParser, nodeId, resolvedVersion);
|
|
229
|
+
const discStr = formatDiscriminatorInfo(discInfo, nodeId);
|
|
230
|
+
const parts = [basicInfo];
|
|
231
|
+
if (builderHint)
|
|
232
|
+
parts.push(builderHint);
|
|
233
|
+
if (relatedNodesWithHints && relatedNodesWithHints.length > 0) {
|
|
234
|
+
const relatedNodesStr = formatRelatedNodesWithHints(relatedNodesWithHints);
|
|
235
|
+
if (relatedNodesStr)
|
|
236
|
+
parts.push(relatedNodesStr);
|
|
237
|
+
}
|
|
238
|
+
if (discStr)
|
|
239
|
+
parts.push(discStr);
|
|
240
|
+
return parts.join('\n');
|
|
241
|
+
}
|
|
242
|
+
function searchForQuery(nodeTypeParser, query, nodeFilter) {
|
|
243
|
+
const results = nodeTypeParser.searchNodeTypes(query, 5, nodeFilter);
|
|
244
|
+
if (results.length === 0) {
|
|
245
|
+
return {
|
|
246
|
+
result: `## "${query}"\nNo nodes found. Try a different search term.`,
|
|
247
|
+
hasResults: false,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
const shownNodeIds = new Set(results.map((node) => node.id));
|
|
251
|
+
const allNodeLines = [];
|
|
252
|
+
let totalRelatedCount = 0;
|
|
253
|
+
for (const node of results) {
|
|
254
|
+
const triggerTag = node.isTrigger ? ' [TRIGGER]' : '';
|
|
255
|
+
const basicInfo = `- ${node.id}${triggerTag}\n Display Name: ${node.displayName}\n Version: ${node.version}\n Description: ${node.description}`;
|
|
256
|
+
const builderHint = formatBuilderHint(nodeTypeParser, node.id, node.version);
|
|
257
|
+
const relatedNodesWithHints = getRelatedNodesWithHints(nodeTypeParser, node.id, node.version, nodeFilter);
|
|
258
|
+
const discInfo = getDiscriminatorInfo(nodeTypeParser, node.id, node.version);
|
|
259
|
+
const discStr = formatDiscriminatorInfo(discInfo, node.id);
|
|
239
260
|
const parts = [basicInfo];
|
|
240
261
|
if (builderHint)
|
|
241
262
|
parts.push(builderHint);
|
|
@@ -244,88 +265,57 @@
|
|
|
244
265
|
if (relatedNodesStr)
|
|
245
266
|
parts.push(relatedNodesStr);
|
|
246
267
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
return parts.join('\n');
|
|
250
|
-
}
|
|
251
|
-
function searchForQuery(nodeTypeParser, query, nodeFilter) {
|
|
252
|
-
const results = nodeTypeParser.searchNodeTypes(query, 5, nodeFilter);
|
|
253
|
-
if (results.length === 0) {
|
|
254
|
-
return {
|
|
255
|
-
result: `## "${query}"\nNo nodes found. Try a different search term.`,
|
|
256
|
-
hasResults: false,
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
const shownNodeIds = new Set(results.map((node) => node.id));
|
|
260
|
-
const allNodeLines = [];
|
|
261
|
-
let totalRelatedCount = 0;
|
|
262
|
-
for (const node of results) {
|
|
263
|
-
const triggerTag = node.isTrigger ? ' [TRIGGER]' : '';
|
|
264
|
-
const basicInfo = `- ${node.id}${triggerTag}\n Display Name: ${node.displayName}\n Version: ${node.version}\n Description: ${node.description}`;
|
|
265
|
-
const builderHint = formatBuilderHint(nodeTypeParser, node.id, node.version);
|
|
266
|
-
const relatedNodesWithHints = getRelatedNodesWithHints(nodeTypeParser, node.id, node.version, nodeFilter);
|
|
267
|
-
const discInfo = getDiscriminatorInfo(nodeTypeParser, node.id, node.version);
|
|
268
|
-
const discStr = formatDiscriminatorInfo(discInfo, node.id);
|
|
269
|
-
const parts = [basicInfo];
|
|
270
|
-
if (builderHint)
|
|
271
|
-
parts.push(builderHint);
|
|
272
|
-
if (relatedNodesWithHints && relatedNodesWithHints.length > 0) {
|
|
273
|
-
const relatedNodesStr = formatRelatedNodesWithHints(relatedNodesWithHints);
|
|
274
|
-
if (relatedNodesStr)
|
|
275
|
-
parts.push(relatedNodesStr);
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
const relatedNodeIds = collectAllRelatedNodeIds(nodeTypeParser, [{ id: node.id, version: node.version }], shownNodeIds);
|
|
279
|
-
if (discStr)
|
|
280
|
-
parts.push(discStr);
|
|
281
|
-
allNodeLines.push(parts.join('\n'));
|
|
282
|
-
for (const relatedId of relatedNodeIds) {
|
|
283
|
-
if (nodeFilter && !nodeFilter(relatedId))
|
|
284
|
-
continue;
|
|
285
|
-
const nodeType = nodeTypeParser.getLeanNodeType(relatedId);
|
|
286
|
-
if (nodeType) {
|
|
287
|
-
const version = Array.isArray(nodeType.version)
|
|
288
|
-
? nodeType.version[nodeType.version.length - 1]
|
|
289
|
-
: nodeType.version;
|
|
290
|
-
const relatedTriggerTag = (0, n8n_workflow_1.isTriggerNodeType)(relatedId) ? ' [TRIGGER]' : '';
|
|
291
|
-
const relatedBasicInfo = `- ${relatedId}${relatedTriggerTag} [RELATED]\n Display Name: ${nodeType.displayName}\n Version: ${version}\n Description: ${nodeType.description}`;
|
|
292
|
-
const relatedBuilderHint = formatBuilderHint(nodeTypeParser, relatedId, version);
|
|
293
|
-
const relatedDiscInfo = getDiscriminatorInfo(nodeTypeParser, relatedId, version);
|
|
294
|
-
const relatedDiscStr = formatDiscriminatorInfo(relatedDiscInfo, relatedId);
|
|
295
|
-
const relatedParts = [relatedBasicInfo];
|
|
296
|
-
if (relatedBuilderHint)
|
|
297
|
-
relatedParts.push(relatedBuilderHint);
|
|
298
|
-
if (relatedDiscStr)
|
|
299
|
-
relatedParts.push(relatedDiscStr);
|
|
300
|
-
allNodeLines.push(relatedParts.join('\n'));
|
|
301
|
-
shownNodeIds.add(relatedId);
|
|
302
|
-
totalRelatedCount++;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
268
|
+
else {
|
|
269
|
+
const relatedNodeIds = collectAllRelatedNodeIds(nodeTypeParser, [{ id: node.id, version: node.version }], shownNodeIds);
|
|
307
270
|
if (discStr)
|
|
308
271
|
parts.push(discStr);
|
|
309
272
|
allNodeLines.push(parts.join('\n'));
|
|
273
|
+
for (const relatedId of relatedNodeIds) {
|
|
274
|
+
if (nodeFilter && !nodeFilter(relatedId))
|
|
275
|
+
continue;
|
|
276
|
+
const nodeType = nodeTypeParser.getLeanNodeType(relatedId);
|
|
277
|
+
if (nodeType) {
|
|
278
|
+
const version = Array.isArray(nodeType.version)
|
|
279
|
+
? nodeType.version[nodeType.version.length - 1]
|
|
280
|
+
: nodeType.version;
|
|
281
|
+
const relatedTriggerTag = (0, n8n_workflow_1.isTriggerNodeType)(relatedId) ? ' [TRIGGER]' : '';
|
|
282
|
+
const relatedBasicInfo = `- ${relatedId}${relatedTriggerTag} [RELATED]\n Display Name: ${nodeType.displayName}\n Version: ${version}\n Description: ${nodeType.description}`;
|
|
283
|
+
const relatedBuilderHint = formatBuilderHint(nodeTypeParser, relatedId, version);
|
|
284
|
+
const relatedDiscInfo = getDiscriminatorInfo(nodeTypeParser, relatedId, version);
|
|
285
|
+
const relatedDiscStr = formatDiscriminatorInfo(relatedDiscInfo, relatedId);
|
|
286
|
+
const relatedParts = [relatedBasicInfo];
|
|
287
|
+
if (relatedBuilderHint)
|
|
288
|
+
relatedParts.push(relatedBuilderHint);
|
|
289
|
+
if (relatedDiscStr)
|
|
290
|
+
relatedParts.push(relatedDiscStr);
|
|
291
|
+
allNodeLines.push(relatedParts.join('\n'));
|
|
292
|
+
shownNodeIds.add(relatedId);
|
|
293
|
+
totalRelatedCount++;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
continue;
|
|
310
297
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
hasResults: true,
|
|
315
|
-
};
|
|
316
|
-
}
|
|
317
|
-
function searchCodeBuilderNodes(nodeTypeParser, queries, options) {
|
|
318
|
-
const { nodeFilter } = options ?? {};
|
|
319
|
-
const searchResults = queries.map((query) => ({
|
|
320
|
-
query,
|
|
321
|
-
...searchForQuery(nodeTypeParser, query, nodeFilter),
|
|
322
|
-
}));
|
|
323
|
-
return {
|
|
324
|
-
results: searchResults.map(({ result }) => result).join('\n\n---\n\n'),
|
|
325
|
-
queriesWithNoResults: searchResults
|
|
326
|
-
.filter(({ hasResults }) => !hasResults)
|
|
327
|
-
.map(({ query }) => query),
|
|
328
|
-
};
|
|
298
|
+
if (discStr)
|
|
299
|
+
parts.push(discStr);
|
|
300
|
+
allNodeLines.push(parts.join('\n'));
|
|
329
301
|
}
|
|
330
|
-
});
|
|
302
|
+
const countSuffix = totalRelatedCount > 0 ? ` (+ ${totalRelatedCount} related)` : '';
|
|
303
|
+
return {
|
|
304
|
+
result: `## "${query}"\nFound ${results.length} nodes${countSuffix}:\n\n${allNodeLines.join('\n\n')}`,
|
|
305
|
+
hasResults: true,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
function searchCodeBuilderNodes(nodeTypeParser, queries, options) {
|
|
309
|
+
const { nodeFilter } = options ?? {};
|
|
310
|
+
const searchResults = queries.map((query) => ({
|
|
311
|
+
query,
|
|
312
|
+
...searchForQuery(nodeTypeParser, query, nodeFilter),
|
|
313
|
+
}));
|
|
314
|
+
return {
|
|
315
|
+
results: searchResults.map(({ result }) => result).join('\n\n---\n\n'),
|
|
316
|
+
queriesWithNoResults: searchResults
|
|
317
|
+
.filter(({ hasResults }) => !hasResults)
|
|
318
|
+
.map(({ query }) => query),
|
|
319
|
+
};
|
|
320
|
+
}
|
|
331
321
|
//# sourceMappingURL=search.js.map
|