@n8n/instance-ai 1.4.1 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/instance-agent.js +0 -1
- package/dist/agent/instance-agent.js.map +1 -1
- package/dist/agent/sub-agent-debriefing.d.ts +2 -2
- package/dist/agent/system-prompt.js +36 -14
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/constants/model-settings.d.ts +3 -0
- package/dist/constants/model-settings.js +7 -0
- package/dist/constants/model-settings.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +6 -0
- package/dist/planned-tasks/planned-task-permissions.d.ts +2 -0
- package/dist/planned-tasks/planned-task-permissions.js +8 -2
- package/dist/planned-tasks/planned-task-permissions.js.map +1 -1
- package/dist/planned-tasks/planned-task-service.d.ts +14 -1
- package/dist/planned-tasks/planned-task-service.js +138 -2
- package/dist/planned-tasks/planned-task-service.js.map +1 -1
- package/dist/runtime/background-task-manager.d.ts +25 -1
- package/dist/runtime/background-task-manager.js +66 -2
- package/dist/runtime/background-task-manager.js.map +1 -1
- package/dist/runtime/builder-sandbox-session-registry.d.ts +45 -0
- package/dist/runtime/builder-sandbox-session-registry.js +159 -0
- package/dist/runtime/builder-sandbox-session-registry.js.map +1 -0
- package/dist/runtime/run-state-registry.d.ts +7 -4
- package/dist/runtime/run-state-registry.js +9 -0
- package/dist/runtime/run-state-registry.js.map +1 -1
- package/dist/storage/planned-task-storage.js +2 -1
- package/dist/storage/planned-task-storage.js.map +1 -1
- package/dist/storage/workflow-loop-storage.d.ts +292 -12
- package/dist/stream/consume-with-hitl.d.ts +1 -0
- package/dist/stream/consume-with-hitl.js +1 -0
- package/dist/stream/consume-with-hitl.js.map +1 -1
- package/dist/tools/data-tables.tool.js +60 -22
- package/dist/tools/data-tables.tool.js.map +1 -1
- package/dist/tools/executions.tool.js +4 -1
- package/dist/tools/executions.tool.js.map +1 -1
- package/dist/tools/index.d.ts +1 -2
- package/dist/tools/index.js +2 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/orchestration/add-plan-item.tool.js +3 -1
- package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -1
- package/dist/tools/orchestration/blueprint-accumulator.d.ts +4 -1
- package/dist/tools/orchestration/blueprint-accumulator.js +28 -0
- package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -1
- package/dist/tools/orchestration/blueprint.schema.d.ts +60 -15
- package/dist/tools/orchestration/blueprint.schema.js +15 -1
- package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.prompt.js +41 -12
- package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
- package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +51 -3
- package/dist/tools/orchestration/build-workflow-agent.tool.js +837 -272
- package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/builder-memory-compaction.d.ts +38 -0
- package/dist/tools/orchestration/builder-memory-compaction.js +146 -0
- package/dist/tools/orchestration/builder-memory-compaction.js.map +1 -0
- package/dist/tools/orchestration/complete-checkpoint.tool.d.ts +2 -0
- package/dist/tools/orchestration/complete-checkpoint.tool.js +76 -0
- package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -0
- package/dist/tools/orchestration/data-table-agent.tool.js +33 -17
- package/dist/tools/orchestration/data-table-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/delegate.tool.js +32 -16
- package/dist/tools/orchestration/delegate.tool.js.map +1 -1
- package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -1
- package/dist/tools/orchestration/plan-agent-prompt.js +6 -0
- package/dist/tools/orchestration/plan-agent-prompt.js.map +1 -1
- package/dist/tools/orchestration/plan-with-agent.tool.d.ts +8 -0
- package/dist/tools/orchestration/plan-with-agent.tool.js +43 -12
- package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/plan.tool.js +17 -1
- package/dist/tools/orchestration/plan.tool.js.map +1 -1
- package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +40 -2
- package/dist/tools/orchestration/report-verification-verdict.tool.js +85 -6
- package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
- package/dist/tools/orchestration/research-with-agent.tool.js +32 -16
- package/dist/tools/orchestration/research-with-agent.tool.js.map +1 -1
- package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +8 -2
- package/dist/tools/orchestration/verify-built-workflow.tool.js +476 -6
- package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
- package/dist/tools/research.tool.js +2 -2
- package/dist/tools/research.tool.js.map +1 -1
- package/dist/tools/templates.tool.js +5 -90
- package/dist/tools/templates.tool.js.map +1 -1
- package/dist/tools/web-research/sanitize-web-content.d.ts +0 -1
- package/dist/tools/web-research/sanitize-web-content.js +0 -9
- package/dist/tools/web-research/sanitize-web-content.js.map +1 -1
- package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +2 -2
- package/dist/tools/workflows/build-workflow.tool.d.ts +2 -2
- package/dist/tools/workflows/build-workflow.tool.js +3 -1
- package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
- package/dist/tools/workflows/materialize-node-type.tool.d.ts +8 -8
- package/dist/tools/workflows/submit-workflow-identity.d.ts +23 -1
- package/dist/tools/workflows/submit-workflow-identity.js +92 -5
- package/dist/tools/workflows/submit-workflow-identity.js.map +1 -1
- package/dist/tools/workflows/submit-workflow.tool.d.ts +48 -3
- package/dist/tools/workflows/submit-workflow.tool.js +81 -11
- package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
- package/dist/tracing/langsmith-tracing.js +8 -3
- package/dist/tracing/langsmith-tracing.js.map +1 -1
- package/dist/tracing/trace-replay.d.ts +3 -0
- package/dist/tracing/trace-replay.js +65 -0
- package/dist/tracing/trace-replay.js.map +1 -1
- package/dist/types.d.ts +79 -12
- package/dist/workflow-builder/parse-validate.d.ts +5 -1
- package/dist/workflow-builder/parse-validate.js +4 -3
- package/dist/workflow-builder/parse-validate.js.map +1 -1
- package/dist/workflow-loop/guidance.js +8 -2
- package/dist/workflow-loop/guidance.js.map +1 -1
- package/dist/workflow-loop/index.d.ts +3 -2
- package/dist/workflow-loop/index.js +9 -1
- package/dist/workflow-loop/index.js.map +1 -1
- package/dist/workflow-loop/remediation.d.ts +13 -0
- package/dist/workflow-loop/remediation.js +36 -0
- package/dist/workflow-loop/remediation.js.map +1 -0
- package/dist/workflow-loop/runtime.js +7 -0
- package/dist/workflow-loop/runtime.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-controller.d.ts +1 -1
- package/dist/workflow-loop/workflow-loop-controller.js +196 -29
- package/dist/workflow-loop/workflow-loop-controller.js.map +1 -1
- package/dist/workflow-loop/workflow-loop-state.d.ts +338 -8
- package/dist/workflow-loop/workflow-loop-state.js +44 -1
- package/dist/workflow-loop/workflow-loop-state.js.map +1 -1
- package/dist/workflow-loop/workflow-task-service.d.ts +2 -1
- package/dist/workflow-loop/workflow-task-service.js +4 -0
- package/dist/workflow-loop/workflow-task-service.js.map +1 -1
- package/dist/workspace/builder-sandbox-factory.d.ts +3 -2
- package/dist/workspace/builder-sandbox-factory.js +74 -27
- package/dist/workspace/builder-sandbox-factory.js.map +1 -1
- package/dist/workspace/create-workspace.d.ts +2 -0
- package/dist/workspace/create-workspace.js.map +1 -1
- package/dist/workspace/sandbox-setup.js +36 -8
- package/dist/workspace/sandbox-setup.js.map +1 -1
- package/dist/workspace/snapshot-manager.d.ts +14 -2
- package/dist/workspace/snapshot-manager.js +57 -1
- package/dist/workspace/snapshot-manager.js.map +1 -1
- package/package.json +13 -7
- package/dist/tools/templates/template-api.d.ts +0 -21
- package/dist/tools/templates/template-api.js +0 -104
- package/dist/tools/templates/template-api.js.map +0 -1
- package/dist/tools/templates/types.d.ts +0 -52
- package/dist/tools/templates/types.js +0 -37
- package/dist/tools/templates/types.js.map +0 -1
- package/dist/tools/utils/mermaid.utils.d.ts +0 -15
- package/dist/tools/utils/mermaid.utils.js +0 -622
- package/dist/tools/utils/mermaid.utils.js.map +0 -1
- package/dist/tools/utils/node-configuration.utils.d.ts +0 -6
- package/dist/tools/utils/node-configuration.utils.js +0 -77
- package/dist/tools/utils/node-configuration.utils.js.map +0 -1
|
@@ -6,90 +6,14 @@ const zod_1 = require("zod");
|
|
|
6
6
|
const sanitize_mcp_schemas_1 = require("../agent/sanitize-mcp-schemas");
|
|
7
7
|
const index_1 = require("./best-practices/index");
|
|
8
8
|
const techniques_1 = require("./best-practices/techniques");
|
|
9
|
-
const
|
|
10
|
-
const types_1 = require("./templates/types");
|
|
11
|
-
const mermaid_utils_1 = require("./utils/mermaid.utils");
|
|
12
|
-
const node_configuration_utils_1 = require("./utils/node-configuration.utils");
|
|
13
|
-
const searchStructuresAction = zod_1.z.object({
|
|
14
|
-
action: zod_1.z
|
|
15
|
-
.literal('search-structures')
|
|
16
|
-
.describe('Search templates and return mermaid diagrams showing workflow structure'),
|
|
17
|
-
search: zod_1.z.string().optional().describe('Free-text search query for templates'),
|
|
18
|
-
category: zod_1.z.enum(types_1.categories).optional().describe('Filter by template category'),
|
|
19
|
-
rows: zod_1.z
|
|
20
|
-
.number()
|
|
21
|
-
.min(1)
|
|
22
|
-
.max(10)
|
|
23
|
-
.optional()
|
|
24
|
-
.describe('Number of templates to return (default: 5, max: 10)'),
|
|
25
|
-
});
|
|
26
|
-
const searchParametersAction = zod_1.z.object({
|
|
27
|
-
action: zod_1.z
|
|
28
|
-
.literal('search-parameters')
|
|
29
|
-
.describe('Search templates and return node parameter configurations'),
|
|
30
|
-
search: zod_1.z.string().optional().describe('Free-text search query for templates'),
|
|
31
|
-
category: zod_1.z.enum(types_1.categories).optional().describe('Filter by template category'),
|
|
32
|
-
rows: zod_1.z
|
|
33
|
-
.number()
|
|
34
|
-
.min(1)
|
|
35
|
-
.max(10)
|
|
36
|
-
.optional()
|
|
37
|
-
.describe('Number of templates to return (default: 5, max: 10)'),
|
|
38
|
-
nodeType: zod_1.z
|
|
39
|
-
.string()
|
|
40
|
-
.optional()
|
|
41
|
-
.describe('Filter to show configurations for a specific node type only (e.g. "n8n-nodes-base.telegram")'),
|
|
42
|
-
});
|
|
43
|
-
const bestPracticesAction = zod_1.z.object({
|
|
9
|
+
const inputSchema = (0, sanitize_mcp_schemas_1.sanitizeInputSchema)(zod_1.z.object({
|
|
44
10
|
action: zod_1.z
|
|
45
11
|
.literal('best-practices')
|
|
46
12
|
.describe('Get workflow building best practices for a specific technique'),
|
|
47
13
|
technique: zod_1.z
|
|
48
14
|
.string()
|
|
49
15
|
.describe('The workflow technique to get guidance for (e.g. "chatbot", "scheduling", "triage"). Pass "list" to see all available techniques.'),
|
|
50
|
-
});
|
|
51
|
-
const inputSchema = (0, sanitize_mcp_schemas_1.sanitizeInputSchema)(zod_1.z.discriminatedUnion('action', [
|
|
52
|
-
searchStructuresAction,
|
|
53
|
-
searchParametersAction,
|
|
54
|
-
bestPracticesAction,
|
|
55
|
-
]));
|
|
56
|
-
async function handleSearchStructures(input) {
|
|
57
|
-
const result = await (0, template_api_1.fetchWorkflowsFromTemplates)({
|
|
58
|
-
search: input.search,
|
|
59
|
-
category: input.category,
|
|
60
|
-
rows: input.rows,
|
|
61
|
-
});
|
|
62
|
-
const examples = result.workflows.map((wf) => ({
|
|
63
|
-
name: wf.name,
|
|
64
|
-
description: wf.description,
|
|
65
|
-
mermaid: (0, mermaid_utils_1.mermaidStringify)(wf, { includeNodeParameters: false }),
|
|
66
|
-
}));
|
|
67
|
-
return {
|
|
68
|
-
examples,
|
|
69
|
-
totalResults: result.totalFound,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
async function handleSearchParameters(input) {
|
|
73
|
-
const result = await (0, template_api_1.fetchWorkflowsFromTemplates)({
|
|
74
|
-
search: input.search,
|
|
75
|
-
category: input.category,
|
|
76
|
-
rows: input.rows,
|
|
77
|
-
});
|
|
78
|
-
const allConfigurations = (0, node_configuration_utils_1.collectNodeConfigurationsFromWorkflows)(result.workflows);
|
|
79
|
-
let filteredConfigurations = allConfigurations;
|
|
80
|
-
if (input.nodeType) {
|
|
81
|
-
const matching = allConfigurations[input.nodeType];
|
|
82
|
-
filteredConfigurations = matching ? { [input.nodeType]: matching } : {};
|
|
83
|
-
}
|
|
84
|
-
const nodeTypes = Object.keys(filteredConfigurations);
|
|
85
|
-
const formattedParts = nodeTypes.map((nt) => (0, node_configuration_utils_1.formatNodeConfigurationExamples)(nt, filteredConfigurations[nt], undefined, 3));
|
|
86
|
-
return {
|
|
87
|
-
configurations: filteredConfigurations,
|
|
88
|
-
nodeTypes,
|
|
89
|
-
totalTemplatesSearched: result.totalFound,
|
|
90
|
-
formatted: formattedParts.join('\n\n'),
|
|
91
|
-
};
|
|
92
|
-
}
|
|
16
|
+
}));
|
|
93
17
|
async function handleBestPractices(input) {
|
|
94
18
|
const { technique } = input;
|
|
95
19
|
if (technique === 'list') {
|
|
@@ -110,7 +34,7 @@ async function handleBestPractices(input) {
|
|
|
110
34
|
if (description) {
|
|
111
35
|
return {
|
|
112
36
|
technique,
|
|
113
|
-
message: `Technique "${technique}" (${description})
|
|
37
|
+
message: `Technique "${technique}" (${description}) does not have detailed documentation yet — proceed with general n8n knowledge.`,
|
|
114
38
|
};
|
|
115
39
|
}
|
|
116
40
|
return {
|
|
@@ -127,18 +51,9 @@ async function handleBestPractices(input) {
|
|
|
127
51
|
function createTemplatesTool() {
|
|
128
52
|
return (0, tools_1.createTool)({
|
|
129
53
|
id: 'templates',
|
|
130
|
-
description: '
|
|
54
|
+
description: 'Get best practices guidance for n8n workflow techniques.',
|
|
131
55
|
inputSchema,
|
|
132
|
-
execute:
|
|
133
|
-
switch (input.action) {
|
|
134
|
-
case 'search-structures':
|
|
135
|
-
return await handleSearchStructures(input);
|
|
136
|
-
case 'search-parameters':
|
|
137
|
-
return await handleSearchParameters(input);
|
|
138
|
-
case 'best-practices':
|
|
139
|
-
return await handleBestPractices(input);
|
|
140
|
-
}
|
|
141
|
-
},
|
|
56
|
+
execute: handleBestPractices,
|
|
142
57
|
});
|
|
143
58
|
}
|
|
144
59
|
//# sourceMappingURL=templates.tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.tool.js","sourceRoot":"","sources":["../../src/tools/templates.tool.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"templates.tool.js","sourceRoot":"","sources":["../../src/tools/templates.tool.ts"],"names":[],"mappings":";;AAqEA,kDAOC;AAzED,8CAAgD;AAChD,6BAAwB;AAExB,wEAAoE;AACpE,kDAAuD;AACvD,4DAA+F;AAE/F,MAAM,WAAW,GAAG,IAAA,0CAAmB,EACtC,OAAC,CAAC,MAAM,CAAC;IACR,MAAM,EAAE,OAAC;SACP,OAAO,CAAC,gBAAgB,CAAC;SACzB,QAAQ,CAAC,+DAA+D,CAAC;IAC3E,SAAS,EAAE,OAAC;SACV,MAAM,EAAE;SACR,QAAQ,CACR,mIAAmI,CACnI;CACF,CAAC,CACF,CAAC;AAKF,KAAK,UAAU,mBAAmB,CAAC,KAAY;IAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAG5B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,iCAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9F,SAAS,EAAE,IAAI;YACf,WAAW;YACX,gBAAgB,EAAE,qBAAa,CAAC,IAA6B,CAAC,KAAK,SAAS;SAC5E,CAAC,CAAC,CAAC;QAEJ,OAAO;YACN,SAAS,EAAE,MAAM;YACjB,mBAAmB;YACnB,OAAO,EAAE,SAAS,mBAAmB,CAAC,MAAM,gBAAgB,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,+BAA+B;SACvJ,CAAC;IACH,CAAC;IAGD,MAAM,QAAQ,GAAG,qBAAa,CAAC,SAAkC,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEf,MAAM,WAAW,GAAG,iCAAoB,CAAC,SAAkC,CAAC,CAAC;QAC7E,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO;gBACN,SAAS;gBACT,OAAO,EAAE,cAAc,SAAS,MAAM,WAAW,kFAAkF;aACnI,CAAC;QACH,CAAC;QAED,OAAO;YACN,SAAS;YACT,OAAO,EAAE,sBAAsB,SAAS,0DAA0D;SAClG,CAAC;IACH,CAAC;IAED,OAAO;QACN,SAAS;QACT,aAAa,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,qCAAqC,SAAS,2BAA2B;KAClF,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB;IAClC,OAAO,IAAA,kBAAU,EAAC;QACjB,EAAE,EAAE,WAAW;QACf,WAAW,EAAE,0DAA0D;QACvE,WAAW;QACX,OAAO,EAAE,mBAAmB;KAC5B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.sanitizeWebContent = sanitizeWebContent;
|
|
4
|
-
exports.wrapInBoundaryTags = wrapInBoundaryTags;
|
|
5
4
|
exports.wrapUntrustedData = wrapUntrustedData;
|
|
6
5
|
function stripHtmlComments(text) {
|
|
7
6
|
return text.replace(/<!--[\s\S]*?-->/g, '');
|
|
@@ -13,14 +12,6 @@ function stripInvisibleUnicode(text) {
|
|
|
13
12
|
function sanitizeWebContent(content) {
|
|
14
13
|
return stripInvisibleUnicode(stripHtmlComments(content));
|
|
15
14
|
}
|
|
16
|
-
function wrapInBoundaryTags(content, url) {
|
|
17
|
-
const safeUrl = url
|
|
18
|
-
.replace(/&/g, '&')
|
|
19
|
-
.replace(/"/g, '"')
|
|
20
|
-
.replace(/</g, '<')
|
|
21
|
-
.replace(/>/g, '>');
|
|
22
|
-
return `<web_content source="external" url="${safeUrl}">\n${content}\n</web_content>`;
|
|
23
|
-
}
|
|
24
15
|
function wrapUntrustedData(content, source, label) {
|
|
25
16
|
const safeSource = source
|
|
26
17
|
.replace(/&/g, '&')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize-web-content.js","sourceRoot":"","sources":["../../../src/tools/web-research/sanitize-web-content.ts"],"names":[],"mappings":";;AA+BA,gDAEC;
|
|
1
|
+
{"version":3,"file":"sanitize-web-content.js","sourceRoot":"","sources":["../../../src/tools/web-research/sanitize-web-content.ts"],"names":[],"mappings":";;AA+BA,gDAEC;AAaD,8CAYC;AA/CD,SAAS,iBAAiB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AASD,MAAM,yBAAyB,GAE9B,iIAAiI,CAAC;AAEnI,SAAS,qBAAqB,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAGD,SAAgB,kBAAkB,CAAC,OAAe;IACjD,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC;AAaD,SAAgB,iBAAiB,CAAC,OAAe,EAAE,MAAc,EAAE,KAAc;IAChF,MAAM,UAAU,GAAG,MAAM;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxB,MAAM,SAAS,GAAG,KAAK;QACtB,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG;QAChH,CAAC,CAAC,EAAE,CAAC;IAEN,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;IAClF,OAAO,2BAA2B,UAAU,IAAI,SAAS,MAAM,WAAW,qBAAqB,CAAC;AACjG,CAAC"}
|
|
@@ -5,12 +5,12 @@ export declare const applyWorkflowCredentialsInputSchema: z.ZodObject<{
|
|
|
5
5
|
workflowId: z.ZodString;
|
|
6
6
|
credentials: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
7
7
|
}, "strip", z.ZodTypeAny, {
|
|
8
|
-
workItemId: string;
|
|
9
8
|
workflowId: string;
|
|
9
|
+
workItemId: string;
|
|
10
10
|
credentials: Record<string, string>;
|
|
11
11
|
}, {
|
|
12
|
-
workItemId: string;
|
|
13
12
|
workflowId: string;
|
|
13
|
+
workItemId: string;
|
|
14
14
|
credentials: Record<string, string>;
|
|
15
15
|
}>;
|
|
16
16
|
export declare function createApplyWorkflowCredentialsTool(context: OrchestrationContext): import("@mastra/core/tools").Tool<InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, import("@mastra/core/tools").ToolExecutionContext<InferPublicSchema<T>, InferPublicSchema<T>, unknown>, "apply-workflow-credentials", unknown>;
|
|
@@ -19,18 +19,18 @@ export declare const buildWorkflowInputSchema: z.ZodObject<{
|
|
|
19
19
|
projectId: z.ZodOptional<z.ZodString>;
|
|
20
20
|
name: z.ZodOptional<z.ZodString>;
|
|
21
21
|
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
name?: string | undefined;
|
|
22
23
|
code?: string | undefined;
|
|
23
24
|
workflowId?: string | undefined;
|
|
24
|
-
name?: string | undefined;
|
|
25
25
|
projectId?: string | undefined;
|
|
26
26
|
patches?: {
|
|
27
27
|
old_str: string;
|
|
28
28
|
new_str: string;
|
|
29
29
|
}[] | undefined;
|
|
30
30
|
}, {
|
|
31
|
+
name?: string | undefined;
|
|
31
32
|
code?: string | undefined;
|
|
32
33
|
workflowId?: string | undefined;
|
|
33
|
-
name?: string | undefined;
|
|
34
34
|
projectId?: string | undefined;
|
|
35
35
|
patches?: unknown;
|
|
36
36
|
}>;
|
|
@@ -107,7 +107,9 @@ function createBuildWorkflowTool(context) {
|
|
|
107
107
|
lastCode = finalCode;
|
|
108
108
|
let result;
|
|
109
109
|
try {
|
|
110
|
-
result = (0, workflow_builder_1.parseAndValidate)(finalCode
|
|
110
|
+
result = (0, workflow_builder_1.parseAndValidate)(finalCode, {
|
|
111
|
+
nodeTypesProvider: context.nodeTypesProvider,
|
|
112
|
+
});
|
|
111
113
|
}
|
|
112
114
|
catch (error) {
|
|
113
115
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-workflow.tool.js","sourceRoot":"","sources":["../../../src/tools/workflows/build-workflow.tool.ts"],"names":[],"mappings":";;;AAiDA,
|
|
1
|
+
{"version":3,"file":"build-workflow.tool.js","sourceRoot":"","sources":["../../../src/tools/workflows/build-workflow.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,31 +11,31 @@ export declare const materializeNodeTypeInputSchema: z.ZodObject<{
|
|
|
11
11
|
}, "strip", z.ZodTypeAny, {
|
|
12
12
|
nodeId: string;
|
|
13
13
|
version?: string | undefined;
|
|
14
|
-
resource?: string | undefined;
|
|
15
|
-
mode?: string | undefined;
|
|
16
14
|
operation?: string | undefined;
|
|
15
|
+
mode?: string | undefined;
|
|
16
|
+
resource?: string | undefined;
|
|
17
17
|
}, {
|
|
18
18
|
nodeId: string;
|
|
19
19
|
version?: string | undefined;
|
|
20
|
-
resource?: string | undefined;
|
|
21
|
-
mode?: string | undefined;
|
|
22
20
|
operation?: string | undefined;
|
|
21
|
+
mode?: string | undefined;
|
|
22
|
+
resource?: string | undefined;
|
|
23
23
|
}>]>, "many">;
|
|
24
24
|
}, "strip", z.ZodTypeAny, {
|
|
25
25
|
nodeIds: (string | {
|
|
26
26
|
nodeId: string;
|
|
27
27
|
version?: string | undefined;
|
|
28
|
-
resource?: string | undefined;
|
|
29
|
-
mode?: string | undefined;
|
|
30
28
|
operation?: string | undefined;
|
|
29
|
+
mode?: string | undefined;
|
|
30
|
+
resource?: string | undefined;
|
|
31
31
|
})[];
|
|
32
32
|
}, {
|
|
33
33
|
nodeIds: (string | {
|
|
34
34
|
nodeId: string;
|
|
35
35
|
version?: string | undefined;
|
|
36
|
-
resource?: string | undefined;
|
|
37
|
-
mode?: string | undefined;
|
|
38
36
|
operation?: string | undefined;
|
|
37
|
+
mode?: string | undefined;
|
|
38
|
+
resource?: string | undefined;
|
|
39
39
|
})[];
|
|
40
40
|
}>;
|
|
41
41
|
export declare function createMaterializeNodeTypeTool(context: InstanceAiContext, workspace: Workspace): import("@mastra/core/tools").Tool<InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, import("@mastra/core/tools").ToolExecutionContext<InferPublicSchema<T>, InferPublicSchema<T>, unknown>, "materialize-node-type", unknown>;
|
|
@@ -2,12 +2,34 @@ import type { Workspace } from '@mastra/core/workspace';
|
|
|
2
2
|
import type { CredentialMap } from './resolve-credentials';
|
|
3
3
|
import { type SubmitWorkflowAttempt, type SubmitWorkflowInput, type SubmitWorkflowOutput } from './submit-workflow.tool';
|
|
4
4
|
import type { InstanceAiContext } from '../../types';
|
|
5
|
+
import type { RemediationMetadata, WorkflowLoopState } from '../../workflow-loop/workflow-loop-state';
|
|
5
6
|
export type SubmitExecute = (input: SubmitWorkflowInput) => Promise<SubmitWorkflowOutput>;
|
|
6
|
-
|
|
7
|
+
interface SubmitGuardOptions {
|
|
8
|
+
getWorkflowLoopState?: () => Promise<WorkflowLoopState | undefined>;
|
|
9
|
+
currentRunId?: string;
|
|
10
|
+
onGuardFired?: (event: {
|
|
11
|
+
workflowId?: string;
|
|
12
|
+
category: RemediationMetadata['category'];
|
|
13
|
+
attemptCount?: number;
|
|
14
|
+
reason?: string;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
17
|
+
interface SubmitBudgetTracker {
|
|
18
|
+
recordAttempt(attempt: SubmitWorkflowAttempt): SubmitWorkflowAttempt;
|
|
19
|
+
applyToOutput(path: string, output: SubmitWorkflowOutput): SubmitWorkflowOutput;
|
|
20
|
+
}
|
|
21
|
+
export declare function createPreSaveBudgetTracker(): SubmitBudgetTracker;
|
|
22
|
+
export declare function wrapSubmitExecuteWithIdentity(underlying: SubmitExecute, resolvePath: (rawFilePath: string | undefined) => string, options?: SubmitGuardOptions & {
|
|
23
|
+
budgetTracker?: SubmitBudgetTracker;
|
|
24
|
+
}): SubmitExecute;
|
|
7
25
|
export declare function createIdentityEnforcedSubmitWorkflowTool(args: {
|
|
8
26
|
context: InstanceAiContext;
|
|
9
27
|
workspace: Workspace;
|
|
10
28
|
credentialMap?: CredentialMap;
|
|
11
29
|
onAttempt: (attempt: SubmitWorkflowAttempt) => Promise<void> | void;
|
|
12
30
|
root: string;
|
|
31
|
+
currentRunId?: string;
|
|
32
|
+
getWorkflowLoopState?: () => Promise<WorkflowLoopState | undefined>;
|
|
33
|
+
onGuardFired?: SubmitGuardOptions['onGuardFired'];
|
|
13
34
|
}): import("@mastra/core/tools").Tool<InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, import("@mastra/core/tools").ToolExecutionContext<InferPublicSchema<T>, InferPublicSchema<T>, unknown>, "submit-workflow", unknown>;
|
|
35
|
+
export {};
|
|
@@ -1,13 +1,82 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPreSaveBudgetTracker = createPreSaveBudgetTracker;
|
|
3
4
|
exports.wrapSubmitExecuteWithIdentity = wrapSubmitExecuteWithIdentity;
|
|
4
5
|
exports.createIdentityEnforcedSubmitWorkflowTool = createIdentityEnforcedSubmitWorkflowTool;
|
|
5
6
|
const tools_1 = require("@mastra/core/tools");
|
|
6
7
|
const submit_workflow_tool_1 = require("./submit-workflow.tool");
|
|
7
|
-
|
|
8
|
+
const remediation_1 = require("../../workflow-loop/remediation");
|
|
9
|
+
function createPreSaveBudgetTracker() {
|
|
10
|
+
const failuresByPath = new Map();
|
|
11
|
+
function blockRemediation(attemptCount) {
|
|
12
|
+
return (0, remediation_1.createRemediation)({
|
|
13
|
+
category: 'blocked',
|
|
14
|
+
shouldEdit: false,
|
|
15
|
+
reason: 'pre_save_submit_budget_exhausted',
|
|
16
|
+
attemptCount,
|
|
17
|
+
remainingSubmitFixes: 0,
|
|
18
|
+
guidance: 'The workflow could not be saved after three submit attempts. Stop editing and explain the blocker to the user.',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
recordAttempt(attempt) {
|
|
23
|
+
if (attempt.success) {
|
|
24
|
+
failuresByPath.delete(attempt.filePath);
|
|
25
|
+
return attempt;
|
|
26
|
+
}
|
|
27
|
+
const attemptCount = (failuresByPath.get(attempt.filePath) ?? 0) + 1;
|
|
28
|
+
failuresByPath.set(attempt.filePath, attemptCount);
|
|
29
|
+
if (attemptCount < remediation_1.MAX_PRE_SAVE_SUBMIT_FAILURES)
|
|
30
|
+
return attempt;
|
|
31
|
+
return {
|
|
32
|
+
...attempt,
|
|
33
|
+
remediation: blockRemediation(attemptCount),
|
|
34
|
+
errors: [
|
|
35
|
+
...(attempt.errors ?? []),
|
|
36
|
+
'Submit remediation budget exhausted for this workflow file.',
|
|
37
|
+
],
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
applyToOutput(path, output) {
|
|
41
|
+
if (output.success)
|
|
42
|
+
return output;
|
|
43
|
+
const attemptCount = failuresByPath.get(path) ?? 0;
|
|
44
|
+
if (attemptCount < remediation_1.MAX_PRE_SAVE_SUBMIT_FAILURES)
|
|
45
|
+
return output;
|
|
46
|
+
return {
|
|
47
|
+
...output,
|
|
48
|
+
remediation: blockRemediation(attemptCount),
|
|
49
|
+
errors: [
|
|
50
|
+
...(output.errors ?? []),
|
|
51
|
+
'Submit remediation budget exhausted for this workflow file.',
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function wrapSubmitExecuteWithIdentity(underlying, resolvePath, options = {}) {
|
|
8
58
|
const pending = new Map();
|
|
59
|
+
async function blockedByTerminalRemediation(workflowId) {
|
|
60
|
+
const terminalRemediation = (0, remediation_1.terminalRemediationFromState)(await options.getWorkflowLoopState?.(), options.currentRunId);
|
|
61
|
+
if (!terminalRemediation)
|
|
62
|
+
return undefined;
|
|
63
|
+
options.onGuardFired?.({
|
|
64
|
+
workflowId,
|
|
65
|
+
category: terminalRemediation.category,
|
|
66
|
+
attemptCount: terminalRemediation.attemptCount,
|
|
67
|
+
reason: terminalRemediation.reason,
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
success: false,
|
|
71
|
+
errors: [terminalRemediation.guidance],
|
|
72
|
+
remediation: terminalRemediation,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
9
75
|
return async (input) => {
|
|
10
76
|
const resolvedPath = resolvePath(input.filePath);
|
|
77
|
+
const terminalResult = await blockedByTerminalRemediation(input.workflowId);
|
|
78
|
+
if (terminalResult)
|
|
79
|
+
return terminalResult;
|
|
11
80
|
const existing = pending.get(resolvedPath);
|
|
12
81
|
if (existing) {
|
|
13
82
|
let boundId;
|
|
@@ -19,9 +88,19 @@ function wrapSubmitExecuteWithIdentity(underlying, resolvePath) {
|
|
|
19
88
|
return {
|
|
20
89
|
success: false,
|
|
21
90
|
errors: [`Previous submit-workflow for this file failed: ${message}`],
|
|
91
|
+
remediation: (0, remediation_1.createRemediation)({
|
|
92
|
+
category: 'code_fixable',
|
|
93
|
+
shouldEdit: true,
|
|
94
|
+
reason: 'previous_submit_failed',
|
|
95
|
+
guidance: 'The previous submit-workflow call for this file failed. Fix the workflow code and submit again.',
|
|
96
|
+
}),
|
|
22
97
|
};
|
|
23
98
|
}
|
|
24
|
-
|
|
99
|
+
const terminalAfterWait = await blockedByTerminalRemediation(boundId);
|
|
100
|
+
if (terminalAfterWait)
|
|
101
|
+
return terminalAfterWait;
|
|
102
|
+
const result = await underlying({ ...input, workflowId: boundId });
|
|
103
|
+
return options.budgetTracker?.applyToOutput(resolvedPath, result) ?? result;
|
|
25
104
|
}
|
|
26
105
|
let resolveFn;
|
|
27
106
|
let rejectFn;
|
|
@@ -40,7 +119,7 @@ function wrapSubmitExecuteWithIdentity(underlying, resolvePath) {
|
|
|
40
119
|
rejectFn?.(new Error(result.errors?.join(' ') ?? 'submit-workflow failed'));
|
|
41
120
|
pending.delete(resolvedPath);
|
|
42
121
|
}
|
|
43
|
-
return result;
|
|
122
|
+
return options.budgetTracker?.applyToOutput(resolvedPath, result) ?? result;
|
|
44
123
|
}
|
|
45
124
|
catch (error) {
|
|
46
125
|
rejectFn?.(error);
|
|
@@ -50,12 +129,20 @@ function wrapSubmitExecuteWithIdentity(underlying, resolvePath) {
|
|
|
50
129
|
};
|
|
51
130
|
}
|
|
52
131
|
function createIdentityEnforcedSubmitWorkflowTool(args) {
|
|
53
|
-
const
|
|
132
|
+
const budgetTracker = createPreSaveBudgetTracker();
|
|
133
|
+
const underlying = (0, submit_workflow_tool_1.createSubmitWorkflowTool)(args.context, args.workspace, args.credentialMap, async (attempt) => {
|
|
134
|
+
await args.onAttempt(budgetTracker.recordAttempt(attempt));
|
|
135
|
+
});
|
|
54
136
|
const underlyingExecute = underlying.execute;
|
|
55
137
|
if (!underlyingExecute) {
|
|
56
138
|
throw new Error('createSubmitWorkflowTool returned a tool without an execute handler');
|
|
57
139
|
}
|
|
58
|
-
const wrappedExecute = wrapSubmitExecuteWithIdentity(underlyingExecute, (rawFilePath) => (0, submit_workflow_tool_1.resolveSandboxWorkflowFilePath)(rawFilePath, args.root)
|
|
140
|
+
const wrappedExecute = wrapSubmitExecuteWithIdentity(underlyingExecute, (rawFilePath) => (0, submit_workflow_tool_1.resolveSandboxWorkflowFilePath)(rawFilePath, args.root), {
|
|
141
|
+
budgetTracker,
|
|
142
|
+
currentRunId: args.currentRunId,
|
|
143
|
+
getWorkflowLoopState: args.getWorkflowLoopState,
|
|
144
|
+
onGuardFired: args.onGuardFired,
|
|
145
|
+
});
|
|
59
146
|
return (0, tools_1.createTool)({
|
|
60
147
|
id: 'submit-workflow',
|
|
61
148
|
description: underlying.description ?? '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-workflow-identity.js","sourceRoot":"","sources":["../../../src/tools/workflows/submit-workflow-identity.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"submit-workflow-identity.js","sourceRoot":"","sources":["../../../src/tools/workflows/submit-workflow-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,25 @@ import type { WorkflowJSON } from '@n8n/workflow-sdk';
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { type CredentialMap } from './resolve-credentials';
|
|
5
5
|
import type { InstanceAiContext } from '../../types';
|
|
6
|
+
import type { RemediationMetadata } from '../../workflow-loop/workflow-loop-state';
|
|
6
7
|
export interface SubmitWorkflowAttempt {
|
|
7
8
|
filePath: string;
|
|
8
9
|
sourceHash: string;
|
|
9
10
|
success: boolean;
|
|
10
11
|
workflowId?: string;
|
|
11
|
-
|
|
12
|
+
triggerNodes?: Array<{
|
|
13
|
+
nodeName: string;
|
|
14
|
+
nodeType: string;
|
|
15
|
+
}>;
|
|
12
16
|
mockedNodeNames?: string[];
|
|
13
17
|
mockedCredentialTypes?: string[];
|
|
14
18
|
mockedCredentialsByNode?: Record<string, string[]>;
|
|
15
19
|
verificationPinData?: Record<string, Array<Record<string, unknown>>>;
|
|
16
20
|
hasUnresolvedPlaceholders?: boolean;
|
|
21
|
+
remediation?: RemediationMetadata;
|
|
17
22
|
errors?: string[];
|
|
18
23
|
}
|
|
24
|
+
export declare function isTriggerNodeType(nodeType: string | undefined): boolean;
|
|
19
25
|
export declare function ensureWebhookIds(json: WorkflowJSON, workflowId: string | undefined, ctx: InstanceAiContext): Promise<void>;
|
|
20
26
|
export { buildCredentialMap, resolveCredentials, type CredentialMap, type CredentialResolutionResult, } from './resolve-credentials';
|
|
21
27
|
export declare const submitWorkflowInputSchema: z.ZodObject<{
|
|
@@ -24,13 +30,13 @@ export declare const submitWorkflowInputSchema: z.ZodObject<{
|
|
|
24
30
|
projectId: z.ZodOptional<z.ZodString>;
|
|
25
31
|
name: z.ZodOptional<z.ZodString>;
|
|
26
32
|
}, "strip", z.ZodTypeAny, {
|
|
27
|
-
workflowId?: string | undefined;
|
|
28
33
|
name?: string | undefined;
|
|
34
|
+
workflowId?: string | undefined;
|
|
29
35
|
projectId?: string | undefined;
|
|
30
36
|
filePath?: string | undefined;
|
|
31
37
|
}, {
|
|
32
|
-
workflowId?: string | undefined;
|
|
33
38
|
name?: string | undefined;
|
|
39
|
+
workflowId?: string | undefined;
|
|
34
40
|
projectId?: string | undefined;
|
|
35
41
|
filePath?: string | undefined;
|
|
36
42
|
}>;
|
|
@@ -42,6 +48,28 @@ export declare const submitWorkflowOutputSchema: z.ZodObject<{
|
|
|
42
48
|
mockedCredentialTypes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
43
49
|
mockedCredentialsByNode: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
|
|
44
50
|
verificationPinData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>>;
|
|
51
|
+
remediation: z.ZodOptional<z.ZodObject<{
|
|
52
|
+
category: z.ZodEnum<["code_fixable", "needs_setup", "blocked"]>;
|
|
53
|
+
shouldEdit: z.ZodBoolean;
|
|
54
|
+
guidance: z.ZodString;
|
|
55
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
56
|
+
remainingSubmitFixes: z.ZodOptional<z.ZodNumber>;
|
|
57
|
+
attemptCount: z.ZodOptional<z.ZodNumber>;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
category: "blocked" | "code_fixable" | "needs_setup";
|
|
60
|
+
shouldEdit: boolean;
|
|
61
|
+
guidance: string;
|
|
62
|
+
reason?: string | undefined;
|
|
63
|
+
remainingSubmitFixes?: number | undefined;
|
|
64
|
+
attemptCount?: number | undefined;
|
|
65
|
+
}, {
|
|
66
|
+
category: "blocked" | "code_fixable" | "needs_setup";
|
|
67
|
+
shouldEdit: boolean;
|
|
68
|
+
guidance: string;
|
|
69
|
+
reason?: string | undefined;
|
|
70
|
+
remainingSubmitFixes?: number | undefined;
|
|
71
|
+
attemptCount?: number | undefined;
|
|
72
|
+
}>>;
|
|
45
73
|
errors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
46
74
|
warnings: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
47
75
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -51,6 +79,14 @@ export declare const submitWorkflowOutputSchema: z.ZodObject<{
|
|
|
51
79
|
mockedNodeNames?: string[] | undefined;
|
|
52
80
|
mockedCredentialsByNode?: Record<string, string[]> | undefined;
|
|
53
81
|
verificationPinData?: Record<string, Record<string, unknown>[]> | undefined;
|
|
82
|
+
remediation?: {
|
|
83
|
+
category: "blocked" | "code_fixable" | "needs_setup";
|
|
84
|
+
shouldEdit: boolean;
|
|
85
|
+
guidance: string;
|
|
86
|
+
reason?: string | undefined;
|
|
87
|
+
remainingSubmitFixes?: number | undefined;
|
|
88
|
+
attemptCount?: number | undefined;
|
|
89
|
+
} | undefined;
|
|
54
90
|
warnings?: string[] | undefined;
|
|
55
91
|
workflowName?: string | undefined;
|
|
56
92
|
errors?: string[] | undefined;
|
|
@@ -61,6 +97,14 @@ export declare const submitWorkflowOutputSchema: z.ZodObject<{
|
|
|
61
97
|
mockedNodeNames?: string[] | undefined;
|
|
62
98
|
mockedCredentialsByNode?: Record<string, string[]> | undefined;
|
|
63
99
|
verificationPinData?: Record<string, Record<string, unknown>[]> | undefined;
|
|
100
|
+
remediation?: {
|
|
101
|
+
category: "blocked" | "code_fixable" | "needs_setup";
|
|
102
|
+
shouldEdit: boolean;
|
|
103
|
+
guidance: string;
|
|
104
|
+
reason?: string | undefined;
|
|
105
|
+
remainingSubmitFixes?: number | undefined;
|
|
106
|
+
attemptCount?: number | undefined;
|
|
107
|
+
} | undefined;
|
|
64
108
|
warnings?: string[] | undefined;
|
|
65
109
|
workflowName?: string | undefined;
|
|
66
110
|
errors?: string[] | undefined;
|
|
@@ -68,4 +112,5 @@ export declare const submitWorkflowOutputSchema: z.ZodObject<{
|
|
|
68
112
|
export type SubmitWorkflowInput = z.infer<typeof submitWorkflowInputSchema>;
|
|
69
113
|
export type SubmitWorkflowOutput = z.infer<typeof submitWorkflowOutputSchema>;
|
|
70
114
|
export declare function resolveSandboxWorkflowFilePath(rawFilePath: string | undefined, root: string): string;
|
|
115
|
+
export declare function classifySubmitFailure(errors: string[], reason?: string): RemediationMetadata;
|
|
71
116
|
export declare function createSubmitWorkflowTool(context: InstanceAiContext, workspace: Workspace, credentialMap?: CredentialMap, onAttempt?: (attempt: SubmitWorkflowAttempt) => void | Promise<void>): import("@mastra/core/tools").Tool<InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, InferPublicSchema<T>, import("@mastra/core/tools").ToolExecutionContext<InferPublicSchema<T>, InferPublicSchema<T>, unknown>, "submit-workflow", unknown>;
|