@elizaos/plugin-workflow 2.0.0-beta.1 → 2.0.3-beta.5

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 (170) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -26
  3. package/dist/actions/eval-code.d.ts +12 -0
  4. package/dist/actions/eval-code.d.ts.map +1 -0
  5. package/dist/actions/eval-code.js +59 -0
  6. package/dist/actions/eval-code.js.map +1 -0
  7. package/dist/actions/index.d.ts +1 -0
  8. package/dist/actions/index.d.ts.map +1 -1
  9. package/dist/actions/index.js +1 -0
  10. package/dist/actions/index.js.map +1 -1
  11. package/dist/actions/workflow.d.ts +7 -0
  12. package/dist/actions/workflow.d.ts.map +1 -1
  13. package/dist/actions/workflow.js +462 -10
  14. package/dist/actions/workflow.js.map +1 -1
  15. package/dist/db/schema.d.ts +196 -0
  16. package/dist/db/schema.d.ts.map +1 -1
  17. package/dist/db/schema.js +23 -0
  18. package/dist/db/schema.js.map +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +9 -64
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/automations-builder.d.ts.map +1 -1
  23. package/dist/lib/automations-builder.js +10 -35
  24. package/dist/lib/automations-builder.js.map +1 -1
  25. package/dist/lib/automations-types.d.ts +2 -2
  26. package/dist/lib/automations-types.d.ts.map +1 -1
  27. package/dist/lib/automations-types.js.map +1 -1
  28. package/dist/lib/index.d.ts +0 -2
  29. package/dist/lib/index.d.ts.map +1 -1
  30. package/dist/lib/index.js +1 -2
  31. package/dist/lib/index.js.map +1 -1
  32. package/dist/lib/workflow-clarification.d.ts +2 -2
  33. package/dist/lib/workflow-clarification.d.ts.map +1 -1
  34. package/dist/lib/workflow-clarification.js +15 -11
  35. package/dist/lib/workflow-clarification.js.map +1 -1
  36. package/dist/plugin-routes.d.ts.map +1 -1
  37. package/dist/plugin-routes.js +6 -0
  38. package/dist/plugin-routes.js.map +1 -1
  39. package/dist/providers/activeWorkflows.js +2 -2
  40. package/dist/providers/activeWorkflows.js.map +1 -1
  41. package/dist/providers/workflowStatus.js +1 -1
  42. package/dist/providers/workflowStatus.js.map +1 -1
  43. package/dist/routes/workflow-routes.d.ts.map +1 -1
  44. package/dist/routes/workflow-routes.js +68 -2
  45. package/dist/routes/workflow-routes.js.map +1 -1
  46. package/dist/routes/workflows.d.ts.map +1 -1
  47. package/dist/routes/workflows.js +5 -1
  48. package/dist/routes/workflows.js.map +1 -1
  49. package/dist/services/embedded-workflow-service.d.ts +74 -17
  50. package/dist/services/embedded-workflow-service.d.ts.map +1 -1
  51. package/dist/services/embedded-workflow-service.js +343 -149
  52. package/dist/services/embedded-workflow-service.js.map +1 -1
  53. package/dist/services/smithers-runtime.d.ts +47 -0
  54. package/dist/services/smithers-runtime.d.ts.map +1 -0
  55. package/dist/services/smithers-runtime.js +444 -0
  56. package/dist/services/smithers-runtime.js.map +1 -0
  57. package/dist/services/workflow-credential-store.js +1 -1
  58. package/dist/services/workflow-credential-store.js.map +1 -1
  59. package/dist/services/workflow-dispatch.d.ts +31 -1
  60. package/dist/services/workflow-dispatch.d.ts.map +1 -1
  61. package/dist/services/workflow-dispatch.js +75 -10
  62. package/dist/services/workflow-dispatch.js.map +1 -1
  63. package/dist/services/workflow-service.d.ts +27 -1
  64. package/dist/services/workflow-service.d.ts.map +1 -1
  65. package/dist/services/workflow-service.js +133 -11
  66. package/dist/services/workflow-service.js.map +1 -1
  67. package/dist/trigger-routes.d.ts +2 -18
  68. package/dist/trigger-routes.d.ts.map +1 -1
  69. package/dist/trigger-routes.js +11 -39
  70. package/dist/trigger-routes.js.map +1 -1
  71. package/dist/types/index.d.ts +82 -2
  72. package/dist/types/index.d.ts.map +1 -1
  73. package/dist/types/index.js.map +1 -1
  74. package/dist/types/workflow-contracts.d.ts +118 -0
  75. package/dist/types/workflow-contracts.d.ts.map +1 -0
  76. package/dist/types/workflow-contracts.js +2 -0
  77. package/dist/types/workflow-contracts.js.map +1 -0
  78. package/dist/utils/catalog.js +2 -2
  79. package/dist/utils/catalog.js.map +1 -1
  80. package/dist/utils/clarification.d.ts +1 -1
  81. package/dist/utils/clarification.d.ts.map +1 -1
  82. package/dist/utils/clarification.js +15 -4
  83. package/dist/utils/clarification.js.map +1 -1
  84. package/dist/utils/context.js +1 -1
  85. package/dist/utils/context.js.map +1 -1
  86. package/dist/utils/evaluation-samples.d.ts +6 -0
  87. package/dist/utils/evaluation-samples.d.ts.map +1 -0
  88. package/dist/utils/evaluation-samples.js +216 -0
  89. package/dist/utils/evaluation-samples.js.map +1 -0
  90. package/dist/utils/execution-diagnostics.d.ts +26 -0
  91. package/dist/utils/execution-diagnostics.d.ts.map +1 -0
  92. package/dist/utils/execution-diagnostics.js +159 -0
  93. package/dist/utils/execution-diagnostics.js.map +1 -0
  94. package/dist/utils/generation.d.ts.map +1 -1
  95. package/dist/utils/generation.js +134 -19
  96. package/dist/utils/generation.js.map +1 -1
  97. package/dist/utils/host-capabilities.d.ts.map +1 -1
  98. package/dist/utils/host-capabilities.js +20 -5
  99. package/dist/utils/host-capabilities.js.map +1 -1
  100. package/dist/utils/inferSyntheticOutputSchema.js +3 -3
  101. package/dist/utils/inferSyntheticOutputSchema.js.map +1 -1
  102. package/dist/utils/outputSchema.js +1 -1
  103. package/dist/utils/outputSchema.js.map +1 -1
  104. package/dist/utils/validateAndRepair.js +10 -10
  105. package/dist/utils/validateAndRepair.js.map +1 -1
  106. package/dist/utils/workflow-prompts/draftIntent.d.ts +1 -1
  107. package/dist/utils/workflow-prompts/draftIntent.d.ts.map +1 -1
  108. package/dist/utils/workflow-prompts/draftIntent.js +1 -1
  109. package/dist/utils/workflow-prompts/keywordExtraction.d.ts +1 -1
  110. package/dist/utils/workflow-prompts/keywordExtraction.d.ts.map +1 -1
  111. package/dist/utils/workflow-prompts/keywordExtraction.js +1 -1
  112. package/dist/utils/workflow-prompts/workflowGeneration.d.ts +1 -1
  113. package/dist/utils/workflow-prompts/workflowGeneration.d.ts.map +1 -1
  114. package/dist/utils/workflow-prompts/workflowGeneration.js +4 -4
  115. package/dist/utils/workflow-prompts/workflowMatching.d.ts +1 -1
  116. package/dist/utils/workflow-prompts/workflowMatching.d.ts.map +1 -1
  117. package/dist/utils/workflow-prompts/workflowMatching.js +1 -1
  118. package/dist/utils/workflow.d.ts +1 -0
  119. package/dist/utils/workflow.d.ts.map +1 -1
  120. package/dist/utils/workflow.js +44 -8
  121. package/dist/utils/workflow.js.map +1 -1
  122. package/package.json +27 -8
  123. package/registry-entry.json +25 -0
  124. package/src/actions/eval-code.ts +81 -0
  125. package/src/actions/index.ts +1 -0
  126. package/src/actions/workflow.ts +518 -10
  127. package/src/db/schema.ts +31 -0
  128. package/src/index.ts +9 -82
  129. package/src/lib/automations-builder.ts +11 -35
  130. package/src/lib/automations-types.ts +1 -2
  131. package/src/lib/index.ts +0 -8
  132. package/src/lib/workflow-clarification.ts +18 -13
  133. package/src/plugin-routes.ts +6 -0
  134. package/src/providers/activeWorkflows.ts +2 -2
  135. package/src/providers/workflowStatus.ts +1 -1
  136. package/src/routes/workflow-routes.ts +100 -2
  137. package/src/routes/workflows.ts +5 -1
  138. package/src/services/embedded-workflow-service.ts +447 -172
  139. package/src/services/smithers-runtime.ts +526 -0
  140. package/src/services/workflow-credential-store.ts +1 -1
  141. package/src/services/workflow-dispatch.ts +116 -13
  142. package/src/services/workflow-service.ts +186 -10
  143. package/src/trigger-routes.ts +12 -70
  144. package/src/types/index.ts +94 -2
  145. package/src/types/workflow-contracts.ts +166 -0
  146. package/src/utils/catalog.ts +2 -2
  147. package/src/utils/clarification.ts +19 -5
  148. package/src/utils/context.ts +1 -1
  149. package/src/utils/evaluation-samples.ts +239 -0
  150. package/src/utils/execution-diagnostics.ts +192 -0
  151. package/src/utils/generation.ts +224 -32
  152. package/src/utils/host-capabilities.ts +21 -5
  153. package/src/utils/inferSyntheticOutputSchema.ts +3 -3
  154. package/src/utils/outputSchema.ts +1 -1
  155. package/src/utils/validateAndRepair.ts +10 -10
  156. package/src/utils/workflow-prompts/draftIntent.ts +1 -1
  157. package/src/utils/workflow-prompts/keywordExtraction.ts +1 -1
  158. package/src/utils/workflow-prompts/workflowGeneration.ts +4 -4
  159. package/src/utils/workflow-prompts/workflowMatching.ts +1 -1
  160. package/src/utils/workflow.ts +56 -8
  161. package/dist/lib/legacy-task-migration.d.ts +0 -20
  162. package/dist/lib/legacy-task-migration.d.ts.map +0 -1
  163. package/dist/lib/legacy-task-migration.js +0 -110
  164. package/dist/lib/legacy-task-migration.js.map +0 -1
  165. package/dist/lib/legacy-text-trigger-migration.d.ts +0 -18
  166. package/dist/lib/legacy-text-trigger-migration.d.ts.map +0 -1
  167. package/dist/lib/legacy-text-trigger-migration.js +0 -131
  168. package/dist/lib/legacy-text-trigger-migration.js.map +0 -1
  169. package/src/lib/legacy-task-migration.ts +0 -143
  170. package/src/lib/legacy-text-trigger-migration.ts +0 -178
