@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.
Files changed (81) hide show
  1. package/README.md +21 -0
  2. package/dist/browser-coding-harness.d.ts +50 -0
  3. package/dist/browser-coding-harness.d.ts.map +1 -0
  4. package/dist/browser-coding-harness.js +76 -0
  5. package/dist/browser-coding-harness.js.map +1 -0
  6. package/dist/fluent-patch-hints.d.ts +18 -0
  7. package/dist/fluent-patch-hints.d.ts.map +1 -0
  8. package/dist/fluent-patch-hints.js +262 -0
  9. package/dist/fluent-patch-hints.js.map +1 -0
  10. package/dist/harness-coding-config.d.ts +45 -0
  11. package/dist/harness-coding-config.d.ts.map +1 -0
  12. package/dist/harness-coding-config.js +87 -0
  13. package/dist/harness-coding-config.js.map +1 -0
  14. package/dist/harness-ids.d.ts +6 -0
  15. package/dist/harness-ids.d.ts.map +1 -0
  16. package/dist/harness-ids.js +6 -0
  17. package/dist/harness-ids.js.map +1 -0
  18. package/dist/index.d.ts +6 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +5 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/intent-classification-coding.d.ts +8 -0
  23. package/dist/intent-classification-coding.d.ts.map +1 -0
  24. package/dist/intent-classification-coding.js +172 -0
  25. package/dist/intent-classification-coding.js.map +1 -0
  26. package/dist/prompts/build-coding-prompt.d.ts +11 -0
  27. package/dist/prompts/build-coding-prompt.d.ts.map +1 -0
  28. package/dist/prompts/build-coding-prompt.js +17 -0
  29. package/dist/prompts/build-coding-prompt.js.map +1 -0
  30. package/dist/prompts/coding-prompt-fixture-ids.d.ts +10 -0
  31. package/dist/prompts/coding-prompt-fixture-ids.d.ts.map +1 -0
  32. package/dist/prompts/coding-prompt-fixture-ids.js +8 -0
  33. package/dist/prompts/coding-prompt-fixture-ids.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/register.d.ts +5 -0
  55. package/dist/register.d.ts.map +1 -0
  56. package/dist/register.js +14 -0
  57. package/dist/register.js.map +1 -0
  58. package/dist/workflow-assistant-coding.d.ts +9 -0
  59. package/dist/workflow-assistant-coding.d.ts.map +1 -0
  60. package/dist/workflow-assistant-coding.js +282 -0
  61. package/dist/workflow-assistant-coding.js.map +1 -0
  62. package/dist/workflow-authoring-coding.d.ts +9 -0
  63. package/dist/workflow-authoring-coding.d.ts.map +1 -0
  64. package/dist/workflow-authoring-coding.js +214 -0
  65. package/dist/workflow-authoring-coding.js.map +1 -0
  66. package/fixtures/eval-cases/assistant.cases.json +658 -0
  67. package/fixtures/eval-cases/intent.cases.json +587 -0
  68. package/fixtures/eval-cases/workflow-create.cases.json +493 -0
  69. package/fixtures/eval-cases/workflow-patch.cases.json +379 -0
  70. package/fixtures/harness-prompts/intent-classification-coding.prompt.json +56 -0
  71. package/fixtures/harness-prompts/workflow-assistant-coding.prompt.json +70 -0
  72. package/fixtures/harness-prompts/workflow-authoring-create-coding.prompt.json +42 -0
  73. package/fixtures/harness-prompts/workflow-authoring-patch-coding.prompt.json +50 -0
  74. package/fixtures/runs/completed-with-refs.json +18 -0
  75. package/fixtures/runs/failed-echo-step.json +29 -0
  76. package/fixtures/runs/running-pending.json +14 -0
  77. package/fixtures/workflows/echo-validate-reorder.json +26 -0
  78. package/fixtures/workflows/echo-workflow.json +20 -0
  79. package/fixtures/workflows/multi-cap-workflow.json +34 -0
  80. package/fixtures/workflows/two-step-chain.json +26 -0
  81. package/package.json +47 -0
