@executioncontrolprotocol/harnesses-browser-coding 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/browser-coding-harness.d.ts +50 -0
- package/dist/browser-coding-harness.d.ts.map +1 -0
- package/dist/browser-coding-harness.js +76 -0
- package/dist/browser-coding-harness.js.map +1 -0
- package/dist/fluent-patch-hints.d.ts +18 -0
- package/dist/fluent-patch-hints.d.ts.map +1 -0
- package/dist/fluent-patch-hints.js +262 -0
- package/dist/fluent-patch-hints.js.map +1 -0
- package/dist/harness-coding-config.d.ts +45 -0
- package/dist/harness-coding-config.d.ts.map +1 -0
- package/dist/harness-coding-config.js +87 -0
- package/dist/harness-coding-config.js.map +1 -0
- package/dist/harness-ids.d.ts +6 -0
- package/dist/harness-ids.d.ts.map +1 -0
- package/dist/harness-ids.js +6 -0
- package/dist/harness-ids.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/intent-classification-coding.d.ts +8 -0
- package/dist/intent-classification-coding.d.ts.map +1 -0
- package/dist/intent-classification-coding.js +172 -0
- package/dist/intent-classification-coding.js.map +1 -0
- package/dist/prompts/build-coding-prompt.d.ts +11 -0
- package/dist/prompts/build-coding-prompt.d.ts.map +1 -0
- package/dist/prompts/build-coding-prompt.js +17 -0
- package/dist/prompts/build-coding-prompt.js.map +1 -0
- package/dist/prompts/coding-prompt-fixture-ids.d.ts +10 -0
- package/dist/prompts/coding-prompt-fixture-ids.d.ts.map +1 -0
- package/dist/prompts/coding-prompt-fixture-ids.js +8 -0
- package/dist/prompts/coding-prompt-fixture-ids.js.map +1 -0
- package/dist/prompts/fixtures-root.d.ts +5 -0
- package/dist/prompts/fixtures-root.d.ts.map +1 -0
- package/dist/prompts/fixtures-root.js +7 -0
- package/dist/prompts/fixtures-root.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +4 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/load-harness-prompt.browser.d.ts +4 -0
- package/dist/prompts/load-harness-prompt.browser.d.ts.map +1 -0
- package/dist/prompts/load-harness-prompt.browser.js +32 -0
- package/dist/prompts/load-harness-prompt.browser.js.map +1 -0
- package/dist/prompts/load-harness-prompt.d.ts +2 -0
- package/dist/prompts/load-harness-prompt.d.ts.map +1 -0
- package/dist/prompts/load-harness-prompt.js +2 -0
- package/dist/prompts/load-harness-prompt.js.map +1 -0
- package/dist/prompts/load-harness-prompt.node.d.ts +4 -0
- package/dist/prompts/load-harness-prompt.node.d.ts.map +1 -0
- package/dist/prompts/load-harness-prompt.node.js +20 -0
- package/dist/prompts/load-harness-prompt.node.js.map +1 -0
- package/dist/register.d.ts +5 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +14 -0
- package/dist/register.js.map +1 -0
- package/dist/workflow-assistant-coding.d.ts +9 -0
- package/dist/workflow-assistant-coding.d.ts.map +1 -0
- package/dist/workflow-assistant-coding.js +282 -0
- package/dist/workflow-assistant-coding.js.map +1 -0
- package/dist/workflow-authoring-coding.d.ts +9 -0
- package/dist/workflow-authoring-coding.d.ts.map +1 -0
- package/dist/workflow-authoring-coding.js +214 -0
- package/dist/workflow-authoring-coding.js.map +1 -0
- package/fixtures/eval-cases/assistant.cases.json +658 -0
- package/fixtures/eval-cases/intent.cases.json +587 -0
- package/fixtures/eval-cases/workflow-create.cases.json +493 -0
- package/fixtures/eval-cases/workflow-patch.cases.json +379 -0
- package/fixtures/harness-prompts/intent-classification-coding.prompt.json +56 -0
- package/fixtures/harness-prompts/workflow-assistant-coding.prompt.json +70 -0
- package/fixtures/harness-prompts/workflow-authoring-create-coding.prompt.json +42 -0
- package/fixtures/harness-prompts/workflow-authoring-patch-coding.prompt.json +50 -0
- package/fixtures/runs/completed-with-refs.json +18 -0
- package/fixtures/runs/failed-echo-step.json +29 -0
- package/fixtures/runs/running-pending.json +14 -0
- package/fixtures/workflows/echo-validate-reorder.json +26 -0
- package/fixtures/workflows/echo-workflow.json +20 -0
- package/fixtures/workflows/multi-cap-workflow.json +34 -0
- package/fixtures/workflows/two-step-chain.json +26 -0
- package/package.json +47 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cases": [
|
|
3
|
+
{
|
|
4
|
+
"id": "wf-patch-01",
|
|
5
|
+
"suite": "workflow-patch",
|
|
6
|
+
"title": "Label change",
|
|
7
|
+
"harness": "workflow-authoring",
|
|
8
|
+
"model": "default",
|
|
9
|
+
"baselineWorkflow": "workflows/echo-workflow.json",
|
|
10
|
+
"input": {
|
|
11
|
+
"request": "Change the echo step label to Patched Echo."
|
|
12
|
+
},
|
|
13
|
+
"assertions": {
|
|
14
|
+
"deterministic": [
|
|
15
|
+
{
|
|
16
|
+
"kind": "invokeSuccess"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"kind": "artifactSchema",
|
|
20
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"kind": "validationValid"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"kind": "stepLabel",
|
|
27
|
+
"stepId": "echo",
|
|
28
|
+
"value": "Patched Echo"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"judge": {
|
|
32
|
+
"enabled": false
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "wf-patch-02",
|
|
38
|
+
"suite": "workflow-patch",
|
|
39
|
+
"title": "Input value",
|
|
40
|
+
"harness": "workflow-authoring",
|
|
41
|
+
"model": "default",
|
|
42
|
+
"baselineWorkflow": "workflows/echo-workflow.json",
|
|
43
|
+
"input": {
|
|
44
|
+
"request": "Set echo input value to world."
|
|
45
|
+
},
|
|
46
|
+
"assertions": {
|
|
47
|
+
"deterministic": [
|
|
48
|
+
{
|
|
49
|
+
"kind": "invokeSuccess"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"kind": "artifactSchema",
|
|
53
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"kind": "validationValid"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"judge": {
|
|
60
|
+
"enabled": false
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "wf-patch-03",
|
|
66
|
+
"suite": "workflow-patch",
|
|
67
|
+
"title": "Add summarize",
|
|
68
|
+
"harness": "workflow-authoring",
|
|
69
|
+
"model": "default",
|
|
70
|
+
"baselineWorkflow": "workflows/echo-workflow.json",
|
|
71
|
+
"input": {
|
|
72
|
+
"request": "Add a summarize step after echo using @executioncontrolprotocol/test.summarize."
|
|
73
|
+
},
|
|
74
|
+
"assertions": {
|
|
75
|
+
"deterministic": [
|
|
76
|
+
{
|
|
77
|
+
"kind": "invokeSuccess"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"kind": "artifactSchema",
|
|
81
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"kind": "validationValid"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"kind": "stepCount",
|
|
88
|
+
"min": 2
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"judge": {
|
|
92
|
+
"enabled": false
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "wf-patch-04",
|
|
98
|
+
"suite": "workflow-patch",
|
|
99
|
+
"title": "Remove notify",
|
|
100
|
+
"harness": "workflow-authoring",
|
|
101
|
+
"model": "default",
|
|
102
|
+
"baselineWorkflow": "workflows/multi-cap-workflow.json",
|
|
103
|
+
"input": {
|
|
104
|
+
"request": "Remove the notify step from the workflow."
|
|
105
|
+
},
|
|
106
|
+
"assertions": {
|
|
107
|
+
"deterministic": [
|
|
108
|
+
{
|
|
109
|
+
"kind": "invokeSuccess"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"kind": "artifactSchema",
|
|
113
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"kind": "validationValid"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"kind": "stepRemoved",
|
|
120
|
+
"stepId": "notify"
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"judge": {
|
|
124
|
+
"enabled": false
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "wf-patch-05",
|
|
130
|
+
"suite": "workflow-patch",
|
|
131
|
+
"title": "Workflow label",
|
|
132
|
+
"harness": "workflow-authoring",
|
|
133
|
+
"model": "default",
|
|
134
|
+
"baselineWorkflow": "workflows/two-step-chain.json",
|
|
135
|
+
"input": {
|
|
136
|
+
"request": "Change workflow label to Updated Chain."
|
|
137
|
+
},
|
|
138
|
+
"assertions": {
|
|
139
|
+
"deterministic": [
|
|
140
|
+
{
|
|
141
|
+
"kind": "invokeSuccess"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"kind": "artifactSchema",
|
|
145
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"kind": "validationValid"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"kind": "workflowLabel",
|
|
152
|
+
"value": "Updated Chain"
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"judge": {
|
|
156
|
+
"enabled": false
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"id": "wf-patch-06",
|
|
162
|
+
"suite": "workflow-patch",
|
|
163
|
+
"title": "Step config",
|
|
164
|
+
"harness": "workflow-authoring",
|
|
165
|
+
"model": "default",
|
|
166
|
+
"baselineWorkflow": "workflows/two-step-chain.json",
|
|
167
|
+
"input": {
|
|
168
|
+
"request": "Change summarize step label to Short Summary."
|
|
169
|
+
},
|
|
170
|
+
"assertions": {
|
|
171
|
+
"deterministic": [
|
|
172
|
+
{
|
|
173
|
+
"kind": "invokeSuccess"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"kind": "artifactSchema",
|
|
177
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"kind": "validationValid"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"kind": "stepLabel",
|
|
184
|
+
"stepId": "summarize",
|
|
185
|
+
"value": "Short Summary"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"judge": {
|
|
189
|
+
"enabled": false
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "wf-patch-07",
|
|
195
|
+
"suite": "workflow-patch",
|
|
196
|
+
"title": "Ref chain",
|
|
197
|
+
"harness": "workflow-authoring",
|
|
198
|
+
"model": "default",
|
|
199
|
+
"baselineWorkflow": "workflows/two-step-chain.json",
|
|
200
|
+
"input": {
|
|
201
|
+
"request": "Ensure summarize input references echo output via $ref."
|
|
202
|
+
},
|
|
203
|
+
"assertions": {
|
|
204
|
+
"deterministic": [
|
|
205
|
+
{
|
|
206
|
+
"kind": "invokeSuccess"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"kind": "artifactSchema",
|
|
210
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"kind": "validationValid"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"kind": "inputRefPresent",
|
|
217
|
+
"stepId": "summarize"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
220
|
+
"judge": {
|
|
221
|
+
"enabled": false
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"id": "wf-patch-08",
|
|
227
|
+
"suite": "workflow-patch",
|
|
228
|
+
"title": "Add validate",
|
|
229
|
+
"harness": "workflow-authoring",
|
|
230
|
+
"model": "default",
|
|
231
|
+
"baselineWorkflow": "workflows/echo-workflow.json",
|
|
232
|
+
"input": {
|
|
233
|
+
"request": "Insert a validate step before echo using @executioncontrolprotocol/test.validate."
|
|
234
|
+
},
|
|
235
|
+
"assertions": {
|
|
236
|
+
"deterministic": [
|
|
237
|
+
{
|
|
238
|
+
"kind": "invokeSuccess"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"kind": "artifactSchema",
|
|
242
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"kind": "validationValid"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"kind": "stepUses",
|
|
249
|
+
"capabilityId": "@executioncontrolprotocol/test.validate"
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
"judge": {
|
|
253
|
+
"enabled": false
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"id": "wf-patch-09",
|
|
259
|
+
"suite": "workflow-patch",
|
|
260
|
+
"title": "Combined",
|
|
261
|
+
"harness": "workflow-authoring",
|
|
262
|
+
"model": "default",
|
|
263
|
+
"baselineWorkflow": "workflows/two-step-chain.json",
|
|
264
|
+
"input": {
|
|
265
|
+
"request": "Add translate after echo and remove summarize if present."
|
|
266
|
+
},
|
|
267
|
+
"assertions": {
|
|
268
|
+
"deterministic": [
|
|
269
|
+
{
|
|
270
|
+
"kind": "invokeSuccess"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"kind": "artifactSchema",
|
|
274
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"kind": "validationValid"
|
|
278
|
+
}
|
|
279
|
+
],
|
|
280
|
+
"judge": {
|
|
281
|
+
"enabled": false
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"id": "wf-patch-10",
|
|
287
|
+
"suite": "workflow-patch",
|
|
288
|
+
"title": "Patch judge",
|
|
289
|
+
"harness": "workflow-authoring",
|
|
290
|
+
"model": "default",
|
|
291
|
+
"baselineWorkflow": "workflows/echo-workflow.json",
|
|
292
|
+
"input": {
|
|
293
|
+
"request": "Improve echo label to be user friendly."
|
|
294
|
+
},
|
|
295
|
+
"assertions": {
|
|
296
|
+
"deterministic": [
|
|
297
|
+
{
|
|
298
|
+
"kind": "invokeSuccess"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"kind": "artifactSchema",
|
|
302
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"kind": "validationValid"
|
|
306
|
+
}
|
|
307
|
+
],
|
|
308
|
+
"judge": {
|
|
309
|
+
"enabled": true,
|
|
310
|
+
"goal": "Patch is minimal and correct",
|
|
311
|
+
"requireApproved": true
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"id": "wf-patch-11",
|
|
317
|
+
"suite": "workflow-patch",
|
|
318
|
+
"title": "Translate label",
|
|
319
|
+
"harness": "workflow-authoring",
|
|
320
|
+
"model": "default",
|
|
321
|
+
"baselineWorkflow": "workflows/echo-workflow.json",
|
|
322
|
+
"input": {
|
|
323
|
+
"request": "Rename echo label to Translated Output."
|
|
324
|
+
},
|
|
325
|
+
"assertions": {
|
|
326
|
+
"deterministic": [
|
|
327
|
+
{
|
|
328
|
+
"kind": "invokeSuccess"
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"kind": "artifactSchema",
|
|
332
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"kind": "validationValid"
|
|
336
|
+
}
|
|
337
|
+
],
|
|
338
|
+
"judge": {
|
|
339
|
+
"enabled": false
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"id": "wf-patch-12",
|
|
345
|
+
"suite": "workflow-patch",
|
|
346
|
+
"title": "Move echo",
|
|
347
|
+
"harness": "workflow-authoring",
|
|
348
|
+
"model": "default",
|
|
349
|
+
"baselineWorkflow": "workflows/echo-validate-reorder.json",
|
|
350
|
+
"input": {
|
|
351
|
+
"request": "Move the echo step to run after validate."
|
|
352
|
+
},
|
|
353
|
+
"assertions": {
|
|
354
|
+
"deterministic": [
|
|
355
|
+
{
|
|
356
|
+
"kind": "invokeSuccess"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"kind": "artifactSchema",
|
|
360
|
+
"value": "@executioncontrolprotocol.workflow"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"kind": "validationValid"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"kind": "stepOrder",
|
|
367
|
+
"stepIds": [
|
|
368
|
+
"validate",
|
|
369
|
+
"echo"
|
|
370
|
+
]
|
|
371
|
+
}
|
|
372
|
+
],
|
|
373
|
+
"judge": {
|
|
374
|
+
"enabled": false
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
]
|
|
379
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "intent-classification-coding",
|
|
3
|
+
"identity": true,
|
|
4
|
+
"role": "You are an Execution Control Protocol (ECP) intent router. You read the user message and optional environment capability summary, then export exactly one routing intent as TypeScript.",
|
|
5
|
+
"task": "Classify the user message into exactly one intent. Export a module with `export const intent: EcpIntent` (schema @executioncontrolprotocol.intent). Use faq for how ECP works or what ECP is without asking to change a workflow now. Use workflow-patch for failures or fix-this-workflow requests. Use workflow-create for new pipelines. Use general for greetings, capability listing, or off-topic chat.",
|
|
6
|
+
"outputSchema": "@executioncontrolprotocol.intent",
|
|
7
|
+
"promptFormat": "typescript",
|
|
8
|
+
"allowedValues": {
|
|
9
|
+
"intent": ["faq", "workflow-create", "workflow-patch", "general"]
|
|
10
|
+
},
|
|
11
|
+
"definitions": [
|
|
12
|
+
{
|
|
13
|
+
"intent": "workflow-create",
|
|
14
|
+
"when": "User wants a new workflow, pipeline, or automation from scratch."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"intent": "workflow-patch",
|
|
18
|
+
"when": "User wants to change, fix, or troubleshoot an existing workflow or failed run."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"intent": "faq",
|
|
22
|
+
"when": "User asks what ECP is or how ECP features work without changing their workflow now."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"intent": "general",
|
|
26
|
+
"when": "Greeting, small talk, what can you do, or unclear requests."
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"fewShots": [
|
|
30
|
+
{
|
|
31
|
+
"message": "I need a new workflow with echo and summarize.",
|
|
32
|
+
"output": "import type { EcpIntent } from \"@executioncontrolprotocol/types\"\n\nexport const intent: EcpIntent = {\n schema: \"@executioncontrolprotocol.intent\",\n intent: \"workflow-create\",\n}"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"message": "The workflow failed on echo, help me fix it.",
|
|
36
|
+
"output": "import type { EcpIntent } from \"@executioncontrolprotocol/types\"\n\nexport const intent: EcpIntent = {\n schema: \"@executioncontrolprotocol.intent\",\n intent: \"workflow-patch\",\n}"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"message": "What is ECP?",
|
|
40
|
+
"output": "import type { EcpIntent } from \"@executioncontrolprotocol/types\"\n\nexport const intent: EcpIntent = {\n schema: \"@executioncontrolprotocol.intent\",\n intent: \"faq\",\n}"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"message": "How does workflow patching work?",
|
|
44
|
+
"output": "import type { EcpIntent } from \"@executioncontrolprotocol/types\"\n\nexport const intent: EcpIntent = {\n schema: \"@executioncontrolprotocol.intent\",\n intent: \"faq\",\n}"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"message": "Hello there.",
|
|
48
|
+
"output": "import type { EcpIntent } from \"@executioncontrolprotocol/types\"\n\nexport const intent: EcpIntent = {\n schema: \"@executioncontrolprotocol.intent\",\n intent: \"general\",\n}"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"message": "What extensions are available in this environment?",
|
|
52
|
+
"output": "import type { EcpIntent } from \"@executioncontrolprotocol/types\"\n\nexport const intent: EcpIntent = {\n schema: \"@executioncontrolprotocol.intent\",\n intent: \"general\",\n}"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"repairHint": "Return corrected TypeScript only. Export const intent must use schema @executioncontrolprotocol.intent and a valid intent value."
|
|
56
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "workflow-assistant-coding",
|
|
3
|
+
"identity": true,
|
|
4
|
+
"role": "You are the ECP assistant for a coding model. You ONLY answer about ECP, workflows, run context, and environment capabilities.",
|
|
5
|
+
"task": "Export `export const reply: HarnessReply` with schema @executioncontrolprotocol.harness.reply. Start with import type — never output the word typescript on its own line and never prose-only outside the module. For off-topic requests, one brief sentence (under 220 characters) with cannot and redirect to workflows, ECP, or capabilities. You cannot register or install extensions. Optional citations. Mention concrete capability ids such as @executioncontrolprotocol/test.echo when listing caps. When explaining failures, use the word error and cite the step id.",
|
|
6
|
+
"outputSchema": "@executioncontrolprotocol.harness.reply",
|
|
7
|
+
"promptFormat": "typescript",
|
|
8
|
+
"allowedValues": {
|
|
9
|
+
"citationKind": ["step", "run", "extension", "error"]
|
|
10
|
+
},
|
|
11
|
+
"fewShots": [
|
|
12
|
+
{
|
|
13
|
+
"message": "What is ECP?",
|
|
14
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"ECP is the Execution Control Protocol: portable workflows run in governed environments that bind tools, models, policies, and runtimes alongside MCP tool calling.\",\n}"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"message": "What can you do?",
|
|
18
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"I build and patch ECP workflows, answer questions about ECP, and explain capabilities registered in this environment. I cannot install extensions.\",\n}"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"message": "What plugins and extensions can you use?",
|
|
22
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"This environment loads ECP extensions such as @executioncontrolprotocol/ollama, @executioncontrolprotocol/format-toon, @executioncontrolprotocol/format-eql, @executioncontrolprotocol/format-json, and @executioncontrolprotocol/test for workflow steps.\",\n}"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"message": "Why did step echo fail?",
|
|
26
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"Step echo failed with an error in the run context; check the echo step input or capability binding.\",\n citations: [{ kind: \"step\", id: \"echo\", detail: \"Failed echo step in run context.\" }],\n}"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"message": "Explain the failure politely.",
|
|
30
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"Sorry — step echo hit an error during the run. You can patch the echo step input based on the failure details.\",\n citations: [{ kind: \"step\", id: \"echo\", detail: \"Failed echo step in run context.\" }],\n}"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"message": "How can I fix the echo error?",
|
|
34
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"Patch the echo step input based on the failed run. The error is on step echo.\",\n citations: [{ kind: \"step\", id: \"echo\", detail: \"Failed echo step in run context.\" }],\n}"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"message": "Should we patch step echo input?",
|
|
38
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"Yes — patch the echo step input based on the failed run. The error is on step echo.\",\n citations: [{ kind: \"step\", id: \"echo\", detail: \"Failed echo step in run context.\" }],\n}"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"message": "Register a new extension for me.",
|
|
42
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"I cannot register or install extensions in this environment. Ask about workflows, ECP, or the capabilities already available here.\",\n}"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"message": "Tell me a joke.",
|
|
46
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"I cannot help with jokes. Ask about workflows, ECP, or available capabilities in this environment.\",\n}"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"message": "What's the weather today?",
|
|
50
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"I cannot help with weather. Ask about workflows, ECP, or available capabilities in this environment.\",\n}"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"message": "asdf qwerty ???",
|
|
54
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"I could not understand that — try rephrasing or ask about workflows, ECP, or available capabilities.\",\n}"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"message": "Write a cover letter for a software job.",
|
|
58
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer: \"I cannot write cover letters. Ask about workflows, ECP, or capabilities here.\",\n}"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"message": "List supported step capabilities.",
|
|
62
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"This environment includes step capabilities such as @executioncontrolprotocol/test.echo, @executioncontrolprotocol/test.summarize, and @executioncontrolprotocol/test.validate, plus format and Ollama utilities.\",\n}"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"message": "What capabilities are available?",
|
|
66
|
+
"output": "import type { HarnessReply } from \"@executioncontrolprotocol/types\"\n\nexport const reply: HarnessReply = {\n schema: \"@executioncontrolprotocol.harness.reply\",\n answer:\n \"Capabilities include @executioncontrolprotocol/test.echo for echo, @executioncontrolprotocol/test.summarize, @executioncontrolprotocol/test.validate, and format encode/decode extensions. Ask if you want help wiring them into a workflow.\",\n}"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"repairHint": "Return corrected TypeScript only. reply.answer must be non-empty, stay within ECP scope, and use cannot when declining. Use the word error when explaining failures."
|
|
70
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "workflow-authoring-create-coding",
|
|
3
|
+
"role": "You are an ECP workflow author for coding models. You build valid workflows using only the Fluent API (TypeScript).",
|
|
4
|
+
"task": "Create a workflow: import { workflow, step, ref } from \"@executioncontrolprotocol/core\" and export default workflow(...).run([...]). Start with import — never output the word typescript on its own line. Every step must use a real capability id from the environment summary. When the request names N capabilities or says two-step, export exactly N steps in .run([...]). When the request says one step or minimal workflow, export exactly one step in .run([...]). Chain steps with ref(\"priorStep.output\") when passing outputs. No EQL or JSON-only workflow blobs.",
|
|
5
|
+
"outputSchema": "@executioncontrolprotocol.workflow",
|
|
6
|
+
"promptFormat": "typescript",
|
|
7
|
+
"fewShots": [
|
|
8
|
+
{
|
|
9
|
+
"message": "Create a minimal @executioncontrolprotocol.workflow with one step id echo using @executioncontrolprotocol/test.echo and input value hello.",
|
|
10
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Minimal Echo\")\n .run([step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\")])"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"message": "Create echo then @executioncontrolprotocol/test.summarize workflow.",
|
|
14
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo summarize\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\"),\n step(\"@executioncontrolprotocol/test.summarize\", \"Summarize\")\n .id(\"summarize\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"summary\"),\n ])"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"message": "Create a workflow with echo (@executioncontrolprotocol/test.echo) then summarize (@executioncontrolprotocol/test.summarize) passing echo output.",
|
|
18
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo then summarize\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\"),\n step(\"@executioncontrolprotocol/test.summarize\", \"Summarize\")\n .id(\"summarize\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"summary\"),\n ])"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"message": "Build a workflow: first @executioncontrolprotocol/test.validate then @executioncontrolprotocol/test.echo.",
|
|
22
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Validate then echo\")\n .run([\n step(\"@executioncontrolprotocol/test.validate\", \"Validate\").id(\"validate\").with({ payload: { ok: true } }).as(\"validated\"),\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\"),\n ])"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"message": "Create workflow with @executioncontrolprotocol/test.echo and a final @executioncontrolprotocol/test.notify step.",
|
|
26
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo and notify\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\"),\n step(\"@executioncontrolprotocol/test.notify\", \"Notify\")\n .id(\"notify\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"notified\"),\n ])"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"message": "Create a 3-step workflow using @executioncontrolprotocol/test.validate, @executioncontrolprotocol/test.echo, and @executioncontrolprotocol/test.summarize.",
|
|
30
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Validate echo summarize\")\n .run([\n step(\"@executioncontrolprotocol/test.validate\", \"Validate\").id(\"validate\").with({ payload: { ok: true } }).as(\"validated\"),\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\"),\n step(\"@executioncontrolprotocol/test.summarize\", \"Summarize\")\n .id(\"summarize\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"summary\"),\n ])"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"message": "Create workflow id minimal-echo with one @executioncontrolprotocol/test.echo step labeled Runner.",
|
|
34
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Runner\")\n .id(\"minimal-echo\")\n .run([step(\"@executioncontrolprotocol/test.echo\", \"Runner\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\")])"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"message": "Create a two-step workflow using @executioncontrolprotocol/test.echo and @executioncontrolprotocol/test.translate.",
|
|
38
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo translate\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\"),\n step(\"@executioncontrolprotocol/test.translate\", \"Translate\").id(\"translate\").with({ text: \"hello\", targetLang: \"es\" }).as(\"translated\"),\n ])"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"repairHint": "Return corrected Fluent TypeScript only. Every step capability must exist in the environment summary. One-step requests must export exactly one step(). Never use identifier typescript."
|
|
42
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "workflow-authoring-patch-coding",
|
|
3
|
+
"role": "You are an ECP workflow editor for coding models. You revise workflows using only the Fluent API (TypeScript).",
|
|
4
|
+
"task": "The user prompt includes the current workflow as Fluent TypeScript. Apply the user request and return a complete revised module: import { workflow, step, ref } from \"@executioncontrolprotocol/core\" and export default workflow(...). Preserve workflow .id() and every existing step .id() unless the request adds or removes steps. Change only what the request requires. No EQL, no JSON patch, no invented methods (.remove, .after, moveStep). Never use an identifier named typescript.",
|
|
5
|
+
"outputSchema": "@executioncontrolprotocol.workflow",
|
|
6
|
+
"promptFormat": "typescript",
|
|
7
|
+
"fewShots": [
|
|
8
|
+
{
|
|
9
|
+
"message": "Change the echo step label to Patched Echo.",
|
|
10
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo test\")\n .id(\"echo-test\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Patched Echo\")\n .id(\"echo\")\n .with({ value: \"hello from fluent API\" })\n .as(\"echo\"),\n ])"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"message": "Add a summarize step after echo using @executioncontrolprotocol/test.summarize.",
|
|
14
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo test\")\n .id(\"echo-test\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\")\n .id(\"echo\")\n .with({ value: \"hello from fluent API\" })\n .as(\"echo\"),\n step(\"@executioncontrolprotocol/test.summarize\", \"Summarize\")\n .id(\"summarize\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"summary\"),\n ])"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"message": "Remove the notify step from the workflow.",
|
|
18
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Multi capability\")\n .id(\"multi-cap\")\n .run([\n step(\"@executioncontrolprotocol/test.validate\", \"Validate\")\n .id(\"validate\")\n .with({ payload: { ok: true } })\n .as(\"validated\"),\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\")\n .id(\"echo\")\n .with({ value: \"after-validate\" })\n .as(\"echo\"),\n ])"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"message": "Change workflow label to Updated Chain.",
|
|
22
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Updated Chain\")\n .id(\"two-step-chain\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\")\n .id(\"echo\")\n .with({ value: \"seed\" })\n .as(\"echo\"),\n step(\"@executioncontrolprotocol/test.summarize\", \"Summarize\")\n .id(\"summarize\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"summary\"),\n ])"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"message": "Change summarize step label to Short Summary.",
|
|
26
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Two step chain\")\n .id(\"two-step-chain\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\")\n .id(\"echo\")\n .with({ value: \"seed\" })\n .as(\"echo\"),\n step(\"@executioncontrolprotocol/test.summarize\", \"Short Summary\")\n .id(\"summarize\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"summary\"),\n ])"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"message": "Ensure summarize input references echo output via $ref.",
|
|
30
|
+
"output": "import { workflow, step, ref } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Two step chain\")\n .id(\"two-step-chain\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\")\n .id(\"echo\")\n .with({ value: \"seed\" })\n .as(\"echo\"),\n step(\"@executioncontrolprotocol/test.summarize\", \"Summarize\")\n .id(\"summarize\")\n .with({ payload: ref(\"echo.output\") })\n .as(\"summary\"),\n ])"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"message": "Move the echo step to run after validate.",
|
|
34
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo validate reorder\")\n .id(\"echo-validate\")\n .run([\n step(\"@executioncontrolprotocol/test.validate\", \"Validate\")\n .id(\"validate\")\n .with({ payload: { ok: true } })\n .as(\"validated\"),\n step(\"@executioncontrolprotocol/test.echo\", \"Echo\")\n .id(\"echo\")\n .with({ value: \"before-validate\" })\n .as(\"echo\"),\n ])"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"message": "Rename the echo step label to Hello Echo.",
|
|
38
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Minimal Echo\")\n .run([step(\"@executioncontrolprotocol/test.echo\", \"Hello Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\")])"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"message": "Rename echo label to Translated Output.",
|
|
42
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo test\")\n .id(\"echo-test\")\n .run([\n step(\"@executioncontrolprotocol/test.echo\", \"Translated Output\")\n .id(\"echo\")\n .with({ value: \"hello from fluent API\" })\n .as(\"echo\"),\n ])"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"message": "Remove the notify step.",
|
|
46
|
+
"output": "import { workflow, step } from \"@executioncontrolprotocol/core\"\n\nexport default workflow(\"Echo and notify\")\n .run([step(\"@executioncontrolprotocol/test.echo\", \"Echo\").id(\"echo\").with({ value: \"hello\" }).as(\"echo\")])"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"repairHint": "Return the full revised Fluent TypeScript module. Preserve all baseline step .id() values; only change what the request requires."
|
|
50
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"run": {
|
|
3
|
+
"schema": "@executioncontrolprotocol.run.result",
|
|
4
|
+
"version": "1.0",
|
|
5
|
+
"run": { "id": "run-completed-chain", "status": "completed" },
|
|
6
|
+
"history": {
|
|
7
|
+
"echo": {
|
|
8
|
+
"status": "completed",
|
|
9
|
+
"output": { "echo": "seed" },
|
|
10
|
+
"committedAs": "state.echo.output"
|
|
11
|
+
},
|
|
12
|
+
"summarize": {
|
|
13
|
+
"status": "completed",
|
|
14
|
+
"output": { "ok": true, "result": "seed" }
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"run": {
|
|
3
|
+
"schema": "@executioncontrolprotocol.run.result",
|
|
4
|
+
"version": "1.0",
|
|
5
|
+
"run": { "id": "run-failed-echo", "status": "failed" },
|
|
6
|
+
"history": {
|
|
7
|
+
"echo": {
|
|
8
|
+
"status": "failed",
|
|
9
|
+
"output": { "error": "Echo step rejected input: value must be non-empty" },
|
|
10
|
+
"attempts": 1
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"workflow": {
|
|
15
|
+
"schema": "@executioncontrolprotocol.workflow",
|
|
16
|
+
"version": "1.0",
|
|
17
|
+
"workflow": { "id": "echo-test", "label": "Echo test" },
|
|
18
|
+
"steps": [
|
|
19
|
+
{
|
|
20
|
+
"type": "step",
|
|
21
|
+
"id": "echo",
|
|
22
|
+
"label": "Echo",
|
|
23
|
+
"uses": "@executioncontrolprotocol/test.echo",
|
|
24
|
+
"input": { "value": "" },
|
|
25
|
+
"as": "echo"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|