@harness-engineering/cli 2.6.1 → 2.7.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.
Files changed (156) hide show
  1. package/dist/agents/skills/claude-code/align-design-system/SKILL.md +174 -0
  2. package/dist/agents/skills/claude-code/align-design-system/skill.yaml +57 -0
  3. package/dist/agents/skills/claude-code/audit-brand-compliance/SKILL.md +189 -0
  4. package/dist/agents/skills/claude-code/audit-brand-compliance/skill.yaml +50 -0
  5. package/dist/agents/skills/claude-code/audit-component-anatomy/SKILL.md +181 -0
  6. package/dist/agents/skills/claude-code/audit-component-anatomy/skill.yaml +51 -0
  7. package/dist/agents/skills/claude-code/copy-craft/SKILL.md +192 -0
  8. package/dist/agents/skills/claude-code/copy-craft/skill.yaml +52 -0
  9. package/dist/agents/skills/claude-code/detect-design-drift/SKILL.md +139 -0
  10. package/dist/agents/skills/claude-code/detect-design-drift/skill.yaml +50 -0
  11. package/dist/agents/skills/claude-code/harness-accessibility/SKILL.md +10 -0
  12. package/dist/agents/skills/claude-code/harness-design-craft/SKILL.md +212 -0
  13. package/dist/agents/skills/claude-code/harness-design-craft/skill.yaml +57 -0
  14. package/dist/agents/skills/claude-code/harness-design-pipeline/SKILL.md +266 -0
  15. package/dist/agents/skills/claude-code/harness-design-pipeline/skill.yaml +70 -0
  16. package/dist/agents/skills/claude-code/knowledge-craft/SKILL.md +180 -0
  17. package/dist/agents/skills/claude-code/knowledge-craft/skill.yaml +49 -0
  18. package/dist/agents/skills/claude-code/naming-craft/SKILL.md +244 -0
  19. package/dist/agents/skills/claude-code/naming-craft/skill.yaml +51 -0
  20. package/dist/agents/skills/claude-code/security-craft/SKILL.md +205 -0
  21. package/dist/agents/skills/claude-code/security-craft/skill.yaml +58 -0
  22. package/dist/agents/skills/claude-code/spec-craft/SKILL.md +184 -0
  23. package/dist/agents/skills/claude-code/spec-craft/skill.yaml +55 -0
  24. package/dist/agents/skills/claude-code/test-craft/SKILL.md +212 -0
  25. package/dist/agents/skills/claude-code/test-craft/skill.yaml +58 -0
  26. package/dist/agents/skills/codex/align-design-system/SKILL.md +174 -0
  27. package/dist/agents/skills/codex/align-design-system/skill.yaml +57 -0
  28. package/dist/agents/skills/codex/audit-brand-compliance/SKILL.md +189 -0
  29. package/dist/agents/skills/codex/audit-brand-compliance/skill.yaml +50 -0
  30. package/dist/agents/skills/codex/audit-component-anatomy/SKILL.md +181 -0
  31. package/dist/agents/skills/codex/audit-component-anatomy/skill.yaml +51 -0
  32. package/dist/agents/skills/codex/copy-craft/SKILL.md +192 -0
  33. package/dist/agents/skills/codex/copy-craft/skill.yaml +52 -0
  34. package/dist/agents/skills/codex/detect-design-drift/SKILL.md +139 -0
  35. package/dist/agents/skills/codex/detect-design-drift/skill.yaml +50 -0
  36. package/dist/agents/skills/codex/harness-accessibility/SKILL.md +10 -0
  37. package/dist/agents/skills/codex/harness-design-craft/SKILL.md +212 -0
  38. package/dist/agents/skills/codex/harness-design-craft/skill.yaml +57 -0
  39. package/dist/agents/skills/codex/harness-design-pipeline/SKILL.md +266 -0
  40. package/dist/agents/skills/codex/harness-design-pipeline/skill.yaml +70 -0
  41. package/dist/agents/skills/codex/knowledge-craft/SKILL.md +180 -0
  42. package/dist/agents/skills/codex/knowledge-craft/skill.yaml +49 -0
  43. package/dist/agents/skills/codex/naming-craft/SKILL.md +244 -0
  44. package/dist/agents/skills/codex/naming-craft/skill.yaml +51 -0
  45. package/dist/agents/skills/codex/security-craft/SKILL.md +205 -0
  46. package/dist/agents/skills/codex/security-craft/skill.yaml +58 -0
  47. package/dist/agents/skills/codex/spec-craft/SKILL.md +184 -0
  48. package/dist/agents/skills/codex/spec-craft/skill.yaml +55 -0
  49. package/dist/agents/skills/codex/test-craft/SKILL.md +212 -0
  50. package/dist/agents/skills/codex/test-craft/skill.yaml +58 -0
  51. package/dist/agents/skills/cursor/align-design-system/SKILL.md +174 -0
  52. package/dist/agents/skills/cursor/align-design-system/skill.yaml +57 -0
  53. package/dist/agents/skills/cursor/audit-brand-compliance/SKILL.md +189 -0
  54. package/dist/agents/skills/cursor/audit-brand-compliance/skill.yaml +50 -0
  55. package/dist/agents/skills/cursor/audit-component-anatomy/SKILL.md +181 -0
  56. package/dist/agents/skills/cursor/audit-component-anatomy/skill.yaml +51 -0
  57. package/dist/agents/skills/cursor/copy-craft/SKILL.md +192 -0
  58. package/dist/agents/skills/cursor/copy-craft/skill.yaml +52 -0
  59. package/dist/agents/skills/cursor/detect-design-drift/SKILL.md +139 -0
  60. package/dist/agents/skills/cursor/detect-design-drift/skill.yaml +50 -0
  61. package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +10 -0
  62. package/dist/agents/skills/cursor/harness-design-craft/SKILL.md +212 -0
  63. package/dist/agents/skills/cursor/harness-design-craft/skill.yaml +57 -0
  64. package/dist/agents/skills/cursor/harness-design-pipeline/SKILL.md +266 -0
  65. package/dist/agents/skills/cursor/harness-design-pipeline/skill.yaml +70 -0
  66. package/dist/agents/skills/cursor/knowledge-craft/SKILL.md +180 -0
  67. package/dist/agents/skills/cursor/knowledge-craft/skill.yaml +49 -0
  68. package/dist/agents/skills/cursor/naming-craft/SKILL.md +244 -0
  69. package/dist/agents/skills/cursor/naming-craft/skill.yaml +51 -0
  70. package/dist/agents/skills/cursor/security-craft/SKILL.md +205 -0
  71. package/dist/agents/skills/cursor/security-craft/skill.yaml +58 -0
  72. package/dist/agents/skills/cursor/spec-craft/SKILL.md +184 -0
  73. package/dist/agents/skills/cursor/spec-craft/skill.yaml +55 -0
  74. package/dist/agents/skills/cursor/test-craft/SKILL.md +212 -0
  75. package/dist/agents/skills/cursor/test-craft/skill.yaml +58 -0
  76. package/dist/agents/skills/gemini-cli/align-design-system/SKILL.md +174 -0
  77. package/dist/agents/skills/gemini-cli/align-design-system/skill.yaml +57 -0
  78. package/dist/agents/skills/gemini-cli/audit-brand-compliance/SKILL.md +189 -0
  79. package/dist/agents/skills/gemini-cli/audit-brand-compliance/skill.yaml +50 -0
  80. package/dist/agents/skills/gemini-cli/audit-component-anatomy/SKILL.md +181 -0
  81. package/dist/agents/skills/gemini-cli/audit-component-anatomy/skill.yaml +51 -0
  82. package/dist/agents/skills/gemini-cli/copy-craft/SKILL.md +192 -0
  83. package/dist/agents/skills/gemini-cli/copy-craft/skill.yaml +52 -0
  84. package/dist/agents/skills/gemini-cli/detect-design-drift/SKILL.md +139 -0
  85. package/dist/agents/skills/gemini-cli/detect-design-drift/skill.yaml +50 -0
  86. package/dist/agents/skills/gemini-cli/harness-accessibility/SKILL.md +10 -0
  87. package/dist/agents/skills/gemini-cli/harness-design-craft/SKILL.md +212 -0
  88. package/dist/agents/skills/gemini-cli/harness-design-craft/skill.yaml +57 -0
  89. package/dist/agents/skills/gemini-cli/harness-design-pipeline/SKILL.md +266 -0
  90. package/dist/agents/skills/gemini-cli/harness-design-pipeline/skill.yaml +70 -0
  91. package/dist/agents/skills/gemini-cli/knowledge-craft/SKILL.md +180 -0
  92. package/dist/agents/skills/gemini-cli/knowledge-craft/skill.yaml +49 -0
  93. package/dist/agents/skills/gemini-cli/naming-craft/SKILL.md +244 -0
  94. package/dist/agents/skills/gemini-cli/naming-craft/skill.yaml +51 -0
  95. package/dist/agents/skills/gemini-cli/security-craft/SKILL.md +205 -0
  96. package/dist/agents/skills/gemini-cli/security-craft/skill.yaml +58 -0
  97. package/dist/agents/skills/gemini-cli/spec-craft/SKILL.md +184 -0
  98. package/dist/agents/skills/gemini-cli/spec-craft/skill.yaml +55 -0
  99. package/dist/agents/skills/gemini-cli/test-craft/SKILL.md +212 -0
  100. package/dist/agents/skills/gemini-cli/test-craft/skill.yaml +58 -0
  101. package/dist/{agents-md-2JUQ4FE2.js → agents-md-FKMKH6ZF.js} +4 -4
  102. package/dist/{analyzer-VY6DJVOU-4AHIJLNS.js → analyzer-H3AHBFSL-KPOPJYRB.js} +8 -8
  103. package/dist/{architecture-CXAVNB5X.js → architecture-LUR2I67H.js} +6 -6
  104. package/dist/{assess-project-M626SSPN.js → assess-project-OJWECOP2.js} +2 -1
  105. package/dist/bin/harness-mcp.js +17 -17
  106. package/dist/bin/harness.js +27 -27
  107. package/dist/{check-phase-gate-XMU6LLUQ.js → check-phase-gate-HS5KYLRO.js} +5 -5
  108. package/dist/{chunk-5XLLIYYL.js → chunk-6UHDQP2N.js} +1 -1
  109. package/dist/{chunk-I6K43QQS.js → chunk-7AF6C5GE.js} +3 -3
  110. package/dist/{chunk-372MGNTI.js → chunk-7PLIWP7U.js} +6899 -133
  111. package/dist/{chunk-VUCGB2KH.js → chunk-B2VAYLYI.js} +1 -1
  112. package/dist/{chunk-HFOB2MPQ.js → chunk-CZPOPMMI.js} +3 -3
  113. package/dist/{chunk-43M3RLFQ.js → chunk-FC4JPM6W.js} +2 -2
  114. package/dist/{chunk-6AX6R3LM.js → chunk-FEKBXX2J.js} +9 -9
  115. package/dist/{chunk-VTTNIZJL.js → chunk-FXZI6NJ2.js} +131 -6
  116. package/dist/{chunk-5JNSFYZU.js → chunk-GGSNWH7P.js} +6 -6
  117. package/dist/{chunk-BCFDGOMA.js → chunk-H2ZJOJ7A.js} +81 -1
  118. package/dist/{chunk-PFZEADQM.js → chunk-INBTDBV2.js} +79 -2
  119. package/dist/{chunk-Q6ZR2L6Q.js → chunk-KN3EMDZ5.js} +2 -2
  120. package/dist/{chunk-JFZOWO7D.js → chunk-LECXPXS3.js} +1 -1
  121. package/dist/{chunk-CQOMVZDC.js → chunk-LGYXR2KZ.js} +2237 -604
  122. package/dist/{chunk-QOKMDDBJ.js → chunk-LYIPI2SJ.js} +6 -6
  123. package/dist/{chunk-L5BCZ5XS.js → chunk-N5NSSLMU.js} +1 -1
  124. package/dist/{chunk-GWE5LL3R.js → chunk-NIVWM7OW.js} +10 -10
  125. package/dist/{chunk-24KCOJJG.js → chunk-O2ASYKA6.js} +1 -1
  126. package/dist/{chunk-K246XQ2L.js → chunk-PTHX545Q.js} +1 -1
  127. package/dist/{chunk-EPUKTTJZ.js → chunk-RC3OI5NK.js} +5 -1
  128. package/dist/{chunk-YP7I25SL.js → chunk-RJ2WEES5.js} +1 -1
  129. package/dist/{chunk-5FDBXUFW.js → chunk-TIH53QXY.js} +1 -1
  130. package/dist/{chunk-OA6SWTU4.js → chunk-VI4IS55S.js} +11 -8
  131. package/dist/{chunk-GWF2OILZ.js → chunk-VSIRUZQP.js} +1 -1
  132. package/dist/{chunk-YYRQCQPZ.js → chunk-WZY5U6NS.js} +178 -109
  133. package/dist/{chunk-SZEFU6XC.js → chunk-Y4T6ENKQ.js} +9 -9
  134. package/dist/{chunk-HMW3VKUF.js → chunk-Z3TMCCZB.js} +10 -10
  135. package/dist/{ci-workflow-3JNDZQYD.js → ci-workflow-MDSTHJOY.js} +4 -4
  136. package/dist/{dist-OHDQBTSO.js → dist-72ID44UE.js} +3 -3
  137. package/dist/{dist-QPWXPCPL.js → dist-R3TOOPJ7.js} +1 -1
  138. package/dist/{docs-5RYMDHN3.js → docs-2RFOJ6XY.js} +6 -6
  139. package/dist/{engine-GKGT5ULT.js → engine-BSFKOGPN.js} +4 -4
  140. package/dist/{entropy-DQTAPSSE.js → entropy-3UX6644G.js} +5 -5
  141. package/dist/{feedback-WH6XPQJS.js → feedback-CVCFYND4.js} +2 -2
  142. package/dist/{generate-agent-definitions-SZA4QIHN.js → generate-agent-definitions-HZ3XENWO.js} +5 -5
  143. package/dist/{glob-helper-XE2UGEOV.js → glob-helper-EX4YZKZO.js} +1 -1
  144. package/dist/{graph-loader-EQBOIHFZ.js → graph-loader-EIFEOUVI.js} +1 -1
  145. package/dist/index.d.ts +1012 -12
  146. package/dist/index.js +27 -27
  147. package/dist/{loader-BNKGM23C.js → loader-6RHWU5FH.js} +4 -4
  148. package/dist/{mcp-YKKPWUMH.js → mcp-OYR26JDI.js} +17 -17
  149. package/dist/{performance-54TMJOEU.js → performance-JJMIRXCH.js} +6 -6
  150. package/dist/{review-pipeline-OTDDVPNY.js → review-pipeline-BHQZIXWZ.js} +4 -4
  151. package/dist/{runtime-W5THSNAL.js → runtime-DALTAVTN.js} +4 -4
  152. package/dist/{scan-4PPP6ZXT.js → scan-LYKLM4EQ.js} +1 -1
  153. package/dist/{security-27HW7CYT.js → security-RMLMYFPB.js} +1 -1
  154. package/dist/{validate-QRVCD4GP.js → validate-R7DZRDFK.js} +5 -5
  155. package/dist/{validate-cross-check-BUAGBAPO.js → validate-cross-check-AUUZFNVL.js} +4 -4
  156. package/package.json +8 -7
