@elizaos/plugin-workflow 2.0.0-beta.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/README.md +71 -0
- package/auto-enable.ts +18 -0
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +2 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/workflow.d.ts +23 -0
- package/dist/actions/workflow.d.ts.map +1 -0
- package/dist/actions/workflow.js +425 -0
- package/dist/actions/workflow.js.map +1 -0
- package/dist/data/defaultNodes.json +9887 -0
- package/dist/data/schemaIndex.json +1 -0
- package/dist/data/triggerSchemaIndex.json +1 -0
- package/dist/db/index.d.ts +2 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +2 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +588 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +59 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +126 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/automations-builder.d.ts +21 -0
- package/dist/lib/automations-builder.d.ts.map +1 -0
- package/dist/lib/automations-builder.js +557 -0
- package/dist/lib/automations-builder.js.map +1 -0
- package/dist/lib/automations-types.d.ts +153 -0
- package/dist/lib/automations-types.d.ts.map +1 -0
- package/dist/lib/automations-types.js +191 -0
- package/dist/lib/automations-types.js.map +1 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/legacy-task-migration.d.ts +20 -0
- package/dist/lib/legacy-task-migration.d.ts.map +1 -0
- package/dist/lib/legacy-task-migration.js +110 -0
- package/dist/lib/legacy-task-migration.js.map +1 -0
- package/dist/lib/legacy-text-trigger-migration.d.ts +18 -0
- package/dist/lib/legacy-text-trigger-migration.d.ts.map +1 -0
- package/dist/lib/legacy-text-trigger-migration.js +131 -0
- package/dist/lib/legacy-text-trigger-migration.js.map +1 -0
- package/dist/lib/workflow-clarification.d.ts +113 -0
- package/dist/lib/workflow-clarification.d.ts.map +1 -0
- package/dist/lib/workflow-clarification.js +425 -0
- package/dist/lib/workflow-clarification.js.map +1 -0
- package/dist/plugin-routes.d.ts +9 -0
- package/dist/plugin-routes.d.ts.map +1 -0
- package/dist/plugin-routes.js +147 -0
- package/dist/plugin-routes.js.map +1 -0
- package/dist/providers/activeWorkflows.d.ts +11 -0
- package/dist/providers/activeWorkflows.d.ts.map +1 -0
- package/dist/providers/activeWorkflows.js +72 -0
- package/dist/providers/activeWorkflows.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +4 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/pendingDraft.d.ts +9 -0
- package/dist/providers/pendingDraft.d.ts.map +1 -0
- package/dist/providers/pendingDraft.js +48 -0
- package/dist/providers/pendingDraft.js.map +1 -0
- package/dist/providers/workflowStatus.d.ts +3 -0
- package/dist/providers/workflowStatus.d.ts.map +1 -0
- package/dist/providers/workflowStatus.js +69 -0
- package/dist/providers/workflowStatus.js.map +1 -0
- package/dist/register-routes.d.ts +2 -0
- package/dist/register-routes.d.ts.map +1 -0
- package/dist/register-routes.js +6 -0
- package/dist/register-routes.js.map +1 -0
- package/dist/routes/_helpers.d.ts +11 -0
- package/dist/routes/_helpers.d.ts.map +1 -0
- package/dist/routes/_helpers.js +22 -0
- package/dist/routes/_helpers.js.map +1 -0
- package/dist/routes/automations.d.ts +19 -0
- package/dist/routes/automations.d.ts.map +1 -0
- package/dist/routes/automations.js +32 -0
- package/dist/routes/automations.js.map +1 -0
- package/dist/routes/embedded-webhooks.d.ts +3 -0
- package/dist/routes/embedded-webhooks.d.ts.map +1 -0
- package/dist/routes/embedded-webhooks.js +47 -0
- package/dist/routes/embedded-webhooks.js.map +1 -0
- package/dist/routes/executions.d.ts +3 -0
- package/dist/routes/executions.d.ts.map +1 -0
- package/dist/routes/executions.js +58 -0
- package/dist/routes/executions.js.map +1 -0
- package/dist/routes/index.d.ts +4 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +14 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/nodes.d.ts +3 -0
- package/dist/routes/nodes.d.ts.map +1 -0
- package/dist/routes/nodes.js +168 -0
- package/dist/routes/nodes.js.map +1 -0
- package/dist/routes/validation.d.ts +3 -0
- package/dist/routes/validation.d.ts.map +1 -0
- package/dist/routes/validation.js +41 -0
- package/dist/routes/validation.js.map +1 -0
- package/dist/routes/workflow-routes.d.ts +27 -0
- package/dist/routes/workflow-routes.d.ts.map +1 -0
- package/dist/routes/workflow-routes.js +326 -0
- package/dist/routes/workflow-routes.js.map +1 -0
- package/dist/routes/workflows.d.ts +3 -0
- package/dist/routes/workflows.d.ts.map +1 -0
- package/dist/routes/workflows.js +252 -0
- package/dist/routes/workflows.js.map +1 -0
- package/dist/schemas/draftIntent.d.ts +22 -0
- package/dist/schemas/draftIntent.d.ts.map +1 -0
- package/dist/schemas/draftIntent.js +22 -0
- package/dist/schemas/draftIntent.js.map +1 -0
- package/dist/schemas/feasibility.d.ts +13 -0
- package/dist/schemas/feasibility.d.ts.map +1 -0
- package/dist/schemas/feasibility.js +9 -0
- package/dist/schemas/feasibility.js.map +1 -0
- package/dist/schemas/index.d.ts +5 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +5 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/keywordExtraction.d.ts +14 -0
- package/dist/schemas/keywordExtraction.d.ts.map +1 -0
- package/dist/schemas/keywordExtraction.js +12 -0
- package/dist/schemas/keywordExtraction.js.map +1 -0
- package/dist/schemas/workflowMatching.d.ts +36 -0
- package/dist/schemas/workflowMatching.d.ts.map +1 -0
- package/dist/schemas/workflowMatching.js +30 -0
- package/dist/schemas/workflowMatching.js.map +1 -0
- package/dist/services/embedded-workflow-service.d.ts +106 -0
- package/dist/services/embedded-workflow-service.d.ts.map +1 -0
- package/dist/services/embedded-workflow-service.js +1900 -0
- package/dist/services/embedded-workflow-service.js.map +1 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +5 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/workflow-credential-store.d.ts +27 -0
- package/dist/services/workflow-credential-store.d.ts.map +1 -0
- package/dist/services/workflow-credential-store.js +92 -0
- package/dist/services/workflow-credential-store.js.map +1 -0
- package/dist/services/workflow-dispatch.d.ts +41 -0
- package/dist/services/workflow-dispatch.d.ts.map +1 -0
- package/dist/services/workflow-dispatch.js +86 -0
- package/dist/services/workflow-dispatch.js.map +1 -0
- package/dist/services/workflow-service.d.ts +63 -0
- package/dist/services/workflow-service.d.ts.map +1 -0
- package/dist/services/workflow-service.js +492 -0
- package/dist/services/workflow-service.js.map +1 -0
- package/dist/trigger-routes.d.ts +153 -0
- package/dist/trigger-routes.d.ts.map +1 -0
- package/dist/trigger-routes.js +424 -0
- package/dist/trigger-routes.js.map +1 -0
- package/dist/types/index.d.ts +457 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +59 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/catalog.d.ts +16 -0
- package/dist/utils/catalog.d.ts.map +1 -0
- package/dist/utils/catalog.js +211 -0
- package/dist/utils/catalog.js.map +1 -0
- package/dist/utils/clarification.d.ts +17 -0
- package/dist/utils/clarification.d.ts.map +1 -0
- package/dist/utils/clarification.js +46 -0
- package/dist/utils/clarification.js.map +1 -0
- package/dist/utils/context.d.ts +4 -0
- package/dist/utils/context.d.ts.map +1 -0
- package/dist/utils/context.js +18 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/credentialResolver.d.ts +22 -0
- package/dist/utils/credentialResolver.d.ts.map +1 -0
- package/dist/utils/credentialResolver.js +146 -0
- package/dist/utils/credentialResolver.js.map +1 -0
- package/dist/utils/generation.d.ts +36 -0
- package/dist/utils/generation.d.ts.map +1 -0
- package/dist/utils/generation.js +701 -0
- package/dist/utils/generation.js.map +1 -0
- package/dist/utils/host-capabilities.d.ts +27 -0
- package/dist/utils/host-capabilities.d.ts.map +1 -0
- package/dist/utils/host-capabilities.js +59 -0
- package/dist/utils/host-capabilities.js.map +1 -0
- package/dist/utils/inferSyntheticOutputSchema.d.ts +20 -0
- package/dist/utils/inferSyntheticOutputSchema.d.ts.map +1 -0
- package/dist/utils/inferSyntheticOutputSchema.js +151 -0
- package/dist/utils/inferSyntheticOutputSchema.js.map +1 -0
- package/dist/utils/outputSchema.d.ts +26 -0
- package/dist/utils/outputSchema.d.ts.map +1 -0
- package/dist/utils/outputSchema.js +297 -0
- package/dist/utils/outputSchema.js.map +1 -0
- package/dist/utils/validateAndRepair.d.ts +41 -0
- package/dist/utils/validateAndRepair.d.ts.map +1 -0
- package/dist/utils/validateAndRepair.js +483 -0
- package/dist/utils/validateAndRepair.js.map +1 -0
- package/dist/utils/workflow-prompts/actionResponse.d.ts +2 -0
- package/dist/utils/workflow-prompts/actionResponse.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/actionResponse.js +17 -0
- package/dist/utils/workflow-prompts/actionResponse.js.map +1 -0
- package/dist/utils/workflow-prompts/draftIntent.d.ts +2 -0
- package/dist/utils/workflow-prompts/draftIntent.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/draftIntent.js +23 -0
- package/dist/utils/workflow-prompts/draftIntent.js.map +1 -0
- package/dist/utils/workflow-prompts/feasibilityCheck.d.ts +2 -0
- package/dist/utils/workflow-prompts/feasibilityCheck.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/feasibilityCheck.js +21 -0
- package/dist/utils/workflow-prompts/feasibilityCheck.js.map +1 -0
- package/dist/utils/workflow-prompts/fieldCorrection.d.ts +3 -0
- package/dist/utils/workflow-prompts/fieldCorrection.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/fieldCorrection.js +20 -0
- package/dist/utils/workflow-prompts/fieldCorrection.js.map +1 -0
- package/dist/utils/workflow-prompts/index.d.ts +8 -0
- package/dist/utils/workflow-prompts/index.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/index.js +8 -0
- package/dist/utils/workflow-prompts/index.js.map +1 -0
- package/dist/utils/workflow-prompts/keywordExtraction.d.ts +2 -0
- package/dist/utils/workflow-prompts/keywordExtraction.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/keywordExtraction.js +21 -0
- package/dist/utils/workflow-prompts/keywordExtraction.js.map +1 -0
- package/dist/utils/workflow-prompts/parameterCorrection.d.ts +3 -0
- package/dist/utils/workflow-prompts/parameterCorrection.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/parameterCorrection.js +29 -0
- package/dist/utils/workflow-prompts/parameterCorrection.js.map +1 -0
- package/dist/utils/workflow-prompts/workflowGeneration.d.ts +2 -0
- package/dist/utils/workflow-prompts/workflowGeneration.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/workflowGeneration.js +529 -0
- package/dist/utils/workflow-prompts/workflowGeneration.js.map +1 -0
- package/dist/utils/workflow-prompts/workflowMatching.d.ts +2 -0
- package/dist/utils/workflow-prompts/workflowMatching.d.ts.map +1 -0
- package/dist/utils/workflow-prompts/workflowMatching.js +23 -0
- package/dist/utils/workflow-prompts/workflowMatching.js.map +1 -0
- package/dist/utils/workflow.d.ts +62 -0
- package/dist/utils/workflow.d.ts.map +1 -0
- package/dist/utils/workflow.js +712 -0
- package/dist/utils/workflow.js.map +1 -0
- package/package.json +87 -0
- package/src/actions/index.ts +1 -0
- package/src/actions/workflow.ts +494 -0
- package/src/data/defaultNodes.json +9887 -0
- package/src/data/schemaIndex.json +1 -0
- package/src/data/triggerSchemaIndex.json +1 -0
- package/src/db/index.ts +8 -0
- package/src/db/schema.ts +94 -0
- package/src/index.ts +179 -0
- package/src/lib/automations-builder.ts +679 -0
- package/src/lib/automations-types.ts +391 -0
- package/src/lib/index.ts +8 -0
- package/src/lib/legacy-task-migration.ts +143 -0
- package/src/lib/legacy-text-trigger-migration.ts +178 -0
- package/src/lib/workflow-clarification.ts +497 -0
- package/src/plugin-routes.ts +164 -0
- package/src/providers/activeWorkflows.ts +81 -0
- package/src/providers/index.ts +3 -0
- package/src/providers/pendingDraft.ts +55 -0
- package/src/providers/workflowStatus.ts +88 -0
- package/src/register-routes.ts +6 -0
- package/src/routes/_helpers.ts +27 -0
- package/src/routes/automations.ts +46 -0
- package/src/routes/embedded-webhooks.ts +64 -0
- package/src/routes/executions.ts +75 -0
- package/src/routes/index.ts +16 -0
- package/src/routes/nodes.ts +211 -0
- package/src/routes/validation.ts +51 -0
- package/src/routes/workflow-routes.ts +469 -0
- package/src/routes/workflows.ts +310 -0
- package/src/schemas/draftIntent.ts +21 -0
- package/src/schemas/feasibility.ts +8 -0
- package/src/schemas/index.ts +4 -0
- package/src/schemas/keywordExtraction.ts +11 -0
- package/src/schemas/workflowMatching.ts +29 -0
- package/src/services/embedded-workflow-service.ts +2224 -0
- package/src/services/index.ts +17 -0
- package/src/services/workflow-credential-store.ts +132 -0
- package/src/services/workflow-dispatch.ts +121 -0
- package/src/services/workflow-service.ts +839 -0
- package/src/trigger-routes.ts +714 -0
- package/src/types/index.ts +562 -0
- package/src/utils/catalog.ts +260 -0
- package/src/utils/clarification.ts +52 -0
- package/src/utils/context.ts +22 -0
- package/src/utils/credentialResolver.ts +234 -0
- package/src/utils/generation.ts +987 -0
- package/src/utils/host-capabilities.ts +81 -0
- package/src/utils/inferSyntheticOutputSchema.ts +163 -0
- package/src/utils/outputSchema.ts +372 -0
- package/src/utils/validateAndRepair.ts +610 -0
- package/src/utils/workflow-prompts/actionResponse.ts +16 -0
- package/src/utils/workflow-prompts/draftIntent.ts +22 -0
- package/src/utils/workflow-prompts/feasibilityCheck.ts +20 -0
- package/src/utils/workflow-prompts/fieldCorrection.ts +20 -0
- package/src/utils/workflow-prompts/index.ts +10 -0
- package/src/utils/workflow-prompts/keywordExtraction.ts +20 -0
- package/src/utils/workflow-prompts/parameterCorrection.ts +29 -0
- package/src/utils/workflow-prompts/workflowGeneration.ts +528 -0
- package/src/utils/workflow-prompts/workflowMatching.ts +22 -0
- package/src/utils/workflow.ts +895 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputSchema.js","sourceRoot":"","sources":["../../src/utils/outputSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic pre-deploy pass that catches catalog-drift hallucinations
|
|
3
|
+
* the LLM emits despite prompt hardening. Runs after `injectMissingCredentialBlocks`
|
|
4
|
+
* (Session 19 safety net) and before `deployWorkflow`.
|
|
5
|
+
*
|
|
6
|
+
* Six checks, each emitting a `Repair` (auto-fixed) or `ValidationError`
|
|
7
|
+
* (handed off to the retry loop in workflow-service.ts):
|
|
8
|
+
*
|
|
9
|
+
* 1. typeVersion clamp — closes "LLM emits 2.2 when only 1, 2, 2.1 exist"
|
|
10
|
+
* 2. authentication back-fill — closes "credentials attached but parameters.authentication missing"
|
|
11
|
+
* 3. output-field validation — closes "subject vs Subject" + typo classes
|
|
12
|
+
* 4. required-parameter pre-flight
|
|
13
|
+
* 5. node-name uniqueness — workflows rejects duplicates with confusing errors
|
|
14
|
+
* 6. connection sanity — drop edges to non-existent nodes
|
|
15
|
+
*
|
|
16
|
+
* Mutates the workflow in place AND returns it for ergonomic chaining.
|
|
17
|
+
*/
|
|
18
|
+
import type { NodeDefinition, RuntimeContext, WorkflowDefinition } from '../types/index';
|
|
19
|
+
export type RepairKind = 'typeVersionClamp' | 'authenticationBackfill' | 'fieldNameCaseFix' | 'aggregationSourceFieldCaseFix' | 'nodeNameDeduplication' | 'droppedDanglingEdge';
|
|
20
|
+
export type ValidationErrorKind = 'unknownOutputField' | 'requiredParameterMissing';
|
|
21
|
+
export interface Repair {
|
|
22
|
+
kind: RepairKind;
|
|
23
|
+
node: string;
|
|
24
|
+
detail: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ValidationError {
|
|
27
|
+
kind: ValidationErrorKind;
|
|
28
|
+
node: string;
|
|
29
|
+
detail: string;
|
|
30
|
+
/** When kind === 'unknownOutputField': `{{ $json.<X> }}` literal that failed. */
|
|
31
|
+
expression?: string;
|
|
32
|
+
/** When kind === 'unknownOutputField': fields the upstream node actually emits. */
|
|
33
|
+
availableFields?: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface RepairResult {
|
|
36
|
+
workflow: WorkflowDefinition;
|
|
37
|
+
repairs: Repair[];
|
|
38
|
+
errors: ValidationError[];
|
|
39
|
+
}
|
|
40
|
+
export declare function validateAndRepair(workflow: WorkflowDefinition, relevantNodes: NodeDefinition[], _runtimeContext: RuntimeContext | undefined, runtimeVersions?: Map<string, number[]>): RepairResult;
|
|
41
|
+
//# sourceMappingURL=validateAndRepair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateAndRepair.d.ts","sourceRoot":"","sources":["../../src/utils/validateAndRepair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AAKxB,MAAM,MAAM,UAAU,GAClB,kBAAkB,GAClB,wBAAwB,GACxB,kBAAkB,GAClB,+BAA+B,GAC/B,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,0BAA0B,CAAC;AAEpF,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAseD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,kBAAkB,EAC5B,aAAa,EAAE,cAAc,EAAE,EAC/B,eAAe,EAAE,cAAc,GAAG,SAAS,EAC3C,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACtC,YAAY,CA2Dd"}
|
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic pre-deploy pass that catches catalog-drift hallucinations
|
|
3
|
+
* the LLM emits despite prompt hardening. Runs after `injectMissingCredentialBlocks`
|
|
4
|
+
* (Session 19 safety net) and before `deployWorkflow`.
|
|
5
|
+
*
|
|
6
|
+
* Six checks, each emitting a `Repair` (auto-fixed) or `ValidationError`
|
|
7
|
+
* (handed off to the retry loop in workflow-service.ts):
|
|
8
|
+
*
|
|
9
|
+
* 1. typeVersion clamp — closes "LLM emits 2.2 when only 1, 2, 2.1 exist"
|
|
10
|
+
* 2. authentication back-fill — closes "credentials attached but parameters.authentication missing"
|
|
11
|
+
* 3. output-field validation — closes "subject vs Subject" + typo classes
|
|
12
|
+
* 4. required-parameter pre-flight
|
|
13
|
+
* 5. node-name uniqueness — workflows rejects duplicates with confusing errors
|
|
14
|
+
* 6. connection sanity — drop edges to non-existent nodes
|
|
15
|
+
*
|
|
16
|
+
* Mutates the workflow in place AND returns it for ergonomic chaining.
|
|
17
|
+
*/
|
|
18
|
+
import { logger } from '@elizaos/core';
|
|
19
|
+
import { CATALOG_CLARIFICATION_SUFFIX, isCatalogClarification } from './clarification';
|
|
20
|
+
import { inferSyntheticOutputSchema } from './inferSyntheticOutputSchema';
|
|
21
|
+
import { loadOutputSchema, loadTriggerOutputSchema, parseExpressions } from './outputSchema';
|
|
22
|
+
// ─── Check 1 ────────────────────────────────────────────────────────────────
|
|
23
|
+
/** Pick the closest-but-not-greater valid version. Falls back to the maximum
|
|
24
|
+
* when all valid versions are smaller than the requested one (LLM picked
|
|
25
|
+
* a higher number — clamp down). */
|
|
26
|
+
function clampTypeVersion(requested, validVersions) {
|
|
27
|
+
if (validVersions.length === 0) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const sorted = [...validVersions].sort((a, b) => a - b);
|
|
31
|
+
if (sorted.includes(requested)) {
|
|
32
|
+
return null;
|
|
33
|
+
} // already valid
|
|
34
|
+
// Highest version ≤ requested, else highest available.
|
|
35
|
+
const candidates = sorted.filter((v) => v <= requested);
|
|
36
|
+
return candidates.length > 0 ? candidates[candidates.length - 1] : sorted[sorted.length - 1];
|
|
37
|
+
}
|
|
38
|
+
function applyTypeVersionClamp(node, def, repairs, runtimeVersions) {
|
|
39
|
+
const catalogVersions = Array.isArray(def.version) ? def.version : [def.version];
|
|
40
|
+
const catalogNumeric = catalogVersions.filter((v) => typeof v === 'number');
|
|
41
|
+
// When the live workflow runtime registry is available, intersect with it.
|
|
42
|
+
// The static plugin catalog is sometimes ahead of the user's running
|
|
43
|
+
// workflows binary (e.g. catalog claims Gmail v2.2 but runtime only has up
|
|
44
|
+
// to v2.1) — without this intersect, the LLM picks a version workflows
|
|
45
|
+
// can't instantiate and activation crashes with `Cannot read
|
|
46
|
+
// properties of undefined (reading 'execute')`.
|
|
47
|
+
const runtime = runtimeVersions?.get(node.type);
|
|
48
|
+
let validVersions;
|
|
49
|
+
if (runtime && runtime.length > 0) {
|
|
50
|
+
if (catalogNumeric.length > 0) {
|
|
51
|
+
const runtimeSet = new Set(runtime);
|
|
52
|
+
validVersions = catalogNumeric.filter((v) => runtimeSet.has(v));
|
|
53
|
+
if (validVersions.length === 0) {
|
|
54
|
+
validVersions = runtime;
|
|
55
|
+
} // catalog drift — trust runtime
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
validVersions = runtime;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
validVersions = catalogNumeric;
|
|
63
|
+
}
|
|
64
|
+
if (validVersions.length === 0) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const clamped = clampTypeVersion(node.typeVersion, validVersions);
|
|
68
|
+
if (clamped === null) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const source = runtime ? 'runtime∩catalog' : 'catalog';
|
|
72
|
+
repairs.push({
|
|
73
|
+
kind: 'typeVersionClamp',
|
|
74
|
+
node: node.name,
|
|
75
|
+
detail: `${node.type} typeVersion ${node.typeVersion} → ${clamped} (${source} valid: ${validVersions.join(', ')})`,
|
|
76
|
+
});
|
|
77
|
+
node.typeVersion = clamped;
|
|
78
|
+
}
|
|
79
|
+
/** When a credentials block is attached and the cred type's catalog entry
|
|
80
|
+
* shows it gates on a single authentication value (and node.parameters
|
|
81
|
+
* doesn't already set one), back-fill it. Closes the Gmail-missing-auth
|
|
82
|
+
* bug surfaced in Session 20 dogfood. */
|
|
83
|
+
function applyAuthenticationBackfill(node, def, repairs) {
|
|
84
|
+
if (!node.credentials) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const attachedTypes = Object.keys(node.credentials);
|
|
88
|
+
if (attachedTypes.length !== 1) {
|
|
89
|
+
return;
|
|
90
|
+
} // ambiguous → leave alone
|
|
91
|
+
const [credType] = attachedTypes;
|
|
92
|
+
const defCreds = (def.credentials ?? []);
|
|
93
|
+
const credDef = defCreds.find((c) => c.name === credType);
|
|
94
|
+
if (!credDef) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const authOpts = credDef.displayOptions?.show?.authentication;
|
|
98
|
+
if (!authOpts || authOpts.length !== 1) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const requiredAuth = authOpts[0];
|
|
102
|
+
const params = (node.parameters ?? {});
|
|
103
|
+
if (typeof params.authentication === 'string' && params.authentication.length > 0) {
|
|
104
|
+
return; // LLM already set it
|
|
105
|
+
}
|
|
106
|
+
node.parameters = { ...params, authentication: requiredAuth };
|
|
107
|
+
repairs.push({
|
|
108
|
+
kind: 'authenticationBackfill',
|
|
109
|
+
node: node.name,
|
|
110
|
+
detail: `set parameters.authentication="${requiredAuth}" to match attached ${credType}`,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// ─── Check 3 ────────────────────────────────────────────────────────────────
|
|
114
|
+
/** Build name → node map for upstream-graph walk. */
|
|
115
|
+
function buildUpstreamMap(workflow) {
|
|
116
|
+
const upstream = new Map();
|
|
117
|
+
for (const fromName of Object.keys(workflow.connections ?? {})) {
|
|
118
|
+
const outputs = workflow.connections[fromName];
|
|
119
|
+
for (const outputType of Object.keys(outputs)) {
|
|
120
|
+
const branches = outputs[outputType];
|
|
121
|
+
for (const branch of branches) {
|
|
122
|
+
for (const edge of branch) {
|
|
123
|
+
const arr = upstream.get(edge.node) ?? [];
|
|
124
|
+
arr.push(fromName);
|
|
125
|
+
upstream.set(edge.node, arr);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return upstream;
|
|
131
|
+
}
|
|
132
|
+
/** Collect known top-level field names for a node's output. Returns null if
|
|
133
|
+
* unknown (e.g. Code/Function — arbitrary user output).
|
|
134
|
+
*
|
|
135
|
+
* Synthetic / parameter-aware schemas check FIRST. The static schemaIndex
|
|
136
|
+
* catches a single canonical shape per (node, resource, operation) but
|
|
137
|
+
* ignores parameter switches like Gmail's `simple: true` that change
|
|
138
|
+
* the runtime field set. The override layer (inferSyntheticOutputSchema)
|
|
139
|
+
* reflects the actual runtime emission, so it must win when present. */
|
|
140
|
+
function knownOutputFieldsForNode(node) {
|
|
141
|
+
// 1. Synthetic / parameter-aware schemas (Summarize, Set, Gmail simple-mode)
|
|
142
|
+
const synthetic = inferSyntheticOutputSchema(node);
|
|
143
|
+
if (synthetic !== null) {
|
|
144
|
+
return synthetic;
|
|
145
|
+
}
|
|
146
|
+
// 2. Static output-schema catalog (Gmail non-simple, Slack, Discord etc.)
|
|
147
|
+
if (typeof node.parameters?.resource === 'string' &&
|
|
148
|
+
typeof node.parameters?.operation === 'string') {
|
|
149
|
+
const schema = loadOutputSchema(node.type, node.parameters.resource, node.parameters.operation);
|
|
150
|
+
if (schema) {
|
|
151
|
+
return schema.fields;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// 3. Trigger schemas (gmailTrigger, etc.) — respect simple flag
|
|
155
|
+
if (node.type.toLowerCase().includes('trigger')) {
|
|
156
|
+
const triggerSchema = loadTriggerOutputSchema(node.type, node.parameters);
|
|
157
|
+
if (triggerSchema) {
|
|
158
|
+
return triggerSchema.fields;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
/** For each parameter expression `{{ $json.X }}` (or `$node["Y"].json.X`),
|
|
164
|
+
* validate X against the upstream node's known fields. Auto-fix case
|
|
165
|
+
* mismatches; flag unknown fields as ValidationErrors for retry. */
|
|
166
|
+
function validateOutputFieldReferences(workflow, repairs, errors) {
|
|
167
|
+
const upstream = buildUpstreamMap(workflow);
|
|
168
|
+
const nodeByName = new Map();
|
|
169
|
+
for (const n of workflow.nodes) {
|
|
170
|
+
nodeByName.set(n.name, n);
|
|
171
|
+
}
|
|
172
|
+
for (const node of workflow.nodes) {
|
|
173
|
+
if (!node.parameters || typeof node.parameters !== 'object') {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const refs = parseExpressions(node.parameters);
|
|
177
|
+
if (refs.length === 0) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
for (const ref of refs) {
|
|
181
|
+
// Determine which upstream node's output this reference reads from.
|
|
182
|
+
let sourceNode = null;
|
|
183
|
+
if (ref.sourceNodeName) {
|
|
184
|
+
sourceNode = nodeByName.get(ref.sourceNodeName) ?? null;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// `{{ $json.X }}` → first immediate upstream node
|
|
188
|
+
const parents = upstream.get(node.name) ?? [];
|
|
189
|
+
if (parents.length === 1) {
|
|
190
|
+
sourceNode = nodeByName.get(parents[0]) ?? null;
|
|
191
|
+
}
|
|
192
|
+
else if (parents.length > 1) {
|
|
193
|
+
// Ambiguous — skip silently rather than false-error
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (!sourceNode) {
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const fields = knownOutputFieldsForNode(sourceNode);
|
|
201
|
+
if (!fields) {
|
|
202
|
+
continue;
|
|
203
|
+
} // unknowable schema → skip
|
|
204
|
+
const topField = ref.path[0];
|
|
205
|
+
if (!topField) {
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (fields.includes(topField)) {
|
|
209
|
+
continue;
|
|
210
|
+
} // exact match
|
|
211
|
+
// Case-insensitive deterministic correction
|
|
212
|
+
const ciMatch = fields.find((f) => f.toLowerCase() === topField.toLowerCase());
|
|
213
|
+
if (ciMatch) {
|
|
214
|
+
rewriteParameterFieldRef(node, ref.fullExpression, topField, ciMatch);
|
|
215
|
+
repairs.push({
|
|
216
|
+
kind: 'fieldNameCaseFix',
|
|
217
|
+
node: node.name,
|
|
218
|
+
detail: `${ref.fullExpression}: "${topField}" → "${ciMatch}" (matches ${sourceNode.name} output)`,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
errors.push({
|
|
223
|
+
kind: 'unknownOutputField',
|
|
224
|
+
node: node.name,
|
|
225
|
+
detail: `expression references unknown field "${topField}" on upstream node ${sourceNode.name}`,
|
|
226
|
+
expression: ref.fullExpression,
|
|
227
|
+
availableFields: fields,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/** Replace `oldField` with `newField` in node.parameters everywhere the
|
|
234
|
+
* fullExpression pattern appears. */
|
|
235
|
+
function rewriteParameterFieldRef(node, fullExpression, oldField, newField) {
|
|
236
|
+
const oldPattern = fullExpression;
|
|
237
|
+
const newPattern = fullExpression.replace(new RegExp(`\\b${oldField}\\b`), newField);
|
|
238
|
+
rewriteInObject(node.parameters, oldPattern, newPattern);
|
|
239
|
+
}
|
|
240
|
+
function rewriteInObject(obj, oldStr, newStr) {
|
|
241
|
+
for (const key of Object.keys(obj)) {
|
|
242
|
+
const val = obj[key];
|
|
243
|
+
if (typeof val === 'string' && val.includes(oldStr)) {
|
|
244
|
+
obj[key] = val.replaceAll(oldStr, newStr);
|
|
245
|
+
}
|
|
246
|
+
else if (Array.isArray(val)) {
|
|
247
|
+
for (let i = 0; i < val.length; i++) {
|
|
248
|
+
if (typeof val[i] === 'string' && val[i].includes(oldStr)) {
|
|
249
|
+
val[i] = val[i].replaceAll(oldStr, newStr);
|
|
250
|
+
}
|
|
251
|
+
else if (typeof val[i] === 'object' && val[i] !== null) {
|
|
252
|
+
rewriteInObject(val[i], oldStr, newStr);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
else if (typeof val === 'object' && val !== null) {
|
|
257
|
+
rewriteInObject(val, oldStr, newStr);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// ─── Check 3b: aggregation-source-field validation ──────────────────────────
|
|
262
|
+
/**
|
|
263
|
+
* Some nodes name an UPSTREAM field by its raw string identifier (not via an
|
|
264
|
+
* `{{ $json.X }}` expression). The Summarize node's
|
|
265
|
+
* `parameters.fieldsToSummarize.values[i].field` is the canonical example —
|
|
266
|
+
* it names a field in the upstream node's output. The LLM commonly emits
|
|
267
|
+
* the wrong case here (e.g. `field: "subject"` when Gmail simple-mode
|
|
268
|
+
* outputs `Subject`), and check #3's expression walker doesn't catch it
|
|
269
|
+
* because the value isn't an `{{ $json.X }}` expression at all. This check
|
|
270
|
+
* fills that gap deterministically: case-correct on CI match; flag as
|
|
271
|
+
* ValidationError otherwise.
|
|
272
|
+
*
|
|
273
|
+
* Closes the silent-empty-summary bug from Session 21 dogfood (Summarize
|
|
274
|
+
* concatenated 10 empty strings because the LLM picked lowercase
|
|
275
|
+
* `subject` against Gmail's actual `Subject` output).
|
|
276
|
+
*/
|
|
277
|
+
function applyAggregationSourceFieldFix(workflow, repairs, errors) {
|
|
278
|
+
const upstream = buildUpstreamMap(workflow);
|
|
279
|
+
const nodeByName = new Map();
|
|
280
|
+
for (const n of workflow.nodes) {
|
|
281
|
+
nodeByName.set(n.name, n);
|
|
282
|
+
}
|
|
283
|
+
for (const node of workflow.nodes) {
|
|
284
|
+
if (node.type !== 'workflows-nodes-base.summarize') {
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
const params = node.parameters;
|
|
288
|
+
const fts = params?.fieldsToSummarize;
|
|
289
|
+
const values = fts?.values;
|
|
290
|
+
if (!Array.isArray(values) || values.length === 0) {
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
const parents = upstream.get(node.name) ?? [];
|
|
294
|
+
if (parents.length !== 1) {
|
|
295
|
+
continue;
|
|
296
|
+
} // ambiguous → skip (don't false-error)
|
|
297
|
+
const sourceNode = nodeByName.get(parents[0]);
|
|
298
|
+
if (!sourceNode) {
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
const fields = knownOutputFieldsForNode(sourceNode);
|
|
302
|
+
if (!fields) {
|
|
303
|
+
continue;
|
|
304
|
+
} // unknowable schema → skip
|
|
305
|
+
for (const entry of values) {
|
|
306
|
+
if (typeof entry?.field !== 'string' || entry.field.length === 0) {
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
if (fields.includes(entry.field)) {
|
|
310
|
+
continue;
|
|
311
|
+
} // exact match
|
|
312
|
+
const ciMatch = fields.find((f) => f.toLowerCase() === entry.field?.toLowerCase());
|
|
313
|
+
if (ciMatch) {
|
|
314
|
+
const oldField = entry.field;
|
|
315
|
+
entry.field = ciMatch;
|
|
316
|
+
repairs.push({
|
|
317
|
+
kind: 'aggregationSourceFieldCaseFix',
|
|
318
|
+
node: node.name,
|
|
319
|
+
detail: `fieldsToSummarize.values[].field "${oldField}" → "${ciMatch}" (matches ${sourceNode.name} output)`,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
errors.push({
|
|
324
|
+
kind: 'unknownOutputField',
|
|
325
|
+
node: node.name,
|
|
326
|
+
detail: `fieldsToSummarize.values[].field "${entry.field}" does not match any known field on upstream ${sourceNode.name}`,
|
|
327
|
+
expression: `field: "${entry.field}"`,
|
|
328
|
+
availableFields: fields,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// ─── Check 4 ────────────────────────────────────────────────────────────────
|
|
335
|
+
/** Push a clarification onto workflow._meta.requiresClarification when a
|
|
336
|
+
* required parameter is missing AND can't be inferred. Non-fatal. */
|
|
337
|
+
function applyRequiredParameterPreflight(workflow, defByType) {
|
|
338
|
+
const clarifications = [];
|
|
339
|
+
for (const node of workflow.nodes) {
|
|
340
|
+
const def = defByType.get(node.type);
|
|
341
|
+
if (!def) {
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
for (const prop of def.properties ?? []) {
|
|
345
|
+
if (!prop.required) {
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
const params = (node.parameters ?? {});
|
|
349
|
+
if (params[prop.name] === undefined || params[prop.name] === '') {
|
|
350
|
+
clarifications.push(`${node.name} (${node.type}) is missing required parameter "${prop.name}" ${CATALOG_CLARIFICATION_SUFFIX}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (clarifications.length === 0) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
workflow._meta = workflow._meta ?? {};
|
|
358
|
+
const existing = workflow._meta.requiresClarification ?? [];
|
|
359
|
+
// Avoid duplicate-suffix clutter from prior catalog passes.
|
|
360
|
+
const nonCatalog = existing.filter((c) => !isCatalogClarification(c));
|
|
361
|
+
workflow._meta.requiresClarification = [...nonCatalog, ...clarifications];
|
|
362
|
+
}
|
|
363
|
+
// ─── Check 5 ────────────────────────────────────────────────────────────────
|
|
364
|
+
function deduplicateNodeNames(workflow, repairs) {
|
|
365
|
+
const seen = new Map();
|
|
366
|
+
for (const node of workflow.nodes) {
|
|
367
|
+
const count = seen.get(node.name) ?? 0;
|
|
368
|
+
if (count > 0) {
|
|
369
|
+
const oldName = node.name;
|
|
370
|
+
let suffix = count + 1;
|
|
371
|
+
let candidate = `${oldName} (${suffix})`;
|
|
372
|
+
while (seen.has(candidate)) {
|
|
373
|
+
suffix++;
|
|
374
|
+
candidate = `${oldName} (${suffix})`;
|
|
375
|
+
}
|
|
376
|
+
node.name = candidate;
|
|
377
|
+
seen.set(candidate, 1);
|
|
378
|
+
seen.set(oldName, count + 1);
|
|
379
|
+
repairs.push({
|
|
380
|
+
kind: 'nodeNameDeduplication',
|
|
381
|
+
node: candidate,
|
|
382
|
+
detail: `renamed duplicate "${oldName}" → "${candidate}"`,
|
|
383
|
+
});
|
|
384
|
+
// Update connections referencing the old name? The original was first
|
|
385
|
+
// — connections pointing at oldName still resolve to the original.
|
|
386
|
+
// Rewrite outgoing connections key on duplicate node.
|
|
387
|
+
if (workflow.connections?.[oldName]) {
|
|
388
|
+
// Outgoing connections for the duplicate: move under new name only
|
|
389
|
+
// when the original doesn't already own them. Heuristic: if both
|
|
390
|
+
// the dup and original happen to share outgoing edges, leave as-is
|
|
391
|
+
// (the original wins). Most LLM-generated dupes have no outgoing
|
|
392
|
+
// edges, so this rarely fires.
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
seen.set(node.name, 1);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
// ─── Check 6 ────────────────────────────────────────────────────────────────
|
|
401
|
+
function dropDanglingEdges(workflow, repairs) {
|
|
402
|
+
if (!workflow.connections) {
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
const nodeNames = new Set(workflow.nodes.map((n) => n.name));
|
|
406
|
+
for (const fromName of Object.keys(workflow.connections)) {
|
|
407
|
+
const outputs = workflow.connections[fromName];
|
|
408
|
+
if (!nodeNames.has(fromName)) {
|
|
409
|
+
// Source node doesn't exist — drop the entire entry.
|
|
410
|
+
delete workflow.connections[fromName];
|
|
411
|
+
repairs.push({
|
|
412
|
+
kind: 'droppedDanglingEdge',
|
|
413
|
+
node: fromName,
|
|
414
|
+
detail: 'dropped connections entry for non-existent node',
|
|
415
|
+
});
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
for (const outputType of Object.keys(outputs)) {
|
|
419
|
+
const branches = outputs[outputType];
|
|
420
|
+
for (let i = 0; i < branches.length; i++) {
|
|
421
|
+
const branch = branches[i];
|
|
422
|
+
const filtered = branch.filter((edge) => nodeNames.has(edge.node));
|
|
423
|
+
if (filtered.length !== branch.length) {
|
|
424
|
+
const dropped = branch.filter((e) => !nodeNames.has(e.node));
|
|
425
|
+
for (const e of dropped) {
|
|
426
|
+
repairs.push({
|
|
427
|
+
kind: 'droppedDanglingEdge',
|
|
428
|
+
node: fromName,
|
|
429
|
+
detail: `dropped edge ${fromName} → ${e.node} (target missing)`,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
branches[i] = filtered;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
// ─── Public API ─────────────────────────────────────────────────────────────
|
|
439
|
+
export function validateAndRepair(workflow, relevantNodes, _runtimeContext, runtimeVersions) {
|
|
440
|
+
const repairs = [];
|
|
441
|
+
const errors = [];
|
|
442
|
+
if (!workflow?.nodes || !Array.isArray(workflow.nodes)) {
|
|
443
|
+
return { workflow, repairs, errors };
|
|
444
|
+
}
|
|
445
|
+
const defByType = new Map(relevantNodes.map((d) => [d.name, d]));
|
|
446
|
+
// Check 1 + 2: per-node passes
|
|
447
|
+
for (const node of workflow.nodes) {
|
|
448
|
+
const def = defByType.get(node.type);
|
|
449
|
+
if (def) {
|
|
450
|
+
applyTypeVersionClamp(node, def, repairs, runtimeVersions);
|
|
451
|
+
applyAuthenticationBackfill(node, def, repairs);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
// Check 5: dedup BEFORE field-ref + connection passes (so the upstream map
|
|
455
|
+
// is built against the final names).
|
|
456
|
+
deduplicateNodeNames(workflow, repairs);
|
|
457
|
+
// Check 6: drop dangling edges before #3 walks the graph.
|
|
458
|
+
dropDanglingEdges(workflow, repairs);
|
|
459
|
+
// Check 3b: aggregation-source-field case-fix BEFORE check 3, because
|
|
460
|
+
// correcting Summarize.field changes the synthetic output schema that
|
|
461
|
+
// check 3 uses when validating expressions downstream of Summarize.
|
|
462
|
+
applyAggregationSourceFieldFix(workflow, repairs, errors);
|
|
463
|
+
// Check 3: output-field validation (after dedup so upstream lookup works)
|
|
464
|
+
validateOutputFieldReferences(workflow, repairs, errors);
|
|
465
|
+
// Check 4: required-parameter pre-flight (annotates workflow._meta only)
|
|
466
|
+
applyRequiredParameterPreflight(workflow, defByType);
|
|
467
|
+
if (repairs.length > 0) {
|
|
468
|
+
logger.info({
|
|
469
|
+
src: 'plugin:workflow:utils:validate',
|
|
470
|
+
repairCount: repairs.length,
|
|
471
|
+
repairs,
|
|
472
|
+
}, `validateAndRepair applied ${repairs.length} fix(es)`);
|
|
473
|
+
}
|
|
474
|
+
if (errors.length > 0) {
|
|
475
|
+
logger.warn({
|
|
476
|
+
src: 'plugin:workflow:utils:validate',
|
|
477
|
+
errorCount: errors.length,
|
|
478
|
+
errors,
|
|
479
|
+
}, `validateAndRepair flagged ${errors.length} unrecoverable error(s) for retry loop`);
|
|
480
|
+
}
|
|
481
|
+
return { workflow, repairs, errors };
|
|
482
|
+
}
|
|
483
|
+
//# sourceMappingURL=validateAndRepair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateAndRepair.js","sourceRoot":"","sources":["../../src/utils/validateAndRepair.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const ACTION_RESPONSE_SYSTEM_PROMPT = "You format responses for a workflow assistant.\n\nRules:\n- Include ALL provided data exactly (names, IDs, URLs) \u2014 never omit, never modify\n- ONLY use information from the provided data \u2014 do not invent extra details\n- Be concise \u2014 no filler\n\nResponse types:\n- PREVIEW: workflow name, node list (name + type), flow (\u2192), credentials, assumptions. If \"changes\" is present, list each changed parameter per node. Mention it's a draft: user can confirm, modify, or cancel. If restoredAfterFailure is true, mention the new request failed and this is the previous draft.\n- CLARIFICATION: list the questions, ask for details.\n- DEPLOY_SUCCESS: name, ID, node count, status. All credentials are resolved \u2014 workflow is ready.\n- AUTH_REQUIRED: list services + auth links (clickable). Ask user to connect then retry deploy.\n- CANCELLED: confirm draft discarded.\n- EMPTY_PROMPT: ask user to describe the workflow.\n- UNSUPPORTED_INTEGRATION: list unsupported services (unavailable), list available services. Inform the user clearly, suggest they rephrase using available services.\n- ERROR: show the error, suggest more detail.";
|
|
2
|
+
//# sourceMappingURL=actionResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionResponse.d.ts","sourceRoot":"","sources":["../../../src/utils/workflow-prompts/actionResponse.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,moCAeI,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const ACTION_RESPONSE_SYSTEM_PROMPT = `You format responses for a workflow assistant.
|
|
2
|
+
|
|
3
|
+
Rules:
|
|
4
|
+
- Include ALL provided data exactly (names, IDs, URLs) — never omit, never modify
|
|
5
|
+
- ONLY use information from the provided data — do not invent extra details
|
|
6
|
+
- Be concise — no filler
|
|
7
|
+
|
|
8
|
+
Response types:
|
|
9
|
+
- PREVIEW: workflow name, node list (name + type), flow (→), credentials, assumptions. If "changes" is present, list each changed parameter per node. Mention it's a draft: user can confirm, modify, or cancel. If restoredAfterFailure is true, mention the new request failed and this is the previous draft.
|
|
10
|
+
- CLARIFICATION: list the questions, ask for details.
|
|
11
|
+
- DEPLOY_SUCCESS: name, ID, node count, status. All credentials are resolved — workflow is ready.
|
|
12
|
+
- AUTH_REQUIRED: list services + auth links (clickable). Ask user to connect then retry deploy.
|
|
13
|
+
- CANCELLED: confirm draft discarded.
|
|
14
|
+
- EMPTY_PROMPT: ask user to describe the workflow.
|
|
15
|
+
- UNSUPPORTED_INTEGRATION: list unsupported services (unavailable), list available services. Inform the user clearly, suggest they rephrase using available services.
|
|
16
|
+
- ERROR: show the error, suggest more detail.`;
|
|
17
|
+
//# sourceMappingURL=actionResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionResponse.js","sourceRoot":"","sources":["../../../src/utils/workflow-prompts/actionResponse.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;8CAeC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const DRAFT_INTENT_SYSTEM_PROMPT = "You are an assistant managing workflow creation. A workflow draft has been generated and shown to the user as a preview.\n\nYour job: determine what the user wants to do based on their message. The user may write in ANY language \u2014 interpret the meaning, not specific keywords.\n\nPossible intents:\n- \"confirm\": The user approves the draft and wants it deployed. This includes any form of agreement, approval, or instruction to proceed/create/deploy the current draft.\n- \"cancel\": The user doesn't want this workflow at all and wants to discard it entirely.\n- \"modify\": The user wants to change something about the current draft, or is providing additional context/answers to refine it.\n- \"new\": The user explicitly describes a DIFFERENT workflow with DIFFERENT services or purpose than the current draft. This requires a concrete description of a new automation.\n\nRules:\n- CRITICAL: A short or vague message that does NOT describe a specific new automation is NEVER \"new\". Short messages like \"create it\", \"do it\", \"go ahead\", or any brief instruction to proceed are ALWAYS \"confirm\". Only classify as \"new\" if the message contains an explicit description of a different workflow involving different integrations or a different purpose.\n- If the user's message could refer to the existing draft (even loosely), it is NOT \"new\".\n- If ambiguous between \"confirm\" and \"new\", ALWAYS prefer \"confirm\".\n- If ambiguous between \"modify\" and \"new\", prefer \"modify\".\n- If the user provides additional context or answers clarification questions about the same topic, treat as \"modify\".\n- For \"modify\", extract the modification request as a clear instruction.\n\nRespond with structured JSON-style fields:\nintent: confirm | cancel | modify | new\nmodificationRequest: only for modify; concise instruction\nreason: brief classification explanation";
|
|
2
|
+
//# sourceMappingURL=draftIntent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draftIntent.d.ts","sourceRoot":"","sources":["../../../src/utils/workflow-prompts/draftIntent.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,u2DAqBE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const DRAFT_INTENT_SYSTEM_PROMPT = `You are an assistant managing workflow creation. A workflow draft has been generated and shown to the user as a preview.
|
|
2
|
+
|
|
3
|
+
Your job: determine what the user wants to do based on their message. The user may write in ANY language — interpret the meaning, not specific keywords.
|
|
4
|
+
|
|
5
|
+
Possible intents:
|
|
6
|
+
- "confirm": The user approves the draft and wants it deployed. This includes any form of agreement, approval, or instruction to proceed/create/deploy the current draft.
|
|
7
|
+
- "cancel": The user doesn't want this workflow at all and wants to discard it entirely.
|
|
8
|
+
- "modify": The user wants to change something about the current draft, or is providing additional context/answers to refine it.
|
|
9
|
+
- "new": The user explicitly describes a DIFFERENT workflow with DIFFERENT services or purpose than the current draft. This requires a concrete description of a new automation.
|
|
10
|
+
|
|
11
|
+
Rules:
|
|
12
|
+
- CRITICAL: A short or vague message that does NOT describe a specific new automation is NEVER "new". Short messages like "create it", "do it", "go ahead", or any brief instruction to proceed are ALWAYS "confirm". Only classify as "new" if the message contains an explicit description of a different workflow involving different integrations or a different purpose.
|
|
13
|
+
- If the user's message could refer to the existing draft (even loosely), it is NOT "new".
|
|
14
|
+
- If ambiguous between "confirm" and "new", ALWAYS prefer "confirm".
|
|
15
|
+
- If ambiguous between "modify" and "new", prefer "modify".
|
|
16
|
+
- If the user provides additional context or answers clarification questions about the same topic, treat as "modify".
|
|
17
|
+
- For "modify", extract the modification request as a clear instruction.
|
|
18
|
+
|
|
19
|
+
Respond with structured JSON-style fields:
|
|
20
|
+
intent: confirm | cancel | modify | new
|
|
21
|
+
modificationRequest: only for modify; concise instruction
|
|
22
|
+
reason: brief classification explanation`;
|
|
23
|
+
//# sourceMappingURL=draftIntent.js.map
|