@@ -0,0 +1,216 @@
1
+ const DEFAULT_LIMIT = 10;
2
+ const MAX_LIMIT = 50;
3
+ const MAX_PREVIEW_LENGTH = 240;
4
+ const MAX_SAMPLE_VALUE_DEPTH = 4;
5
+ const MAX_SAMPLE_OBJECT_KEYS = 20;
6
+ const MAX_SAMPLE_ARRAY_ITEMS = 10;
7
+ function isRecord(value) {
8
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
9
+ }
10
+ function readString(value) {
11
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
12
+ }
13
+ function readNumber(value) {
14
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
15
+ }
16
+ function clampLimit(limit) {
17
+ if (typeof limit !== 'number' || !Number.isFinite(limit))
18
+ return DEFAULT_LIMIT;
19
+ return Math.min(Math.max(1, Math.floor(limit)), MAX_LIMIT);
20
+ }
21
+ function truncate(value, maxLength = MAX_PREVIEW_LENGTH) {
22
+ return value.length > maxLength ? `${value.slice(0, maxLength - 3)}...` : value;
23
+ }
24
+ function compactValue(value, depth = 0) {
25
+ if (value === null ||
26
+ typeof value === 'boolean' ||
27
+ typeof value === 'number' ||
28
+ typeof value === 'undefined') {
29
+ return value;
30
+ }
31
+ if (typeof value === 'string') {
32
+ return truncate(value, MAX_PREVIEW_LENGTH);
33
+ }
34
+ if (depth >= MAX_SAMPLE_VALUE_DEPTH) {
35
+ return '[truncated]';
36
+ }
37
+ if (Array.isArray(value)) {
38
+ return value.slice(0, MAX_SAMPLE_ARRAY_ITEMS).map((item) => compactValue(item, depth + 1));
39
+ }
40
+ if (!isRecord(value)) {
41
+ return String(value);
42
+ }
43
+ return Object.fromEntries(Object.entries(value)
44
+ .slice(0, MAX_SAMPLE_OBJECT_KEYS)
45
+ .map(([key, item]) => [key, compactValue(item, depth + 1)]));
46
+ }
47
+ function compactRecord(value) {
48
+ if (!isRecord(value))
49
+ return undefined;
50
+ const compacted = compactValue(value);
51
+ return isRecord(compacted) ? compacted : undefined;
52
+ }
53
+ function countMainItems(data) {
54
+ if (!isRecord(data) || !Array.isArray(data.main))
55
+ return 0;
56
+ return data.main.reduce((total, output) => {
57
+ if (!Array.isArray(output))
58
+ return total;
59
+ return total + output.length;
60
+ }, 0);
61
+ }
62
+ function previewMainData(data) {
63
+ if (!isRecord(data) || !Array.isArray(data.main))
64
+ return undefined;
65
+ for (const output of data.main) {
66
+ if (!Array.isArray(output))
67
+ continue;
68
+ const first = output.find(isRecord);
69
+ if (!first)
70
+ continue;
71
+ const json = isRecord(first.json) ? first.json : first;
72
+ try {
73
+ return truncate(JSON.stringify(compactValue(json)));
74
+ }
75
+ catch {
76
+ return 'Output could not be previewed';
77
+ }
78
+ }
79
+ return undefined;
80
+ }
81
+ function readRunError(run) {
82
+ if (!isRecord(run))
83
+ return undefined;
84
+ const error = run.error;
85
+ if (isRecord(error)) {
86
+ return readString(error.message) ?? readString(error.description);
87
+ }
88
+ return readString(error);
89
+ }
90
+ function readExecutionError(execution) {
91
+ const error = execution.data?.resultData?.error;
92
+ if (error?.message)
93
+ return error.message;
94
+ for (const node of collectNodeSamples(execution)) {
95
+ if (node.error)
96
+ return node.error;
97
+ }
98
+ return undefined;
99
+ }
100
+ function collectNodeSamples(execution) {
101
+ const runData = execution.data?.resultData?.runData;
102
+ if (!runData)
103
+ return [];
104
+ return Object.entries(runData).flatMap(([name, runs]) => {
105
+ if (!Array.isArray(runs))
106
+ return [];
107
+ return runs.map((run) => {
108
+ const record = isRecord(run) ? run : {};
109
+ const error = readRunError(record);
110
+ const preview = previewMainData(record.data);
111
+ return {
112
+ name,
113
+ status: error ? 'error' : execution.status === 'success' ? 'success' : 'unknown',
114
+ itemCount: countMainItems(record.data),
115
+ ...(readNumber(record.executionTime) !== undefined
116
+ ? { executionTimeMs: readNumber(record.executionTime) }
117
+ : {}),
118
+ ...(error ? { error } : {}),
119
+ ...(preview ? { preview } : {}),
120
+ };
121
+ });
122
+ });
123
+ }
124
+ function slugify(value) {
125
+ return value
126
+ .toLowerCase()
127
+ .replace(/[^a-z0-9]+/g, '-')
128
+ .replace(/^-+|-+$/g, '')
129
+ .slice(0, 48);
130
+ }
131
+ function buildSample(workflow, execution) {
132
+ const passed = execution.status === 'success';
133
+ const workflowId = workflow.id;
134
+ const triggerData = compactRecord(execution.customData?.triggerData);
135
+ const error = readExecutionError(execution);
136
+ const nodes = collectNodeSamples(execution);
137
+ const scoreReason = passed
138
+ ? 'Execution completed successfully.'
139
+ : error
140
+ ? `Execution failed: ${error}`
141
+ : `Execution finished with status ${execution.status}.`;
142
+ return {
143
+ id: `${workflowId}:${execution.id}`,
144
+ workflowId,
145
+ workflowName: workflow.name,
146
+ workflowVersionId: workflow.versionId,
147
+ executionId: execution.id,
148
+ createdAt: execution.stoppedAt ?? execution.startedAt,
149
+ input: {
150
+ mode: execution.mode,
151
+ ...(triggerData ? { triggerData } : {}),
152
+ },
153
+ expected: {
154
+ status: execution.status,
155
+ passed,
156
+ ...(execution.data?.resultData?.lastNodeExecuted
157
+ ? { lastNodeExecuted: execution.data.resultData.lastNodeExecuted }
158
+ : {}),
159
+ ...(execution.data?.resultData?.engine ? { engine: execution.data.resultData.engine } : {}),
160
+ ...(error ? { error } : {}),
161
+ nodes,
162
+ },
163
+ score: {
164
+ pass: passed,
165
+ value: passed ? 1 : 0,
166
+ reason: scoreReason,
167
+ },
168
+ tags: [
169
+ 'smithers',
170
+ 'workflow-eval',
171
+ `workflow:${workflowId}`,
172
+ `status:${execution.status}`,
173
+ `mode:${execution.mode}`,
174
+ ],
175
+ };
176
+ }
177
+ export function buildWorkflowEvaluationSuite(workflow, executions, options) {
178
+ const limit = clampLimit(options?.limit);
179
+ const samples = executions.slice(0, limit).map((execution) => buildSample(workflow, execution));
180
+ const safeName = slugify(workflow.name) || slugify(workflow.id) || 'workflow';
181
+ const suiteName = safeName;
182
+ const caseFile = `evals/${suiteName}.jsonl`;
183
+ const recommendedEvalCommand = `bunx smithers-orchestrator eval <workflow.tsx> --cases ${caseFile} --suite ${suiteName}`;
184
+ const recommendedOptimizeCommand = 'bunx smithers-orchestrator optimize';
185
+ const recommendedObservabilityCommand = 'bunx smithers-orchestrator observability --detach';
186
+ const recommendedMetricsCommand = 'bunx smithers-orchestrator up <workflow.tsx> --serve --metrics';
187
+ const jsonl = samples.map((sample) => JSON.stringify(sample)).join('\n');
188
+ return {
189
+ workflowId: workflow.id,
190
+ workflowName: workflow.name,
191
+ workflowVersionId: workflow.versionId,
192
+ generatedAt: options?.generatedAt ?? new Date().toISOString(),
193
+ sampleCount: samples.length,
194
+ samples,
195
+ jsonl,
196
+ optimizer: {
197
+ engine: 'smithers-gepa',
198
+ target: 'workflow-generation',
199
+ suiteName,
200
+ caseFile,
201
+ recommendedCommand: recommendedEvalCommand,
202
+ recommendedEvalCommand,
203
+ recommendedOptimizeCommand,
204
+ recommendedObservabilityCommand,
205
+ recommendedMetricsCommand,
206
+ notes: [
207
+ `Copy jsonl to ${caseFile} before running eval.`,
208
+ 'Run GEPA optimization after the eval suite is configured; Smithers writes an optimized prompt artifact only when score improves.',
209
+ 'Use the observability and metrics commands when inspecting long-running or flaky workflows.',
210
+ 'Successful executions are positive examples; failed executions remain useful regression cases.',
211
+ 'Samples are generated from persisted workflow executions and compact large payloads.',
212
+ ],
213
+ },
214
+ };
215
+ }
216
+ //# sourceMappingURL=evaluation-samples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-samples.js","sourceRoot":"","sources":["../../src/utils/evaluation-samples.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { WorkflowExecution } from '../types/index';
2
+ export type WorkflowExecutionTone = 'success' | 'danger' | 'warning' | 'muted';
3
+ export interface WorkflowExecutionRunRow {
4
+ nodeName: string;
5
+ status: 'success' | 'error' | 'unknown';
6
+ startTime?: number;
7
+ executionTimeMs?: number;
8
+ itemCount: number;
9
+ preview: string;
10
+ error?: string;
11
+ }
12
+ export interface WorkflowExecutionSummary {
13
+ statusLabel: string;
14
+ tone: WorkflowExecutionTone;
15
+ durationLabel: string;
16
+ nodeCount: number;
17
+ lastNode?: string;
18
+ error?: string;
19
+ }
20
+ export declare function getWorkflowExecutionRunRows(execution: WorkflowExecution): WorkflowExecutionRunRow[];
21
+ export declare function getWorkflowExecutionError(execution: WorkflowExecution): string | undefined;
22
+ export declare function formatWorkflowExecutionDuration(startedAt?: string, stoppedAt?: string | null): string;
23
+ export declare function summarizeWorkflowExecution(execution: WorkflowExecution): WorkflowExecutionSummary;
24
+ export declare function formatWorkflowEngineMetrics(execution: WorkflowExecution): string | null;
25
+ export declare function buildWorkflowExecutionDiagnostics(execution: WorkflowExecution): string;
26
+ //# sourceMappingURL=execution-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-diagnostics.d.ts","sourceRoot":"","sources":["../../src/utils/execution-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgDD,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,iBAAiB,GAC3B,uBAAuB,EAAE,CAqB3B;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAO1F;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,CASR;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,iBAAiB,GAAG,wBAAwB,CA8BjG;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAMvF;AAED,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAkCtF"}
@@ -0,0 +1,159 @@
1
+ function isRecord(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ function readNumber(value) {
5
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
6
+ }
7
+ function readString(value) {
8
+ return typeof value === 'string' && value.trim() ? value : undefined;
9
+ }
10
+ function countMainItems(data) {
11
+ if (!isRecord(data) || !Array.isArray(data.main))
12
+ return 0;
13
+ return data.main.reduce((total, output) => {
14
+ if (!Array.isArray(output))
15
+ return total;
16
+ return total + output.length;
17
+ }, 0);
18
+ }
19
+ function previewMainData(data) {
20
+ if (!isRecord(data) || !Array.isArray(data.main))
21
+ return 'No output';
22
+ for (const output of data.main) {
23
+ if (!Array.isArray(output))
24
+ continue;
25
+ const first = output.find(isRecord);
26
+ if (!first)
27
+ continue;
28
+ const json = isRecord(first.json) ? first.json : first;
29
+ try {
30
+ const preview = JSON.stringify(json);
31
+ return preview.length > 160 ? `${preview.slice(0, 157)}...` : preview;
32
+ }
33
+ catch {
34
+ return 'Output could not be previewed';
35
+ }
36
+ }
37
+ return 'No output';
38
+ }
39
+ function getRunError(run) {
40
+ if (!isRecord(run))
41
+ return undefined;
42
+ const error = run.error;
43
+ if (isRecord(error)) {
44
+ return readString(error.message) ?? readString(error.description);
45
+ }
46
+ return readString(error);
47
+ }
48
+ export function getWorkflowExecutionRunRows(execution) {
49
+ const runData = execution.data?.resultData?.runData;
50
+ if (!runData)
51
+ return [];
52
+ return Object.entries(runData).flatMap(([nodeName, runs]) => {
53
+ if (!Array.isArray(runs))
54
+ return [];
55
+ return runs.map((run) => {
56
+ const record = isRecord(run) ? run : {};
57
+ const error = getRunError(record);
58
+ const data = record.data;
59
+ return {
60
+ nodeName,
61
+ status: error ? 'error' : execution.status === 'success' ? 'success' : 'unknown',
62
+ startTime: readNumber(record.startTime),
63
+ executionTimeMs: readNumber(record.executionTime),
64
+ itemCount: countMainItems(data),
65
+ preview: previewMainData(data),
66
+ error,
67
+ };
68
+ });
69
+ });
70
+ }
71
+ export function getWorkflowExecutionError(execution) {
72
+ const error = execution.data?.resultData?.error;
73
+ if (error?.message)
74
+ return error.message;
75
+ for (const row of getWorkflowExecutionRunRows(execution)) {
76
+ if (row.error)
77
+ return row.error;
78
+ }
79
+ return undefined;
80
+ }
81
+ export function formatWorkflowExecutionDuration(startedAt, stoppedAt) {
82
+ if (!startedAt)
83
+ return 'Unknown';
84
+ const startMs = Date.parse(startedAt);
85
+ const stopMs = stoppedAt ? Date.parse(stoppedAt) : Date.now();
86
+ if (!Number.isFinite(startMs) || !Number.isFinite(stopMs))
87
+ return 'Unknown';
88
+ const durationMs = Math.max(0, stopMs - startMs);
89
+ if (durationMs < 1000)
90
+ return `${durationMs} ms`;
91
+ if (durationMs < 60_000)
92
+ return `${(durationMs / 1000).toFixed(1)} s`;
93
+ return `${Math.round(durationMs / 60_000)} min`;
94
+ }
95
+ export function summarizeWorkflowExecution(execution) {
96
+ const rows = getWorkflowExecutionRunRows(execution);
97
+ const status = execution.status;
98
+ const tone = status === 'success'
99
+ ? 'success'
100
+ : status === 'error' || status === 'crashed' || status === 'canceled'
101
+ ? 'danger'
102
+ : status === 'running' || status === 'waiting'
103
+ ? 'warning'
104
+ : 'muted';
105
+ const statusLabel = status === 'success'
106
+ ? 'Succeeded'
107
+ : status === 'error'
108
+ ? 'Failed'
109
+ : status === 'running'
110
+ ? 'Running'
111
+ : status === 'waiting'
112
+ ? 'Waiting'
113
+ : status.charAt(0).toUpperCase() + status.slice(1);
114
+ return {
115
+ statusLabel,
116
+ tone,
117
+ durationLabel: formatWorkflowExecutionDuration(execution.startedAt, execution.stoppedAt),
118
+ nodeCount: rows.length,
119
+ lastNode: execution.data?.resultData?.lastNodeExecuted,
120
+ error: getWorkflowExecutionError(execution),
121
+ };
122
+ }
123
+ export function formatWorkflowEngineMetrics(execution) {
124
+ const engine = execution.data?.resultData?.engine;
125
+ if (!engine)
126
+ return null;
127
+ const skipped = engine.skipped > 0 ? ` / ${engine.skipped} skipped` : '';
128
+ const retries = engine.retries > 0 ? ` / ${engine.retries} retries` : '';
129
+ return `${engine.nodes} nodes / ${engine.levels} levels / ${engine.maxConcurrency} max parallel${skipped}${retries}`;
130
+ }
131
+ export function buildWorkflowExecutionDiagnostics(execution) {
132
+ const summary = summarizeWorkflowExecution(execution);
133
+ const rows = getWorkflowExecutionRunRows(execution);
134
+ const engineMetrics = formatWorkflowEngineMetrics(execution);
135
+ const lines = [
136
+ `Workflow execution ${execution.id}`,
137
+ `Status: ${summary.statusLabel}`,
138
+ `Workflow: ${execution.workflowId}`,
139
+ `Mode: ${execution.mode}`,
140
+ `Started: ${execution.startedAt}`,
141
+ `Stopped: ${execution.stoppedAt ?? 'still running'}`,
142
+ `Duration: ${summary.durationLabel}`,
143
+ summary.lastNode ? `Last node: ${summary.lastNode}` : null,
144
+ engineMetrics ? `Engine: ${engineMetrics}` : null,
145
+ summary.error ? `Error: ${summary.error}` : null,
146
+ ].filter((line) => Boolean(line));
147
+ if (rows.length === 0) {
148
+ lines.push('Nodes: none recorded');
149
+ return lines.join('\n');
150
+ }
151
+ lines.push('Nodes:');
152
+ for (const row of rows) {
153
+ const elapsed = typeof row.executionTimeMs === 'number' ? `${row.executionTimeMs} ms` : 'unknown';
154
+ const result = row.error ? `error=${row.error}` : `preview=${row.preview}`;
155
+ lines.push(`- ${row.nodeName}: ${row.status}; ${row.itemCount} item${row.itemCount === 1 ? '' : 's'}; ${elapsed}; ${result}`);
156
+ }
157
+ return lines.join('\n');
158
+ }
159
+ //# sourceMappingURL=execution-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-diagnostics.js","sourceRoot":"","sources":["../../src/utils/execution-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/utils/generation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,eAAe,CAAC;AAOtE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAEjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AASxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAiDxD,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAuCnB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAsE9B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA6C5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC,EACF,aAAa,EAAE,cAAc,EAAE,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAwD7B;AAuMD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,cAAc,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA2B7B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,gBAAgB,EAAE,kBAAkB,EACpC,mBAAmB,EAAE,MAAM,EAC3B,aAAa,EAAE,cAAc,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAmC7B;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAsB7F;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAkCD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,gBAAgB,EAAE,EAChC,cAAc,EAAE,gBAAgB,EAAE,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAsC5B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,mBAAmB,EAAE,GACjC,OAAO,CAAC,kBAAkB,CAAC,CA6D7B;AAqDD,4EAA4E;AAC5E,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,kBAAkB,CAAC,CA+H7B"}
1
+ {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/utils/generation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,eAAe,CAAC;AAOtE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAEjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AASxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAoNxD,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAwCnB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAuE9B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA8C5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC,EACF,aAAa,EAAE,cAAc,EAAE,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA6D7B;AA4MD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,cAAc,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA2B7B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,gBAAgB,EAAE,kBAAkB,EACpC,mBAAmB,EAAE,MAAM,EAC3B,aAAa,EAAE,cAAc,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAmC7B;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAsB7F;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAkCD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,gBAAgB,EAAE,EAChC,cAAc,EAAE,gBAAgB,EAAE,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAuC5B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,mBAAmB,EAAE,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAkE7B;AAqDD,4EAA4E;AAC5E,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAoI7B"}