package/dist/index.d.ts CHANGED
@@ -398,14 +398,286 @@ declare const HarnessConfigSchema: z.ZodObject<{
398
398
  timeout: z.ZodDefault<z.ZodNumber>;
399
399
  /** Optional list of skill IDs pre-authorized for the agent */
400
400
  skills: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
401
+ /**
402
+ * Named backend definitions (Spec 2 — multi-backend routing).
403
+ *
404
+ * Each entry maps a backend name (chosen by the project) to a backend
405
+ * type plus its connection details (model, endpoint, apiKey, etc.).
406
+ * Referenced from `craft.llm.backend`, from orchestrator routing rules,
407
+ * and from any future subsystem that needs a configured LLM backend.
408
+ *
409
+ * Schema is re-exported from @harness-engineering/orchestrator so this
410
+ * file and the orchestrator runtime validate against the same source.
411
+ */
412
+ backends: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
413
+ type: z.ZodLiteral<"mock">;
414
+ }, "strict", z.ZodTypeAny, {
415
+ type: "mock";
416
+ }, {
417
+ type: "mock";
418
+ }>, z.ZodObject<{
419
+ type: z.ZodLiteral<"claude">;
420
+ command: z.ZodOptional<z.ZodString>;
421
+ }, "strict", z.ZodTypeAny, {
422
+ type: "claude";
423
+ command?: string | undefined;
424
+ }, {
425
+ type: "claude";
426
+ command?: string | undefined;
427
+ }>, z.ZodObject<{
428
+ type: z.ZodLiteral<"anthropic">;
429
+ model: z.ZodString;
430
+ apiKey: z.ZodOptional<z.ZodString>;
431
+ }, "strict", z.ZodTypeAny, {
432
+ type: "anthropic";
433
+ model: string;
434
+ apiKey?: string | undefined;
435
+ }, {
436
+ type: "anthropic";
437
+ model: string;
438
+ apiKey?: string | undefined;
439
+ }>, z.ZodObject<{
440
+ type: z.ZodLiteral<"openai">;
441
+ model: z.ZodString;
442
+ apiKey: z.ZodOptional<z.ZodString>;
443
+ }, "strict", z.ZodTypeAny, {
444
+ type: "openai";
445
+ model: string;
446
+ apiKey?: string | undefined;
447
+ }, {
448
+ type: "openai";
449
+ model: string;
450
+ apiKey?: string | undefined;
451
+ }>, z.ZodObject<{
452
+ type: z.ZodLiteral<"gemini">;
453
+ model: z.ZodString;
454
+ apiKey: z.ZodOptional<z.ZodString>;
455
+ }, "strict", z.ZodTypeAny, {
456
+ type: "gemini";
457
+ model: string;
458
+ apiKey?: string | undefined;
459
+ }, {
460
+ type: "gemini";
461
+ model: string;
462
+ apiKey?: string | undefined;
463
+ }>, z.ZodObject<{
464
+ type: z.ZodLiteral<"local">;
465
+ endpoint: z.ZodString;
466
+ model: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "atleastone">]>;
467
+ apiKey: z.ZodOptional<z.ZodString>;
468
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
469
+ probeIntervalMs: z.ZodOptional<z.ZodNumber>;
470
+ }, "strict", z.ZodTypeAny, {
471
+ type: "local";
472
+ model: string | [string, ...string[]];
473
+ endpoint: string;
474
+ apiKey?: string | undefined;
475
+ timeoutMs?: number | undefined;
476
+ probeIntervalMs?: number | undefined;
477
+ }, {
478
+ type: "local";
479
+ model: string | [string, ...string[]];
480
+ endpoint: string;
481
+ apiKey?: string | undefined;
482
+ timeoutMs?: number | undefined;
483
+ probeIntervalMs?: number | undefined;
484
+ }>, z.ZodObject<{
485
+ type: z.ZodLiteral<"pi">;
486
+ endpoint: z.ZodString;
487
+ model: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "atleastone">]>;
488
+ apiKey: z.ZodOptional<z.ZodString>;
489
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
490
+ probeIntervalMs: z.ZodOptional<z.ZodNumber>;
491
+ }, "strict", z.ZodTypeAny, {
492
+ type: "pi";
493
+ model: string | [string, ...string[]];
494
+ endpoint: string;
495
+ apiKey?: string | undefined;
496
+ timeoutMs?: number | undefined;
497
+ probeIntervalMs?: number | undefined;
498
+ }, {
499
+ type: "pi";
500
+ model: string | [string, ...string[]];
501
+ endpoint: string;
502
+ apiKey?: string | undefined;
503
+ timeoutMs?: number | undefined;
504
+ probeIntervalMs?: number | undefined;
505
+ }>]>>>;
506
+ /** Routing rules for orchestrator agent dispatch. */
507
+ routing: z.ZodOptional<z.ZodObject<{
508
+ default: z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>;
509
+ 'quick-fix': z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
510
+ 'guided-change': z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
511
+ 'full-exploration': z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
512
+ diagnostic: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
513
+ intelligence: z.ZodOptional<z.ZodObject<{
514
+ sel: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
515
+ pesl: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
516
+ }, "strict", z.ZodTypeAny, {
517
+ sel?: string | readonly [string, ...string[]] | undefined;
518
+ pesl?: string | readonly [string, ...string[]] | undefined;
519
+ }, {
520
+ sel?: string | readonly [string, ...string[]] | undefined;
521
+ pesl?: string | readonly [string, ...string[]] | undefined;
522
+ }>>;
523
+ isolation: z.ZodOptional<z.ZodObject<{
524
+ none: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
525
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
526
+ "remote-sandbox": z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>;
527
+ }, "strict", z.ZodTypeAny, {
528
+ none?: string | readonly [string, ...string[]] | undefined;
529
+ container?: string | readonly [string, ...string[]] | undefined;
530
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
531
+ }, {
532
+ none?: string | readonly [string, ...string[]] | undefined;
533
+ container?: string | readonly [string, ...string[]] | undefined;
534
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
535
+ }>>;
536
+ skills: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>>;
537
+ modes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString, "atleastone">>]>>>;
538
+ }, "strict", z.ZodTypeAny, {
539
+ default: string | readonly [string, ...string[]];
540
+ 'quick-fix'?: string | readonly [string, ...string[]] | undefined;
541
+ 'guided-change'?: string | readonly [string, ...string[]] | undefined;
542
+ 'full-exploration'?: string | readonly [string, ...string[]] | undefined;
543
+ diagnostic?: string | readonly [string, ...string[]] | undefined;
544
+ intelligence?: {
545
+ sel?: string | readonly [string, ...string[]] | undefined;
546
+ pesl?: string | readonly [string, ...string[]] | undefined;
547
+ } | undefined;
548
+ isolation?: {
549
+ none?: string | readonly [string, ...string[]] | undefined;
550
+ container?: string | readonly [string, ...string[]] | undefined;
551
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
552
+ } | undefined;
553
+ skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
554
+ modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
555
+ }, {
556
+ default: string | readonly [string, ...string[]];
557
+ 'quick-fix'?: string | readonly [string, ...string[]] | undefined;
558
+ 'guided-change'?: string | readonly [string, ...string[]] | undefined;
559
+ 'full-exploration'?: string | readonly [string, ...string[]] | undefined;
560
+ diagnostic?: string | readonly [string, ...string[]] | undefined;
561
+ intelligence?: {
562
+ sel?: string | readonly [string, ...string[]] | undefined;
563
+ pesl?: string | readonly [string, ...string[]] | undefined;
564
+ } | undefined;
565
+ isolation?: {
566
+ none?: string | readonly [string, ...string[]] | undefined;
567
+ container?: string | readonly [string, ...string[]] | undefined;
568
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
569
+ } | undefined;
570
+ skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
571
+ modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
572
+ }>>;
401
573
  }, "strip", z.ZodTypeAny, {
402
574
  executor: "subprocess" | "cloud" | "noop";
403
575
  timeout: number;
404
576
  skills?: string[] | undefined;
577
+ backends?: Record<string, {
578
+ type: "mock";
579
+ } | {
580
+ type: "claude";
581
+ command?: string | undefined;
582
+ } | {
583
+ type: "anthropic";
584
+ model: string;
585
+ apiKey?: string | undefined;
586
+ } | {
587
+ type: "openai";
588
+ model: string;
589
+ apiKey?: string | undefined;
590
+ } | {
591
+ type: "gemini";
592
+ model: string;
593
+ apiKey?: string | undefined;
594
+ } | {
595
+ type: "local";
596
+ model: string | [string, ...string[]];
597
+ endpoint: string;
598
+ apiKey?: string | undefined;
599
+ timeoutMs?: number | undefined;
600
+ probeIntervalMs?: number | undefined;
601
+ } | {
602
+ type: "pi";
603
+ model: string | [string, ...string[]];
604
+ endpoint: string;
605
+ apiKey?: string | undefined;
606
+ timeoutMs?: number | undefined;
607
+ probeIntervalMs?: number | undefined;
608
+ }> | undefined;
609
+ routing?: {
610
+ default: string | readonly [string, ...string[]];
611
+ 'quick-fix'?: string | readonly [string, ...string[]] | undefined;
612
+ 'guided-change'?: string | readonly [string, ...string[]] | undefined;
613
+ 'full-exploration'?: string | readonly [string, ...string[]] | undefined;
614
+ diagnostic?: string | readonly [string, ...string[]] | undefined;
615
+ intelligence?: {
616
+ sel?: string | readonly [string, ...string[]] | undefined;
617
+ pesl?: string | readonly [string, ...string[]] | undefined;
618
+ } | undefined;
619
+ isolation?: {
620
+ none?: string | readonly [string, ...string[]] | undefined;
621
+ container?: string | readonly [string, ...string[]] | undefined;
622
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
623
+ } | undefined;
624
+ skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
625
+ modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
626
+ } | undefined;
405
627
  }, {
406
628
  executor?: "subprocess" | "cloud" | "noop" | undefined;
407
629
  timeout?: number | undefined;
408
630
  skills?: string[] | undefined;
631
+ backends?: Record<string, {
632
+ type: "mock";
633
+ } | {
634
+ type: "claude";
635
+ command?: string | undefined;
636
+ } | {
637
+ type: "anthropic";
638
+ model: string;
639
+ apiKey?: string | undefined;
640
+ } | {
641
+ type: "openai";
642
+ model: string;
643
+ apiKey?: string | undefined;
644
+ } | {
645
+ type: "gemini";
646
+ model: string;
647
+ apiKey?: string | undefined;
648
+ } | {
649
+ type: "local";
650
+ model: string | [string, ...string[]];
651
+ endpoint: string;
652
+ apiKey?: string | undefined;
653
+ timeoutMs?: number | undefined;
654
+ probeIntervalMs?: number | undefined;
655
+ } | {
656
+ type: "pi";
657
+ model: string | [string, ...string[]];
658
+ endpoint: string;
659
+ apiKey?: string | undefined;
660
+ timeoutMs?: number | undefined;
661
+ probeIntervalMs?: number | undefined;
662
+ }> | undefined;
663
+ routing?: {
664
+ default: string | readonly [string, ...string[]];
665
+ 'quick-fix'?: string | readonly [string, ...string[]] | undefined;
666
+ 'guided-change'?: string | readonly [string, ...string[]] | undefined;
667
+ 'full-exploration'?: string | readonly [string, ...string[]] | undefined;
668
+ diagnostic?: string | readonly [string, ...string[]] | undefined;
669
+ intelligence?: {
670
+ sel?: string | readonly [string, ...string[]] | undefined;
671
+ pesl?: string | readonly [string, ...string[]] | undefined;
672
+ } | undefined;
673
+ isolation?: {
674
+ none?: string | readonly [string, ...string[]] | undefined;
675
+ container?: string | readonly [string, ...string[]] | undefined;
676
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
677
+ } | undefined;
678
+ skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
679
+ modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
680
+ } | undefined;
409
681
  }>>;
