contractspec 3.7.17 → 4.0.1

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.
@@ -0,0 +1,1371 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "$schema": {
6
+ "type": "string",
7
+ "format": "uri-reference",
8
+ "description": "JSON Schema location for editor validation and completions."
9
+ },
10
+ "aiProvider": {
11
+ "default": "claude",
12
+ "type": "string",
13
+ "enum": ["claude", "openai", "ollama", "mistral", "custom"]
14
+ },
15
+ "aiModel": {
16
+ "type": "string"
17
+ },
18
+ "agentMode": {
19
+ "default": "simple",
20
+ "type": "string",
21
+ "enum": [
22
+ "simple",
23
+ "cursor",
24
+ "claude-code",
25
+ "openai-codex",
26
+ "claude-agent-sdk",
27
+ "opencode",
28
+ "opencode-sdk"
29
+ ]
30
+ },
31
+ "customEndpoint": {
32
+ "anyOf": [
33
+ {
34
+ "type": "string",
35
+ "format": "uri"
36
+ },
37
+ {
38
+ "type": "null"
39
+ }
40
+ ]
41
+ },
42
+ "customApiKey": {
43
+ "anyOf": [
44
+ {
45
+ "type": "string"
46
+ },
47
+ {
48
+ "type": "null"
49
+ }
50
+ ]
51
+ },
52
+ "outputDir": {
53
+ "default": "./src",
54
+ "type": "string"
55
+ },
56
+ "conventions": {
57
+ "type": "object",
58
+ "properties": {
59
+ "models": {
60
+ "default": "models",
61
+ "type": "string"
62
+ },
63
+ "operations": {
64
+ "default": "operations/commands|queries",
65
+ "type": "string"
66
+ },
67
+ "events": {
68
+ "default": "events",
69
+ "type": "string"
70
+ },
71
+ "presentations": {
72
+ "default": "presentations",
73
+ "type": "string"
74
+ },
75
+ "forms": {
76
+ "default": "forms",
77
+ "type": "string"
78
+ },
79
+ "capabilities": {
80
+ "default": "capabilities",
81
+ "type": "string"
82
+ },
83
+ "policies": {
84
+ "default": "policies",
85
+ "type": "string"
86
+ },
87
+ "tests": {
88
+ "default": "tests",
89
+ "type": "string"
90
+ },
91
+ "translations": {
92
+ "default": "translations",
93
+ "type": "string"
94
+ },
95
+ "groupByFeature": {
96
+ "default": true,
97
+ "type": "boolean"
98
+ },
99
+ "operationsGrouping": {
100
+ "type": "object",
101
+ "properties": {
102
+ "strategy": {
103
+ "type": "string",
104
+ "enum": [
105
+ "by-tag",
106
+ "by-owner",
107
+ "by-domain",
108
+ "by-url-path-single",
109
+ "by-url-path-multi",
110
+ "by-feature",
111
+ "none"
112
+ ]
113
+ },
114
+ "urlPathLevel": {
115
+ "type": "number"
116
+ },
117
+ "pattern": {
118
+ "type": "string"
119
+ }
120
+ },
121
+ "required": ["strategy"],
122
+ "additionalProperties": false
123
+ },
124
+ "modelsGrouping": {
125
+ "type": "object",
126
+ "properties": {
127
+ "strategy": {
128
+ "type": "string",
129
+ "enum": [
130
+ "by-tag",
131
+ "by-owner",
132
+ "by-domain",
133
+ "by-url-path-single",
134
+ "by-url-path-multi",
135
+ "by-feature",
136
+ "none"
137
+ ]
138
+ },
139
+ "urlPathLevel": {
140
+ "type": "number"
141
+ },
142
+ "pattern": {
143
+ "type": "string"
144
+ }
145
+ },
146
+ "required": ["strategy"],
147
+ "additionalProperties": false
148
+ },
149
+ "eventsGrouping": {
150
+ "type": "object",
151
+ "properties": {
152
+ "strategy": {
153
+ "type": "string",
154
+ "enum": [
155
+ "by-tag",
156
+ "by-owner",
157
+ "by-domain",
158
+ "by-url-path-single",
159
+ "by-url-path-multi",
160
+ "by-feature",
161
+ "none"
162
+ ]
163
+ },
164
+ "urlPathLevel": {
165
+ "type": "number"
166
+ },
167
+ "pattern": {
168
+ "type": "string"
169
+ }
170
+ },
171
+ "required": ["strategy"],
172
+ "additionalProperties": false
173
+ }
174
+ },
175
+ "additionalProperties": false
176
+ },
177
+ "defaultOwners": {
178
+ "default": [],
179
+ "type": "array",
180
+ "items": {
181
+ "type": "string"
182
+ }
183
+ },
184
+ "defaultTags": {
185
+ "default": [],
186
+ "type": "array",
187
+ "items": {
188
+ "type": "string"
189
+ }
190
+ },
191
+ "packages": {
192
+ "type": "array",
193
+ "items": {
194
+ "type": "string"
195
+ }
196
+ },
197
+ "excludePackages": {
198
+ "type": "array",
199
+ "items": {
200
+ "type": "string"
201
+ }
202
+ },
203
+ "recursive": {
204
+ "type": "boolean"
205
+ },
206
+ "openapi": {
207
+ "type": "object",
208
+ "properties": {
209
+ "sources": {
210
+ "type": "array",
211
+ "items": {
212
+ "type": "object",
213
+ "properties": {
214
+ "name": {
215
+ "type": "string"
216
+ },
217
+ "url": {
218
+ "type": "string",
219
+ "format": "uri"
220
+ },
221
+ "file": {
222
+ "type": "string"
223
+ },
224
+ "syncMode": {
225
+ "default": "validate",
226
+ "type": "string",
227
+ "enum": ["import", "sync", "validate"]
228
+ },
229
+ "tags": {
230
+ "type": "array",
231
+ "items": {
232
+ "type": "string"
233
+ }
234
+ },
235
+ "exclude": {
236
+ "type": "array",
237
+ "items": {
238
+ "type": "string"
239
+ }
240
+ },
241
+ "include": {
242
+ "type": "array",
243
+ "items": {
244
+ "type": "string"
245
+ }
246
+ },
247
+ "prefix": {
248
+ "type": "string"
249
+ },
250
+ "defaultStability": {
251
+ "type": "string",
252
+ "enum": ["experimental", "beta", "stable", "deprecated"]
253
+ },
254
+ "defaultAuth": {
255
+ "type": "string",
256
+ "enum": ["anonymous", "user", "admin"]
257
+ },
258
+ "defaultOwners": {
259
+ "type": "array",
260
+ "items": {
261
+ "type": "string"
262
+ }
263
+ },
264
+ "schemaFormat": {
265
+ "default": "contractspec",
266
+ "type": "string",
267
+ "enum": ["contractspec", "zod", "json-schema", "graphql"]
268
+ }
269
+ },
270
+ "required": ["name"],
271
+ "additionalProperties": false
272
+ }
273
+ },
274
+ "export": {
275
+ "type": "object",
276
+ "properties": {
277
+ "outputPath": {
278
+ "default": "./openapi.json",
279
+ "type": "string"
280
+ },
281
+ "format": {
282
+ "default": "json",
283
+ "type": "string",
284
+ "enum": ["json", "yaml"]
285
+ },
286
+ "title": {
287
+ "type": "string"
288
+ },
289
+ "version": {
290
+ "type": "string"
291
+ },
292
+ "description": {
293
+ "type": "string"
294
+ },
295
+ "servers": {
296
+ "type": "array",
297
+ "items": {
298
+ "type": "object",
299
+ "properties": {
300
+ "url": {
301
+ "type": "string"
302
+ },
303
+ "description": {
304
+ "type": "string"
305
+ }
306
+ },
307
+ "required": ["url"],
308
+ "additionalProperties": false
309
+ }
310
+ }
311
+ },
312
+ "additionalProperties": false
313
+ }
314
+ },
315
+ "additionalProperties": false
316
+ },
317
+ "ci": {
318
+ "type": "object",
319
+ "properties": {
320
+ "checks": {
321
+ "default": ["structure", "integrity", "deps"],
322
+ "type": "array",
323
+ "items": {
324
+ "type": "string"
325
+ }
326
+ },
327
+ "skipChecks": {
328
+ "type": "array",
329
+ "items": {
330
+ "type": "string"
331
+ }
332
+ },
333
+ "failOnWarnings": {
334
+ "default": false,
335
+ "type": "boolean"
336
+ },
337
+ "uploadSarif": {
338
+ "default": true,
339
+ "type": "boolean"
340
+ },
341
+ "prComment": {
342
+ "type": "object",
343
+ "properties": {
344
+ "enabled": {
345
+ "default": true,
346
+ "type": "boolean"
347
+ },
348
+ "template": {
349
+ "default": "detailed",
350
+ "type": "string",
351
+ "enum": ["minimal", "detailed"]
352
+ },
353
+ "updateExisting": {
354
+ "default": true,
355
+ "type": "boolean"
356
+ }
357
+ },
358
+ "additionalProperties": false
359
+ },
360
+ "checkRun": {
361
+ "type": "object",
362
+ "properties": {
363
+ "enabled": {
364
+ "default": true,
365
+ "type": "boolean"
366
+ },
367
+ "name": {
368
+ "default": "ContractSpec Impact",
369
+ "type": "string"
370
+ },
371
+ "failOnBreaking": {
372
+ "default": true,
373
+ "type": "boolean"
374
+ },
375
+ "failOnChanges": {
376
+ "default": false,
377
+ "type": "boolean"
378
+ }
379
+ },
380
+ "additionalProperties": false
381
+ },
382
+ "impact": {
383
+ "type": "object",
384
+ "properties": {
385
+ "baseline": {
386
+ "default": "default-branch",
387
+ "type": "string"
388
+ },
389
+ "include": {
390
+ "type": "array",
391
+ "items": {
392
+ "type": "string"
393
+ }
394
+ },
395
+ "exclude": {
396
+ "type": "array",
397
+ "items": {
398
+ "type": "string"
399
+ }
400
+ }
401
+ },
402
+ "additionalProperties": false
403
+ }
404
+ },
405
+ "additionalProperties": false
406
+ },
407
+ "metaRepo": {
408
+ "type": "object",
409
+ "properties": {
410
+ "activeScope": {
411
+ "type": "string"
412
+ },
413
+ "externalWorkspaces": {
414
+ "type": "array",
415
+ "items": {
416
+ "type": "object",
417
+ "properties": {
418
+ "alias": {
419
+ "type": "string"
420
+ },
421
+ "submodule": {
422
+ "type": "string"
423
+ },
424
+ "packages": {
425
+ "type": "array",
426
+ "items": {
427
+ "type": "string"
428
+ }
429
+ },
430
+ "autoResolve": {
431
+ "default": true,
432
+ "type": "boolean"
433
+ }
434
+ },
435
+ "required": ["alias", "submodule"],
436
+ "additionalProperties": false
437
+ }
438
+ },
439
+ "crossWorkspaceSearch": {
440
+ "default": false,
441
+ "type": "boolean"
442
+ }
443
+ },
444
+ "additionalProperties": false
445
+ },
446
+ "rules": {
447
+ "type": "object",
448
+ "properties": {
449
+ "defaults": {
450
+ "type": "object",
451
+ "properties": {
452
+ "require-acceptance": {
453
+ "type": "string",
454
+ "enum": ["off", "warn", "error"]
455
+ },
456
+ "require-examples": {
457
+ "type": "string",
458
+ "enum": ["off", "warn", "error"]
459
+ },
460
+ "require-stability": {
461
+ "type": "string",
462
+ "enum": ["off", "warn", "error"]
463
+ },
464
+ "require-owners-format": {
465
+ "type": "string",
466
+ "enum": ["off", "warn", "error"]
467
+ },
468
+ "event-past-tense": {
469
+ "type": "string",
470
+ "enum": ["off", "warn", "error"]
471
+ },
472
+ "no-todo": {
473
+ "type": "string",
474
+ "enum": ["off", "warn", "error"]
475
+ },
476
+ "workflow-transitions": {
477
+ "type": "string",
478
+ "enum": ["off", "warn", "error"]
479
+ },
480
+ "telemetry-privacy": {
481
+ "type": "string",
482
+ "enum": ["off", "warn", "error"]
483
+ },
484
+ "experiment-allocation": {
485
+ "type": "string",
486
+ "enum": ["off", "warn", "error"]
487
+ },
488
+ "app-config-appid": {
489
+ "type": "string",
490
+ "enum": ["off", "warn", "error"]
491
+ },
492
+ "app-config-capabilities": {
493
+ "type": "string",
494
+ "enum": ["off", "warn", "error"]
495
+ },
496
+ "data-view-fields": {
497
+ "type": "string",
498
+ "enum": ["off", "warn", "error"]
499
+ }
500
+ },
501
+ "additionalProperties": false
502
+ },
503
+ "overrides": {
504
+ "type": "object",
505
+ "propertyNames": {
506
+ "type": "string",
507
+ "enum": [
508
+ "operation",
509
+ "event",
510
+ "presentation",
511
+ "feature",
512
+ "capability",
513
+ "data-view",
514
+ "visualization",
515
+ "form",
516
+ "agent",
517
+ "migration",
518
+ "workflow",
519
+ "experiment",
520
+ "integration",
521
+ "theme",
522
+ "knowledge",
523
+ "telemetry",
524
+ "example",
525
+ "app-config",
526
+ "product-intent",
527
+ "policy",
528
+ "test-spec",
529
+ "harness-scenario",
530
+ "harness-suite",
531
+ "type",
532
+ "knowledge-space",
533
+ "job",
534
+ "translation"
535
+ ]
536
+ },
537
+ "additionalProperties": {
538
+ "type": "object",
539
+ "properties": {
540
+ "require-acceptance": {
541
+ "type": "string",
542
+ "enum": ["off", "warn", "error"]
543
+ },
544
+ "require-examples": {
545
+ "type": "string",
546
+ "enum": ["off", "warn", "error"]
547
+ },
548
+ "require-stability": {
549
+ "type": "string",
550
+ "enum": ["off", "warn", "error"]
551
+ },
552
+ "require-owners-format": {
553
+ "type": "string",
554
+ "enum": ["off", "warn", "error"]
555
+ },
556
+ "event-past-tense": {
557
+ "type": "string",
558
+ "enum": ["off", "warn", "error"]
559
+ },
560
+ "no-todo": {
561
+ "type": "string",
562
+ "enum": ["off", "warn", "error"]
563
+ },
564
+ "workflow-transitions": {
565
+ "type": "string",
566
+ "enum": ["off", "warn", "error"]
567
+ },
568
+ "telemetry-privacy": {
569
+ "type": "string",
570
+ "enum": ["off", "warn", "error"]
571
+ },
572
+ "experiment-allocation": {
573
+ "type": "string",
574
+ "enum": ["off", "warn", "error"]
575
+ },
576
+ "app-config-appid": {
577
+ "type": "string",
578
+ "enum": ["off", "warn", "error"]
579
+ },
580
+ "app-config-capabilities": {
581
+ "type": "string",
582
+ "enum": ["off", "warn", "error"]
583
+ },
584
+ "data-view-fields": {
585
+ "type": "string",
586
+ "enum": ["off", "warn", "error"]
587
+ }
588
+ },
589
+ "additionalProperties": false
590
+ },
591
+ "required": [
592
+ "operation",
593
+ "event",
594
+ "presentation",
595
+ "feature",
596
+ "capability",
597
+ "data-view",
598
+ "visualization",
599
+ "form",
600
+ "agent",
601
+ "migration",
602
+ "workflow",
603
+ "experiment",
604
+ "integration",
605
+ "theme",
606
+ "knowledge",
607
+ "telemetry",
608
+ "example",
609
+ "app-config",
610
+ "product-intent",
611
+ "policy",
612
+ "test-spec",
613
+ "harness-scenario",
614
+ "harness-suite",
615
+ "type",
616
+ "knowledge-space",
617
+ "job",
618
+ "translation"
619
+ ]
620
+ }
621
+ },
622
+ "additionalProperties": false
623
+ },
624
+ "testing": {
625
+ "type": "object",
626
+ "properties": {
627
+ "runner": {
628
+ "default": "internal",
629
+ "type": "string",
630
+ "enum": ["internal", "jest", "vitest", "bun"]
631
+ },
632
+ "testMatch": {
633
+ "default": ["**/*.{test,spec}.{ts,js}"],
634
+ "type": "array",
635
+ "items": {
636
+ "type": "string"
637
+ }
638
+ },
639
+ "autoGenerate": {
640
+ "default": false,
641
+ "type": "boolean"
642
+ },
643
+ "integrity": {
644
+ "type": "object",
645
+ "properties": {
646
+ "requireTestsFor": {
647
+ "type": "array",
648
+ "items": {
649
+ "type": "string",
650
+ "enum": [
651
+ "operation",
652
+ "event",
653
+ "presentation",
654
+ "feature",
655
+ "capability",
656
+ "data-view",
657
+ "visualization",
658
+ "form",
659
+ "agent",
660
+ "migration",
661
+ "workflow",
662
+ "experiment",
663
+ "integration",
664
+ "theme",
665
+ "knowledge",
666
+ "telemetry",
667
+ "example",
668
+ "app-config",
669
+ "product-intent",
670
+ "policy",
671
+ "test-spec",
672
+ "harness-scenario",
673
+ "harness-suite",
674
+ "type",
675
+ "knowledge-space",
676
+ "job",
677
+ "translation"
678
+ ]
679
+ }
680
+ },
681
+ "minCoverage": {
682
+ "type": "number"
683
+ }
684
+ },
685
+ "additionalProperties": false
686
+ },
687
+ "testLinking": {
688
+ "type": "object",
689
+ "properties": {
690
+ "strategy": {
691
+ "default": "both",
692
+ "type": "string",
693
+ "enum": ["target-first", "convention-only", "both"]
694
+ },
695
+ "warnOnConvention": {
696
+ "default": false,
697
+ "type": "boolean"
698
+ }
699
+ },
700
+ "additionalProperties": false
701
+ }
702
+ },
703
+ "additionalProperties": false
704
+ },
705
+ "hooks": {
706
+ "type": "object",
707
+ "propertyNames": {
708
+ "type": "string"
709
+ },
710
+ "additionalProperties": {
711
+ "type": "array",
712
+ "items": {
713
+ "type": "string"
714
+ }
715
+ }
716
+ },
717
+ "schemaFormat": {
718
+ "default": "contractspec",
719
+ "type": "string",
720
+ "enum": ["contractspec", "zod", "json-schema", "graphql"]
721
+ },
722
+ "formatter": {
723
+ "type": "object",
724
+ "properties": {
725
+ "enabled": {
726
+ "default": true,
727
+ "type": "boolean"
728
+ },
729
+ "type": {
730
+ "type": "string",
731
+ "enum": ["biome", "dprint", "custom"]
732
+ },
733
+ "command": {
734
+ "type": "string"
735
+ },
736
+ "args": {
737
+ "type": "array",
738
+ "items": {
739
+ "type": "string"
740
+ }
741
+ },
742
+ "timeout": {
743
+ "default": 30000,
744
+ "type": "number"
745
+ }
746
+ },
747
+ "additionalProperties": false
748
+ },
749
+ "versioning": {
750
+ "type": "object",
751
+ "properties": {
752
+ "autoBump": {
753
+ "default": false,
754
+ "type": "boolean"
755
+ },
756
+ "bumpStrategy": {
757
+ "default": "impact",
758
+ "type": "string",
759
+ "enum": ["impact", "conventional"]
760
+ },
761
+ "integrateWithChangesets": {
762
+ "default": false,
763
+ "type": "boolean"
764
+ },
765
+ "changelogTiers": {
766
+ "default": ["spec", "library", "monorepo"],
767
+ "type": "array",
768
+ "items": {
769
+ "type": "string",
770
+ "enum": ["spec", "library", "monorepo"]
771
+ }
772
+ },
773
+ "format": {
774
+ "default": "keep-a-changelog",
775
+ "type": "string",
776
+ "enum": ["keep-a-changelog", "conventional", "custom"]
777
+ },
778
+ "commitChanges": {
779
+ "default": false,
780
+ "type": "boolean"
781
+ },
782
+ "commitMessage": {
783
+ "default": "chore: bump spec versions",
784
+ "type": "string"
785
+ },
786
+ "createTags": {
787
+ "default": false,
788
+ "type": "boolean"
789
+ },
790
+ "tagPrefix": {
791
+ "default": "v",
792
+ "type": "string"
793
+ },
794
+ "include": {
795
+ "type": "array",
796
+ "items": {
797
+ "type": "string"
798
+ }
799
+ },
800
+ "exclude": {
801
+ "type": "array",
802
+ "items": {
803
+ "type": "string"
804
+ }
805
+ }
806
+ },
807
+ "additionalProperties": false
808
+ },
809
+ "release": {
810
+ "type": "object",
811
+ "properties": {
812
+ "enforceOn": {
813
+ "default": "release-branch",
814
+ "type": "string",
815
+ "enum": ["release-branch", "always", "never"]
816
+ },
817
+ "requireChangesetForPublished": {
818
+ "default": true,
819
+ "type": "boolean"
820
+ },
821
+ "requireReleaseCapsule": {
822
+ "default": true,
823
+ "type": "boolean"
824
+ },
825
+ "publishArtifacts": {
826
+ "default": [
827
+ "manifest.json",
828
+ "patch-notes.md",
829
+ "customer-guide.md",
830
+ "upgrade-manifest.json"
831
+ ],
832
+ "type": "array",
833
+ "items": {
834
+ "type": "string"
835
+ }
836
+ },
837
+ "agentTargets": {
838
+ "default": ["codex"],
839
+ "type": "array",
840
+ "items": {
841
+ "type": "string",
842
+ "enum": ["codex", "opencode", "claude-code"]
843
+ }
844
+ }
845
+ },
846
+ "additionalProperties": false
847
+ },
848
+ "upgrade": {
849
+ "type": "object",
850
+ "properties": {
851
+ "manifestPaths": {
852
+ "default": ["generated/releases/upgrade-manifest.json"],
853
+ "type": "array",
854
+ "items": {
855
+ "type": "string"
856
+ }
857
+ },
858
+ "defaultAgentTarget": {
859
+ "default": "codex",
860
+ "type": "string",
861
+ "enum": ["codex", "opencode", "claude-code"]
862
+ },
863
+ "enableInteractiveGuidance": {
864
+ "default": true,
865
+ "type": "boolean"
866
+ },
867
+ "applyCodemods": {
868
+ "default": true,
869
+ "type": "boolean"
870
+ }
871
+ },
872
+ "additionalProperties": false
873
+ },
874
+ "ruleSync": {
875
+ "type": "object",
876
+ "properties": {
877
+ "enabled": {
878
+ "default": false,
879
+ "type": "boolean"
880
+ },
881
+ "rulesDir": {
882
+ "default": "./.rules",
883
+ "type": "string"
884
+ },
885
+ "rules": {
886
+ "default": ["**/*.rule.md"],
887
+ "type": "array",
888
+ "items": {
889
+ "type": "string"
890
+ }
891
+ },
892
+ "targets": {
893
+ "default": ["cursor", "windsurf"],
894
+ "type": "array",
895
+ "items": {
896
+ "type": "string",
897
+ "enum": [
898
+ "cursor",
899
+ "windsurf",
900
+ "cline",
901
+ "claude-code",
902
+ "copilot",
903
+ "subagent",
904
+ "skill"
905
+ ]
906
+ }
907
+ },
908
+ "autoSync": {
909
+ "default": true,
910
+ "type": "boolean"
911
+ },
912
+ "ejectMode": {
913
+ "default": false,
914
+ "type": "boolean"
915
+ }
916
+ },
917
+ "additionalProperties": false
918
+ },
919
+ "externalAgents": {
920
+ "type": "object",
921
+ "properties": {
922
+ "claudeAgent": {
923
+ "type": "object",
924
+ "properties": {
925
+ "enabled": {
926
+ "default": false,
927
+ "type": "boolean"
928
+ },
929
+ "apiKey": {
930
+ "type": "string"
931
+ },
932
+ "model": {
933
+ "default": "claude-sonnet-4-6",
934
+ "type": "string"
935
+ },
936
+ "computerUse": {
937
+ "default": false,
938
+ "type": "boolean"
939
+ },
940
+ "extendedThinking": {
941
+ "default": false,
942
+ "type": "boolean"
943
+ }
944
+ },
945
+ "additionalProperties": false
946
+ },
947
+ "openCode": {
948
+ "type": "object",
949
+ "properties": {
950
+ "enabled": {
951
+ "default": false,
952
+ "type": "boolean"
953
+ },
954
+ "serverUrl": {
955
+ "type": "string"
956
+ },
957
+ "port": {
958
+ "type": "number"
959
+ },
960
+ "agentType": {
961
+ "default": "general",
962
+ "type": "string",
963
+ "enum": ["build", "plan", "general", "explore"]
964
+ },
965
+ "model": {
966
+ "type": "string"
967
+ }
968
+ },
969
+ "additionalProperties": false
970
+ }
971
+ },
972
+ "additionalProperties": false
973
+ },
974
+ "builder": {
975
+ "type": "object",
976
+ "properties": {
977
+ "enabled": {
978
+ "default": false,
979
+ "type": "boolean"
980
+ },
981
+ "runtimeMode": {
982
+ "default": "managed",
983
+ "type": "string",
984
+ "enum": ["managed", "local", "hybrid"]
985
+ },
986
+ "bootstrapPreset": {
987
+ "default": "managed_mvp",
988
+ "type": "string",
989
+ "enum": ["managed_mvp", "local_daemon_mvp", "hybrid_mvp"]
990
+ },
991
+ "api": {
992
+ "type": "object",
993
+ "properties": {
994
+ "baseUrl": {
995
+ "type": "string",
996
+ "format": "uri"
997
+ },
998
+ "controlPlaneTokenEnvVar": {
999
+ "default": "CONTROL_PLANE_API_TOKEN",
1000
+ "type": "string"
1001
+ }
1002
+ },
1003
+ "additionalProperties": false
1004
+ },
1005
+ "localRuntime": {
1006
+ "type": "object",
1007
+ "properties": {
1008
+ "runtimeId": {
1009
+ "default": "rt_local_daemon",
1010
+ "type": "string"
1011
+ },
1012
+ "grantedTo": {
1013
+ "default": "local:operator",
1014
+ "type": "string"
1015
+ },
1016
+ "providerIds": {
1017
+ "default": ["provider.codex", "provider.local.model"],
1018
+ "type": "array",
1019
+ "items": {
1020
+ "type": "string"
1021
+ }
1022
+ }
1023
+ },
1024
+ "additionalProperties": false
1025
+ }
1026
+ },
1027
+ "additionalProperties": false
1028
+ },
1029
+ "connect": {
1030
+ "type": "object",
1031
+ "properties": {
1032
+ "enabled": {
1033
+ "default": false,
1034
+ "type": "boolean"
1035
+ },
1036
+ "adapters": {
1037
+ "type": "object",
1038
+ "properties": {
1039
+ "cursor": {
1040
+ "type": "object",
1041
+ "properties": {
1042
+ "enabled": {
1043
+ "default": false,
1044
+ "type": "boolean"
1045
+ },
1046
+ "mode": {
1047
+ "default": "plugin",
1048
+ "type": "string",
1049
+ "enum": ["plugin", "rule", "wrapper"]
1050
+ },
1051
+ "packageRef": {
1052
+ "type": "string"
1053
+ }
1054
+ },
1055
+ "additionalProperties": false
1056
+ },
1057
+ "codex": {
1058
+ "type": "object",
1059
+ "properties": {
1060
+ "enabled": {
1061
+ "default": false,
1062
+ "type": "boolean"
1063
+ },
1064
+ "mode": {
1065
+ "default": "plugin",
1066
+ "type": "string",
1067
+ "enum": ["plugin", "rule", "wrapper"]
1068
+ },
1069
+ "packageRef": {
1070
+ "type": "string"
1071
+ }
1072
+ },
1073
+ "additionalProperties": false
1074
+ },
1075
+ "claude-code": {
1076
+ "type": "object",
1077
+ "properties": {
1078
+ "enabled": {
1079
+ "default": false,
1080
+ "type": "boolean"
1081
+ },
1082
+ "mode": {
1083
+ "default": "plugin",
1084
+ "type": "string",
1085
+ "enum": ["plugin", "rule", "wrapper"]
1086
+ },
1087
+ "packageRef": {
1088
+ "type": "string"
1089
+ }
1090
+ },
1091
+ "additionalProperties": false
1092
+ }
1093
+ },
1094
+ "additionalProperties": false
1095
+ },
1096
+ "storage": {
1097
+ "type": "object",
1098
+ "properties": {
1099
+ "root": {
1100
+ "default": ".contractspec/connect",
1101
+ "type": "string"
1102
+ },
1103
+ "contextPack": {
1104
+ "default": ".contractspec/connect/context-pack.json",
1105
+ "type": "string"
1106
+ },
1107
+ "planPacket": {
1108
+ "default": ".contractspec/connect/plan-packet.json",
1109
+ "type": "string"
1110
+ },
1111
+ "patchVerdict": {
1112
+ "default": ".contractspec/connect/patch-verdict.json",
1113
+ "type": "string"
1114
+ },
1115
+ "auditFile": {
1116
+ "default": ".contractspec/connect/audit.ndjson",
1117
+ "type": "string"
1118
+ },
1119
+ "reviewPacketsDir": {
1120
+ "default": ".contractspec/connect/review-packets",
1121
+ "type": "string"
1122
+ }
1123
+ },
1124
+ "additionalProperties": false
1125
+ },
1126
+ "policy": {
1127
+ "type": "object",
1128
+ "properties": {
1129
+ "protectedPaths": {
1130
+ "type": "array",
1131
+ "items": {
1132
+ "type": "string"
1133
+ }
1134
+ },
1135
+ "immutablePaths": {
1136
+ "type": "array",
1137
+ "items": {
1138
+ "type": "string"
1139
+ }
1140
+ },
1141
+ "generatedPaths": {
1142
+ "type": "array",
1143
+ "items": {
1144
+ "type": "string"
1145
+ }
1146
+ },
1147
+ "smokeChecks": {
1148
+ "type": "array",
1149
+ "items": {
1150
+ "type": "string"
1151
+ }
1152
+ },
1153
+ "reviewThresholds": {
1154
+ "type": "object",
1155
+ "properties": {
1156
+ "protectedPathWrite": {
1157
+ "type": "string",
1158
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1159
+ },
1160
+ "unknownImpact": {
1161
+ "type": "string",
1162
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1163
+ },
1164
+ "contractDrift": {
1165
+ "type": "string",
1166
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1167
+ },
1168
+ "breakingChange": {
1169
+ "type": "string",
1170
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1171
+ },
1172
+ "destructiveCommand": {
1173
+ "type": "string",
1174
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1175
+ }
1176
+ },
1177
+ "additionalProperties": false
1178
+ }
1179
+ },
1180
+ "additionalProperties": false
1181
+ },
1182
+ "commands": {
1183
+ "type": "object",
1184
+ "properties": {
1185
+ "allow": {
1186
+ "type": "array",
1187
+ "items": {
1188
+ "type": "string"
1189
+ }
1190
+ },
1191
+ "review": {
1192
+ "type": "array",
1193
+ "items": {
1194
+ "type": "string"
1195
+ }
1196
+ },
1197
+ "deny": {
1198
+ "type": "array",
1199
+ "items": {
1200
+ "type": "string"
1201
+ }
1202
+ }
1203
+ },
1204
+ "additionalProperties": false
1205
+ },
1206
+ "canonPacks": {
1207
+ "type": "array",
1208
+ "items": {
1209
+ "type": "object",
1210
+ "properties": {
1211
+ "ref": {
1212
+ "type": "string"
1213
+ },
1214
+ "readOnly": {
1215
+ "default": true,
1216
+ "type": "boolean"
1217
+ }
1218
+ },
1219
+ "required": ["ref"],
1220
+ "additionalProperties": false
1221
+ }
1222
+ },
1223
+ "studio": {
1224
+ "type": "object",
1225
+ "properties": {
1226
+ "enabled": {
1227
+ "default": false,
1228
+ "type": "boolean"
1229
+ },
1230
+ "mode": {
1231
+ "default": "off",
1232
+ "type": "string",
1233
+ "enum": ["off", "review-bridge"]
1234
+ },
1235
+ "endpoint": {
1236
+ "type": "string",
1237
+ "format": "uri"
1238
+ },
1239
+ "queue": {
1240
+ "type": "string"
1241
+ }
1242
+ },
1243
+ "additionalProperties": false
1244
+ },
1245
+ "adoption": {
1246
+ "type": "object",
1247
+ "properties": {
1248
+ "enabled": {
1249
+ "default": false,
1250
+ "type": "boolean"
1251
+ },
1252
+ "catalog": {
1253
+ "type": "object",
1254
+ "properties": {
1255
+ "indexPath": {
1256
+ "default": ".contractspec/adoption/catalog.json",
1257
+ "type": "string"
1258
+ },
1259
+ "overrideManifestPath": {
1260
+ "default": ".contractspec/adoption/overrides.json",
1261
+ "type": "string"
1262
+ }
1263
+ },
1264
+ "additionalProperties": false
1265
+ },
1266
+ "workspaceScan": {
1267
+ "type": "object",
1268
+ "properties": {
1269
+ "include": {
1270
+ "default": [
1271
+ "src/**/*.{ts,tsx,js,jsx}",
1272
+ "app/**/*.{ts,tsx,js,jsx}",
1273
+ "components/**/*.{ts,tsx,js,jsx}",
1274
+ "packages/**/*.{ts,tsx,js,jsx}"
1275
+ ],
1276
+ "type": "array",
1277
+ "items": {
1278
+ "type": "string"
1279
+ }
1280
+ },
1281
+ "exclude": {
1282
+ "default": [
1283
+ "**/node_modules/**",
1284
+ "**/dist/**",
1285
+ "**/.next/**",
1286
+ "**/coverage/**",
1287
+ "**/generated/**",
1288
+ "**/*.test.*",
1289
+ "**/*.spec.*",
1290
+ "**/*.stories.*"
1291
+ ],
1292
+ "type": "array",
1293
+ "items": {
1294
+ "type": "string"
1295
+ }
1296
+ }
1297
+ },
1298
+ "additionalProperties": false
1299
+ },
1300
+ "families": {
1301
+ "type": "object",
1302
+ "properties": {
1303
+ "ui": {
1304
+ "default": true,
1305
+ "type": "boolean"
1306
+ },
1307
+ "contracts": {
1308
+ "default": true,
1309
+ "type": "boolean"
1310
+ },
1311
+ "integrations": {
1312
+ "default": true,
1313
+ "type": "boolean"
1314
+ },
1315
+ "runtime": {
1316
+ "default": true,
1317
+ "type": "boolean"
1318
+ },
1319
+ "sharedLibs": {
1320
+ "default": true,
1321
+ "type": "boolean"
1322
+ },
1323
+ "solutions": {
1324
+ "default": true,
1325
+ "type": "boolean"
1326
+ }
1327
+ },
1328
+ "additionalProperties": false
1329
+ },
1330
+ "thresholds": {
1331
+ "type": "object",
1332
+ "properties": {
1333
+ "workspaceReuse": {
1334
+ "default": "rewrite",
1335
+ "type": "string",
1336
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1337
+ },
1338
+ "contractspecReuse": {
1339
+ "default": "rewrite",
1340
+ "type": "string",
1341
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1342
+ },
1343
+ "ambiguous": {
1344
+ "default": "require_review",
1345
+ "type": "string",
1346
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1347
+ },
1348
+ "newExternalDependency": {
1349
+ "default": "require_review",
1350
+ "type": "string",
1351
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1352
+ },
1353
+ "newImplementation": {
1354
+ "default": "require_review",
1355
+ "type": "string",
1356
+ "enum": ["permit", "rewrite", "require_review", "deny"]
1357
+ }
1358
+ },
1359
+ "additionalProperties": false
1360
+ }
1361
+ },
1362
+ "additionalProperties": false
1363
+ }
1364
+ },
1365
+ "additionalProperties": false
1366
+ }
1367
+ },
1368
+ "additionalProperties": false,
1369
+ "title": "ContractSpec CLI Configuration",
1370
+ "description": "Configuration file for ContractSpec CLI and tooling. Supports single projects, monorepos, and meta-repos."
1371
+ }