@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.
Files changed (294) hide show
  1. package/README.md +71 -0
  2. package/auto-enable.ts +18 -0
  3. package/dist/actions/index.d.ts +2 -0
  4. package/dist/actions/index.d.ts.map +1 -0
  5. package/dist/actions/index.js +2 -0
  6. package/dist/actions/index.js.map +1 -0
  7. package/dist/actions/workflow.d.ts +23 -0
  8. package/dist/actions/workflow.d.ts.map +1 -0
  9. package/dist/actions/workflow.js +425 -0
  10. package/dist/actions/workflow.js.map +1 -0
  11. package/dist/data/defaultNodes.json +9887 -0
  12. package/dist/data/schemaIndex.json +1 -0
  13. package/dist/data/triggerSchemaIndex.json +1 -0
  14. package/dist/db/index.d.ts +2 -0
  15. package/dist/db/index.d.ts.map +1 -0
  16. package/dist/db/index.js +2 -0
  17. package/dist/db/index.js.map +1 -0
  18. package/dist/db/schema.d.ts +588 -0
  19. package/dist/db/schema.d.ts.map +1 -0
  20. package/dist/db/schema.js +59 -0
  21. package/dist/db/schema.js.map +1 -0
  22. package/dist/index.d.ts +34 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +126 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/lib/automations-builder.d.ts +21 -0
  27. package/dist/lib/automations-builder.d.ts.map +1 -0
  28. package/dist/lib/automations-builder.js +557 -0
  29. package/dist/lib/automations-builder.js.map +1 -0
  30. package/dist/lib/automations-types.d.ts +153 -0
  31. package/dist/lib/automations-types.d.ts.map +1 -0
  32. package/dist/lib/automations-types.js +191 -0
  33. package/dist/lib/automations-types.js.map +1 -0
  34. package/dist/lib/index.d.ts +3 -0
  35. package/dist/lib/index.d.ts.map +1 -0
  36. package/dist/lib/index.js +3 -0
  37. package/dist/lib/index.js.map +1 -0
  38. package/dist/lib/legacy-task-migration.d.ts +20 -0
  39. package/dist/lib/legacy-task-migration.d.ts.map +1 -0
  40. package/dist/lib/legacy-task-migration.js +110 -0
  41. package/dist/lib/legacy-task-migration.js.map +1 -0
  42. package/dist/lib/legacy-text-trigger-migration.d.ts +18 -0
  43. package/dist/lib/legacy-text-trigger-migration.d.ts.map +1 -0
  44. package/dist/lib/legacy-text-trigger-migration.js +131 -0
  45. package/dist/lib/legacy-text-trigger-migration.js.map +1 -0
  46. package/dist/lib/workflow-clarification.d.ts +113 -0
  47. package/dist/lib/workflow-clarification.d.ts.map +1 -0
  48. package/dist/lib/workflow-clarification.js +425 -0
  49. package/dist/lib/workflow-clarification.js.map +1 -0
  50. package/dist/plugin-routes.d.ts +9 -0
  51. package/dist/plugin-routes.d.ts.map +1 -0
  52. package/dist/plugin-routes.js +147 -0
  53. package/dist/plugin-routes.js.map +1 -0
  54. package/dist/providers/activeWorkflows.d.ts +11 -0
  55. package/dist/providers/activeWorkflows.d.ts.map +1 -0
  56. package/dist/providers/activeWorkflows.js +72 -0
  57. package/dist/providers/activeWorkflows.js.map +1 -0
  58. package/dist/providers/index.d.ts +4 -0
  59. package/dist/providers/index.d.ts.map +1 -0
  60. package/dist/providers/index.js +4 -0
  61. package/dist/providers/index.js.map +1 -0
  62. package/dist/providers/pendingDraft.d.ts +9 -0
  63. package/dist/providers/pendingDraft.d.ts.map +1 -0
  64. package/dist/providers/pendingDraft.js +48 -0
  65. package/dist/providers/pendingDraft.js.map +1 -0
  66. package/dist/providers/workflowStatus.d.ts +3 -0
  67. package/dist/providers/workflowStatus.d.ts.map +1 -0
  68. package/dist/providers/workflowStatus.js +69 -0
  69. package/dist/providers/workflowStatus.js.map +1 -0
  70. package/dist/register-routes.d.ts +2 -0
  71. package/dist/register-routes.d.ts.map +1 -0
  72. package/dist/register-routes.js +6 -0
  73. package/dist/register-routes.js.map +1 -0
  74. package/dist/routes/_helpers.d.ts +11 -0
  75. package/dist/routes/_helpers.d.ts.map +1 -0
  76. package/dist/routes/_helpers.js +22 -0
  77. package/dist/routes/_helpers.js.map +1 -0
  78. package/dist/routes/automations.d.ts +19 -0
  79. package/dist/routes/automations.d.ts.map +1 -0
  80. package/dist/routes/automations.js +32 -0
  81. package/dist/routes/automations.js.map +1 -0
  82. package/dist/routes/embedded-webhooks.d.ts +3 -0
  83. package/dist/routes/embedded-webhooks.d.ts.map +1 -0
  84. package/dist/routes/embedded-webhooks.js +47 -0
  85. package/dist/routes/embedded-webhooks.js.map +1 -0
  86. package/dist/routes/executions.d.ts +3 -0
  87. package/dist/routes/executions.d.ts.map +1 -0
  88. package/dist/routes/executions.js +58 -0
  89. package/dist/routes/executions.js.map +1 -0
  90. package/dist/routes/index.d.ts +4 -0
  91. package/dist/routes/index.d.ts.map +1 -0
  92. package/dist/routes/index.js +14 -0
  93. package/dist/routes/index.js.map +1 -0
  94. package/dist/routes/nodes.d.ts +3 -0
  95. package/dist/routes/nodes.d.ts.map +1 -0
  96. package/dist/routes/nodes.js +168 -0
  97. package/dist/routes/nodes.js.map +1 -0
  98. package/dist/routes/validation.d.ts +3 -0
  99. package/dist/routes/validation.d.ts.map +1 -0
  100. package/dist/routes/validation.js +41 -0
  101. package/dist/routes/validation.js.map +1 -0
  102. package/dist/routes/workflow-routes.d.ts +27 -0
  103. package/dist/routes/workflow-routes.d.ts.map +1 -0
  104. package/dist/routes/workflow-routes.js +326 -0
  105. package/dist/routes/workflow-routes.js.map +1 -0
  106. package/dist/routes/workflows.d.ts +3 -0
  107. package/dist/routes/workflows.d.ts.map +1 -0
  108. package/dist/routes/workflows.js +252 -0
  109. package/dist/routes/workflows.js.map +1 -0
  110. package/dist/schemas/draftIntent.d.ts +22 -0
  111. package/dist/schemas/draftIntent.d.ts.map +1 -0
  112. package/dist/schemas/draftIntent.js +22 -0
  113. package/dist/schemas/draftIntent.js.map +1 -0
  114. package/dist/schemas/feasibility.d.ts +13 -0
  115. package/dist/schemas/feasibility.d.ts.map +1 -0
  116. package/dist/schemas/feasibility.js +9 -0
  117. package/dist/schemas/feasibility.js.map +1 -0
  118. package/dist/schemas/index.d.ts +5 -0
  119. package/dist/schemas/index.d.ts.map +1 -0
  120. package/dist/schemas/index.js +5 -0
  121. package/dist/schemas/index.js.map +1 -0
  122. package/dist/schemas/keywordExtraction.d.ts +14 -0
  123. package/dist/schemas/keywordExtraction.d.ts.map +1 -0
  124. package/dist/schemas/keywordExtraction.js +12 -0
  125. package/dist/schemas/keywordExtraction.js.map +1 -0
  126. package/dist/schemas/workflowMatching.d.ts +36 -0
  127. package/dist/schemas/workflowMatching.d.ts.map +1 -0
  128. package/dist/schemas/workflowMatching.js +30 -0
  129. package/dist/schemas/workflowMatching.js.map +1 -0
  130. package/dist/services/embedded-workflow-service.d.ts +106 -0
  131. package/dist/services/embedded-workflow-service.d.ts.map +1 -0
  132. package/dist/services/embedded-workflow-service.js +1900 -0
  133. package/dist/services/embedded-workflow-service.js.map +1 -0
  134. package/dist/services/index.d.ts +5 -0
  135. package/dist/services/index.d.ts.map +1 -0
  136. package/dist/services/index.js +5 -0
  137. package/dist/services/index.js.map +1 -0
  138. package/dist/services/workflow-credential-store.d.ts +27 -0
  139. package/dist/services/workflow-credential-store.d.ts.map +1 -0
  140. package/dist/services/workflow-credential-store.js +92 -0
  141. package/dist/services/workflow-credential-store.js.map +1 -0
  142. package/dist/services/workflow-dispatch.d.ts +41 -0
  143. package/dist/services/workflow-dispatch.d.ts.map +1 -0
  144. package/dist/services/workflow-dispatch.js +86 -0
  145. package/dist/services/workflow-dispatch.js.map +1 -0
  146. package/dist/services/workflow-service.d.ts +63 -0
  147. package/dist/services/workflow-service.d.ts.map +1 -0
  148. package/dist/services/workflow-service.js +492 -0
  149. package/dist/services/workflow-service.js.map +1 -0
  150. package/dist/trigger-routes.d.ts +153 -0
  151. package/dist/trigger-routes.d.ts.map +1 -0
  152. package/dist/trigger-routes.js +424 -0
  153. package/dist/trigger-routes.js.map +1 -0
  154. package/dist/types/index.d.ts +457 -0
  155. package/dist/types/index.d.ts.map +1 -0
  156. package/dist/types/index.js +59 -0
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/utils/catalog.d.ts +16 -0
  159. package/dist/utils/catalog.d.ts.map +1 -0
  160. package/dist/utils/catalog.js +211 -0
  161. package/dist/utils/catalog.js.map +1 -0
  162. package/dist/utils/clarification.d.ts +17 -0
  163. package/dist/utils/clarification.d.ts.map +1 -0
  164. package/dist/utils/clarification.js +46 -0
  165. package/dist/utils/clarification.js.map +1 -0
  166. package/dist/utils/context.d.ts +4 -0
  167. package/dist/utils/context.d.ts.map +1 -0
  168. package/dist/utils/context.js +18 -0
  169. package/dist/utils/context.js.map +1 -0
  170. package/dist/utils/credentialResolver.d.ts +22 -0
  171. package/dist/utils/credentialResolver.d.ts.map +1 -0
  172. package/dist/utils/credentialResolver.js +146 -0
  173. package/dist/utils/credentialResolver.js.map +1 -0
  174. package/dist/utils/generation.d.ts +36 -0
  175. package/dist/utils/generation.d.ts.map +1 -0
  176. package/dist/utils/generation.js +701 -0
  177. package/dist/utils/generation.js.map +1 -0
  178. package/dist/utils/host-capabilities.d.ts +27 -0
  179. package/dist/utils/host-capabilities.d.ts.map +1 -0
  180. package/dist/utils/host-capabilities.js +59 -0
  181. package/dist/utils/host-capabilities.js.map +1 -0
  182. package/dist/utils/inferSyntheticOutputSchema.d.ts +20 -0
  183. package/dist/utils/inferSyntheticOutputSchema.d.ts.map +1 -0
  184. package/dist/utils/inferSyntheticOutputSchema.js +151 -0
  185. package/dist/utils/inferSyntheticOutputSchema.js.map +1 -0
  186. package/dist/utils/outputSchema.d.ts +26 -0
  187. package/dist/utils/outputSchema.d.ts.map +1 -0
  188. package/dist/utils/outputSchema.js +297 -0
  189. package/dist/utils/outputSchema.js.map +1 -0
  190. package/dist/utils/validateAndRepair.d.ts +41 -0
  191. package/dist/utils/validateAndRepair.d.ts.map +1 -0
  192. package/dist/utils/validateAndRepair.js +483 -0
  193. package/dist/utils/validateAndRepair.js.map +1 -0
  194. package/dist/utils/workflow-prompts/actionResponse.d.ts +2 -0
  195. package/dist/utils/workflow-prompts/actionResponse.d.ts.map +1 -0
  196. package/dist/utils/workflow-prompts/actionResponse.js +17 -0
  197. package/dist/utils/workflow-prompts/actionResponse.js.map +1 -0
  198. package/dist/utils/workflow-prompts/draftIntent.d.ts +2 -0
  199. package/dist/utils/workflow-prompts/draftIntent.d.ts.map +1 -0
  200. package/dist/utils/workflow-prompts/draftIntent.js +23 -0
  201. package/dist/utils/workflow-prompts/draftIntent.js.map +1 -0
  202. package/dist/utils/workflow-prompts/feasibilityCheck.d.ts +2 -0
  203. package/dist/utils/workflow-prompts/feasibilityCheck.d.ts.map +1 -0
  204. package/dist/utils/workflow-prompts/feasibilityCheck.js +21 -0
  205. package/dist/utils/workflow-prompts/feasibilityCheck.js.map +1 -0
  206. package/dist/utils/workflow-prompts/fieldCorrection.d.ts +3 -0
  207. package/dist/utils/workflow-prompts/fieldCorrection.d.ts.map +1 -0
  208. package/dist/utils/workflow-prompts/fieldCorrection.js +20 -0
  209. package/dist/utils/workflow-prompts/fieldCorrection.js.map +1 -0
  210. package/dist/utils/workflow-prompts/index.d.ts +8 -0
  211. package/dist/utils/workflow-prompts/index.d.ts.map +1 -0
  212. package/dist/utils/workflow-prompts/index.js +8 -0
  213. package/dist/utils/workflow-prompts/index.js.map +1 -0
  214. package/dist/utils/workflow-prompts/keywordExtraction.d.ts +2 -0
  215. package/dist/utils/workflow-prompts/keywordExtraction.d.ts.map +1 -0
  216. package/dist/utils/workflow-prompts/keywordExtraction.js +21 -0
  217. package/dist/utils/workflow-prompts/keywordExtraction.js.map +1 -0
  218. package/dist/utils/workflow-prompts/parameterCorrection.d.ts +3 -0
  219. package/dist/utils/workflow-prompts/parameterCorrection.d.ts.map +1 -0
  220. package/dist/utils/workflow-prompts/parameterCorrection.js +29 -0
  221. package/dist/utils/workflow-prompts/parameterCorrection.js.map +1 -0
  222. package/dist/utils/workflow-prompts/workflowGeneration.d.ts +2 -0
  223. package/dist/utils/workflow-prompts/workflowGeneration.d.ts.map +1 -0
  224. package/dist/utils/workflow-prompts/workflowGeneration.js +529 -0
  225. package/dist/utils/workflow-prompts/workflowGeneration.js.map +1 -0
  226. package/dist/utils/workflow-prompts/workflowMatching.d.ts +2 -0
  227. package/dist/utils/workflow-prompts/workflowMatching.d.ts.map +1 -0
  228. package/dist/utils/workflow-prompts/workflowMatching.js +23 -0
  229. package/dist/utils/workflow-prompts/workflowMatching.js.map +1 -0
  230. package/dist/utils/workflow.d.ts +62 -0
  231. package/dist/utils/workflow.d.ts.map +1 -0
  232. package/dist/utils/workflow.js +712 -0
  233. package/dist/utils/workflow.js.map +1 -0
  234. package/package.json +87 -0
  235. package/src/actions/index.ts +1 -0
  236. package/src/actions/workflow.ts +494 -0
  237. package/src/data/defaultNodes.json +9887 -0
  238. package/src/data/schemaIndex.json +1 -0
  239. package/src/data/triggerSchemaIndex.json +1 -0
  240. package/src/db/index.ts +8 -0
  241. package/src/db/schema.ts +94 -0
  242. package/src/index.ts +179 -0
  243. package/src/lib/automations-builder.ts +679 -0
  244. package/src/lib/automations-types.ts +391 -0
  245. package/src/lib/index.ts +8 -0
  246. package/src/lib/legacy-task-migration.ts +143 -0
  247. package/src/lib/legacy-text-trigger-migration.ts +178 -0
  248. package/src/lib/workflow-clarification.ts +497 -0
  249. package/src/plugin-routes.ts +164 -0
  250. package/src/providers/activeWorkflows.ts +81 -0
  251. package/src/providers/index.ts +3 -0
  252. package/src/providers/pendingDraft.ts +55 -0
  253. package/src/providers/workflowStatus.ts +88 -0
  254. package/src/register-routes.ts +6 -0
  255. package/src/routes/_helpers.ts +27 -0
  256. package/src/routes/automations.ts +46 -0
  257. package/src/routes/embedded-webhooks.ts +64 -0
  258. package/src/routes/executions.ts +75 -0
  259. package/src/routes/index.ts +16 -0
  260. package/src/routes/nodes.ts +211 -0
  261. package/src/routes/validation.ts +51 -0
  262. package/src/routes/workflow-routes.ts +469 -0
  263. package/src/routes/workflows.ts +310 -0
  264. package/src/schemas/draftIntent.ts +21 -0
  265. package/src/schemas/feasibility.ts +8 -0
  266. package/src/schemas/index.ts +4 -0
  267. package/src/schemas/keywordExtraction.ts +11 -0
  268. package/src/schemas/workflowMatching.ts +29 -0
  269. package/src/services/embedded-workflow-service.ts +2224 -0
  270. package/src/services/index.ts +17 -0
  271. package/src/services/workflow-credential-store.ts +132 -0
  272. package/src/services/workflow-dispatch.ts +121 -0
  273. package/src/services/workflow-service.ts +839 -0
  274. package/src/trigger-routes.ts +714 -0
  275. package/src/types/index.ts +562 -0
  276. package/src/utils/catalog.ts +260 -0
  277. package/src/utils/clarification.ts +52 -0
  278. package/src/utils/context.ts +22 -0
  279. package/src/utils/credentialResolver.ts +234 -0
  280. package/src/utils/generation.ts +987 -0
  281. package/src/utils/host-capabilities.ts +81 -0
  282. package/src/utils/inferSyntheticOutputSchema.ts +163 -0
  283. package/src/utils/outputSchema.ts +372 -0
  284. package/src/utils/validateAndRepair.ts +610 -0
  285. package/src/utils/workflow-prompts/actionResponse.ts +16 -0
  286. package/src/utils/workflow-prompts/draftIntent.ts +22 -0
  287. package/src/utils/workflow-prompts/feasibilityCheck.ts +20 -0
  288. package/src/utils/workflow-prompts/fieldCorrection.ts +20 -0
  289. package/src/utils/workflow-prompts/index.ts +10 -0
  290. package/src/utils/workflow-prompts/keywordExtraction.ts +20 -0
  291. package/src/utils/workflow-prompts/parameterCorrection.ts +29 -0
  292. package/src/utils/workflow-prompts/workflowGeneration.ts +528 -0
  293. package/src/utils/workflow-prompts/workflowMatching.ts +22 -0
  294. 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