@harness-engineering/cli 6.0.0 → 7.0.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 (48) hide show
  1. package/dist/{agents-md-OTKZE5HH.js → agents-md-XBJ6YOSW.js} +2 -2
  2. package/dist/{architecture-3VYDN7MQ.js → architecture-D7PWJDXA.js} +3 -3
  3. package/dist/{assess-project-27X2FSZZ.js → assess-project-ENSWO4AX.js} +1 -1
  4. package/dist/bin/harness-mcp.js +13 -13
  5. package/dist/bin/harness.js +23 -23
  6. package/dist/{check-phase-gate-IXLFZ6YH.js → check-phase-gate-GTYAJ2YL.js} +3 -3
  7. package/dist/{chunk-QHFXVVUY.js → chunk-54RE35Q7.js} +2 -2
  8. package/dist/{chunk-XNHKXELN.js → chunk-5VP4ZQ3F.js} +1 -1
  9. package/dist/{chunk-CTMHHMHQ.js → chunk-6SP665CR.js} +89 -2
  10. package/dist/{chunk-VRA64HYI.js → chunk-7IVIRKHD.js} +1 -1
  11. package/dist/{chunk-3H7JA24B.js → chunk-CAGNARCD.js} +6 -6
  12. package/dist/{chunk-BMNHLKBA.js → chunk-GUL75WAM.js} +2 -2
  13. package/dist/{chunk-IXGYIQSR.js → chunk-HQUQA5D7.js} +1 -1
  14. package/dist/{chunk-354MCPT3.js → chunk-I6YMJ7ZD.js} +3 -3
  15. package/dist/{chunk-IOJGLIEQ.js → chunk-ILKL5I4J.js} +17 -2
  16. package/dist/{chunk-D7QXGI6E.js → chunk-INT5MUQX.js} +1 -1
  17. package/dist/{chunk-6Y6M3AZA.js → chunk-N3S6JTRS.js} +2 -2
  18. package/dist/{chunk-VGDZAWCJ.js → chunk-N4VEUBJ5.js} +934 -377
  19. package/dist/{chunk-L5UKNGC5.js → chunk-NXTNLNIP.js} +2 -2
  20. package/dist/{chunk-EFWRZHZ7.js → chunk-P7DXQAKU.js} +82 -82
  21. package/dist/{chunk-MEIUXTFY.js → chunk-PQBSP5AO.js} +1 -1
  22. package/dist/{chunk-TM4KFUWP.js → chunk-PYDUECJ3.js} +1 -1
  23. package/dist/{chunk-LISEPDVT.js → chunk-QB67FMZZ.js} +4 -4
  24. package/dist/{chunk-WAFTJFT3.js → chunk-TNR4BUWB.js} +3 -3
  25. package/dist/{chunk-KPBGAB35.js → chunk-UFZ6FMFC.js} +1 -1
  26. package/dist/{chunk-S2ETJDQJ.js → chunk-XRPHOCKU.js} +6 -6
  27. package/dist/{chunk-XF6RE3JQ.js → chunk-XYP5CIEN.js} +1 -1
  28. package/dist/{chunk-JJLOWMGC.js → chunk-YQK3GRW7.js} +1 -1
  29. package/dist/{chunk-3MKQKNY3.js → chunk-ZGK3JT4S.js} +5 -5
  30. package/dist/{ci-workflow-Y5GBKNZP.js → ci-workflow-ZODLVH62.js} +2 -2
  31. package/dist/{dist-4CZLCE33.js → dist-DTXVNQAY.js} +1 -1
  32. package/dist/{docs-3MWDPK4S.js → docs-ZU2HJCKW.js} +3 -3
  33. package/dist/{engine-RJXQ5DHK.js → engine-2DAJGPFZ.js} +2 -2
  34. package/dist/{entropy-OX5LSM4S.js → entropy-6JK3TCWY.js} +3 -3
  35. package/dist/{feedback-OODAP2G2.js → feedback-GEVH6CY3.js} +1 -1
  36. package/dist/{generate-agent-definitions-CCREQZEA.js → generate-agent-definitions-4DULEX3H.js} +3 -3
  37. package/dist/index.d.ts +745 -0
  38. package/dist/index.js +23 -23
  39. package/dist/{loader-ZICOJBVX.js → loader-K3A4YKWA.js} +2 -2
  40. package/dist/{mcp-XX6EIBLL.js → mcp-5MEIUQLV.js} +13 -13
  41. package/dist/{performance-OLZVGMAY.js → performance-HUXOQW7Q.js} +3 -3
  42. package/dist/{review-pipeline-3QPHMWPC.js → review-pipeline-QEYZXEMW.js} +2 -2
  43. package/dist/{runtime-ZFFIH76Z.js → runtime-45A4EGZD.js} +2 -2
  44. package/dist/{security-7YW3UK2C.js → security-CLZZRKND.js} +1 -1
  45. package/dist/{state-events-PTWAEGJ2.js → state-events-YLQEYOLI.js} +2 -2
  46. package/dist/{validate-H5SB7X3Z.js → validate-35GZKAOF.js} +3 -3
  47. package/dist/{validate-cross-check-YYVYMSPA.js → validate-cross-check-QJGCDWRO.js} +2 -2
  48. package/package.json +8 -8
