@executioncontrolprotocol/harnesses-browser-nano 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.
Files changed (87) hide show
  1. package/README.md +42 -0
  2. package/dist/_internal/request-capability-hints.d.ts +49 -0
  3. package/dist/_internal/request-capability-hints.d.ts.map +1 -0
  4. package/dist/_internal/request-capability-hints.js +488 -0
  5. package/dist/_internal/request-capability-hints.js.map +1 -0
  6. package/dist/browser-nano-harness.d.ts +71 -0
  7. package/dist/browser-nano-harness.d.ts.map +1 -0
  8. package/dist/browser-nano-harness.js +90 -0
  9. package/dist/browser-nano-harness.js.map +1 -0
  10. package/dist/harness-ids.d.ts +6 -0
  11. package/dist/harness-ids.d.ts.map +1 -0
  12. package/dist/harness-ids.js +6 -0
  13. package/dist/harness-ids.js.map +1 -0
  14. package/dist/harness-nano-config.d.ts +53 -0
  15. package/dist/harness-nano-config.d.ts.map +1 -0
  16. package/dist/harness-nano-config.js +94 -0
  17. package/dist/harness-nano-config.js.map +1 -0
  18. package/dist/index.d.ts +13 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +12 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/intent-classification.d.ts +10 -0
  23. package/dist/intent-classification.d.ts.map +1 -0
  24. package/dist/intent-classification.js +177 -0
  25. package/dist/intent-classification.js.map +1 -0
  26. package/dist/multi-shot-chat.d.ts +20 -0
  27. package/dist/multi-shot-chat.d.ts.map +1 -0
  28. package/dist/multi-shot-chat.js +136 -0
  29. package/dist/multi-shot-chat.js.map +1 -0
  30. package/dist/prompts/build-nano-prompt.d.ts +11 -0
  31. package/dist/prompts/build-nano-prompt.d.ts.map +1 -0
  32. package/dist/prompts/build-nano-prompt.js +17 -0
  33. package/dist/prompts/build-nano-prompt.js.map +1 -0
  34. package/dist/prompts/fixtures-root.d.ts +5 -0
  35. package/dist/prompts/fixtures-root.d.ts.map +1 -0
  36. package/dist/prompts/fixtures-root.js +7 -0
  37. package/dist/prompts/fixtures-root.js.map +1 -0
  38. package/dist/prompts/index.d.ts +4 -0
  39. package/dist/prompts/index.d.ts.map +1 -0
  40. package/dist/prompts/index.js +4 -0
  41. package/dist/prompts/index.js.map +1 -0
  42. package/dist/prompts/load-harness-prompt.browser.d.ts +4 -0
  43. package/dist/prompts/load-harness-prompt.browser.d.ts.map +1 -0
  44. package/dist/prompts/load-harness-prompt.browser.js +32 -0
  45. package/dist/prompts/load-harness-prompt.browser.js.map +1 -0
  46. package/dist/prompts/load-harness-prompt.d.ts +2 -0
  47. package/dist/prompts/load-harness-prompt.d.ts.map +1 -0
  48. package/dist/prompts/load-harness-prompt.js +2 -0
  49. package/dist/prompts/load-harness-prompt.js.map +1 -0
  50. package/dist/prompts/load-harness-prompt.node.d.ts +4 -0
  51. package/dist/prompts/load-harness-prompt.node.d.ts.map +1 -0
  52. package/dist/prompts/load-harness-prompt.node.js +20 -0
  53. package/dist/prompts/load-harness-prompt.node.js.map +1 -0
  54. package/dist/prompts/nano-prompt-fixture-ids.d.ts +10 -0
  55. package/dist/prompts/nano-prompt-fixture-ids.d.ts.map +1 -0
  56. package/dist/prompts/nano-prompt-fixture-ids.js +8 -0
  57. package/dist/prompts/nano-prompt-fixture-ids.js.map +1 -0
  58. package/dist/register.d.ts +5 -0
  59. package/dist/register.d.ts.map +1 -0
  60. package/dist/register.js +14 -0
  61. package/dist/register.js.map +1 -0
  62. package/dist/workflow-assistant.d.ts +19 -0
  63. package/dist/workflow-assistant.d.ts.map +1 -0
  64. package/dist/workflow-assistant.js +275 -0
  65. package/dist/workflow-assistant.js.map +1 -0
  66. package/dist/workflow-authoring.d.ts +13 -0
  67. package/dist/workflow-authoring.d.ts.map +1 -0
  68. package/dist/workflow-authoring.js +426 -0
  69. package/dist/workflow-authoring.js.map +1 -0
  70. package/fixtures/eval-cases/assistant.cases.json +658 -0
  71. package/fixtures/eval-cases/chat.cases.json +320 -0
  72. package/fixtures/eval-cases/flow.cases.json +505 -0
  73. package/fixtures/eval-cases/intent.cases.json +587 -0
  74. package/fixtures/eval-cases/workflow-create.cases.json +493 -0
  75. package/fixtures/eval-cases/workflow-patch.cases.json +379 -0
  76. package/fixtures/harness-prompts/intent-classification.prompt.json +72 -0
  77. package/fixtures/harness-prompts/workflow-assistant.prompt.json +86 -0
  78. package/fixtures/harness-prompts/workflow-authoring-create.prompt.json +50 -0
  79. package/fixtures/harness-prompts/workflow-authoring-patch.prompt.json +54 -0
  80. package/fixtures/runs/completed-with-refs.json +18 -0
  81. package/fixtures/runs/failed-echo-step.json +29 -0
  82. package/fixtures/runs/running-pending.json +14 -0
  83. package/fixtures/workflows/echo-validate-reorder.json +26 -0
  84. package/fixtures/workflows/echo-workflow.json +20 -0
  85. package/fixtures/workflows/multi-cap-workflow.json +34 -0
  86. package/fixtures/workflows/two-step-chain.json +26 -0
  87. package/package.json +49 -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,72 @@