@@ -0,0 +1,658 @@
1
+ {
2
+ "cases": [
3
+ {
4
+ "id": "asst-01",
5
+ "suite": "assistant",
6
+ "title": "Failed echo",
7
+ "harness": "workflow-assistant",
8
+ "model": "default",
9
+ "input": {
10
+ "message": "Why did step echo fail?",
11
+ "runContextFixture": "runs/failed-echo-step.json"
12
+ },
13
+ "assertions": {
14
+ "deterministic": [
15
+ {
16
+ "kind": "invokeSuccess"
17
+ },
18
+ {
19
+ "kind": "replySchema"
20
+ },
21
+ {
22
+ "kind": "answerContains",
23
+ "text": "echo"
24
+ },
25
+ {
26
+ "kind": "answerContains",
27
+ "text": "error"
28
+ }
29
+ ],
30
+ "judge": {
31
+ "enabled": true,
32
+ "goal": "Explains echo failure",
33
+ "rubric": "Mentions echo step and describes the error from run context",
34
+ "requireApproved": true
35
+ }
36
+ }
37
+ },
38
+ {
39
+ "id": "asst-02",
40
+ "suite": "assistant",
41
+ "title": "Failed status",
42
+ "harness": "workflow-assistant",
43
+ "model": "default",
44
+ "input": {
45
+ "message": "What is the run status?",
46
+ "runContextFixture": "runs/failed-echo-step.json"
47
+ },
48
+ "assertions": {
49
+ "deterministic": [
50
+ {
51
+ "kind": "invokeSuccess"
52
+ },
53
+ {
54
+ "kind": "replySchema"
55
+ },
56
+ {
57
+ "kind": "answerContains",
58
+ "text": "fail"
59
+ }
60
+ ],
61
+ "judge": {
62
+ "enabled": false
63
+ }
64
+ }
65
+ },
66
+ {
67
+ "id": "asst-03",
68
+ "suite": "assistant",
69
+ "title": "Running",
70
+ "harness": "workflow-assistant",
71
+ "model": "default",
72
+ "input": {
73
+ "message": "Is my workflow still running?",
74
+ "runContextFixture": "runs/running-pending.json"
75
+ },
76
+ "assertions": {
77
+ "deterministic": [
78
+ {
79
+ "kind": "invokeSuccess"
80
+ },
81
+ {
82
+ "kind": "replySchema"
83
+ },
84
+ {
85
+ "kind": "answerContains",
86
+ "text": "run"
87
+ }
88
+ ],
89
+ "judge": {
90
+ "enabled": false
91
+ }
92
+ }
93
+ },
94
+ {
95
+ "id": "asst-04",
96
+ "suite": "assistant",
97
+ "title": "Extensions",
98
+ "harness": "workflow-assistant",
99
+ "model": "default",
100
+ "input": {
101
+ "message": "What plugins and extensions can you use?"
102
+ },
103
+ "assertions": {
104
+ "deterministic": [
105
+ {
106
+ "kind": "invokeSuccess"
107
+ },
108
+ {
109
+ "kind": "replySchema"
110
+ },
111
+ {
112
+ "kind": "answerContains",
113
+ "text": "ecp"
114
+ }
115
+ ],
116
+ "judge": {
117
+ "enabled": true,
118
+ "goal": "Extensions",
119
+ "rubric": "Lists ECP extensions or plugins loaded in this environment",
120
+ "requireApproved": true
121
+ }
122
+ }
123
+ },
124
+ {
125
+ "id": "asst-05",
126
+ "suite": "assistant",
127
+ "title": "Steps",
128
+ "harness": "workflow-assistant",
129
+ "model": "default",
130
+ "input": {
131
+ "message": "What steps are in the workflow?",
132
+ "runContextFixture": "runs/failed-echo-step.json"
133
+ },
134
+ "assertions": {
135
+ "deterministic": [
136
+ {
137
+ "kind": "invokeSuccess"
138
+ },
139
+ {
140
+ "kind": "replySchema"
141
+ }
142
+ ],
143
+ "judge": {
144
+ "enabled": false
145
+ }
146
+ }
147
+ },
148
+ {
149
+ "id": "asst-06",
150
+ "suite": "assistant",
151
+ "title": "Fix suggest",
152
+ "harness": "workflow-assistant",
153
+ "model": "default",
154
+ "input": {
155
+ "message": "How can I fix the echo error?",
156
+ "runContextFixture": "runs/failed-echo-step.json"
157
+ },
158
+ "assertions": {
159
+ "deterministic": [
160
+ {
161
+ "kind": "invokeSuccess"
162
+ },
163
+ {
164
+ "kind": "replySchema"
165
+ },
166
+ {
167
+ "kind": "citationStepId",
168
+ "value": "echo"
169
+ }
170
+ ],
171
+ "judge": {
172
+ "enabled": true,
173
+ "goal": "Fix suggest",
174
+ "requireApproved": true
175
+ }
176
+ }
177
+ },
178
+ {
179
+ "id": "asst-07",
180
+ "suite": "assistant",
181
+ "title": "Output",
182
+ "harness": "workflow-assistant",
183
+ "model": "default",
184
+ "input": {
185
+ "message": "What did the echo step produce?",
186
+ "runContextFixture": "runs/completed-with-refs.json"
187
+ },
188
+ "assertions": {
189
+ "deterministic": [
190
+ {
191
+ "kind": "invokeSuccess"
192
+ },
193
+ {
194
+ "kind": "replySchema"
195
+ }
196
+ ],
197
+ "judge": {
198
+ "enabled": false
199
+ }
200
+ }
201
+ },
202
+ {
203
+ "id": "asst-08",
204
+ "suite": "assistant",
205
+ "title": "Tone judge",
206
+ "harness": "workflow-assistant",
207
+ "model": "default",
208
+ "input": {
209
+ "message": "Explain the failure politely.",
210
+ "runContextFixture": "runs/failed-echo-step.json"
211
+ },
212
+ "assertions": {
213
+ "deterministic": [
214
+ {
215
+ "kind": "invokeSuccess"
216
+ },
217
+ {
218
+ "kind": "replySchema"
219
+ },
220
+ {
221
+ "kind": "answerContains",
222
+ "text": "error"
223
+ }
224
+ ],
225
+ "judge": {
226
+ "enabled": true,
227
+ "goal": "Professional helpful tone",
228
+ "rubric": "Polite explanation of the echo error with actionable guidance",
229
+ "requireApproved": true
230
+ }
231
+ }
232
+ },
233
+ {
234
+ "id": "asst-09",
235
+ "suite": "assistant",
236
+ "title": "Confirm patch",
237
+ "harness": "workflow-assistant",
238
+ "model": "default",
239
+ "input": {
240
+ "message": "Should we patch step echo input?",
241
+ "runContextFixture": "runs/failed-echo-step.json"
242
+ },
243
+ "assertions": {
244
+ "deterministic": [
245
+ {
246
+ "kind": "invokeSuccess"
247
+ },
248
+ {
249
+ "kind": "replySchema"
250
+ }
251
+ ],
252
+ "judge": {
253
+ "enabled": true,
254
+ "goal": "Confirm patch",
255
+ "rubric": "Affirms patching echo step input when appropriate",
256
+ "requireApproved": true
257
+ }
258
+ }
259
+ },
260
+ {
261
+ "id": "asst-10",
262
+ "suite": "assistant",
263
+ "title": "Capabilities list",
264
+ "harness": "workflow-assistant",
265
+ "model": "default",
266
+ "input": {
267
+ "message": "List supported step capabilities."
268
+ },
269
+ "assertions": {
270
+ "deterministic": [
271
+ {
272
+ "kind": "invokeSuccess"
273
+ },
274
+ {
275
+ "kind": "replySchema"
276
+ },
277
+ {
278
+ "kind": "answerContains",
279
+ "text": "test.echo"
280
+ }
281
+ ],
282
+ "judge": {
283
+ "enabled": true,
284
+ "goal": "Capabilities list",
285
+ "rubric": "Names concrete step capability ids such as test.echo",
286
+ "requireApproved": true
287
+ }
288
+ }
289
+ },
290
+ {
291
+ "id": "asst-11",
292
+ "suite": "assistant",
293
+ "title": "What is ECP",
294
+ "harness": "workflow-assistant",
295
+ "model": "default",
296
+ "input": {
297
+ "message": "What is ECP?"
298
+ },
299
+ "assertions": {
300
+ "deterministic": [
301
+ {
302
+ "kind": "invokeSuccess"
303
+ },
304
+ {
305
+ "kind": "replySchema"
306
+ },
307
+ {
308
+ "kind": "answerContains",
309
+ "text": "ECP"
310
+ }
311
+ ],
312
+ "judge": {
313
+ "enabled": true,
314
+ "goal": "Defines ECP in one or two sentences",
315
+ "rubric": "Mentions workflows or governed environments",
316
+ "requireApproved": true
317
+ }
318
+ }
319
+ },
320
+ {
321
+ "id": "asst-12",
322
+ "suite": "assistant",
323
+ "title": "Identity",
324
+ "harness": "workflow-assistant",
325
+ "model": "default",
326
+ "input": {
327
+ "message": "What can you do?"
328
+ },
329
+ "assertions": {
330
+ "deterministic": [
331
+ {
332
+ "kind": "invokeSuccess"
333
+ },
334
+ {
335
+ "kind": "replySchema"
336
+ },
337
+ {
338
+ "kind": "answerContains",
339
+ "text": "workflow"
340
+ }
341
+ ],
342
+ "judge": {
343
+ "enabled": true,
344
+ "goal": "States assistant capabilities",
345
+ "rubric": "Mentions building workflows and answering ECP or environment questions",
346
+ "requireApproved": true
347
+ }
348
+ }
349
+ },
350
+ {
351
+ "id": "asst-13",
352
+ "suite": "assistant",
353
+ "title": "Register refusal",
354
+ "harness": "workflow-assistant",
355
+ "model": "default",
356
+ "input": {
357
+ "message": "Register a new extension for me."
358
+ },
359
+ "assertions": {
360
+ "deterministic": [
361
+ {
362
+ "kind": "invokeSuccess"
363
+ },
364
+ {
365
+ "kind": "replySchema"
366
+ },
367
+ {
368
+ "kind": "answerContains",
369
+ "text": "cannot"
370
+ }
371
+ ],
372
+ "judge": {
373
+ "enabled": true,
374
+ "goal": "Graceful refusal",
375
+ "rubric": "Explains cannot register and offers alternatives",
376
+ "requireApproved": true
377
+ }
378
+ }
379
+ },
380
+ {
381
+ "id": "asst-14",
382
+ "suite": "assistant",
383
+ "title": "Environment help",
384
+ "harness": "workflow-assistant",
385
+ "model": "default",
386
+ "input": {
387
+ "message": "What capabilities are available?"
388
+ },
389
+ "assertions": {
390
+ "deterministic": [
391
+ {
392
+ "kind": "invokeSuccess"
393
+ },
394
+ {
395
+ "kind": "replySchema"
396
+ },
397
+ {
398
+ "kind": "answerContains",
399
+ "text": "test.echo"
400
+ }
401
+ ],
402
+ "judge": {
403
+ "enabled": true,
404
+ "goal": "Lists capabilities",
405
+ "rubric": "Names capability ids from the environment",
406
+ "requireApproved": true
407
+ }
408
+ }
409
+ },
410
+ {
411
+ "id": "asst-15",
412
+ "suite": "assistant",
413
+ "title": "Off-topic joke",
414
+ "harness": "workflow-assistant",
415
+ "model": "default",
416
+ "input": {
417
+ "message": "Tell me a joke."
418
+ },
419
+ "assertions": {
420
+ "deterministic": [
421
+ {
422
+ "kind": "invokeSuccess"
423
+ },
424
+ {
425
+ "kind": "replySchema"
426
+ },
427
+ {
428
+ "kind": "answerRedirectsToScope"
429
+ }
430
+ ],
431
+ "judge": {
432
+ "enabled": true,
433
+ "goal": "Politely declines off-topic request and redirects to ECP/workflow topics",
434
+ "rubric": "Brief polite decline mentioning workflows, ECP, or capabilities",
435
+ "requireApproved": true
436
+ }
437
+ }
438
+ },
439
+ {
440
+ "id": "asst-16",
441
+ "suite": "assistant",
442
+ "title": "Off-topic weather",
443
+ "harness": "workflow-assistant",
444
+ "model": "default",
445
+ "input": {
446
+ "message": "What's the weather today?"
447
+ },
448
+ "assertions": {
449
+ "deterministic": [
450
+ {
451
+ "kind": "invokeSuccess"
452
+ },
453
+ {
454
+ "kind": "replySchema"
455
+ },
456
+ {
457
+ "kind": "answerRedirectsToScope"
458
+ }
459
+ ],
460
+ "judge": {
461
+ "enabled": true,
462
+ "goal": "Politely declines off-topic request and redirects to ECP/workflow topics",
463
+ "rubric": "Brief polite decline mentioning workflows, ECP, or capabilities",
464
+ "requireApproved": true
465
+ }
466
+ }
467
+ },
468
+ {
469
+ "id": "asst-17",
470
+ "suite": "assistant",
471
+ "title": "Off-topic cover letter",
472
+ "harness": "workflow-assistant",
473
+ "model": "default",
474
+ "input": {
475
+ "message": "Write a cover letter for a software job."
476
+ },
477
+ "assertions": {
478
+ "deterministic": [
479
+ {
480
+ "kind": "invokeSuccess"
481
+ },
482
+ {
483
+ "kind": "replySchema"
484
+ },
485
+ {
486
+ "kind": "answerRedirectsToScope"
487
+ },
488
+ {
489
+ "kind": "answerMaxLength",
490
+ "max": 220
491
+ }
492
+ ],
493
+ "judge": {
494
+ "enabled": true,
495
+ "goal": "Politely declines off-topic request and redirects to ECP/workflow topics",
496
+ "rubric": "Brief polite decline mentioning workflows, ECP, or capabilities",
497
+ "requireApproved": true
498
+ }
499
+ }
500
+ },
501
+ {
502
+ "id": "asst-18",
503
+ "suite": "assistant",
504
+ "title": "Gibberish",
505
+ "harness": "workflow-assistant",
506
+ "model": "default",
507
+ "input": {
508
+ "message": "asdf qwerty ???"
509
+ },
510
+ "assertions": {
511
+ "deterministic": [
512
+ {
513
+ "kind": "invokeSuccess"
514
+ },
515
+ {
516
+ "kind": "replySchema"
517
+ },
518
+ {
519
+ "kind": "answerRedirectsToScope"
520
+ }
521
+ ],
522
+ "judge": {
523
+ "enabled": true,
524
+ "goal": "Politely declines off-topic request and redirects to ECP/workflow topics",
525
+ "rubric": "Brief polite decline mentioning workflows, ECP, or capabilities",
526
+ "requireApproved": true
527
+ }
528
+ }
529
+ },
530
+ {
531
+ "id": "asst-19",
532
+ "suite": "assistant",
533
+ "title": "MCP vs ECP",
534
+ "harness": "workflow-assistant",
535
+ "model": "default",
536
+ "input": {
537
+ "message": "How is MCP different from ECP?"
538
+ },
539
+ "assertions": {
540
+ "deterministic": [
541
+ {
542
+ "kind": "invokeSuccess"
543
+ },
544
+ {
545
+ "kind": "replySchema"
546
+ },
547
+ {
548
+ "kind": "answerContains",
549
+ "text": "ECP"
550
+ }
551
+ ],
552
+ "judge": {
553
+ "enabled": true,
554
+ "goal": "Contrasts MCP and ECP",
555
+ "rubric": "Mentions both MCP and ECP in a brief accurate way",
556
+ "requireApproved": true
557
+ }
558
+ }
559
+ },
560
+ {
561
+ "id": "asst-20",
562
+ "suite": "assistant",
563
+ "title": "Workflow definition",
564
+ "harness": "workflow-assistant",
565
+ "model": "default",
566
+ "input": {
567
+ "message": "What is a workflow in ECP?"
568
+ },
569
+ "assertions": {
570
+ "deterministic": [
571
+ {
572
+ "kind": "invokeSuccess"
573
+ },
574
+ {
575
+ "kind": "replySchema"
576
+ },
577
+ {
578
+ "kind": "answerContains",
579
+ "text": "workflow"
580
+ }
581
+ ],
582
+ "judge": {
583
+ "enabled": true,
584
+ "goal": "Defines ECP workflow",
585
+ "rubric": "Mentions steps, capabilities, or portable manifests",
586
+ "requireApproved": true
587
+ }
588
+ }
589
+ },
590
+ {
591
+ "id": "asst-21",
592
+ "suite": "assistant",
593
+ "title": "Off-topic task",
594
+ "harness": "workflow-assistant",
595
+ "model": "default",
596
+ "input": {
597
+ "message": "Write my resume."
598
+ },
599
+ "assertions": {
600
+ "deterministic": [
601
+ {
602
+ "kind": "invokeSuccess"
603
+ },
604
+ {
605
+ "kind": "replySchema"
606
+ },
607
+ {
608
+ "kind": "answerRedirectsToScope"
609
+ }
610
+ ],
611
+ "judge": {
612
+ "enabled": true,
613
+ "goal": "Politely declines off-topic request and redirects to ECP/workflow topics",
614
+ "rubric": "Brief polite decline mentioning workflows, ECP, or capabilities",
615
+ "requireApproved": true
616
+ }
617
+ }
618
+ },
619
+ {
620
+ "id": "asst-22",
621
+ "suite": "assistant",
622
+ "title": "FAQ brevity",
623
+ "harness": "workflow-assistant",
624
+ "model": "default",
625
+ "input": {
626
+ "message": "What is ECP?"
627
+ },
628
+ "assertions": {
629
+ "deterministic": [
630
+ {
631
+ "kind": "invokeSuccess"
632
+ },
633
+ {
634
+ "kind": "replySchema"
635
+ },
636
+ {
637
+ "kind": "answerContains",
638
+ "text": "ECP"
639
+ },
640
+ {
641
+ "kind": "answerMaxLength",
642
+ "max": 280
643
+ },
644
+ {
645
+ "kind": "rawNotContains",
646
+ "text": "```"
647
+ }
648
+ ],
649
+ "judge": {
650
+ "enabled": true,
651
+ "goal": "Defines ECP briefly",
652
+ "rubric": "One or two sentences, no markdown fences",
653
+ "requireApproved": true
654
+ }
655
+ }
656
+ }
657
+ ]
658
+ }