410
682
  /** Source-file ingestion controls (skip-dirs, exclude patterns, gitignore handling) */
411
683
  ingest: z.ZodOptional<z.ZodObject<{
@@ -609,30 +881,546 @@ declare const HarnessConfigSchema: z.ZodObject<{
609
881
  tokenPath: z.ZodOptional<z.ZodString>;
610
882
  /** Brief description of the intended aesthetic direction */
611
883
  aestheticIntent: z.ZodOptional<z.ZodString>;
884
+ /**
885
+ * Design-pipeline audit configuration (rule-based floor layer).
886
+ * Omit to use built-in defaults.
887
+ */
888
+ audit: z.ZodOptional<z.ZodObject<{
889
+ /** Component-anatomy audit (design-pipeline #2) */
890
+ componentAnatomy: z.ZodOptional<z.ZodObject<{
891
+ /** Gate for the entire audit AND the harness-accessibility deferral */
892
+ enabled: z.ZodDefault<z.ZodBoolean>;
893
+ /** "default" or a path to a project-supplied override catalog */
894
+ catalog: z.ZodDefault<z.ZodString>;
895
+ /** "all", "none", or an explicit list of pattern codes (e.g. ["ANAT-P001"]) */
896
+ patterns: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"all">, z.ZodLiteral<"none">, z.ZodArray<z.ZodString, "many">]>>;
897
+ /** Fast-mode controls (validate-time scope cap + pattern opt-in) */
898
+ fastMode: z.ZodDefault<z.ZodObject<{
899
+ /** Whether validate-time runs pattern queries (default false — patterns are full-mode only) */
900
+ patterns: z.ZodDefault<z.ZodBoolean>;
901
+ /** Cap to keep validate fast on large repos */
902
+ maxFiles: z.ZodDefault<z.ZodNumber>;
903
+ }, "strip", z.ZodTypeAny, {
904
+ patterns: boolean;
905
+ maxFiles: number;
906
+ }, {
907
+ patterns?: boolean | undefined;
908
+ maxFiles?: number | undefined;
909
+ }>>;
910
+ }, "strip", z.ZodTypeAny, {
911
+ enabled: boolean;
912
+ catalog: string;
913
+ patterns: string[] | "all" | "none";
914
+ fastMode: {
915
+ patterns: boolean;
916
+ maxFiles: number;
917
+ };
918
+ }, {
919
+ enabled?: boolean | undefined;
920
+ catalog?: string | undefined;
921
+ patterns?: string[] | "all" | "none" | undefined;
922
+ fastMode?: {
923
+ patterns?: boolean | undefined;
924
+ maxFiles?: number | undefined;
925
+ } | undefined;
926
+ }>>;
927
+ /** Design-system drift detection (design-pipeline #1, detect half) */
928
+ driftDetection: z.ZodOptional<z.ZodObject<{
929
+ /** Gate for the entire drift verifier */
930
+ enabled: z.ZodDefault<z.ZodBoolean>;
931
+ /** Rule toggles — defaults align with v1 scope (T* + P*) */
932
+ rules: z.ZodDefault<z.ZodObject<{
933
+ /** Token bypass rules (DRIFT-T001-T004). Default: true. */
934
+ tokenBypass: z.ZodDefault<z.ZodBoolean>;
935
+ /** Primitive adoption rules (DRIFT-P001-P004). Default: true. */
936
+ primitiveAdoption: z.ZodDefault<z.ZodBoolean>;
937
+ }, "strip", z.ZodTypeAny, {
938
+ tokenBypass: boolean;
939
+ primitiveAdoption: boolean;
940
+ }, {
941
+ tokenBypass?: boolean | undefined;
942
+ primitiveAdoption?: boolean | undefined;
943
+ }>>;
944
+ /** Fast-mode controls (validate-time scope cap) */
945
+ fastMode: z.ZodDefault<z.ZodObject<{
946
+ /** Cap to keep validate fast on large repos */
947
+ maxFiles: z.ZodDefault<z.ZodNumber>;
948
+ }, "strip", z.ZodTypeAny, {
949
+ maxFiles: number;
950
+ }, {
951
+ maxFiles?: number | undefined;
952
+ }>>;
953
+ }, "strip", z.ZodTypeAny, {
954
+ enabled: boolean;
955
+ rules: {
956
+ tokenBypass: boolean;
957
+ primitiveAdoption: boolean;
958
+ };
959
+ fastMode: {
960
+ maxFiles: number;
961
+ };
962
+ }, {
963
+ enabled?: boolean | undefined;
964
+ rules?: {
965
+ tokenBypass?: boolean | undefined;
966
+ primitiveAdoption?: boolean | undefined;
967
+ } | undefined;
968
+ fastMode?: {
969
+ maxFiles?: number | undefined;
970
+ } | undefined;
971
+ }>>;
972
+ /** Brand-compliance audit (design-pipeline #3) */
973
+ brandCompliance: z.ZodOptional<z.ZodObject<{
974
+ /** Gate for the entire brand verifier */
975
+ enabled: z.ZodDefault<z.ZodBoolean>;
976
+ /** Rule toggles — defaults align with v1 scope (BRAND-T* + BRAND-V001) */
977
+ rules: z.ZodDefault<z.ZodObject<{
978
+ /** Token-misuse rules (BRAND-T001 via $extensions.harness.brand.forbidden_contexts). Default: true. */
979
+ tokenMisuse: z.ZodDefault<z.ZodBoolean>;
980
+ /** Voice rule (BRAND-V001 forbidden phrases in JSX text + string attributes). Default: true. */
981
+ voice: z.ZodDefault<z.ZodBoolean>;
982
+ }, "strip", z.ZodTypeAny, {
983
+ tokenMisuse: boolean;
984
+ voice: boolean;
985
+ }, {
986
+ tokenMisuse?: boolean | undefined;
987
+ voice?: boolean | undefined;
988
+ }>>;
989
+ /** Fast-mode controls (validate-time scope cap) */
990
+ fastMode: z.ZodDefault<z.ZodObject<{
991
+ maxFiles: z.ZodDefault<z.ZodNumber>;
992
+ }, "strip", z.ZodTypeAny, {
993
+ maxFiles: number;
994
+ }, {
995
+ maxFiles?: number | undefined;
996
+ }>>;
997
+ }, "strip", z.ZodTypeAny, {
998
+ enabled: boolean;
999
+ rules: {
1000
+ tokenMisuse: boolean;
1001
+ voice: boolean;
1002
+ };
1003
+ fastMode: {
1004
+ maxFiles: number;
1005
+ };
1006
+ }, {
1007
+ enabled?: boolean | undefined;
1008
+ rules?: {
1009
+ tokenMisuse?: boolean | undefined;
1010
+ voice?: boolean | undefined;
1011
+ } | undefined;
1012
+ fastMode?: {
1013
+ maxFiles?: number | undefined;
1014
+ } | undefined;
1015
+ }>>;
1016
+ }, "strip", z.ZodTypeAny, {
1017
+ componentAnatomy?: {
1018
+ enabled: boolean;
1019
+ catalog: string;
1020
+ patterns: string[] | "all" | "none";
1021
+ fastMode: {
1022
+ patterns: boolean;
1023
+ maxFiles: number;
1024
+ };
1025
+ } | undefined;
1026
+ driftDetection?: {
1027
+ enabled: boolean;
1028
+ rules: {
1029
+ tokenBypass: boolean;
1030
+ primitiveAdoption: boolean;
1031
+ };
1032
+ fastMode: {
1033
+ maxFiles: number;
1034
+ };
1035
+ } | undefined;
1036
+ brandCompliance?: {
1037
+ enabled: boolean;
1038
+ rules: {
1039
+ tokenMisuse: boolean;
1040
+ voice: boolean;
1041
+ };
1042
+ fastMode: {
1043
+ maxFiles: number;
1044
+ };
1045
+ } | undefined;
1046
+ }, {
1047
+ componentAnatomy?: {
1048
+ enabled?: boolean | undefined;
1049
+ catalog?: string | undefined;
1050
+ patterns?: string[] | "all" | "none" | undefined;
1051
+ fastMode?: {
1052
+ patterns?: boolean | undefined;
1053
+ maxFiles?: number | undefined;
1054
+ } | undefined;
1055
+ } | undefined;
1056
+ driftDetection?: {
1057
+ enabled?: boolean | undefined;
1058
+ rules?: {
1059
+ tokenBypass?: boolean | undefined;
1060
+ primitiveAdoption?: boolean | undefined;
1061
+ } | undefined;
1062
+ fastMode?: {
1063
+ maxFiles?: number | undefined;
1064
+ } | undefined;
1065
+ } | undefined;
1066
+ brandCompliance?: {
1067
+ enabled?: boolean | undefined;
1068
+ rules?: {
1069
+ tokenMisuse?: boolean | undefined;
1070
+ voice?: boolean | undefined;
1071
+ } | undefined;
1072
+ fastMode?: {
1073
+ maxFiles?: number | undefined;
1074
+ } | undefined;
1075
+ } | undefined;
1076
+ }>>;
1077
+ /**
1078
+ * Design-craft configuration (LLM-judgment ceiling layer, design-pipeline #6).
1079
+ * Omit to use built-in defaults.
1080
+ */
1081
+ craft: z.ZodOptional<z.ZodObject<{
1082
+ /** Gate for the entire skill AND the harness-design overlap deferral */
1083
+ enabled: z.ZodDefault<z.ZodBoolean>;
1084
+ /** Default invocation mode — "fast" (code-only LLM) or "deep" (rendered + vision-LLM) */
1085
+ mode: z.ZodDefault<z.ZodEnum<["fast", "deep"]>>;
1086
+ /** B' detect-and-offer behavior when preconditions missing */
1087
+ autoCapture: z.ZodDefault<z.ZodEnum<["prompt", "auto", "skip"]>>;
1088
+ /** LLM provider configuration */
1089
+ llm: z.ZodOptional<z.ZodObject<{
1090
+ provider: z.ZodDefault<z.ZodString>;
1091
+ model: z.ZodDefault<z.ZodString>;
1092
+ visionModel: z.ZodOptional<z.ZodString>;
1093
+ }, "strip", z.ZodTypeAny, {
1094
+ provider: string;
1095
+ model: string;
1096
+ visionModel?: string | undefined;
1097
+ }, {
1098
+ provider?: string | undefined;
1099
+ model?: string | undefined;
1100
+ visionModel?: string | undefined;
1101
+ }>>;
1102
+ /** Catalog scoping */
1103
+ catalog: z.ZodOptional<z.ZodObject<{
1104
+ path: z.ZodDefault<z.ZodString>;
1105
+ rubrics: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"all">, z.ZodLiteral<"none">, z.ZodArray<z.ZodString, "many">]>>;
1106
+ patterns: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"all">, z.ZodLiteral<"none">, z.ZodArray<z.ZodString, "many">]>>;
1107
+ exemplars: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"all">, z.ZodLiteral<"none">, z.ZodArray<z.ZodString, "many">]>>;
1108
+ }, "strip", z.ZodTypeAny, {
1109
+ path: string;
1110
+ patterns: string[] | "all" | "none";
1111
+ rubrics: string[] | "all" | "none";
1112
+ exemplars: string[] | "all" | "none";
1113
+ }, {
1114
+ path?: string | undefined;
1115
+ patterns?: string[] | "all" | "none" | undefined;
1116
+ rubrics?: string[] | "all" | "none" | undefined;
1117
+ exemplars?: string[] | "all" | "none" | undefined;
1118
+ }>>;
1119
+ /** Signal feedback loop (CRITIQUE recurrence → pattern proposal) */
1120
+ signal: z.ZodOptional<z.ZodObject<{
1121
+ /** N=5 by default — emit candidate pattern proposal after this many recurrences */
1122
+ proposalThreshold: z.ZodDefault<z.ZodNumber>;
1123
+ }, "strip", z.ZodTypeAny, {
1124
+ proposalThreshold: number;
1125
+ }, {
1126
+ proposalThreshold?: number | undefined;
1127
+ }>>;
1128
+ }, "strip", z.ZodTypeAny, {
1129
+ enabled: boolean;
1130
+ mode: "fast" | "deep";
1131
+ autoCapture: "prompt" | "auto" | "skip";
1132
+ catalog?: {
1133
+ path: string;
1134
+ patterns: string[] | "all" | "none";
1135
+ rubrics: string[] | "all" | "none";
1136
+ exemplars: string[] | "all" | "none";
1137
+ } | undefined;
1138
+ llm?: {
1139
+ provider: string;
1140
+ model: string;
1141
+ visionModel?: string | undefined;
1142
+ } | undefined;
1143
+ signal?: {
1144
+ proposalThreshold: number;
1145
+ } | undefined;
1146
+ }, {
1147
+ enabled?: boolean | undefined;
1148
+ catalog?: {
1149
+ path?: string | undefined;
1150
+ patterns?: string[] | "all" | "none" | undefined;
1151
+ rubrics?: string[] | "all" | "none" | undefined;
1152
+ exemplars?: string[] | "all" | "none" | undefined;
1153
+ } | undefined;
1154
+ mode?: "fast" | "deep" | undefined;
1155
+ autoCapture?: "prompt" | "auto" | "skip" | undefined;
1156
+ llm?: {
1157
+ provider?: string | undefined;
1158
+ model?: string | undefined;
1159
+ visionModel?: string | undefined;
1160
+ } | undefined;
1161
+ signal?: {
1162
+ proposalThreshold?: number | undefined;
1163
+ } | undefined;
1164
+ }>>;
612
1165
  }, "strip", z.ZodTypeAny, {
613
1166
  strictness: "strict" | "standard" | "permissive";
614
1167
  platforms: ("web" | "mobile")[];
615
1168
  enabled?: boolean | undefined;
616
1169
  tokenPath?: string | undefined;
617
1170
  aestheticIntent?: string | undefined;
1171
+ audit?: {
1172
+ componentAnatomy?: {
1173
+ enabled: boolean;
1174
+ catalog: string;
1175
+ patterns: string[] | "all" | "none";
1176
+ fastMode: {
1177
+ patterns: boolean;
1178
+ maxFiles: number;
1179
+ };
1180
+ } | undefined;
1181
+ driftDetection?: {
1182
+ enabled: boolean;
1183
+ rules: {
1184
+ tokenBypass: boolean;
1185
+ primitiveAdoption: boolean;
1186
+ };
1187
+ fastMode: {
1188
+ maxFiles: number;
1189
+ };
1190
+ } | undefined;
1191
+ brandCompliance?: {
1192
+ enabled: boolean;
1193
+ rules: {
1194
+ tokenMisuse: boolean;
1195
+ voice: boolean;
1196
+ };
1197
+ fastMode: {
1198
+ maxFiles: number;
1199
+ };
1200
+ } | undefined;
1201
+ } | undefined;
1202
+ craft?: {
1203
+ enabled: boolean;
1204
+ mode: "fast" | "deep";
1205
+ autoCapture: "prompt" | "auto" | "skip";
1206
+ catalog?: {
1207
+ path: string;
1208
+ patterns: string[] | "all" | "none";
1209
+ rubrics: string[] | "all" | "none";
1210
+ exemplars: string[] | "all" | "none";
1211
+ } | undefined;
1212
+ llm?: {
1213
+ provider: string;
1214
+ model: string;
1215
+ visionModel?: string | undefined;
1216
+ } | undefined;
1217
+ signal?: {
1218
+ proposalThreshold: number;
1219
+ } | undefined;
1220
+ } | undefined;
618
1221
  }, {
619
1222
  enabled?: boolean | undefined;
620
1223
  strictness?: "strict" | "standard" | "permissive" | undefined;
621
1224
  platforms?: ("web" | "mobile")[] | undefined;
622
1225
  tokenPath?: string | undefined;
623
1226
  aestheticIntent?: string | undefined;
1227
+ audit?: {
1228
+ componentAnatomy?: {
1229
+ enabled?: boolean | undefined;
1230
+ catalog?: string | undefined;
1231
+ patterns?: string[] | "all" | "none" | undefined;
1232
+ fastMode?: {
1233
+ patterns?: boolean | undefined;
1234
+ maxFiles?: number | undefined;
1235
+ } | undefined;
1236
+ } | undefined;
1237
+ driftDetection?: {
1238
+ enabled?: boolean | undefined;
1239
+ rules?: {
1240
+ tokenBypass?: boolean | undefined;
1241
+ primitiveAdoption?: boolean | undefined;
1242
+ } | undefined;
1243
+ fastMode?: {
1244
+ maxFiles?: number | undefined;
1245
+ } | undefined;
1246
+ } | undefined;
1247
+ brandCompliance?: {
1248
+ enabled?: boolean | undefined;
1249
+ rules?: {
1250
+ tokenMisuse?: boolean | undefined;
1251
+ voice?: boolean | undefined;
1252
+ } | undefined;
1253
+ fastMode?: {
1254
+ maxFiles?: number | undefined;
1255
+ } | undefined;
1256
+ } | undefined;
1257
+ } | undefined;
1258
+ craft?: {
1259
+ enabled?: boolean | undefined;
1260
+ catalog?: {
1261
+ path?: string | undefined;
1262
+ patterns?: string[] | "all" | "none" | undefined;
1263
+ rubrics?: string[] | "all" | "none" | undefined;
1264
+ exemplars?: string[] | "all" | "none" | undefined;
1265
+ } | undefined;
1266
+ mode?: "fast" | "deep" | undefined;
1267
+ autoCapture?: "prompt" | "auto" | "skip" | undefined;
1268
+ llm?: {
1269
+ provider?: string | undefined;
1270
+ model?: string | undefined;
1271
+ visionModel?: string | undefined;
1272
+ } | undefined;
1273
+ signal?: {
1274
+ proposalThreshold?: number | undefined;
1275
+ } | undefined;
1276
+ } | undefined;
624
1277
  }>, {
625
1278
  strictness: "strict" | "standard" | "permissive";
626
1279
  platforms: ("web" | "mobile")[];
627
1280
  enabled?: boolean | undefined;
628
1281
  tokenPath?: string | undefined;
629
1282
  aestheticIntent?: string | undefined;
1283
+ audit?: {
1284
+ componentAnatomy?: {
1285
+ enabled: boolean;
1286
+ catalog: string;
1287
+ patterns: string[] | "all" | "none";
1288
+ fastMode: {
1289
+ patterns: boolean;
1290
+ maxFiles: number;
1291
+ };
1292
+ } | undefined;
1293
+ driftDetection?: {
1294
+ enabled: boolean;
1295
+ rules: {
1296
+ tokenBypass: boolean;
1297
+ primitiveAdoption: boolean;
1298
+ };
1299
+ fastMode: {
1300
+ maxFiles: number;
1301
+ };
1302
+ } | undefined;
1303
+ brandCompliance?: {
1304
+ enabled: boolean;
1305
+ rules: {
1306
+ tokenMisuse: boolean;
1307
+ voice: boolean;
1308
+ };
1309
+ fastMode: {
1310
+ maxFiles: number;
1311
+ };
1312
+ } | undefined;
1313
+ } | undefined;
1314
+ craft?: {
1315
+ enabled: boolean;
1316
+ mode: "fast" | "deep";
1317
+ autoCapture: "prompt" | "auto" | "skip";
1318
+ catalog?: {
1319
+ path: string;
1320
+ patterns: string[] | "all" | "none";
1321
+ rubrics: string[] | "all" | "none";
1322
+ exemplars: string[] | "all" | "none";
1323
+ } | undefined;
1324
+ llm?: {
1325
+ provider: string;
1326
+ model: string;
1327
+ visionModel?: string | undefined;
1328
+ } | undefined;
1329
+ signal?: {
1330
+ proposalThreshold: number;
1331
+ } | undefined;
1332
+ } | undefined;
630
1333
  }, {
631
1334
  enabled?: boolean | undefined;
632
1335
  strictness?: "strict" | "standard" | "permissive" | undefined;
633
1336
  platforms?: ("web" | "mobile")[] | undefined;
634
1337
  tokenPath?: string | undefined;
635
1338
  aestheticIntent?: string | undefined;
1339
+ audit?: {
1340
+ componentAnatomy?: {
1341
+ enabled?: boolean | undefined;
1342
+ catalog?: string | undefined;
1343
+ patterns?: string[] | "all" | "none" | undefined;
1344
+ fastMode?: {
1345
+ patterns?: boolean | undefined;
1346
+ maxFiles?: number | undefined;
1347
+ } | undefined;
1348
+ } | undefined;
1349
+ driftDetection?: {
1350
+ enabled?: boolean | undefined;
1351
+ rules?: {
1352
+ tokenBypass?: boolean | undefined;
1353
+ primitiveAdoption?: boolean | undefined;
1354
+ } | undefined;
1355
+ fastMode?: {
1356
+ maxFiles?: number | undefined;
1357
+ } | undefined;
1358
+ } | undefined;
1359
+ brandCompliance?: {
1360
+ enabled?: boolean | undefined;
1361
+ rules?: {
1362
+ tokenMisuse?: boolean | undefined;
1363
+ voice?: boolean | undefined;
1364
+ } | undefined;
1365
+ fastMode?: {
1366
+ maxFiles?: number | undefined;
1367
+ } | undefined;
1368
+ } | undefined;
1369
+ } | undefined;
1370
+ craft?: {
1371
+ enabled?: boolean | undefined;
1372
+ catalog?: {
1373
+ path?: string | undefined;
1374
+ patterns?: string[] | "all" | "none" | undefined;
1375
+ rubrics?: string[] | "all" | "none" | undefined;
1376
+ exemplars?: string[] | "all" | "none" | undefined;
1377
+ } | undefined;
1378
+ mode?: "fast" | "deep" | undefined;
1379
+ autoCapture?: "prompt" | "auto" | "skip" | undefined;
1380
+ llm?: {
1381
+ provider?: string | undefined;
1382
+ model?: string | undefined;
1383
+ visionModel?: string | undefined;
1384
+ } | undefined;
1385
+ signal?: {
1386
+ proposalThreshold?: number | undefined;
1387
+ } | undefined;
1388
+ } | undefined;
1389
+ }>>;
1390
+ /** Shared configuration for craft-pipeline ceiling skills (LLM-judgment) */
1391
+ craft: z.ZodOptional<z.ZodObject<{
1392
+ llm: z.ZodOptional<z.ZodObject<{
1393
+ /**
1394
+ * Name of an entry in `agent.backends` to route craft LLM calls
1395
+ * through. Supported backend types: claude, anthropic, openai,
1396
+ * local, pi, mock. (gemini is declared in agent.backends but is
1397
+ * not yet wired through the craft adapter.)
1398
+ */
1399
+ backend: z.ZodOptional<z.ZodString>;
1400
+ /**
1401
+ * Special-case mode that doesn't correspond to a backend def.
1402
+ * - `in-session` — defer prompts to the calling chat session
1403
+ * via the two-step MCP flow (collect → finalize).
1404
+ * - `mock` — deterministic mock provider, for tests / smoke runs.
1405
+ */
1406
+ mode: z.ZodOptional<z.ZodEnum<["in-session", "mock"]>>;
1407
+ }, "strip", z.ZodTypeAny, {
1408
+ mode?: "in-session" | "mock" | undefined;
1409
+ backend?: string | undefined;
1410
+ }, {
1411
+ mode?: "in-session" | "mock" | undefined;
1412
+ backend?: string | undefined;
1413
+ }>>;
1414
+ }, "strip", z.ZodTypeAny, {
1415
+ llm?: {
1416
+ mode?: "in-session" | "mock" | undefined;
1417
+ backend?: string | undefined;
1418
+ } | undefined;
1419
+ }, {
1420
+ llm?: {
1421
+ mode?: "in-session" | "mock" | undefined;
1422
+ backend?: string | undefined;
1423
+ } | undefined;
636
1424
  }>>;
