ws-spec-kit 0.1.0-beta.2 → 0.1.0-beta.3

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 (53) hide show
  1. package/dist/adapters/connectors/git-native.d.ts +4 -1
  2. package/dist/adapters/connectors/git-native.js +87 -23
  3. package/dist/adapters/connectors/git-native.js.map +1 -1
  4. package/dist/adapters/connectors/github-cli.d.ts +1 -0
  5. package/dist/adapters/connectors/github-cli.js +1 -0
  6. package/dist/adapters/connectors/github-cli.js.map +1 -1
  7. package/dist/adapters/connectors/gitlab-cli.d.ts +1 -0
  8. package/dist/adapters/connectors/gitlab-cli.js +1 -0
  9. package/dist/adapters/connectors/gitlab-cli.js.map +1 -1
  10. package/dist/adapters/connectors/lark-cli.d.ts +1 -0
  11. package/dist/adapters/connectors/lark-cli.js +2 -0
  12. package/dist/adapters/connectors/lark-cli.js.map +1 -1
  13. package/dist/adapters/process/spawn-json.d.ts +2 -1
  14. package/dist/adapters/process/spawn-json.js +13 -0
  15. package/dist/adapters/process/spawn-json.js.map +1 -1
  16. package/dist/adapters/skills/install.js +76 -13
  17. package/dist/adapters/skills/install.js.map +1 -1
  18. package/dist/application/acquire.js +20 -5
  19. package/dist/application/acquire.js.map +1 -1
  20. package/dist/application/artifact.js +4 -1
  21. package/dist/application/artifact.js.map +1 -1
  22. package/dist/application/decide.js +39 -6
  23. package/dist/application/decide.js.map +1 -1
  24. package/dist/application/external-action.d.ts +3 -0
  25. package/dist/application/external-action.js +220 -54
  26. package/dist/application/external-action.js.map +1 -1
  27. package/dist/engine/approvals.d.ts +36 -3
  28. package/dist/engine/approvals.js +86 -4
  29. package/dist/engine/approvals.js.map +1 -1
  30. package/dist/engine/external-effects/authorization.d.ts +3 -0
  31. package/dist/engine/external-effects/authorization.js +8 -0
  32. package/dist/engine/external-effects/authorization.js.map +1 -1
  33. package/dist/protocol/application.d.ts +25 -4
  34. package/dist/protocol/public-contract.d.ts +3 -3
  35. package/dist/protocol/public-contract.js +4 -3
  36. package/dist/protocol/public-contract.js.map +1 -1
  37. package/dist/protocol/work-package.d.ts +15 -2
  38. package/dist/registry/connectors/external-executor.js +5 -4
  39. package/dist/registry/connectors/external-executor.js.map +1 -1
  40. package/dist/registry/connectors/secret-detector.d.ts +1 -0
  41. package/dist/registry/connectors/secret-detector.js +14 -1
  42. package/dist/registry/connectors/secret-detector.js.map +1 -1
  43. package/dist/schemas/definitions.d.ts +1 -1
  44. package/dist/schemas/definitions.js +211 -5
  45. package/dist/schemas/definitions.js.map +1 -1
  46. package/dist/storage/control-plane.d.ts +1 -0
  47. package/dist/storage/control-plane.js.map +1 -1
  48. package/dist/storage/events.d.ts +1 -1
  49. package/dist/storage/events.js.map +1 -1
  50. package/package.json +2 -2
  51. package/schemas/builtin-agent-action-v2.schema.json +867 -0
  52. package/schemas/builtin-application-decision-input-v2.schema.json +381 -0
  53. package/schemas/builtin-work-package-v2.schema.json +293 -0