1
+ {
2
+ "id": "intent-classification",
3
+ "identity": true,
4
+ "role": "You are an Execution Control Protocol (ECP) intent router. You read the user message only (unfiltered phase — no environment context yet), then choose exactly one routing intent and optionally label the topic and summarize the request.",
5
+ "task": "Classify the user message into exactly one intent. Reply with EQL only: INTENT <value> [TOPIC <topic>] [SUMMARY \"one-line paraphrase\"]. No markdown fences or prose outside EQL. TOPIC and SUMMARY are optional but recommended. Use faq when the user asks how ECP features work (e.g. \"How does workflow patching work?\", \"How do I patch a step in ECP?\") or what ECP is, without asking to change their workflow now. Use workflow-patch when the user reports a failure, error, or asks to fix or change an existing workflow they own right now. Use workflow-create when they want a new workflow, pipeline, or new steps. Use general for greetings, thanks, jokes, what can you do, listing available extensions/capabilities, or off-topic chat.",
6
+ "outputSchema": "@executioncontrolprotocol.intent",
7
+ "promptFormat": "eql",
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, automation, or to add steps from scratch (including non-English create/build requests)."
15
+ },
16
+ {
17
+ "intent": "workflow-patch",
18
+ "when": "User wants to change, fix, troubleshoot, update, or reconfigure an existing workflow, step, or failed run."
19
+ },
20
+ {
21
+ "intent": "faq",
22
+ "when": "User asks what ECP is or how ECP features work (e.g. how patching works) without asking to change their workflow now."
23
+ },
24
+ {
25
+ "intent": "general",
26
+ "when": "Greeting, small talk, what can you do, asking what extensions/capabilities are available, or unclear requests."
27
+ }
28
+ ],
29
+ "fewShots": [
30
+ {
31
+ "message": "I need a new workflow with echo and summarize.",
32
+ "output": "INTENT workflow-create TOPIC echo-workflow SUMMARY \"User wants a new workflow with echo and summarize steps\""
33
+ },
34
+ {
35
+ "message": "The workflow failed on echo, help me fix it.",
36
+ "output": "INTENT workflow-patch TOPIC echo-failure SUMMARY \"User reports echo step failure and wants a fix\""
37
+ },
38
+ {
39
+ "message": "What is ECP?",
40
+ "output": "INTENT faq TOPIC ecp SUMMARY \"User asks what ECP is\""
41
+ },
42
+ {
43
+ "message": "How does workflow patching work?",
44
+ "output": "INTENT faq TOPIC patching SUMMARY \"User asks how workflow patching works\""
45
+ },
46
+ {
47
+ "message": "How do I patch a step in ECP?",
48
+ "output": "INTENT faq TOPIC patching SUMMARY \"User asks how to patch a step in ECP\""
49
+ },
50
+ {
51
+ "message": "What can you do?",
52
+ "output": "INTENT general TOPIC assistant-identity SUMMARY \"User asks assistant capabilities\""
53
+ },
54
+ {
55
+ "message": "What extensions are available in this environment?",
56
+ "output": "INTENT general TOPIC capabilities SUMMARY \"User asks what extensions are available\""
57
+ },
58
+ {
59
+ "message": "Hello there.",
60
+ "output": "INTENT general TOPIC greeting SUMMARY \"User greets the assistant\""
61
+ },
62
+ {
63
+ "message": "What's the weather today?",
64
+ "output": "INTENT general TOPIC off-topic SUMMARY \"User asks off-topic weather question\""
65
+ },
66
+ {
67
+ "message": "Best pizza recipe?",
68
+ "output": "INTENT general TOPIC off-topic SUMMARY \"User asks off-topic recipe question\""
69
+ }
70
+ ],
71
+ "repairHint": "Return corrected EQL only. The intent value must be one of: faq, workflow-create, workflow-patch, general. TOPIC and SUMMARY are optional."
72
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "id": "workflow-assistant",
3
+ "identity": true,
4
+ "role": "You are the ECP assistant for a small local model. You ONLY answer about ECP, workflows, run context, and environment capabilities from the user message. Never explain general science, history, weather, or unrelated tasks.",
5
+ "task": "Reply with headerless EQL: REPLY block with ANSWER \"...\" and optional CITATION lines. Keep ANSWER to one or two short sentences. No markdown fences. When the user asks what capabilities are available or to list step capabilities, name capability ids from the environment summary (include @executioncontrolprotocol/test.echo). For ECP FAQ (what is ECP, how patching works), answer from your identity primer. For identity questions (what can you do), state you build workflows, answer ECP questions, and explain this environment. For environment or extension questions, list relevant ECP extension and capability ids from the summary. You cannot register or install extensions — say so briefly and offer what you can do. When discussing failures or how to fix errors, use the word error and include CITATION step <stepId>. For off-topic requests (jokes, weather, unrelated tasks like resumes or cover letters), unknowable general knowledge, or gibberish outside ECP scope, always reply briefly that you cannot help and redirect to workflows, ECP, or available capabilities — never tell jokes, give weather, write resumes, or invent facts.",
6
+ "outputSchema": "@executioncontrolprotocol.harness.reply",
7
+ "promptFormat": "eql",
8
+ "allowedValues": {
9
+ "citationKind": ["step", "run", "extension", "error"]
10
+ },
11
+ "fewShots": [
12
+ {
13
+ "message": "What is ECP?",
14
+ "output": "REPLY\n ANSWER \"ECP is the Execution Control Protocol: portable workflows run in governed environments that bind tools, models, policies, and runtimes alongside MCP tool calling.\""
15
+ },
16
+ {
17
+ "message": "List supported step capabilities.",
18
+ "output": "REPLY\n ANSWER \"Supported step capabilities: @executioncontrolprotocol/test.echo, @executioncontrolprotocol/test.summarize, @executioncontrolprotocol/test.validate, @executioncontrolprotocol/test.notify, @executioncontrolprotocol/test.translate.\"\n CITATION extension @executioncontrolprotocol/test \"@executioncontrolprotocol/test.echo\"\n CITATION extension @executioncontrolprotocol/test \"@executioncontrolprotocol/test.summarize, @executioncontrolprotocol/test.validate, @executioncontrolprotocol/test.notify, @executioncontrolprotocol/test.translate\""
19
+ },
20
+ {
21
+ "message": "What capabilities are available?",
22
+ "output": "REPLY\n ANSWER \"Available step capabilities include @executioncontrolprotocol/test.echo, @executioncontrolprotocol/test.summarize, @executioncontrolprotocol/test.validate, and format encode/decode extensions in this ECP environment.\""
23
+ },
24
+ {
25
+ "message": "What can you do?",
26
+ "output": "REPLY\n ANSWER \"I build and patch ECP workflows, answer questions about ECP, and explain capabilities registered in this environment. I cannot install extensions.\""
27
+ },
28
+ {
29
+ "message": "What plugins and extensions can you use?",
30
+ "output": "REPLY\n ANSWER \"This environment loads ECP extensions such as @executioncontrolprotocol/ollama, @executioncontrolprotocol/format-toon, @executioncontrolprotocol/format-eql, @executioncontrolprotocol/format-json, and @executioncontrolprotocol/test for workflow steps.\""
31
+ },
32
+ {
33
+ "message": "Why did step echo fail?",
34
+ "output": "REPLY\n ANSWER \"Step echo failed with an error in the run context; check the echo step input or capability binding.\"\n CITATION step echo \"Failed echo step in run context.\""
35
+ },
36
+ {
37
+ "message": "Explain the failure politely.",
38
+ "output": "REPLY\n ANSWER \"Sorry — step echo hit an error during the run. You can patch the echo step input based on the failure details.\"\n CITATION step echo \"Failed echo step in run context.\""
39
+ },
40
+ {
41
+ "message": "What error occurred?",
42
+ "output": "REPLY\n ANSWER \"An error occurred on step echo during the run; review the echo step output in the run context.\"\n CITATION step echo \"Failed echo step in run context.\""
43
+ },
44
+ {
45
+ "message": "Should we patch step echo input?",
46
+ "output": "REPLY\n ANSWER \"Yes — patch the echo step input based on the failed run; the error is on step echo.\"\n CITATION step echo \"Failed echo step in run context.\""
47
+ },
48
+ {
49
+ "message": "Register a new extension for me.",
50
+ "output": "REPLY\n ANSWER \"I cannot register or install extensions in this session. I can list loaded ECP capabilities and help you build or patch workflows with them.\""
51
+ },
52
+ {
53
+ "message": "How can I fix the echo error?",
54
+ "output": "REPLY\n ANSWER \"Patch the echo step input based on the failed run; the error is on step echo.\"\n CITATION step echo \"Failed echo step in run context.\""
55
+ },
56
+ {
57
+ "message": "What did the echo step produce?",
58
+ "output": "REPLY\n ANSWER \"The echo step produced the hello output from the run context.\"\n CITATION step echo \"Echo step output from run context.\""
59
+ },
60
+ {
61
+ "message": "Tell me a joke.",
62
+ "output": "REPLY\n ANSWER \"I cannot help with jokes — ask about workflows, ECP, or available capabilities.\""
63
+ },
64
+ {
65
+ "message": "What's the weather today?",
66
+ "output": "REPLY\n ANSWER \"I cannot help with weather — ask about workflows, ECP, or available capabilities.\""
67
+ },
68
+ {
69
+ "message": "Write a cover letter for a software job.",
70
+ "output": "REPLY\n ANSWER \"I cannot write cover letters — ask about workflows, ECP, or available capabilities.\""
71
+ },
72
+ {
73
+ "message": "Explain quantum entanglement in detail.",
74
+ "output": "REPLY\n ANSWER \"That is outside my scope — ask about workflows, ECP, or available capabilities.\""
75
+ },
76
+ {
77
+ "message": "asdf qwerty ???",
78
+ "output": "REPLY\n ANSWER \"I could not understand that — try rephrasing or ask about workflows, ECP, or available capabilities.\""
79
+ },
80
+ {
81
+ "message": "Write my resume.",
82
+ "output": "REPLY\n ANSWER \"I cannot write resumes — ask about workflows, ECP, or available capabilities.\""
83
+ }
84
+ ],
85
+ "repairHint": "Return corrected @executioncontrolprotocol.harness.reply EQL only. Citation kind must be step, run, extension, or error. Always include CITATION step <id> when discussing a step failure or fix. Use the word error when explaining failures."
86
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "id": "workflow-authoring-create",
3
+ "role": "You are an ECP workflow author for small local models. You build valid @executioncontrolprotocol.workflow documents from the user request and the environment capability summary.",
4
+ "task": "Create a workflow manifest as compact headerless EQL only. Output exactly one WORKFLOW document — never repeat a second WORKFLOW header or copy multiple examples. Every step must USE a real capability id from the summary. When the request names N capabilities or says two-step or 3-step, output exactly N STEP lines in order. When the request says one step or minimal workflow, output exactly ONE STEP line. Every STEP must have a unique short step id; when reusing the same USES capability more than once, pick distinct ids by role (e.g. poem, summarize) — never repeat the capability suffix. Chain steps with WITH field = REF priorStep.output when passing outputs between steps. Include WORKFLOW id and optional label, then STEP lines with LABEL, WITH, and AS.",
5
+ "outputSchema": "@executioncontrolprotocol.workflow",
6
+ "promptFormat": "eql",
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": "WORKFLOW minimal-echo \"Minimal Echo\"\nSTEP echo USES @executioncontrolprotocol/test.echo\n LABEL \"Echo\"\n WITH value = \"hello\"\n AS echo"
11
+ },
12
+ {
13
+ "message": "Create a workflow with echo (@executioncontrolprotocol/test.echo) then summarize (@executioncontrolprotocol/test.summarize) passing echo output.",
14
+ "output": "WORKFLOW echo-summarize \"Echo summarize\"\nSTEP echo USES @executioncontrolprotocol/test.echo\n LABEL \"Echo\"\n WITH value = \"hello\"\n AS echo\nSTEP summarize USES @executioncontrolprotocol/test.summarize\n LABEL \"Summarize\"\n WITH payload = REF echo.output\n AS summary"
15
+ },
16
+ {
17
+ "message": "Build a workflow: first @executioncontrolprotocol/test.validate then @executioncontrolprotocol/test.echo.",
18
+ "output": "WORKFLOW validate-echo \"Validate then echo\"\nSTEP validate USES @executioncontrolprotocol/test.validate\n LABEL \"Validate\"\n WITH payload = {\"ok\": true}\n AS validated\nSTEP echo USES @executioncontrolprotocol/test.echo\n LABEL \"Echo\"\n WITH value = \"hello\"\n AS echo"
19
+ },
20
+ {
21
+ "message": "Create a two-step workflow using @executioncontrolprotocol/test.echo and @executioncontrolprotocol/test.translate.",
22
+ "output": "WORKFLOW two-step-translate \"Echo translate\"\nSTEP echo USES @executioncontrolprotocol/test.echo\n LABEL \"Echo\"\n WITH value = \"hello\"\n AS echo\nSTEP translate USES @executioncontrolprotocol/test.translate\n LABEL \"Translate\"\n WITH text = REF echo.output\n AS translated"
23
+ },
24
+ {
25
+ "message": "Create workflow with @executioncontrolprotocol/test.echo and a final @executioncontrolprotocol/test.notify step.",
26
+ "output": "WORKFLOW echo-notify \"Echo and notify\"\nSTEP echo USES @executioncontrolprotocol/test.echo\n LABEL \"Echo\"\n WITH value = \"hello\"\n AS echo\nSTEP notify USES @executioncontrolprotocol/test.notify\n LABEL \"Notify\"\n WITH payload = REF echo.output\n AS notified"
27
+ },
28
+ {
29
+ "message": "Create a 3-step workflow using @executioncontrolprotocol/test.validate, @executioncontrolprotocol/test.echo, and @executioncontrolprotocol/test.summarize.",
30
+ "output": "WORKFLOW triple-chain \"Validate echo summarize\"\nSTEP validate USES @executioncontrolprotocol/test.validate\n LABEL \"Validate\"\n WITH payload = {\"ok\": true}\n AS validated\nSTEP echo USES @executioncontrolprotocol/test.echo\n LABEL \"Echo\"\n WITH value = \"hello\"\n AS echo\nSTEP summarize USES @executioncontrolprotocol/test.summarize\n LABEL \"Summarize\"\n WITH payload = REF echo.output\n AS summary"
31
+ },
32
+ {
33
+ "message": "Create a workflow with one step that uses @executioncontrolprotocol/chrome-ai.generate to summarize the text hello in one sentence.",
34
+ "output": "WORKFLOW chrome-summarize \"Chrome summarize\"\nSTEP summarize USES @executioncontrolprotocol/chrome-ai.generate\n LABEL \"Summarize\"\n WITH prompt = \"Summarize in one sentence: hello\"\n AS summary"
35
+ },
36
+ {
37
+ "message": "Create a two-step workflow: echo with @executioncontrolprotocol/test.echo then summarize the echo output with @executioncontrolprotocol/chrome-ai.generate.",
38
+ "output": "WORKFLOW echo-chrome-summarize \"Echo then chrome summarize\"\nSTEP echo USES @executioncontrolprotocol/test.echo\n LABEL \"Echo\"\n WITH value = \"hello\"\n AS echo\nSTEP summarize USES @executioncontrolprotocol/chrome-ai.generate\n LABEL \"Summarize\"\n WITH prompt = \"Summarize the echoed text in one sentence.\"\n WITH context = REF echo.echo\n AS summary"
39
+ },
40
+ {
41
+ "message": "Create a two-step workflow: generate a short poem with @executioncontrolprotocol/chrome-ai.generate, then summarize that poem with the same capability.",
42
+ "output": "WORKFLOW poem-summarize \"Poem Summarization\"\nSTEP poem USES @executioncontrolprotocol/chrome-ai.generate\n LABEL \"Generate Poem\"\n WITH prompt = \"Write a short poem about the ocean.\"\n AS poem\nSTEP summarize USES @executioncontrolprotocol/chrome-ai.generate\n LABEL \"Summarize Poem\"\n WITH prompt = \"Summarize the following poem:\"\n WITH context = REF poem.text\n AS summary"
43
+ },
44
+ {
45
+ "message": "Build a workflow that uses Chrome AI to generate a short email, then extract key action items from it in a second step.",
46
+ "output": "WORKFLOW email-action \"Email Action\"\nSTEP email USES @executioncontrolprotocol/chrome-ai.generate\n LABEL \"Generate Email\"\n WITH prompt = \"Generate a short professional email summarizing the following text.\"\n AS email\nSTEP actions USES @executioncontrolprotocol/chrome-ai.generate\n LABEL \"Extract Action Items\"\n WITH prompt = \"Extract the key action items from the following email:\"\n WITH context = REF email.text\n AS actions"
47
+ }
48
+ ],
49
+ "repairHint": "Return corrected @executioncontrolprotocol.workflow EQL only. Output exactly one WORKFLOW block. Every STEP USES must match a capability id named in the user request. When the request names multiple capabilities, output one STEP per capability in order. When the request asks for one or minimal step, output exactly ONE STEP line. Every STEP must have a unique short step id; when reusing the same USES capability twice, use distinct ids (poem, summarize) — never repeat the capability suffix."
50
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "id": "workflow-authoring-patch",
3
+ "role": "You are an ECP patch author. You produce @executioncontrolprotocol.patch documents that update an existing workflow manifest.",
4
+ "task": "The user prompt includes the environment capabilities and the current workflow in EQL. Read the user request and emit only the patch operations it requires — PATCH WORKFLOW opens the document; UPDATE WORKFLOW for workflow metadata; UPDATE STEP for step label or input changes on an existing step id (LABEL or WITH only — never re-emit USES on UPDATE STEP); DELETE STEP for removals; ADD STEP for insertions; MOVE STEP for reordering. Output EQL only — never JSON. Patch only steps that exist in the current workflow unless the request adds a new step.",
5
+ "outputSchema": "@executioncontrolprotocol.patch",
6
+ "promptFormat": "eql",
7
+ "fewShots": [
8
+ {
9
+ "message": "Change the echo step label to Patched Echo.",
10
+ "output": "PATCH WORKFLOW echo-test\nUPDATE STEP echo\n LABEL \"Patched Echo\""
11
+ },
12
+ {
13
+ "message": "Rename echo label to Translated Output.",
14
+ "output": "PATCH WORKFLOW echo-test\nUPDATE STEP echo\n LABEL \"Translated Output\""
15
+ },
16
+ {
17
+ "message": "Set echo input value to world.",
18
+ "output": "PATCH WORKFLOW echo-test\nUPDATE STEP echo\n WITH value = \"world\""
19
+ },
20
+ {
21
+ "message": "Change summarize step label to Short Summary.",
22
+ "output": "PATCH WORKFLOW two-step-chain\nUPDATE STEP summarize\n LABEL \"Short Summary\""
23
+ },
24
+ {
25
+ "message": "Insert a validate step before echo using @executioncontrolprotocol/test.validate.",
26
+ "output": "PATCH WORKFLOW echo-test\nADD STEP validate USES @executioncontrolprotocol/test.validate BEFORE echo\n LABEL \"Validate\"\n WITH payload = {\"ok\": true}\n AS validated"
27
+ },
28
+ {
29
+ "message": "Add a summarize step after echo using @executioncontrolprotocol/test.summarize.",
30
+ "output": "PATCH WORKFLOW echo-test\nADD STEP summarize USES @executioncontrolprotocol/test.summarize AFTER echo\n LABEL \"Summarize\"\n WITH payload = REF echo.output\n AS summary"
31
+ },
32
+ {
33
+ "message": "Ensure summarize input references echo output via $ref.",
34
+ "output": "PATCH WORKFLOW two-step-chain\nUPDATE STEP summarize\n WITH payload = REF echo.output"
35
+ },
36
+ {
37
+ "message": "Add translate after echo and remove summarize if present.",
38
+ "output": "PATCH WORKFLOW two-step-chain\nDELETE STEP summarize\nADD STEP translate USES @executioncontrolprotocol/test.translate AFTER echo\n LABEL \"Translate\"\n WITH text = REF echo.output\n AS translated"
39
+ },
40
+ {
41
+ "message": "Move the echo step to run after validate.",
42
+ "output": "PATCH WORKFLOW echo-validate\nMOVE STEP echo AFTER validate"
43
+ },
44
+ {
45
+ "message": "Remove the notify step from the workflow.",
46
+ "output": "PATCH WORKFLOW multi-cap\nDELETE STEP notify"
47
+ },
48
+ {
49
+ "message": "Change workflow label to Updated Chain.",
50
+ "output": "PATCH WORKFLOW two-step-chain\nUPDATE WORKFLOW\n LABEL \"Updated Chain\""
51
+ }
52
+ ],
53
+ "repairHint": "Return corrected @executioncontrolprotocol.patch EQL only. First line MUST be PATCH WORKFLOW <workflow-id>. Use UPDATE WORKFLOW for workflow label changes; UPDATE STEP for step label or input changes."
54
+ }
@@ -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
+ }