package/dist/index.d.ts CHANGED
@@ -411,54 +411,244 @@ declare const HarnessConfigSchema: z.ZodObject<{
411
411
  */
412
412
  backends: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
413
413
  type: z.ZodLiteral<"mock">;
414
+ capabilities: z.ZodOptional<z.ZodObject<{
415
+ tier: z.ZodEnum<["fast", "standard", "strong"]>;
416
+ costPer1kTokens: z.ZodNumber;
417
+ privacyClass: z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>;
418
+ contextWindow: z.ZodNumber;
419
+ vision: z.ZodOptional<z.ZodBoolean>;
420
+ toolUse: z.ZodOptional<z.ZodBoolean>;
421
+ }, "strict", z.ZodTypeAny, {
422
+ tier: "fast" | "standard" | "strong";
423
+ costPer1kTokens: number;
424
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
425
+ contextWindow: number;
426
+ vision?: boolean | undefined;
427
+ toolUse?: boolean | undefined;
428
+ }, {
429
+ tier: "fast" | "standard" | "strong";
430
+ costPer1kTokens: number;
431
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
432
+ contextWindow: number;
433
+ vision?: boolean | undefined;
434
+ toolUse?: boolean | undefined;
435
+ }>>;
414
436
  }, "strict", z.ZodTypeAny, {
415
437
  type: "mock";
438
+ capabilities?: {
439
+ tier: "fast" | "standard" | "strong";
440
+ costPer1kTokens: number;
441
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
442
+ contextWindow: number;
443
+ vision?: boolean | undefined;
444
+ toolUse?: boolean | undefined;
445
+ } | undefined;
416
446
  }, {
417
447
  type: "mock";
448
+ capabilities?: {
449
+ tier: "fast" | "standard" | "strong";
450
+ costPer1kTokens: number;
451
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
452
+ contextWindow: number;
453
+ vision?: boolean | undefined;
454
+ toolUse?: boolean | undefined;
455
+ } | undefined;
418
456
  }>, z.ZodObject<{
419
457
  type: z.ZodLiteral<"claude">;
420
458
  command: z.ZodOptional<z.ZodString>;
459
+ capabilities: z.ZodOptional<z.ZodObject<{
460
+ tier: z.ZodEnum<["fast", "standard", "strong"]>;
461
+ costPer1kTokens: z.ZodNumber;
462
+ privacyClass: z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>;
463
+ contextWindow: z.ZodNumber;
464
+ vision: z.ZodOptional<z.ZodBoolean>;
465
+ toolUse: z.ZodOptional<z.ZodBoolean>;
466
+ }, "strict", z.ZodTypeAny, {
467
+ tier: "fast" | "standard" | "strong";
468
+ costPer1kTokens: number;
469
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
470
+ contextWindow: number;
471
+ vision?: boolean | undefined;
472
+ toolUse?: boolean | undefined;
473
+ }, {
474
+ tier: "fast" | "standard" | "strong";
475
+ costPer1kTokens: number;
476
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
477
+ contextWindow: number;
478
+ vision?: boolean | undefined;
479
+ toolUse?: boolean | undefined;
480
+ }>>;
421
481
  }, "strict", z.ZodTypeAny, {
422
482
  type: "claude";
483
+ capabilities?: {
484
+ tier: "fast" | "standard" | "strong";
485
+ costPer1kTokens: number;
486
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
487
+ contextWindow: number;
488
+ vision?: boolean | undefined;
489
+ toolUse?: boolean | undefined;
490
+ } | undefined;
423
491
  command?: string | undefined;
424
492
  }, {
425
493
  type: "claude";
494
+ capabilities?: {
495
+ tier: "fast" | "standard" | "strong";
496
+ costPer1kTokens: number;
497
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
498
+ contextWindow: number;
499
+ vision?: boolean | undefined;
500
+ toolUse?: boolean | undefined;
501
+ } | undefined;
426
502
  command?: string | undefined;
427
503
  }>, z.ZodObject<{
428
504
  type: z.ZodLiteral<"anthropic">;
429
505
  model: z.ZodString;
430
506
  apiKey: z.ZodOptional<z.ZodString>;
507
+ capabilities: z.ZodOptional<z.ZodObject<{
508
+ tier: z.ZodEnum<["fast", "standard", "strong"]>;
509
+ costPer1kTokens: z.ZodNumber;
510
+ privacyClass: z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>;
511
+ contextWindow: z.ZodNumber;
512
+ vision: z.ZodOptional<z.ZodBoolean>;
513
+ toolUse: z.ZodOptional<z.ZodBoolean>;
514
+ }, "strict", z.ZodTypeAny, {
515
+ tier: "fast" | "standard" | "strong";
516
+ costPer1kTokens: number;
517
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
518
+ contextWindow: number;
519
+ vision?: boolean | undefined;
520
+ toolUse?: boolean | undefined;
521
+ }, {
522
+ tier: "fast" | "standard" | "strong";
523
+ costPer1kTokens: number;
524
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
525
+ contextWindow: number;
526
+ vision?: boolean | undefined;
527
+ toolUse?: boolean | undefined;
528
+ }>>;
431
529
  }, "strict", z.ZodTypeAny, {
432
530
  type: "anthropic";
433
531
  model: string;
532
+ capabilities?: {
533
+ tier: "fast" | "standard" | "strong";
534
+ costPer1kTokens: number;
535
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
536
+ contextWindow: number;
537
+ vision?: boolean | undefined;
538
+ toolUse?: boolean | undefined;
539
+ } | undefined;
434
540
  apiKey?: string | undefined;
435
541
  }, {
436
542
  type: "anthropic";
437
543
  model: string;
544
+ capabilities?: {
545
+ tier: "fast" | "standard" | "strong";
546
+ costPer1kTokens: number;
547
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
548
+ contextWindow: number;
549
+ vision?: boolean | undefined;
550
+ toolUse?: boolean | undefined;
551
+ } | undefined;
438
552
  apiKey?: string | undefined;
439
553
  }>, z.ZodObject<{
440
554
  type: z.ZodLiteral<"openai">;
441
555
  model: z.ZodString;
442
556
  apiKey: z.ZodOptional<z.ZodString>;
557
+ capabilities: z.ZodOptional<z.ZodObject<{
558
+ tier: z.ZodEnum<["fast", "standard", "strong"]>;
559
+ costPer1kTokens: z.ZodNumber;
560
+ privacyClass: z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>;
561
+ contextWindow: z.ZodNumber;
562
+ vision: z.ZodOptional<z.ZodBoolean>;
563
+ toolUse: z.ZodOptional<z.ZodBoolean>;
564
+ }, "strict", z.ZodTypeAny, {
565
+ tier: "fast" | "standard" | "strong";
566
+ costPer1kTokens: number;
567
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
568
+ contextWindow: number;
569
+ vision?: boolean | undefined;
570
+ toolUse?: boolean | undefined;
571
+ }, {
572
+ tier: "fast" | "standard" | "strong";
573
+ costPer1kTokens: number;
574
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
575
+ contextWindow: number;
576
+ vision?: boolean | undefined;
577
+ toolUse?: boolean | undefined;
578
+ }>>;
443
579
  }, "strict", z.ZodTypeAny, {
444
580
  type: "openai";
445
581
  model: string;
582
+ capabilities?: {
583
+ tier: "fast" | "standard" | "strong";
584
+ costPer1kTokens: number;
585
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
586
+ contextWindow: number;
587
+ vision?: boolean | undefined;
588
+ toolUse?: boolean | undefined;
589
+ } | undefined;
446
590
  apiKey?: string | undefined;
447
591
  }, {
448
592
  type: "openai";
449
593
  model: string;
594
+ capabilities?: {
595
+ tier: "fast" | "standard" | "strong";
596
+ costPer1kTokens: number;
597
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
598
+ contextWindow: number;
599
+ vision?: boolean | undefined;
600
+ toolUse?: boolean | undefined;
601
+ } | undefined;
450
602
  apiKey?: string | undefined;
451
603
  }>, z.ZodObject<{
452
604
  type: z.ZodLiteral<"gemini">;
453
605
  model: z.ZodString;
454
606
  apiKey: z.ZodOptional<z.ZodString>;
607
+ capabilities: z.ZodOptional<z.ZodObject<{
608
+ tier: z.ZodEnum<["fast", "standard", "strong"]>;
609
+ costPer1kTokens: z.ZodNumber;
610
+ privacyClass: z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>;
611
+ contextWindow: z.ZodNumber;
612
+ vision: z.ZodOptional<z.ZodBoolean>;
613
+ toolUse: z.ZodOptional<z.ZodBoolean>;
614
+ }, "strict", z.ZodTypeAny, {
615
+ tier: "fast" | "standard" | "strong";
616
+ costPer1kTokens: number;
617
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
618
+ contextWindow: number;
619
+ vision?: boolean | undefined;
620
+ toolUse?: boolean | undefined;
621
+ }, {
622
+ tier: "fast" | "standard" | "strong";
623
+ costPer1kTokens: number;
624
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
625
+ contextWindow: number;
626
+ vision?: boolean | undefined;
627
+ toolUse?: boolean | undefined;
628
+ }>>;
455
629
  }, "strict", z.ZodTypeAny, {
456
630
  type: "gemini";
457
631
  model: string;
632
+ capabilities?: {
633
+ tier: "fast" | "standard" | "strong";
634
+ costPer1kTokens: number;
635
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
636
+ contextWindow: number;
637
+ vision?: boolean | undefined;
638
+ toolUse?: boolean | undefined;
639
+ } | undefined;
458
640
  apiKey?: string | undefined;
459
641
  }, {
460
642
  type: "gemini";
461
643
  model: string;
644
+ capabilities?: {
645
+ tier: "fast" | "standard" | "strong";
646
+ costPer1kTokens: number;
647
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
648
+ contextWindow: number;
649
+ vision?: boolean | undefined;
650
+ toolUse?: boolean | undefined;
651
+ } | undefined;
462
652
  apiKey?: string | undefined;
463
653
  }>, z.ZodObject<{
464
654
  type: z.ZodLiteral<"local">;
@@ -467,10 +657,40 @@ declare const HarnessConfigSchema: z.ZodObject<{
467
657
  apiKey: z.ZodOptional<z.ZodString>;
468
658
  timeoutMs: z.ZodOptional<z.ZodNumber>;
469
659
  probeIntervalMs: z.ZodOptional<z.ZodNumber>;
660
+ capabilities: z.ZodOptional<z.ZodObject<{
661
+ tier: z.ZodEnum<["fast", "standard", "strong"]>;
662
+ costPer1kTokens: z.ZodNumber;
663
+ privacyClass: z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>;
664
+ contextWindow: z.ZodNumber;
665
+ vision: z.ZodOptional<z.ZodBoolean>;
666
+ toolUse: z.ZodOptional<z.ZodBoolean>;
667
+ }, "strict", z.ZodTypeAny, {
668
+ tier: "fast" | "standard" | "strong";
669
+ costPer1kTokens: number;
670
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
671
+ contextWindow: number;
672
+ vision?: boolean | undefined;
673
+ toolUse?: boolean | undefined;
674
+ }, {
675
+ tier: "fast" | "standard" | "strong";
676
+ costPer1kTokens: number;
677
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
678
+ contextWindow: number;
679
+ vision?: boolean | undefined;
680
+ toolUse?: boolean | undefined;
681
+ }>>;
470
682
  }, "strict", z.ZodTypeAny, {
471
683
  type: "local";
472
684
  model: string | [string, ...string[]];
473
685
  endpoint: string;
686
+ capabilities?: {
687
+ tier: "fast" | "standard" | "strong";
688
+ costPer1kTokens: number;
689
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
690
+ contextWindow: number;
691
+ vision?: boolean | undefined;
692
+ toolUse?: boolean | undefined;
693
+ } | undefined;
474
694
  apiKey?: string | undefined;
475
695
  timeoutMs?: number | undefined;
476
696
  probeIntervalMs?: number | undefined;
@@ -478,6 +698,14 @@ declare const HarnessConfigSchema: z.ZodObject<{
478
698
  type: "local";
479
699
  model: string | [string, ...string[]];
480
700
  endpoint: string;
701
+ capabilities?: {
702
+ tier: "fast" | "standard" | "strong";
703
+ costPer1kTokens: number;
704
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
705
+ contextWindow: number;
706
+ vision?: boolean | undefined;
707
+ toolUse?: boolean | undefined;
708
+ } | undefined;
481
709
  apiKey?: string | undefined;
482
710
  timeoutMs?: number | undefined;
483
711
  probeIntervalMs?: number | undefined;
@@ -488,10 +716,40 @@ declare const HarnessConfigSchema: z.ZodObject<{
488
716
  apiKey: z.ZodOptional<z.ZodString>;
489
717
  timeoutMs: z.ZodOptional<z.ZodNumber>;
490
718
  probeIntervalMs: z.ZodOptional<z.ZodNumber>;
719
+ capabilities: z.ZodOptional<z.ZodObject<{
720
+ tier: z.ZodEnum<["fast", "standard", "strong"]>;
721
+ costPer1kTokens: z.ZodNumber;
722
+ privacyClass: z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>;
723
+ contextWindow: z.ZodNumber;
724
+ vision: z.ZodOptional<z.ZodBoolean>;
725
+ toolUse: z.ZodOptional<z.ZodBoolean>;
726
+ }, "strict", z.ZodTypeAny, {
727
+ tier: "fast" | "standard" | "strong";
728
+ costPer1kTokens: number;
729
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
730
+ contextWindow: number;
731
+ vision?: boolean | undefined;
732
+ toolUse?: boolean | undefined;
733
+ }, {
734
+ tier: "fast" | "standard" | "strong";
735
+ costPer1kTokens: number;
736
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
737
+ contextWindow: number;
738
+ vision?: boolean | undefined;
739
+ toolUse?: boolean | undefined;
740
+ }>>;
491
741
  }, "strict", z.ZodTypeAny, {
492
742
  type: "pi";
493
743
  model: string | [string, ...string[]];
494
744
  endpoint: string;
745
+ capabilities?: {
746
+ tier: "fast" | "standard" | "strong";
747
+ costPer1kTokens: number;
748
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
749
+ contextWindow: number;
750
+ vision?: boolean | undefined;
751
+ toolUse?: boolean | undefined;
752
+ } | undefined;
495
753
  apiKey?: string | undefined;
496
754
  timeoutMs?: number | undefined;
497
755
  probeIntervalMs?: number | undefined;
@@ -499,6 +757,14 @@ declare const HarnessConfigSchema: z.ZodObject<{
499
757
  type: "pi";
500
758
  model: string | [string, ...string[]];
501
759
  endpoint: string;
760
+ capabilities?: {
761
+ tier: "fast" | "standard" | "strong";
762
+ costPer1kTokens: number;
763
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
764
+ contextWindow: number;
765
+ vision?: boolean | undefined;
766
+ toolUse?: boolean | undefined;
767
+ } | undefined;
502
768
  apiKey?: string | undefined;
503
769
  timeoutMs?: number | undefined;
504
770
  probeIntervalMs?: number | undefined;
@@ -535,6 +801,69 @@ declare const HarnessConfigSchema: z.ZodObject<{
535
801
  }>>;
536
802
  skills: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>>;
537
803
  modes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>>;
804
+ policy: z.ZodOptional<z.ZodObject<{
805
+ complexityTierMatrix: z.ZodOptional<z.ZodRecord<z.ZodEnum<["trivial", "simple", "moderate", "complex"]>, z.ZodEnum<["fast", "standard", "strong"]>>>;
806
+ skillTierOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["fast", "standard", "strong"]>>>;
807
+ privacyFloor: z.ZodOptional<z.ZodEnum<["on-device", "pooled-isolated", "byo-endpoint", "shared-cloud"]>>;
808
+ budget: z.ZodOptional<z.ZodObject<{
809
+ capUsd: z.ZodNumber;
810
+ degradeAtPct: z.ZodOptional<z.ZodNumber>;
811
+ onBudgetExhausted: z.ZodEnum<["degrade", "pause", "human"]>;
812
+ }, "strip", z.ZodTypeAny, {
813
+ capUsd: number;
814
+ onBudgetExhausted: "human" | "degrade" | "pause";
815
+ degradeAtPct?: number | undefined;
816
+ }, {
817
+ capUsd: number;
818
+ onBudgetExhausted: "human" | "degrade" | "pause";
819
+ degradeAtPct?: number | undefined;
820
+ }>>;
821
+ sensitivePaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
822
+ escalationThreshold: z.ZodOptional<z.ZodNumber>;
823
+ allowedProviders: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
824
+ acceptanceEval: z.ZodOptional<z.ZodObject<{
825
+ enabled: z.ZodBoolean;
826
+ model: z.ZodOptional<z.ZodString>;
827
+ }, "strip", z.ZodTypeAny, {
828
+ enabled: boolean;
829
+ model?: string | undefined;
830
+ }, {
831
+ enabled: boolean;
832
+ model?: string | undefined;
833
+ }>>;
834
+ }, "strip", z.ZodTypeAny, {
835
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
836
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
837
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
838
+ budget?: {
839
+ capUsd: number;
840
+ onBudgetExhausted: "human" | "degrade" | "pause";
841
+ degradeAtPct?: number | undefined;
842
+ } | undefined;
843
+ sensitivePaths?: string[] | undefined;
844
+ escalationThreshold?: number | undefined;
845
+ allowedProviders?: string[] | undefined;
846
+ acceptanceEval?: {
847
+ enabled: boolean;
848
+ model?: string | undefined;
849
+ } | undefined;
850
+ }, {
851
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
852
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
853
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
854
+ budget?: {
855
+ capUsd: number;
856
+ onBudgetExhausted: "human" | "degrade" | "pause";
857
+ degradeAtPct?: number | undefined;
858
+ } | undefined;
859
+ sensitivePaths?: string[] | undefined;
860
+ escalationThreshold?: number | undefined;
861
+ allowedProviders?: string[] | undefined;
862
+ acceptanceEval?: {
863
+ enabled: boolean;
864
+ model?: string | undefined;
865
+ } | undefined;
866
+ }>>;
538
867
  }, "strict", z.ZodTypeAny, {
539
868
  default: string | readonly [string, ...string[]];
540
869
  'quick-fix'?: string | readonly [string, ...string[]] | undefined;
@@ -552,6 +881,23 @@ declare const HarnessConfigSchema: z.ZodObject<{
552
881
  } | undefined;
553
882
  skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
554
883
  modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
884
+ policy?: {
885
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
886
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
887
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
888
+ budget?: {
889
+ capUsd: number;
890
+ onBudgetExhausted: "human" | "degrade" | "pause";
891
+ degradeAtPct?: number | undefined;
892
+ } | undefined;
893
+ sensitivePaths?: string[] | undefined;
894
+ escalationThreshold?: number | undefined;
895
+ allowedProviders?: string[] | undefined;
896
+ acceptanceEval?: {
897
+ enabled: boolean;
898
+ model?: string | undefined;
899
+ } | undefined;
900
+ } | undefined;
555
901
  }, {
556
902
  default: string | readonly [string, ...string[]];
557
903
  'quick-fix'?: string | readonly [string, ...string[]] | undefined;
@@ -569,6 +915,23 @@ declare const HarnessConfigSchema: z.ZodObject<{
569
915
  } | undefined;
570
916
  skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
571
917
  modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
918
+ policy?: {
919
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
920
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
921
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
922
+ budget?: {
923
+ capUsd: number;
924
+ onBudgetExhausted: "human" | "degrade" | "pause";
925
+ degradeAtPct?: number | undefined;
926
+ } | undefined;
927
+ sensitivePaths?: string[] | undefined;
928
+ escalationThreshold?: number | undefined;
929
+ allowedProviders?: string[] | undefined;
930
+ acceptanceEval?: {
931
+ enabled: boolean;
932
+ model?: string | undefined;
933
+ } | undefined;
934
+ } | undefined;
572
935
  }>>;
573
936
  }, "strip", z.ZodTypeAny, {
574
937
  executor: "subprocess" | "cloud" | "noop";
@@ -576,25 +939,73 @@ declare const HarnessConfigSchema: z.ZodObject<{
576
939
  skills?: string[] | undefined;
577
940
  backends?: Record<string, {
578
941
  type: "mock";
942
+ capabilities?: {
943
+ tier: "fast" | "standard" | "strong";
944
+ costPer1kTokens: number;
945
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
946
+ contextWindow: number;
947
+ vision?: boolean | undefined;
948
+ toolUse?: boolean | undefined;
949
+ } | undefined;
579
950
  } | {
580
951
  type: "claude";
952
+ capabilities?: {
953
+ tier: "fast" | "standard" | "strong";
954
+ costPer1kTokens: number;
955
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
956
+ contextWindow: number;
957
+ vision?: boolean | undefined;
958
+ toolUse?: boolean | undefined;
959
+ } | undefined;
581
960
  command?: string | undefined;
582
961
  } | {
583
962
  type: "anthropic";
584
963
  model: string;
964
+ capabilities?: {
965
+ tier: "fast" | "standard" | "strong";
966
+ costPer1kTokens: number;
967
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
968
+ contextWindow: number;
969
+ vision?: boolean | undefined;
970
+ toolUse?: boolean | undefined;
971
+ } | undefined;
585
972
  apiKey?: string | undefined;
586
973
  } | {
587
974
  type: "openai";
588
975
  model: string;
976
+ capabilities?: {
977
+ tier: "fast" | "standard" | "strong";
978
+ costPer1kTokens: number;
979
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
980
+ contextWindow: number;
981
+ vision?: boolean | undefined;
982
+ toolUse?: boolean | undefined;
983
+ } | undefined;
589
984
  apiKey?: string | undefined;
590
985
  } | {
591
986
  type: "gemini";
592
987
  model: string;
988
+ capabilities?: {
989
+ tier: "fast" | "standard" | "strong";
990
+ costPer1kTokens: number;
991
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
992
+ contextWindow: number;
993
+ vision?: boolean | undefined;
994
+ toolUse?: boolean | undefined;
995
+ } | undefined;
593
996
  apiKey?: string | undefined;
594
997
  } | {
595
998
  type: "local";
596
999
  model: string | [string, ...string[]];
597
1000
  endpoint: string;
1001
+ capabilities?: {
1002
+ tier: "fast" | "standard" | "strong";
1003
+ costPer1kTokens: number;
1004
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1005
+ contextWindow: number;
1006
+ vision?: boolean | undefined;
1007
+ toolUse?: boolean | undefined;
1008
+ } | undefined;
598
1009
  apiKey?: string | undefined;
599
1010
  timeoutMs?: number | undefined;
600
1011
  probeIntervalMs?: number | undefined;
@@ -602,6 +1013,14 @@ declare const HarnessConfigSchema: z.ZodObject<{
602
1013
  type: "pi";
603
1014
  model: string | [string, ...string[]];
604
1015
  endpoint: string;
1016
+ capabilities?: {
1017
+ tier: "fast" | "standard" | "strong";
1018
+ costPer1kTokens: number;
1019
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1020
+ contextWindow: number;
1021
+ vision?: boolean | undefined;
1022
+ toolUse?: boolean | undefined;
1023
+ } | undefined;
605
1024
  apiKey?: string | undefined;
606
1025
  timeoutMs?: number | undefined;
607
1026
  probeIntervalMs?: number | undefined;
@@ -623,6 +1042,23 @@ declare const HarnessConfigSchema: z.ZodObject<{
623
1042
  } | undefined;
624
1043
  skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
625
1044
  modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
1045
+ policy?: {
1046
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
1047
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
1048
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
1049
+ budget?: {
1050
+ capUsd: number;
1051
+ onBudgetExhausted: "human" | "degrade" | "pause";
1052
+ degradeAtPct?: number | undefined;
1053
+ } | undefined;
1054
+ sensitivePaths?: string[] | undefined;
1055
+ escalationThreshold?: number | undefined;
1056
+ allowedProviders?: string[] | undefined;
1057
+ acceptanceEval?: {
1058
+ enabled: boolean;
1059
+ model?: string | undefined;
1060
+ } | undefined;
1061
+ } | undefined;
626
1062
  } | undefined;
627
1063
  }, {
628
1064
  executor?: "subprocess" | "cloud" | "noop" | undefined;
@@ -630,25 +1066,73 @@ declare const HarnessConfigSchema: z.ZodObject<{
630
1066
  skills?: string[] | undefined;
631
1067
  backends?: Record<string, {
632
1068
  type: "mock";
1069
+ capabilities?: {
1070
+ tier: "fast" | "standard" | "strong";
1071
+ costPer1kTokens: number;
1072
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1073
+ contextWindow: number;
1074
+ vision?: boolean | undefined;
1075
+ toolUse?: boolean | undefined;
1076
+ } | undefined;
633
1077
  } | {
634
1078
  type: "claude";
1079
+ capabilities?: {
1080
+ tier: "fast" | "standard" | "strong";
1081
+ costPer1kTokens: number;
1082
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1083
+ contextWindow: number;
1084
+ vision?: boolean | undefined;
1085
+ toolUse?: boolean | undefined;
1086
+ } | undefined;
635
1087
  command?: string | undefined;
636
1088
  } | {
637
1089
  type: "anthropic";
638
1090
  model: string;
1091
+ capabilities?: {
1092
+ tier: "fast" | "standard" | "strong";
1093
+ costPer1kTokens: number;
1094
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1095
+ contextWindow: number;
1096
+ vision?: boolean | undefined;
1097
+ toolUse?: boolean | undefined;
1098
+ } | undefined;
639
1099
  apiKey?: string | undefined;
640
1100
  } | {
641
1101
  type: "openai";
642
1102
  model: string;
1103
+ capabilities?: {
1104
+ tier: "fast" | "standard" | "strong";
1105
+ costPer1kTokens: number;
1106
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1107
+ contextWindow: number;
1108
+ vision?: boolean | undefined;
1109
+ toolUse?: boolean | undefined;
1110
+ } | undefined;
643
1111
  apiKey?: string | undefined;
644
1112
  } | {
645
1113
  type: "gemini";
646
1114
  model: string;
1115
+ capabilities?: {
1116
+ tier: "fast" | "standard" | "strong";
1117
+ costPer1kTokens: number;
1118
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1119
+ contextWindow: number;
1120
+ vision?: boolean | undefined;
1121
+ toolUse?: boolean | undefined;
1122
+ } | undefined;
647
1123
  apiKey?: string | undefined;
648
1124
  } | {
649
1125
  type: "local";
650
1126
  model: string | [string, ...string[]];
651
1127
  endpoint: string;
1128
+ capabilities?: {
1129
+ tier: "fast" | "standard" | "strong";
1130
+ costPer1kTokens: number;
1131
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1132
+ contextWindow: number;
1133
+ vision?: boolean | undefined;
1134
+ toolUse?: boolean | undefined;
1135
+ } | undefined;
652
1136
  apiKey?: string | undefined;
653
1137
  timeoutMs?: number | undefined;
654
1138
  probeIntervalMs?: number | undefined;
@@ -656,6 +1140,14 @@ declare const HarnessConfigSchema: z.ZodObject<{
656
1140
  type: "pi";
657
1141
  model: string | [string, ...string[]];
658
1142
  endpoint: string;
1143
+ capabilities?: {
1144
+ tier: "fast" | "standard" | "strong";
1145
+ costPer1kTokens: number;
1146
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
1147
+ contextWindow: number;
1148
+ vision?: boolean | undefined;
1149
+ toolUse?: boolean | undefined;
1150
+ } | undefined;
659
1151
  apiKey?: string | undefined;
660
1152
  timeoutMs?: number | undefined;
661
1153
  probeIntervalMs?: number | undefined;
@@ -677,6 +1169,23 @@ declare const HarnessConfigSchema: z.ZodObject<{
677
1169
  } | undefined;
678
1170
  skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
679
1171
  modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
1172
+ policy?: {
1173
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
1174
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
1175
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
1176
+ budget?: {
1177
+ capUsd: number;
1178
+ onBudgetExhausted: "human" | "degrade" | "pause";
1179
+ degradeAtPct?: number | undefined;
1180
+ } | undefined;
1181
+ sensitivePaths?: string[] | undefined;
1182
+ escalationThreshold?: number | undefined;
1183
+ allowedProviders?: string[] | undefined;
1184
+ acceptanceEval?: {
1185
+ enabled: boolean;
1186
+ model?: string | undefined;
1187
+ } | undefined;
1188
+ } | undefined;
680
1189
  } | undefined;
681
1190
  }>>;
682
1191
  /** Source-file ingestion controls (skip-dirs, exclude patterns, gitignore handling) */
@@ -1701,6 +2210,44 @@ declare const HarnessConfigSchema: z.ZodObject<{
1701
2210
  labels?: string[] | undefined;
1702
2211
  reverseStatusMap?: Record<string, string> | undefined;
1703
2212
  }>>;
2213
+ /** Roadmap Auto-Triage gate (default-off). The read-only report consumes only `enabled`. */
2214
+ autoTriage: z.ZodOptional<z.ZodObject<{
2215
+ /** Master switch. Default false — the read-only triage report is gated off (D5/SC8). */
2216
+ enabled: z.ZodDefault<z.ZodBoolean>;
2217
+ /**
2218
+ * Autonomy-ratchet stage in effect (D14). v1 caps at stage 2 (auto-execute + human
2219
+ * verifies every PR); stages 3/4 (sampled-verify, fully-autonomous merge) are deferred
2220
+ * post-v1 and REJECTED here — matching the orchestrator's canonical RATCHET_STAGE schema
2221
+ * (packages/orchestrator/src/workflow/schema.ts, the source of truth). Default 1 (most
2222
+ * conservative). FOLLOW-UP 3: the two schemas must agree so a config can't validate under
2223
+ * the CLI yet fail the orchestrator (or vice-versa).
2224
+ */
2225
+ ratchetStage: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
2226
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2227
+ /** Master switch. Default false — the read-only triage report is gated off (D5/SC8). */
2228
+ enabled: z.ZodDefault<z.ZodBoolean>;
2229
+ /**
2230
+ * Autonomy-ratchet stage in effect (D14). v1 caps at stage 2 (auto-execute + human
2231
+ * verifies every PR); stages 3/4 (sampled-verify, fully-autonomous merge) are deferred
2232
+ * post-v1 and REJECTED here — matching the orchestrator's canonical RATCHET_STAGE schema
2233
+ * (packages/orchestrator/src/workflow/schema.ts, the source of truth). Default 1 (most
2234
+ * conservative). FOLLOW-UP 3: the two schemas must agree so a config can't validate under
2235
+ * the CLI yet fail the orchestrator (or vice-versa).
2236
+ */
2237
+ ratchetStage: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
2238
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2239
+ /** Master switch. Default false — the read-only triage report is gated off (D5/SC8). */
2240
+ enabled: z.ZodDefault<z.ZodBoolean>;
2241
+ /**
2242
+ * Autonomy-ratchet stage in effect (D14). v1 caps at stage 2 (auto-execute + human
2243
+ * verifies every PR); stages 3/4 (sampled-verify, fully-autonomous merge) are deferred
2244
+ * post-v1 and REJECTED here — matching the orchestrator's canonical RATCHET_STAGE schema
2245
+ * (packages/orchestrator/src/workflow/schema.ts, the source of truth). Default 1 (most
2246
+ * conservative). FOLLOW-UP 3: the two schemas must agree so a config can't validate under
2247
+ * the CLI yet fail the orchestrator (or vice-versa).
2248
+ */
2249
+ ratchetStage: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
2250
+ }, z.ZodTypeAny, "passthrough">>>;
1704
2251
  }, "strip", z.ZodTypeAny, {
1705
2252
  mode: "file-backed" | "file-less";
1706
2253
  tracker?: {
@@ -1710,6 +2257,19 @@ declare const HarnessConfigSchema: z.ZodObject<{
1710
2257
  labels?: string[] | undefined;
1711
2258
  reverseStatusMap?: Record<string, string> | undefined;
1712
2259
  } | undefined;
2260
+ autoTriage?: z.objectOutputType<{
2261
+ /** Master switch. Default false — the read-only triage report is gated off (D5/SC8). */
2262
+ enabled: z.ZodDefault<z.ZodBoolean>;
2263
+ /**
2264
+ * Autonomy-ratchet stage in effect (D14). v1 caps at stage 2 (auto-execute + human
2265
+ * verifies every PR); stages 3/4 (sampled-verify, fully-autonomous merge) are deferred
2266
+ * post-v1 and REJECTED here — matching the orchestrator's canonical RATCHET_STAGE schema
2267
+ * (packages/orchestrator/src/workflow/schema.ts, the source of truth). Default 1 (most
2268
+ * conservative). FOLLOW-UP 3: the two schemas must agree so a config can't validate under
2269
+ * the CLI yet fail the orchestrator (or vice-versa).
2270
+ */
2271
+ ratchetStage: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
2272
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1713
2273
  }, {
1714
2274
  mode?: "file-backed" | "file-less" | undefined;
1715
2275
  tracker?: {
@@ -1719,6 +2279,19 @@ declare const HarnessConfigSchema: z.ZodObject<{
1719
2279
  labels?: string[] | undefined;
1720
2280
  reverseStatusMap?: Record<string, string> | undefined;
1721
2281
  } | undefined;
2282
+ autoTriage?: z.objectInputType<{
2283
+ /** Master switch. Default false — the read-only triage report is gated off (D5/SC8). */
2284
+ enabled: z.ZodDefault<z.ZodBoolean>;
2285
+ /**
2286
+ * Autonomy-ratchet stage in effect (D14). v1 caps at stage 2 (auto-execute + human
2287
+ * verifies every PR); stages 3/4 (sampled-verify, fully-autonomous merge) are deferred
2288
+ * post-v1 and REJECTED here — matching the orchestrator's canonical RATCHET_STAGE schema
2289
+ * (packages/orchestrator/src/workflow/schema.ts, the source of truth). Default 1 (most
2290
+ * conservative). FOLLOW-UP 3: the two schemas must agree so a config can't validate under
2291
+ * the CLI yet fail the orchestrator (or vice-versa).
2292
+ */
2293
+ ratchetStage: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
2294
+ }, z.ZodTypeAny, "passthrough"> | undefined;
1722
2295
  }>>;
1723
2296
  /** Post-ship rollback circuit-breaker settings (signal arm live, eval arm dark). */
1724
2297
  rollback: z.ZodOptional<z.ZodObject<{
@@ -2132,25 +2705,73 @@ declare const HarnessConfigSchema: z.ZodObject<{
2132
2705
  skills?: string[] | undefined;
2133
2706
  backends?: Record<string, {
2134
2707
  type: "mock";
2708
+ capabilities?: {
2709
+ tier: "fast" | "standard" | "strong";
2710
+ costPer1kTokens: number;
2711
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
2712
+ contextWindow: number;
2713
+ vision?: boolean | undefined;
2714
+ toolUse?: boolean | undefined;
2715
+ } | undefined;
2135
2716
  } | {
2136
2717
  type: "claude";
2718
+ capabilities?: {
2719
+ tier: "fast" | "standard" | "strong";
2720
+ costPer1kTokens: number;
2721
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
2722
+ contextWindow: number;
2723
+ vision?: boolean | undefined;
2724
+ toolUse?: boolean | undefined;
2725
+ } | undefined;
2137
2726
  command?: string | undefined;
2138
2727
  } | {
2139
2728
  type: "anthropic";
2140
2729
  model: string;
2730
+ capabilities?: {
2731
+ tier: "fast" | "standard" | "strong";
2732
+ costPer1kTokens: number;
2733
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
2734
+ contextWindow: number;
2735
+ vision?: boolean | undefined;
2736
+ toolUse?: boolean | undefined;
2737
+ } | undefined;
2141
2738
  apiKey?: string | undefined;
2142
2739
  } | {
2143
2740
  type: "openai";
2144
2741
  model: string;
2742
+ capabilities?: {
2743
+ tier: "fast" | "standard" | "strong";
2744
+ costPer1kTokens: number;
2745
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
2746
+ contextWindow: number;
2747
+ vision?: boolean | undefined;
2748
+ toolUse?: boolean | undefined;
2749
+ } | undefined;
2145
2750
  apiKey?: string | undefined;
2146
2751
  } | {
2147
2752
  type: "gemini";
2148
2753
  model: string;
2754
+ capabilities?: {
2755
+ tier: "fast" | "standard" | "strong";
2756
+ costPer1kTokens: number;
2757
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
2758
+ contextWindow: number;
2759
+ vision?: boolean | undefined;
2760
+ toolUse?: boolean | undefined;
2761
+ } | undefined;
2149
2762
  apiKey?: string | undefined;
2150
2763
  } | {
2151
2764
  type: "local";
2152
2765
  model: string | [string, ...string[]];
2153
2766
  endpoint: string;
2767
+ capabilities?: {
2768
+ tier: "fast" | "standard" | "strong";
2769
+ costPer1kTokens: number;
2770
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
2771
+ contextWindow: number;
2772
+ vision?: boolean | undefined;
2773
+ toolUse?: boolean | undefined;
2774
+ } | undefined;
2154
2775
  apiKey?: string | undefined;
2155
2776
  timeoutMs?: number | undefined;
2156
2777
  probeIntervalMs?: number | undefined;
@@ -2158,6 +2779,14 @@ declare const HarnessConfigSchema: z.ZodObject<{
2158
2779
  type: "pi";
2159
2780
  model: string | [string, ...string[]];
2160
2781
  endpoint: string;
2782
+ capabilities?: {
2783
+ tier: "fast" | "standard" | "strong";
2784
+ costPer1kTokens: number;
2785
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
2786
+ contextWindow: number;
2787
+ vision?: boolean | undefined;
2788
+ toolUse?: boolean | undefined;
2789
+ } | undefined;
2161
2790
  apiKey?: string | undefined;
2162
2791
  timeoutMs?: number | undefined;
2163
2792
  probeIntervalMs?: number | undefined;
@@ -2179,6 +2808,23 @@ declare const HarnessConfigSchema: z.ZodObject<{
2179
2808
  } | undefined;
2180
2809
  skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
2181
2810
  modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
2811
+ policy?: {
2812
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
2813
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
2814
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
2815
+ budget?: {
2816
+ capUsd: number;
2817
+ onBudgetExhausted: "human" | "degrade" | "pause";
2818
+ degradeAtPct?: number | undefined;
2819
+ } | undefined;
2820
+ sensitivePaths?: string[] | undefined;
2821
+ escalationThreshold?: number | undefined;
2822
+ allowedProviders?: string[] | undefined;
2823
+ acceptanceEval?: {
2824
+ enabled: boolean;
2825
+ model?: string | undefined;
2826
+ } | undefined;
2827
+ } | undefined;
2182
2828
  } | undefined;
2183
2829
  } | undefined;
2184
2830
  ingest?: {
@@ -2354,6 +3000,19 @@ declare const HarnessConfigSchema: z.ZodObject<{
2354
3000
  labels?: string[] | undefined;
2355
3001
  reverseStatusMap?: Record<string, string> | undefined;
2356
3002
  } | undefined;
3003
+ autoTriage?: z.objectOutputType<{
3004
+ /** Master switch. Default false — the read-only triage report is gated off (D5/SC8). */
3005
+ enabled: z.ZodDefault<z.ZodBoolean>;
3006
+ /**
3007
+ * Autonomy-ratchet stage in effect (D14). v1 caps at stage 2 (auto-execute + human
3008
+ * verifies every PR); stages 3/4 (sampled-verify, fully-autonomous merge) are deferred
3009
+ * post-v1 and REJECTED here — matching the orchestrator's canonical RATCHET_STAGE schema
3010
+ * (packages/orchestrator/src/workflow/schema.ts, the source of truth). Default 1 (most
3011
+ * conservative). FOLLOW-UP 3: the two schemas must agree so a config can't validate under
3012
+ * the CLI yet fail the orchestrator (or vice-versa).
3013
+ */
3014
+ ratchetStage: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
3015
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2357
3016
  } | undefined;
2358
3017
  rollback?: {
2359
3018
  signals: Record<string, {
@@ -2468,25 +3127,73 @@ declare const HarnessConfigSchema: z.ZodObject<{
2468
3127
  skills?: string[] | undefined;
2469
3128
  backends?: Record<string, {
2470
3129
  type: "mock";
3130
+ capabilities?: {
3131
+ tier: "fast" | "standard" | "strong";
3132
+ costPer1kTokens: number;
3133
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
3134
+ contextWindow: number;
3135
+ vision?: boolean | undefined;
3136
+ toolUse?: boolean | undefined;
3137
+ } | undefined;
2471
3138
  } | {
2472
3139
  type: "claude";
3140
+ capabilities?: {
3141
+ tier: "fast" | "standard" | "strong";
3142
+ costPer1kTokens: number;
3143
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
3144
+ contextWindow: number;
3145
+ vision?: boolean | undefined;
3146
+ toolUse?: boolean | undefined;
3147
+ } | undefined;
2473
3148
  command?: string | undefined;
2474
3149
  } | {
2475
3150
  type: "anthropic";
2476
3151
  model: string;
3152
+ capabilities?: {
3153
+ tier: "fast" | "standard" | "strong";
3154
+ costPer1kTokens: number;
3155
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
3156
+ contextWindow: number;
3157
+ vision?: boolean | undefined;
3158
+ toolUse?: boolean | undefined;
3159
+ } | undefined;
2477
3160
  apiKey?: string | undefined;
2478
3161
  } | {
2479
3162
  type: "openai";
2480
3163
  model: string;
3164
+ capabilities?: {
3165
+ tier: "fast" | "standard" | "strong";
3166
+ costPer1kTokens: number;
3167
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
3168
+ contextWindow: number;
3169
+ vision?: boolean | undefined;
3170
+ toolUse?: boolean | undefined;
3171
+ } | undefined;
2481
3172
  apiKey?: string | undefined;
2482
3173
  } | {
2483
3174
  type: "gemini";
2484
3175
  model: string;
3176
+ capabilities?: {
3177
+ tier: "fast" | "standard" | "strong";
3178
+ costPer1kTokens: number;
3179
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
3180
+ contextWindow: number;
3181
+ vision?: boolean | undefined;
3182
+ toolUse?: boolean | undefined;
3183
+ } | undefined;
2485
3184
  apiKey?: string | undefined;
2486
3185
  } | {
2487
3186
  type: "local";
2488
3187
  model: string | [string, ...string[]];
2489
3188
  endpoint: string;
3189
+ capabilities?: {
3190
+ tier: "fast" | "standard" | "strong";
3191
+ costPer1kTokens: number;
3192
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
3193
+ contextWindow: number;
3194
+ vision?: boolean | undefined;
3195
+ toolUse?: boolean | undefined;
3196
+ } | undefined;
2490
3197
  apiKey?: string | undefined;
2491
3198
  timeoutMs?: number | undefined;
2492
3199
  probeIntervalMs?: number | undefined;
@@ -2494,6 +3201,14 @@ declare const HarnessConfigSchema: z.ZodObject<{
2494
3201
  type: "pi";
2495
3202
  model: string | [string, ...string[]];
2496
3203
  endpoint: string;
3204
+ capabilities?: {
3205
+ tier: "fast" | "standard" | "strong";
3206
+ costPer1kTokens: number;
3207
+ privacyClass: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud";
3208
+ contextWindow: number;
3209
+ vision?: boolean | undefined;
3210
+ toolUse?: boolean | undefined;
3211
+ } | undefined;
2497
3212
  apiKey?: string | undefined;
2498
3213
  timeoutMs?: number | undefined;
2499
3214
  probeIntervalMs?: number | undefined;
@@ -2515,6 +3230,23 @@ declare const HarnessConfigSchema: z.ZodObject<{
2515
3230
  } | undefined;
2516
3231
  skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
2517
3232
  modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
3233
+ policy?: {
3234
+ complexityTierMatrix?: Partial<Record<"trivial" | "simple" | "moderate" | "complex", "fast" | "standard" | "strong">> | undefined;
3235
+ skillTierOverrides?: Record<string, "fast" | "standard" | "strong"> | undefined;
3236
+ privacyFloor?: "on-device" | "pooled-isolated" | "byo-endpoint" | "shared-cloud" | undefined;
3237
+ budget?: {
3238
+ capUsd: number;
3239
+ onBudgetExhausted: "human" | "degrade" | "pause";
3240
+ degradeAtPct?: number | undefined;
3241
+ } | undefined;
3242
+ sensitivePaths?: string[] | undefined;
3243
+ escalationThreshold?: number | undefined;
3244
+ allowedProviders?: string[] | undefined;
3245
+ acceptanceEval?: {
3246
+ enabled: boolean;
3247
+ model?: string | undefined;
3248
+ } | undefined;
3249
+ } | undefined;
2518
3250
  } | undefined;
2519
3251
  } | undefined;
2520
3252
  ingest?: {
@@ -2690,6 +3422,19 @@ declare const HarnessConfigSchema: z.ZodObject<{
2690
3422
  labels?: string[] | undefined;
2691
3423
  reverseStatusMap?: Record<string, string> | undefined;
2692
3424
  } | undefined;
3425
+ autoTriage?: z.objectInputType<{
3426
+ /** Master switch. Default false — the read-only triage report is gated off (D5/SC8). */
3427
+ enabled: z.ZodDefault<z.ZodBoolean>;
3428
+ /**
3429
+ * Autonomy-ratchet stage in effect (D14). v1 caps at stage 2 (auto-execute + human
3430
+ * verifies every PR); stages 3/4 (sampled-verify, fully-autonomous merge) are deferred
3431
+ * post-v1 and REJECTED here — matching the orchestrator's canonical RATCHET_STAGE schema
3432
+ * (packages/orchestrator/src/workflow/schema.ts, the source of truth). Default 1 (most
3433
+ * conservative). FOLLOW-UP 3: the two schemas must agree so a config can't validate under
3434
+ * the CLI yet fail the orchestrator (or vice-versa).
3435
+ */
3436
+ ratchetStage: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
3437
+ }, z.ZodTypeAny, "passthrough"> | undefined;
2693
3438
  } | undefined;
2694
3439
  rollback?: {
2695
3440
  signals?: Record<string, {