@@ -0,0 +1,867 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "builtin.agent-action.v2",
4
+ "oneOf": [
5
+ {
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "action",
10
+ "workPackage"
11
+ ],
12
+ "properties": {
13
+ "action": {
14
+ "const": "execute"
15
+ },
16
+ "workPackage": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "required": [
20
+ "version",
21
+ "workItemId",
22
+ "stepId",
23
+ "attemptId",
24
+ "workspace",
25
+ "lease",
26
+ "objective",
27
+ "skills",
28
+ "artifacts",
29
+ "constraints",
30
+ "requiredOutputs",
31
+ "gates",
32
+ "resultSchema"
33
+ ],
34
+ "properties": {
35
+ "version": {
36
+ "const": 1
37
+ },
38
+ "workItemId": {
39
+ "type": "string",
40
+ "pattern": "^WSS-[A-Za-z0-9-]+$"
41
+ },
42
+ "stepId": {
43
+ "type": "string",
44
+ "pattern": "^[a-z][a-z0-9-]{0,62}(?::[1-9][0-9]*:[a-z][a-z0-9-]{0,62})?$"
45
+ },
46
+ "attemptId": {
47
+ "type": "string",
48
+ "pattern": "^attempt-.+$"
49
+ },
50
+ "workspace": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": [
54
+ "mode",
55
+ "materialized"
56
+ ],
57
+ "properties": {
58
+ "mode": {
59
+ "enum": [
60
+ "read-only",
61
+ "isolated-worktree"
62
+ ]
63
+ },
64
+ "materialized": {
65
+ "type": "boolean"
66
+ }
67
+ }
68
+ },
69
+ "lease": {
70
+ "type": "object",
71
+ "additionalProperties": false,
72
+ "required": [
73
+ "token",
74
+ "expiresAt"
75
+ ],
76
+ "properties": {
77
+ "token": {
78
+ "type": "string",
79
+ "minLength": 1
80
+ },
81
+ "expiresAt": {
82
+ "type": "string",
83
+ "format": "date-time"
84
+ }
85
+ }
86
+ },
87
+ "objective": {
88
+ "type": "string",
89
+ "minLength": 1
90
+ },
91
+ "artifactLevel": {
92
+ "type": "string",
93
+ "minLength": 1
94
+ },
95
+ "skills": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": [
101
+ "ref",
102
+ "version",
103
+ "digest",
104
+ "description"
105
+ ],
106
+ "properties": {
107
+ "ref": {
108
+ "type": "string",
109
+ "minLength": 1
110
+ },
111
+ "version": {
112
+ "type": "string",
113
+ "minLength": 1
114
+ },
115
+ "digest": {
116
+ "type": "string",
117
+ "pattern": "^sha256:.+$"
118
+ },
119
+ "description": {
120
+ "type": "string",
121
+ "minLength": 1
122
+ }
123
+ }
124
+ }
125
+ },
126
+ "artifacts": {
127
+ "type": "array",
128
+ "items": {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "required": [
132
+ "artifactType",
133
+ "schemaVersion"
134
+ ],
135
+ "properties": {
136
+ "artifactType": {
137
+ "type": "string",
138
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
139
+ },
140
+ "outputId": {
141
+ "type": "string",
142
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
143
+ },
144
+ "artifactId": {
145
+ "type": "string",
146
+ "minLength": 1,
147
+ "maxLength": 128
148
+ },
149
+ "schemaVersion": {
150
+ "type": "integer",
151
+ "minimum": 1
152
+ },
153
+ "path": {
154
+ "type": "string"
155
+ },
156
+ "revision": {
157
+ "type": "integer",
158
+ "minimum": 1
159
+ },
160
+ "contentHash": {
161
+ "type": "string",
162
+ "pattern": "^sha256:.+$"
163
+ },
164
+ "mediaType": {
165
+ "type": "string"
166
+ },
167
+ "contentLevel": {
168
+ "type": "string",
169
+ "minLength": 1
170
+ }
171
+ }
172
+ }
173
+ },
174
+ "constraints": {
175
+ "type": "object",
176
+ "additionalProperties": false,
177
+ "required": [
178
+ "allowedPaths",
179
+ "forbiddenActions"
180
+ ],
181
+ "properties": {
182
+ "allowedPaths": {
183
+ "type": "array",
184
+ "items": {
185
+ "type": "string"
186
+ },
187
+ "uniqueItems": true
188
+ },
189
+ "forbiddenActions": {
190
+ "type": "array",
191
+ "items": {
192
+ "type": "string"
193
+ },
194
+ "uniqueItems": true
195
+ }
196
+ }
197
+ },
198
+ "requiredOutputs": {
199
+ "type": "array",
200
+ "items": {
201
+ "type": "object",
202
+ "additionalProperties": false,
203
+ "required": [
204
+ "artifactType",
205
+ "schemaVersion"
206
+ ],
207
+ "properties": {
208
+ "artifactType": {
209
+ "type": "string",
210
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
211
+ },
212
+ "outputId": {
213
+ "type": "string",
214
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
215
+ },
216
+ "schemaVersion": {
217
+ "type": "integer",
218
+ "minimum": 1
219
+ },
220
+ "contentLevel": {
221
+ "type": "string",
222
+ "minLength": 1
223
+ }
224
+ }
225
+ }
226
+ },
227
+ "artifactAuthoring": {
228
+ "type": "object",
229
+ "additionalProperties": false,
230
+ "required": [
231
+ "version",
232
+ "maxContentBytes",
233
+ "draftRoots"
234
+ ],
235
+ "properties": {
236
+ "version": {
237
+ "const": 1
238
+ },
239
+ "maxContentBytes": {
240
+ "type": "integer",
241
+ "minimum": 1,
242
+ "maximum": 1048576
243
+ },
244
+ "draftRoots": {
245
+ "type": "array",
246
+ "minItems": 1,
247
+ "uniqueItems": true,
248
+ "items": {
249
+ "type": "string",
250
+ "minLength": 1
251
+ }
252
+ }
253
+ }
254
+ },
255
+ "gates": {
256
+ "type": "array",
257
+ "items": {
258
+ "type": "object",
259
+ "additionalProperties": false,
260
+ "required": [
261
+ "id",
262
+ "evidence",
263
+ "required"
264
+ ],
265
+ "properties": {
266
+ "id": {
267
+ "type": "string",
268
+ "pattern": "^[a-z][a-z0-9.-]{0,62}$"
269
+ },
270
+ "evidence": {
271
+ "enum": [
272
+ "trusted",
273
+ "attested",
274
+ "reported"
275
+ ]
276
+ },
277
+ "required": {
278
+ "type": "boolean"
279
+ }
280
+ }
281
+ }
282
+ },
283
+ "resultSchema": {
284
+ "const": "builtin.submit-result.v1"
285
+ }
286
+ }
287
+ },
288
+ "resumeSubmission": {
289
+ "const": true
290
+ }
291
+ }
292
+ },
293
+ {
294
+ "type": "object",
295
+ "additionalProperties": false,
296
+ "required": [
297
+ "action",
298
+ "workPackage"
299
+ ],
300
+ "properties": {
301
+ "action": {
302
+ "const": "execute"
303
+ },
304
+ "workPackage": {
305
+ "type": "object",
306
+ "additionalProperties": false,
307
+ "required": [
308
+ "version",
309
+ "workItemId",
310
+ "stepId",
311
+ "attemptId",
312
+ "workspace",
313
+ "lease",
314
+ "objective",
315
+ "revisionRequest",
316
+ "skills",
317
+ "artifacts",
318
+ "constraints",
319
+ "requiredOutputs",
320
+ "gates",
321
+ "resultSchema"
322
+ ],
323
+ "properties": {
324
+ "version": {
325
+ "const": 2
326
+ },
327
+ "workItemId": {
328
+ "type": "string",
329
+ "pattern": "^WSS-[A-Za-z0-9-]+$"
330
+ },
331
+ "stepId": {
332
+ "type": "string",
333
+ "pattern": "^[a-z][a-z0-9-]{0,62}(?::[1-9][0-9]*:[a-z][a-z0-9-]{0,62})?$"
334
+ },
335
+ "attemptId": {
336
+ "type": "string",
337
+ "pattern": "^attempt-.+$"
338
+ },
339
+ "workspace": {
340
+ "type": "object",
341
+ "additionalProperties": false,
342
+ "required": [
343
+ "mode",
344
+ "materialized"
345
+ ],
346
+ "properties": {
347
+ "mode": {
348
+ "enum": [
349
+ "read-only",
350
+ "isolated-worktree"
351
+ ]
352
+ },
353
+ "materialized": {
354
+ "type": "boolean"
355
+ }
356
+ }
357
+ },
358
+ "lease": {
359
+ "type": "object",
360
+ "additionalProperties": false,
361
+ "required": [
362
+ "token",
363
+ "expiresAt"
364
+ ],
365
+ "properties": {
366
+ "token": {
367
+ "type": "string",
368
+ "minLength": 1
369
+ },
370
+ "expiresAt": {
371
+ "type": "string",
372
+ "format": "date-time"
373
+ }
374
+ }
375
+ },
376
+ "objective": {
377
+ "type": "string",
378
+ "minLength": 1
379
+ },
380
+ "revisionRequest": {
381
+ "type": "object",
382
+ "additionalProperties": false,
383
+ "required": [
384
+ "approvalRequestId",
385
+ "feedback"
386
+ ],
387
+ "properties": {
388
+ "approvalRequestId": {
389
+ "type": "string",
390
+ "minLength": 1
391
+ },
392
+ "feedback": {
393
+ "type": "string",
394
+ "minLength": 1
395
+ }
396
+ }
397
+ },
398
+ "artifactLevel": {
399
+ "type": "string",
400
+ "minLength": 1
401
+ },
402
+ "skills": {
403
+ "type": "array",
404
+ "items": {
405
+ "type": "object",
406
+ "additionalProperties": false,
407
+ "required": [
408
+ "ref",
409
+ "version",
410
+ "digest",
411
+ "description"
412
+ ],
413
+ "properties": {
414
+ "ref": {
415
+ "type": "string",
416
+ "minLength": 1
417
+ },
418
+ "version": {
419
+ "type": "string",
420
+ "minLength": 1
421
+ },
422
+ "digest": {
423
+ "type": "string",
424
+ "pattern": "^sha256:.+$"
425
+ },
426
+ "description": {
427
+ "type": "string",
428
+ "minLength": 1
429
+ }
430
+ }
431
+ }
432
+ },
433
+ "artifacts": {
434
+ "type": "array",
435
+ "items": {
436
+ "type": "object",
437
+ "additionalProperties": false,
438
+ "required": [
439
+ "artifactType",
440
+ "schemaVersion"
441
+ ],
442
+ "properties": {
443
+ "artifactType": {
444
+ "type": "string",
445
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
446
+ },
447
+ "outputId": {
448
+ "type": "string",
449
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
450
+ },
451
+ "artifactId": {
452
+ "type": "string",
453
+ "minLength": 1,
454
+ "maxLength": 128
455
+ },
456
+ "schemaVersion": {
457
+ "type": "integer",
458
+ "minimum": 1
459
+ },
460
+ "path": {
461
+ "type": "string"
462
+ },
463
+ "revision": {
464
+ "type": "integer",
465
+ "minimum": 1
466
+ },
467
+ "contentHash": {
468
+ "type": "string",
469
+ "pattern": "^sha256:.+$"
470
+ },
471
+ "mediaType": {
472
+ "type": "string"
473
+ },
474
+ "contentLevel": {
475
+ "type": "string",
476
+ "minLength": 1
477
+ }
478
+ }
479
+ }
480
+ },
481
+ "constraints": {
482
+ "type": "object",
483
+ "additionalProperties": false,
484
+ "required": [
485
+ "allowedPaths",
486
+ "forbiddenActions"
487
+ ],
488
+ "properties": {
489
+ "allowedPaths": {
490
+ "type": "array",
491
+ "items": {
492
+ "type": "string"
493
+ },
494
+ "uniqueItems": true
495
+ },
496
+ "forbiddenActions": {
497
+ "type": "array",
498
+ "items": {
499
+ "type": "string"
500
+ },
501
+ "uniqueItems": true
502
+ }
503
+ }
504
+ },
505
+ "requiredOutputs": {
506
+ "type": "array",
507
+ "items": {
508
+ "type": "object",
509
+ "additionalProperties": false,
510
+ "required": [
511
+ "artifactType",
512
+ "schemaVersion"
513
+ ],
514
+ "properties": {
515
+ "artifactType": {
516
+ "type": "string",
517
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
518
+ },
519
+ "outputId": {
520
+ "type": "string",
521
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
522
+ },
523
+ "schemaVersion": {
524
+ "type": "integer",
525
+ "minimum": 1
526
+ },
527
+ "contentLevel": {
528
+ "type": "string",
529
+ "minLength": 1
530
+ }
531
+ }
532
+ }
533
+ },
534
+ "artifactAuthoring": {
535
+ "type": "object",
536
+ "additionalProperties": false,
537
+ "required": [
538
+ "version",
539
+ "maxContentBytes",
540
+ "draftRoots"
541
+ ],
542
+ "properties": {
543
+ "version": {
544
+ "const": 1
545
+ },
546
+ "maxContentBytes": {
547
+ "type": "integer",
548
+ "minimum": 1,
549
+ "maximum": 1048576
550
+ },
551
+ "draftRoots": {
552
+ "type": "array",
553
+ "minItems": 1,
554
+ "uniqueItems": true,
555
+ "items": {
556
+ "type": "string",
557
+ "minLength": 1
558
+ }
559
+ }
560
+ }
561
+ },
562
+ "gates": {
563
+ "type": "array",
564
+ "items": {
565
+ "type": "object",
566
+ "additionalProperties": false,
567
+ "required": [
568
+ "id",
569
+ "evidence",
570
+ "required"
571
+ ],
572
+ "properties": {
573
+ "id": {
574
+ "type": "string",
575
+ "pattern": "^[a-z][a-z0-9.-]{0,62}$"
576
+ },
577
+ "evidence": {
578
+ "enum": [
579
+ "trusted",
580
+ "attested",
581
+ "reported"
582
+ ]
583
+ },
584
+ "required": {
585
+ "type": "boolean"
586
+ }
587
+ }
588
+ }
589
+ },
590
+ "resultSchema": {
591
+ "const": "builtin.submit-result.v1"
592
+ }
593
+ }
594
+ }
595
+ }
596
+ },
597
+ {
598
+ "type": "object",
599
+ "additionalProperties": false,
600
+ "required": [
601
+ "action",
602
+ "rejectionConfirmation"
603
+ ],
604
+ "properties": {
605
+ "action": {
606
+ "const": "rejection_confirmed"
607
+ },
608
+ "rejectionConfirmation": {
609
+ "type": "object",
610
+ "additionalProperties": false,
611
+ "required": [
612
+ "token",
613
+ "feedbackDigest"
614
+ ],
615
+ "properties": {
616
+ "token": {
617
+ "type": "string",
618
+ "minLength": 1
619
+ },
620
+ "feedbackDigest": {
621
+ "type": "string",
622
+ "pattern": "^sha256:.+$"
623
+ }
624
+ }
625
+ }
626
+ }
627
+ },
628
+ {
629
+ "type": "object",
630
+ "additionalProperties": false,
631
+ "required": [
632
+ "action",
633
+ "approval"
634
+ ],
635
+ "properties": {
636
+ "action": {
637
+ "const": "await_approval"
638
+ },
639
+ "approval": {
640
+ "oneOf": [
641
+ {
642
+ "type": "object",
643
+ "additionalProperties": false,
644
+ "required": [
645
+ "kind",
646
+ "requestId",
647
+ "workItemId",
648
+ "title",
649
+ "digest"
650
+ ],
651
+ "properties": {
652
+ "kind": {
653
+ "const": "step"
654
+ },
655
+ "requestId": {
656
+ "type": "string",
657
+ "minLength": 1
658
+ },
659
+ "workItemId": {
660
+ "type": "string",
661
+ "pattern": "^WSS-[A-Za-z0-9-]+$"
662
+ },
663
+ "title": {
664
+ "type": "string",
665
+ "minLength": 1
666
+ },
667
+ "digest": {
668
+ "type": "string",
669
+ "pattern": "^sha256:.+$"
670
+ }
671
+ }
672
+ },
673
+ {
674
+ "type": "object",
675
+ "additionalProperties": false,
676
+ "required": [
677
+ "kind",
678
+ "requestId",
679
+ "workItemId",
680
+ "title",
681
+ "digest"
682
+ ],
683
+ "properties": {
684
+ "kind": {
685
+ "const": "workflow_trust"
686
+ },
687
+ "requestId": {
688
+ "type": "string",
689
+ "minLength": 1
690
+ },
691
+ "workItemId": {
692
+ "type": "string",
693
+ "pattern": "^WSS-[A-Za-z0-9-]+$"
694
+ },
695
+ "title": {
696
+ "type": "string",
697
+ "minLength": 1
698
+ },
699
+ "digest": {
700
+ "type": "string",
701
+ "pattern": "^sha256:.+$"
702
+ }
703
+ }
704
+ },
705
+ {
706
+ "type": "object",
707
+ "additionalProperties": false,
708
+ "required": [
709
+ "kind",
710
+ "requestId",
711
+ "workItemId",
712
+ "title",
713
+ "digest",
714
+ "provider",
715
+ "action",
716
+ "target",
717
+ "sideEffects"
718
+ ],
719
+ "properties": {
720
+ "kind": {
721
+ "const": "external_action"
722
+ },
723
+ "requestId": {
724
+ "type": "string",
725
+ "minLength": 1
726
+ },
727
+ "workItemId": {
728
+ "type": "string",
729
+ "pattern": "^WSS-[A-Za-z0-9-]+$"
730
+ },
731
+ "title": {
732
+ "type": "string",
733
+ "minLength": 1
734
+ },
735
+ "digest": {
736
+ "type": "string",
737
+ "pattern": "^sha256:.+$"
738
+ },
739
+ "provider": {
740
+ "type": "string",
741
+ "pattern": "^[a-z][a-z0-9-]{0,62}$"
742
+ },
743
+ "action": {
744
+ "enum": [
745
+ "git.commit",
746
+ "issue.update",
747
+ "knowledge.publish",
748
+ "issue.close"
749
+ ]
750
+ },
751
+ "target": {
752
+ "type": "object",
753
+ "additionalProperties": false,
754
+ "required": [
755
+ "kind",
756
+ "stableId"
757
+ ],
758
+ "properties": {
759
+ "kind": {
760
+ "enum": [
761
+ "repository",
762
+ "issue",
763
+ "knowledge"
764
+ ]
765
+ },
766
+ "stableId": {
767
+ "type": "string",
768
+ "minLength": 1,
769
+ "maxLength": 4096
770
+ }
771
+ }
772
+ },
773
+ "sideEffects": {
774
+ "type": "array",
775
+ "minItems": 1,
776
+ "uniqueItems": true,
777
+ "items": {
778
+ "type": "string",
779
+ "minLength": 1,
780
+ "maxLength": 256
781
+ }
782
+ }
783
+ }
784
+ }
785
+ ]
786
+ }
787
+ }
788
+ },
789
+ {
790
+ "type": "object",
791
+ "additionalProperties": false,
792
+ "required": [
793
+ "action",
794
+ "problems"
795
+ ],
796
+ "properties": {
797
+ "action": {
798
+ "const": "blocked"
799
+ },
800
+ "problems": {
801
+ "type": "array",
802
+ "minItems": 1,
803
+ "items": {
804
+ "type": "object",
805
+ "additionalProperties": false,
806
+ "required": [
807
+ "code",
808
+ "message",
809
+ "retryable"
810
+ ],
811
+ "properties": {
812
+ "code": {
813
+ "type": "string",
814
+ "pattern": "^WSSPEC_[A-Z0-9_]+$"
815
+ },
816
+ "message": {
817
+ "type": "string",
818
+ "minLength": 1
819
+ },
820
+ "retryable": {
821
+ "type": "boolean"
822
+ }
823
+ }
824
+ }
825
+ }
826
+ }
827
+ },
828
+ {
829
+ "type": "object",
830
+ "additionalProperties": false,
831
+ "required": [
832
+ "action",
833
+ "summary"
834
+ ],
835
+ "properties": {
836
+ "action": {
837
+ "const": "completed"
838
+ },
839
+ "summary": {
840
+ "type": "object",
841
+ "additionalProperties": false,
842
+ "required": [
843
+ "workItemId",
844
+ "status",
845
+ "message"
846
+ ],
847
+ "properties": {
848
+ "workItemId": {
849
+ "type": "string",
850
+ "pattern": "^WSS-[A-Za-z0-9-]+$"
851
+ },
852
+ "status": {
853
+ "enum": [
854
+ "closed",
855
+ "cancelled"
856
+ ]
857
+ },
858
+ "message": {
859
+ "type": "string",
860
+ "minLength": 1
861
+ }
862
+ }
863
+ }
864
+ }
865
+ }
866
+ ]
867
+ }