637
1425
  /** Internationalization (i18n) settings */
638
1426
  i18n: z.ZodOptional<z.ZodObject<{
@@ -746,24 +1534,24 @@ declare const HarnessConfigSchema: z.ZodObject<{
746
1534
  /** Model ID to use for complex/critical analysis */
747
1535
  strong: z.ZodOptional<z.ZodString>;
748
1536
  }, "strip", z.ZodTypeAny, {
749
- standard?: string | undefined;
750
1537
  fast?: string | undefined;
1538
+ standard?: string | undefined;
751
1539
  strong?: string | undefined;
752
1540
  }, {
753
- standard?: string | undefined;
754
1541
  fast?: string | undefined;
1542
+ standard?: string | undefined;
755
1543
  strong?: string | undefined;
756
1544
  }>>;
757
1545
  }, "strip", z.ZodTypeAny, {
758
1546
  model_tiers?: {
759
- standard?: string | undefined;
760
1547
  fast?: string | undefined;
1548
+ standard?: string | undefined;
761
1549
  strong?: string | undefined;
762
1550
  } | undefined;
763
1551
  }, {
764
1552
  model_tiers?: {
765
- standard?: string | undefined;
766
1553
  fast?: string | undefined;
1554
+ standard?: string | undefined;
767
1555
  strong?: string | undefined;
768
1556
  } | undefined;
769
1557
  }>>;
@@ -1039,7 +1827,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
1039
1827
  connectors?: Record<string, Record<string, unknown>> | undefined;
1040
1828
  }>>;
1041
1829
  /**
1042
- * Hermes Phase 2 — Disk-hygiene rules consumed by `harness cleanup-sessions --all`.
1830
+ * Disk-hygiene rules consumed by `harness cleanup-sessions --all`.
1043
1831
  * Keys correspond to registered target names (sessions, cache, maintenance,
1044
1832
  * dashboard-state, snapshots, analyzer-output); values override the default
1045
1833
  * TTL in hours. Unknown keys are ignored (forward-compatible).
@@ -1052,7 +1840,7 @@ declare const HarnessConfigSchema: z.ZodObject<{
1052
1840
  ttlHours?: Record<string, number> | undefined;
1053
1841
  }>>;
1054
1842
  /**
1055
- * Hermes Phase 2 — Pre-launch OSV malware guard configuration.
1843
+ * Pre-launch OSV malware guard configuration.
1056
1844
  * `enabled: false` disables the guard; `strict: true` reverses the default
1057
1845
  * fail-open posture on OSV.dev network errors.
1058
1846
  */
@@ -1061,12 +1849,12 @@ declare const HarnessConfigSchema: z.ZodObject<{
1061
1849
  strict: z.ZodDefault<z.ZodBoolean>;
1062
1850
  cacheTtlHours: z.ZodDefault<z.ZodNumber>;
1063
1851
  }, "strip", z.ZodTypeAny, {
1064
- enabled: boolean;
1065
1852
  strict: boolean;
1853
+ enabled: boolean;
1066
1854
  cacheTtlHours: number;
1067
1855
  }, {
1068
- enabled?: boolean | undefined;
1069
1856
  strict?: boolean | undefined;
1857
+ enabled?: boolean | undefined;
1070
1858
  cacheTtlHours?: number | undefined;
1071
1859
  }>>;
1072
1860
  }, "strip", z.ZodTypeAny, {
@@ -1080,6 +1868,12 @@ declare const HarnessConfigSchema: z.ZodObject<{
1080
1868
  neverSuggest: string[];
1081
1869
  tierOverrides: Record<string, number>;
1082
1870
  } | undefined;
1871
+ craft?: {
1872
+ llm?: {
1873
+ mode?: "in-session" | "mock" | undefined;
1874
+ backend?: string | undefined;
1875
+ } | undefined;
1876
+ } | undefined;
1083
1877
  layers?: {
1084
1878
  name: string;
1085
1879
  pattern: string;
@@ -1097,6 +1891,56 @@ declare const HarnessConfigSchema: z.ZodObject<{
1097
1891
  executor: "subprocess" | "cloud" | "noop";
1098
1892
  timeout: number;
1099
1893
  skills?: string[] | undefined;
1894
+ backends?: Record<string, {
1895
+ type: "mock";
1896
+ } | {
1897
+ type: "claude";
1898
+ command?: string | undefined;
1899
+ } | {
1900
+ type: "anthropic";
1901
+ model: string;
1902
+ apiKey?: string | undefined;
1903
+ } | {
1904
+ type: "openai";
1905
+ model: string;
1906
+ apiKey?: string | undefined;
1907
+ } | {
1908
+ type: "gemini";
1909
+ model: string;
1910
+ apiKey?: string | undefined;
1911
+ } | {
1912
+ type: "local";
1913
+ model: string | [string, ...string[]];
1914
+ endpoint: string;
1915
+ apiKey?: string | undefined;
1916
+ timeoutMs?: number | undefined;
1917
+ probeIntervalMs?: number | undefined;
1918
+ } | {
1919
+ type: "pi";
1920
+ model: string | [string, ...string[]];
1921
+ endpoint: string;
1922
+ apiKey?: string | undefined;
1923
+ timeoutMs?: number | undefined;
1924
+ probeIntervalMs?: number | undefined;
1925
+ }> | undefined;
1926
+ routing?: {
1927
+ default: string | readonly [string, ...string[]];
1928
+ 'quick-fix'?: string | readonly [string, ...string[]] | undefined;
1929
+ 'guided-change'?: string | readonly [string, ...string[]] | undefined;
1930
+ 'full-exploration'?: string | readonly [string, ...string[]] | undefined;
1931
+ diagnostic?: string | readonly [string, ...string[]] | undefined;
1932
+ intelligence?: {
1933
+ sel?: string | readonly [string, ...string[]] | undefined;
1934
+ pesl?: string | readonly [string, ...string[]] | undefined;
1935
+ } | undefined;
1936
+ isolation?: {
1937
+ none?: string | readonly [string, ...string[]] | undefined;
1938
+ container?: string | readonly [string, ...string[]] | undefined;
1939
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
1940
+ } | undefined;
1941
+ skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
1942
+ modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
1943
+ } | undefined;
1100
1944
  } | undefined;
1101
1945
  ingest?: {
1102
1946
  respectGitignore: boolean;
@@ -1156,6 +2000,56 @@ declare const HarnessConfigSchema: z.ZodObject<{
1156
2000
  enabled?: boolean | undefined;
1157
2001
  tokenPath?: string | undefined;
1158
2002
  aestheticIntent?: string | undefined;
2003
+ audit?: {
2004
+ componentAnatomy?: {
2005
+ enabled: boolean;
2006
+ catalog: string;
2007
+ patterns: string[] | "all" | "none";
2008
+ fastMode: {
2009
+ patterns: boolean;
2010
+ maxFiles: number;
2011
+ };
2012
+ } | undefined;
2013
+ driftDetection?: {
2014
+ enabled: boolean;
2015
+ rules: {
2016
+ tokenBypass: boolean;
2017
+ primitiveAdoption: boolean;
2018
+ };
2019
+ fastMode: {
2020
+ maxFiles: number;
2021
+ };
2022
+ } | undefined;
2023
+ brandCompliance?: {
2024
+ enabled: boolean;
2025
+ rules: {
2026
+ tokenMisuse: boolean;
2027
+ voice: boolean;
2028
+ };
2029
+ fastMode: {
2030
+ maxFiles: number;
2031
+ };
2032
+ } | undefined;
2033
+ } | undefined;
2034
+ craft?: {
2035
+ enabled: boolean;
2036
+ mode: "fast" | "deep";
2037
+ autoCapture: "prompt" | "auto" | "skip";
2038
+ catalog?: {
2039
+ path: string;
2040
+ patterns: string[] | "all" | "none";
2041
+ rubrics: string[] | "all" | "none";
2042
+ exemplars: string[] | "all" | "none";
2043
+ } | undefined;
2044
+ llm?: {
2045
+ provider: string;
2046
+ model: string;
2047
+ visionModel?: string | undefined;
2048
+ } | undefined;
2049
+ signal?: {
2050
+ proposalThreshold: number;
2051
+ } | undefined;
2052
+ } | undefined;
1159
2053
  } | undefined;
1160
2054
  i18n?: {
1161
2055
  enabled: boolean;
@@ -1182,8 +2076,8 @@ declare const HarnessConfigSchema: z.ZodObject<{
1182
2076
  } | undefined;
1183
2077
  review?: {
1184
2078
  model_tiers?: {
1185
- standard?: string | undefined;
1186
2079
  fast?: string | undefined;
2080
+ standard?: string | undefined;
1187
2081
  strong?: string | undefined;
1188
2082
  } | undefined;
1189
2083
  } | undefined;
@@ -1250,8 +2144,8 @@ declare const HarnessConfigSchema: z.ZodObject<{
1250
2144
  ttlHours?: Record<string, number> | undefined;
1251
2145
  } | undefined;
1252
2146
  osvGuard?: {
1253
- enabled: boolean;
1254
2147
  strict: boolean;
2148
+ enabled: boolean;
1255
2149
  cacheTtlHours: number;
1256
2150
  } | undefined;
1257
2151
  }, {
@@ -1262,6 +2156,12 @@ declare const HarnessConfigSchema: z.ZodObject<{
1262
2156
  neverSuggest?: string[] | undefined;
1263
2157
  tierOverrides?: Record<string, number> | undefined;
1264
2158
  } | undefined;
2159
+ craft?: {
2160
+ llm?: {
2161
+ mode?: "in-session" | "mock" | undefined;
2162
+ backend?: string | undefined;
2163
+ } | undefined;
2164
+ } | undefined;
1265
2165
  rootDir?: string | undefined;
1266
2166
  layers?: {
1267
2167
  name: string;
@@ -1282,6 +2182,56 @@ declare const HarnessConfigSchema: z.ZodObject<{
1282
2182
  executor?: "subprocess" | "cloud" | "noop" | undefined;
1283
2183
  timeout?: number | undefined;
1284
2184
  skills?: string[] | undefined;
2185
+ backends?: Record<string, {
2186
+ type: "mock";
2187
+ } | {
2188
+ type: "claude";
2189
+ command?: string | undefined;
2190
+ } | {
2191
+ type: "anthropic";
2192
+ model: string;
2193
+ apiKey?: string | undefined;
2194
+ } | {
2195
+ type: "openai";
2196
+ model: string;
2197
+ apiKey?: string | undefined;
2198
+ } | {
2199
+ type: "gemini";
2200
+ model: string;
2201
+ apiKey?: string | undefined;
2202
+ } | {
2203
+ type: "local";
2204
+ model: string | [string, ...string[]];
2205
+ endpoint: string;
2206
+ apiKey?: string | undefined;
2207
+ timeoutMs?: number | undefined;
2208
+ probeIntervalMs?: number | undefined;
2209
+ } | {
2210
+ type: "pi";
2211
+ model: string | [string, ...string[]];
2212
+ endpoint: string;
2213
+ apiKey?: string | undefined;
2214
+ timeoutMs?: number | undefined;
2215
+ probeIntervalMs?: number | undefined;
2216
+ }> | undefined;
2217
+ routing?: {
2218
+ default: string | readonly [string, ...string[]];
2219
+ 'quick-fix'?: string | readonly [string, ...string[]] | undefined;
2220
+ 'guided-change'?: string | readonly [string, ...string[]] | undefined;
2221
+ 'full-exploration'?: string | readonly [string, ...string[]] | undefined;
2222
+ diagnostic?: string | readonly [string, ...string[]] | undefined;
2223
+ intelligence?: {
2224
+ sel?: string | readonly [string, ...string[]] | undefined;
2225
+ pesl?: string | readonly [string, ...string[]] | undefined;
2226
+ } | undefined;
2227
+ isolation?: {
2228
+ none?: string | readonly [string, ...string[]] | undefined;
2229
+ container?: string | readonly [string, ...string[]] | undefined;
2230
+ "remote-sandbox"?: string | readonly [string, ...string[]] | undefined;
2231
+ } | undefined;
2232
+ skills?: Record<string, string | readonly [string, ...string[]]> | undefined;
2233
+ modes?: Record<string, string | readonly [string, ...string[]]> | undefined;
2234
+ } | undefined;
1285
2235
  } | undefined;
1286
2236
  ingest?: {
1287
2237
  skipDirs?: string[] | undefined;
@@ -1341,6 +2291,56 @@ declare const HarnessConfigSchema: z.ZodObject<{
1341
2291
  platforms?: ("web" | "mobile")[] | undefined;
1342
2292
  tokenPath?: string | undefined;
1343
2293
  aestheticIntent?: string | undefined;
2294
+ audit?: {
2295
+ componentAnatomy?: {
2296
+ enabled?: boolean | undefined;
2297
+ catalog?: string | undefined;
2298
+ patterns?: string[] | "all" | "none" | undefined;
2299
+ fastMode?: {
2300
+ patterns?: boolean | undefined;
2301
+ maxFiles?: number | undefined;
2302
+ } | undefined;
2303
+ } | undefined;
2304
+ driftDetection?: {
2305
+ enabled?: boolean | undefined;
2306
+ rules?: {
2307
+ tokenBypass?: boolean | undefined;
2308
+ primitiveAdoption?: boolean | undefined;
2309
+ } | undefined;
2310
+ fastMode?: {
2311
+ maxFiles?: number | undefined;
2312
+ } | undefined;
2313
+ } | undefined;
2314
+ brandCompliance?: {
2315
+ enabled?: boolean | undefined;
2316
+ rules?: {
2317
+ tokenMisuse?: boolean | undefined;
2318
+ voice?: boolean | undefined;
2319
+ } | undefined;
2320
+ fastMode?: {
2321
+ maxFiles?: number | undefined;
2322
+ } | undefined;
2323
+ } | undefined;
2324
+ } | undefined;
2325
+ craft?: {
2326
+ enabled?: boolean | undefined;
2327
+ catalog?: {
2328
+ path?: string | undefined;
2329
+ patterns?: string[] | "all" | "none" | undefined;
2330
+ rubrics?: string[] | "all" | "none" | undefined;
2331
+ exemplars?: string[] | "all" | "none" | undefined;
2332
+ } | undefined;
2333
+ mode?: "fast" | "deep" | undefined;
2334
+ autoCapture?: "prompt" | "auto" | "skip" | undefined;
2335
+ llm?: {
2336
+ provider?: string | undefined;
2337
+ model?: string | undefined;
2338
+ visionModel?: string | undefined;
2339
+ } | undefined;
2340
+ signal?: {
2341
+ proposalThreshold?: number | undefined;
2342
+ } | undefined;
2343
+ } | undefined;
1344
2344
  } | undefined;
1345
2345
  i18n?: {
1346
2346
  enabled?: boolean | undefined;
@@ -1367,8 +2367,8 @@ declare const HarnessConfigSchema: z.ZodObject<{
1367
2367
  } | undefined;
1368
2368
  review?: {
1369
2369
  model_tiers?: {
1370
- standard?: string | undefined;
1371
2370
  fast?: string | undefined;
2371
+ standard?: string | undefined;
1372
2372
  strong?: string | undefined;
1373
2373
  } | undefined;
1374
2374
  } | undefined;
@@ -1435,8 +2435,8 @@ declare const HarnessConfigSchema: z.ZodObject<{
1435
2435
  ttlHours?: Record<string, number> | undefined;
1436
2436
  } | undefined;
1437
2437
  osvGuard?: {
1438
- enabled?: boolean | undefined;
1439
2438
  strict?: boolean | undefined;
2439
+ enabled?: boolean | undefined;
1440
2440
  cacheTtlHours?: number | undefined;
1441
2441
  } | undefined;
1442
2442
  }>;