@claudexor/schema 2.0.0 → 2.1.2

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 (128) hide show
  1. package/dist/agent-capabilities.d.ts +24 -24
  2. package/dist/attachment.d.ts +13 -13
  3. package/dist/auth.d.ts +21 -0
  4. package/dist/auth.d.ts.map +1 -1
  5. package/dist/auth.js +54 -0
  6. package/dist/auth.js.map +1 -1
  7. package/dist/budget.d.ts +17 -5
  8. package/dist/budget.d.ts.map +1 -1
  9. package/dist/budget.js +15 -0
  10. package/dist/budget.js.map +1 -1
  11. package/dist/config.d.ts +380 -20
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +81 -0
  14. package/dist/config.js.map +1 -1
  15. package/dist/control-gc.d.ts +185 -0
  16. package/dist/control-gc.d.ts.map +1 -0
  17. package/dist/control-gc.js +81 -0
  18. package/dist/control-gc.js.map +1 -0
  19. package/dist/control-operation-responses.d.ts +155 -29
  20. package/dist/control-operation-responses.d.ts.map +1 -1
  21. package/dist/control-run-detail.d.ts +140 -32
  22. package/dist/control-run-detail.d.ts.map +1 -1
  23. package/dist/control-spec.d.ts +6 -6
  24. package/dist/control-thread-apply.d.ts +2 -2
  25. package/dist/control.d.ts +427 -586
  26. package/dist/control.d.ts.map +1 -1
  27. package/dist/control.js +155 -54
  28. package/dist/control.js.map +1 -1
  29. package/dist/credential-profile.d.ts +454 -0
  30. package/dist/credential-profile.d.ts.map +1 -0
  31. package/dist/credential-profile.js +140 -0
  32. package/dist/credential-profile.js.map +1 -0
  33. package/dist/events.d.ts +20 -6
  34. package/dist/events.d.ts.map +1 -1
  35. package/dist/events.js +22 -0
  36. package/dist/events.js.map +1 -1
  37. package/dist/gate.d.ts +3 -3
  38. package/dist/harness.d.ts +243 -88
  39. package/dist/harness.d.ts.map +1 -1
  40. package/dist/harness.js +124 -46
  41. package/dist/harness.js.map +1 -1
  42. package/dist/index.d.ts +4 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +4 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/orchestrate.d.ts +23 -0
  47. package/dist/orchestrate.d.ts.map +1 -1
  48. package/dist/orchestrate.js +56 -0
  49. package/dist/orchestrate.js.map +1 -1
  50. package/dist/project.d.ts +2 -2
  51. package/dist/quota.d.ts +27 -9
  52. package/dist/quota.d.ts.map +1 -1
  53. package/dist/quota.js +14 -2
  54. package/dist/quota.js.map +1 -1
  55. package/dist/readiness.d.ts +596 -0
  56. package/dist/readiness.d.ts.map +1 -0
  57. package/dist/readiness.js +87 -0
  58. package/dist/readiness.js.map +1 -0
  59. package/dist/request-requirements.d.ts +8 -8
  60. package/dist/request-requirements.d.ts.map +1 -1
  61. package/dist/request-requirements.js +4 -1
  62. package/dist/request-requirements.js.map +1 -1
  63. package/dist/route.d.ts +4 -4
  64. package/dist/setup.d.ts +69 -24
  65. package/dist/setup.d.ts.map +1 -1
  66. package/dist/setup.js +25 -0
  67. package/dist/setup.js.map +1 -1
  68. package/dist/spec.d.ts +4 -4
  69. package/dist/task.d.ts +99 -4
  70. package/dist/task.d.ts.map +1 -1
  71. package/dist/task.js +48 -1
  72. package/dist/task.js.map +1 -1
  73. package/dist/telemetry.d.ts +309 -67
  74. package/dist/telemetry.d.ts.map +1 -1
  75. package/dist/telemetry.js +97 -1
  76. package/dist/telemetry.js.map +1 -1
  77. package/dist/thread.d.ts +26 -15
  78. package/dist/thread.d.ts.map +1 -1
  79. package/dist/thread.js +11 -0
  80. package/dist/thread.js.map +1 -1
  81. package/dist/tool-ref.d.ts +45 -0
  82. package/dist/tool-ref.d.ts.map +1 -0
  83. package/dist/tool-ref.js +45 -0
  84. package/dist/tool-ref.js.map +1 -0
  85. package/dist/workspace.d.ts +2 -2
  86. package/generated/BudgetObservation.schema.json +16 -0
  87. package/generated/ControlCredentialProfileCreateRequest.schema.json +32 -0
  88. package/generated/ControlCredentialProfileCreateResponse.schema.json +142 -0
  89. package/generated/ControlCredentialProfileDeleteResponse.schema.json +107 -0
  90. package/generated/ControlCredentialProfilesResponse.schema.json +155 -0
  91. package/generated/ControlGcReceipt.schema.json +170 -0
  92. package/generated/ControlGcRequest.schema.json +18 -0
  93. package/generated/ControlHarnessListResponse.schema.json +95 -2
  94. package/generated/ControlHarnessModelsResponse.schema.json +19 -0
  95. package/generated/ControlHarnessSettingsPatch.schema.json +9 -0
  96. package/generated/ControlQuotaResponse.schema.json +3 -2
  97. package/generated/ControlRunAgainDraft.schema.json +40 -0
  98. package/generated/ControlRunDetail.schema.json +178 -6
  99. package/generated/ControlRunListResponse.schema.json +174 -3
  100. package/generated/ControlRunStartRequest.schema.json +40 -0
  101. package/generated/ControlRunSummary.schema.json +174 -3
  102. package/generated/ControlSettingsSnapshot.schema.json +10 -0
  103. package/generated/ControlSettingsUpdateRequest.schema.json +9 -0
  104. package/generated/ControlSetupJob.schema.json +8 -0
  105. package/generated/ControlSetupJobCreateRequest.schema.json +5 -0
  106. package/generated/ControlSetupJobEvent.schema.json +8 -0
  107. package/generated/ControlSetupJobListResponse.schema.json +8 -0
  108. package/generated/ControlSetupJobSnapshot.schema.json +8 -0
  109. package/generated/ControlThread.schema.json +16 -4
  110. package/generated/ControlThreadCreateRequest.schema.json +6 -2
  111. package/generated/ControlThreadDetail.schema.json +32 -8
  112. package/generated/ControlThreadListResponse.schema.json +16 -4
  113. package/generated/ControlThreadTurnRequest.schema.json +40 -0
  114. package/generated/ControlThreadUpdateRequest.schema.json +11 -0
  115. package/generated/CredentialProfile.schema.json +78 -0
  116. package/generated/CredentialProfileStatus.schema.json +61 -0
  117. package/generated/GlobalConfig.schema.json +136 -0
  118. package/generated/HarnessEvent.schema.json +62 -5
  119. package/generated/HarnessManifest.schema.json +33 -2
  120. package/generated/HarnessModel.schema.json +19 -0
  121. package/generated/HarnessStatusDto.schema.json +95 -2
  122. package/generated/RunEvent.schema.json +3 -0
  123. package/generated/RunTelemetry.schema.json +202 -2
  124. package/generated/Session.schema.json +14 -0
  125. package/generated/TaskContract.schema.json +65 -4
  126. package/generated/Thread.schema.json +17 -5
  127. package/generated/ThreadHeadPing.schema.json +40 -0
  128. package/package.json +3 -2
package/dist/control.d.ts CHANGED
@@ -28,6 +28,11 @@ export declare const ControlReviewerPanelEntry: z.ZodObject<{
28
28
  export type ControlReviewerPanelEntry = z.infer<typeof ControlReviewerPanelEntry>;
29
29
  export declare const ControlRunStartRequest: z.ZodObject<{
30
30
  prompt: z.ZodDefault<z.ZodString>;
31
+ /** Caller-supplied system-level instructions layered onto every
32
+ * task-producing lane (primary, candidate, planner, explorer,
33
+ * orchestrate-planner) — never reviewers, synthesis, or the auth smoke.
34
+ * Scanned by the inline-secret fence like the prompt (INV-062). */
35
+ instructions: z.ZodOptional<z.ZodString>;
31
36
  /** Immutable daemon resource ids; upload/finalize happens before enqueue. */
32
37
  attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
33
38
  resourceId: z.ZodString;
@@ -176,6 +181,10 @@ export declare const ControlRunStartRequest: z.ZodObject<{
176
181
  }>, "many">>;
177
182
  /** Per-run auth route override (subscription/api_key/auto). */
178
183
  authPreference: z.ZodOptional<z.ZodEnum<["subscription", "api_key", "auto"]>>;
184
+ /** Explicit per-run credential profile (INV-135); resolved against the
185
+ * durable registry by the engine — an unknown/disabled/mismatched id is a
186
+ * typed refusal, never a silent default. */
187
+ credentialProfileId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
179
188
  /** How much the orchestrate planner may act without confirmation
180
189
  * (suggest/auto_safe/auto_full). Only meaningful for mode=orchestrate;
181
190
  * consumed by the executor in runOrchestrate. */
@@ -183,6 +192,31 @@ export declare const ControlRunStartRequest: z.ZodObject<{
183
192
  /** Orchestrate executor: cap on plan tool calls. Only meaningful for
184
193
  * mode=orchestrate; consumed by executeOrchestratePlan. */
185
194
  maxToolCalls: z.ZodOptional<z.ZodNumber>;
195
+ /** Hard wall-clock deadline for the WHOLE run, measured from scheduler
196
+ * start. On expiry the run is cooperatively cancelled (hard-kill fallback)
197
+ * and ends `cancelled` with reason `wall_clock_exceeded`, preserving partial
198
+ * artifacts. Distinct from the inactivity watchdog (per-attempt silence). */
199
+ maxSeconds: z.ZodOptional<z.ZodNumber>;
200
+ /** Per-run globs no candidate may touch at all (create/modify/delete).
201
+ * Envelope/isolated runs only: enforced by the engine's authoritative
202
+ * post-diff policy gate (violation → blocking finding → blocked, patch
203
+ * undelivered); an in-place run with denyPaths is refused at preflight
204
+ * because a live tree cannot guarantee pre-delivery containment. Native
205
+ * per-lane enforcement is disclosed via path_deny receipts (postdiff_only
206
+ * until an adapter supports native deny). accept_risk MAY still deliver a
207
+ * violating patch (INV-111: the human is the final authority). */
208
+ denyPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
209
+ /** JSON Schema the run's final answer must conform to. MANDATORY when
210
+ * present: a selected lane that cannot natively constrain its output is a
211
+ * typed preflight refusal, never best-effort. The engine validates the
212
+ * winner's answer once, writes final/output.json, and reports a typed
213
+ * conformance receipt (outputConformance); a non-conformant answer ends
214
+ * success-with-warnings so the embedder can retry. Unsupported schema
215
+ * shapes ($ref, non-object root) are refused at the boundary. */
216
+ outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
217
+ /** Per-run turn cap; beats per-harness settings, and a lane without native
218
+ * max_turns support discloses the ignored knob instead of dropping it. */
219
+ maxTurns: z.ZodOptional<z.ZodNumber>;
186
220
  }, "strict", z.ZodTypeAny, {
187
221
  mode: "ask" | "plan" | "audit" | "agent" | "orchestrate";
188
222
  prompt: string;
@@ -196,8 +230,9 @@ export declare const ControlRunStartRequest: z.ZodObject<{
196
230
  execution: {
197
231
  isolation: "live" | "envelope";
198
232
  };
199
- access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
200
233
  web?: "off" | "auto" | "cached" | "live" | undefined;
234
+ instructions?: string | undefined;
235
+ access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
201
236
  attachments?: {
202
237
  resourceId: string;
203
238
  }[] | undefined;
@@ -248,12 +283,18 @@ export declare const ControlRunStartRequest: z.ZodObject<{
248
283
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
249
284
  }[] | undefined;
250
285
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
286
+ credentialProfileId?: string | null | undefined;
251
287
  maxToolCalls?: number | undefined;
288
+ maxSeconds?: number | undefined;
289
+ denyPaths?: string[] | undefined;
290
+ outputSchema?: Record<string, unknown> | undefined;
291
+ maxTurns?: number | undefined;
252
292
  }, {
293
+ web?: "off" | "auto" | "cached" | "live" | undefined;
294
+ instructions?: string | undefined;
253
295
  mode?: "ask" | "plan" | "audit" | "agent" | "orchestrate" | undefined;
254
296
  prompt?: string | undefined;
255
297
  access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
256
- web?: "off" | "auto" | "cached" | "live" | undefined;
257
298
  attachments?: {
258
299
  resourceId: string;
259
300
  }[] | undefined;
@@ -314,7 +355,12 @@ export declare const ControlRunStartRequest: z.ZodObject<{
314
355
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
315
356
  }[] | undefined;
316
357
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
358
+ credentialProfileId?: string | null | undefined;
317
359
  maxToolCalls?: number | undefined;
360
+ maxSeconds?: number | undefined;
361
+ denyPaths?: string[] | undefined;
362
+ outputSchema?: Record<string, unknown> | undefined;
363
+ maxTurns?: number | undefined;
318
364
  }>;
319
365
  export type ControlRunStartRequest = z.infer<typeof ControlRunStartRequest>;
320
366
  export declare const ControlRunStartInfo: z.ZodObject<{
@@ -357,6 +403,11 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
357
403
  sourceRunId: z.ZodString;
358
404
  request: z.ZodObject<{
359
405
  prompt: z.ZodDefault<z.ZodString>;
406
+ /** Caller-supplied system-level instructions layered onto every
407
+ * task-producing lane (primary, candidate, planner, explorer,
408
+ * orchestrate-planner) — never reviewers, synthesis, or the auth smoke.
409
+ * Scanned by the inline-secret fence like the prompt (INV-062). */
410
+ instructions: z.ZodOptional<z.ZodString>;
360
411
  /** Immutable daemon resource ids; upload/finalize happens before enqueue. */
361
412
  attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
362
413
  resourceId: z.ZodString;
@@ -505,6 +556,10 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
505
556
  }>, "many">>;
506
557
  /** Per-run auth route override (subscription/api_key/auto). */
507
558
  authPreference: z.ZodOptional<z.ZodEnum<["subscription", "api_key", "auto"]>>;
559
+ /** Explicit per-run credential profile (INV-135); resolved against the
560
+ * durable registry by the engine — an unknown/disabled/mismatched id is a
561
+ * typed refusal, never a silent default. */
562
+ credentialProfileId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
508
563
  /** How much the orchestrate planner may act without confirmation
509
564
  * (suggest/auto_safe/auto_full). Only meaningful for mode=orchestrate;
510
565
  * consumed by the executor in runOrchestrate. */
@@ -512,6 +567,31 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
512
567
  /** Orchestrate executor: cap on plan tool calls. Only meaningful for
513
568
  * mode=orchestrate; consumed by executeOrchestratePlan. */
514
569
  maxToolCalls: z.ZodOptional<z.ZodNumber>;
570
+ /** Hard wall-clock deadline for the WHOLE run, measured from scheduler
571
+ * start. On expiry the run is cooperatively cancelled (hard-kill fallback)
572
+ * and ends `cancelled` with reason `wall_clock_exceeded`, preserving partial
573
+ * artifacts. Distinct from the inactivity watchdog (per-attempt silence). */
574
+ maxSeconds: z.ZodOptional<z.ZodNumber>;
575
+ /** Per-run globs no candidate may touch at all (create/modify/delete).
576
+ * Envelope/isolated runs only: enforced by the engine's authoritative
577
+ * post-diff policy gate (violation → blocking finding → blocked, patch
578
+ * undelivered); an in-place run with denyPaths is refused at preflight
579
+ * because a live tree cannot guarantee pre-delivery containment. Native
580
+ * per-lane enforcement is disclosed via path_deny receipts (postdiff_only
581
+ * until an adapter supports native deny). accept_risk MAY still deliver a
582
+ * violating patch (INV-111: the human is the final authority). */
583
+ denyPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
584
+ /** JSON Schema the run's final answer must conform to. MANDATORY when
585
+ * present: a selected lane that cannot natively constrain its output is a
586
+ * typed preflight refusal, never best-effort. The engine validates the
587
+ * winner's answer once, writes final/output.json, and reports a typed
588
+ * conformance receipt (outputConformance); a non-conformant answer ends
589
+ * success-with-warnings so the embedder can retry. Unsupported schema
590
+ * shapes ($ref, non-object root) are refused at the boundary. */
591
+ outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
592
+ /** Per-run turn cap; beats per-harness settings, and a lane without native
593
+ * max_turns support discloses the ignored knob instead of dropping it. */
594
+ maxTurns: z.ZodOptional<z.ZodNumber>;
515
595
  }, "strict", z.ZodTypeAny, {
516
596
  mode: "ask" | "plan" | "audit" | "agent" | "orchestrate";
517
597
  prompt: string;
@@ -525,8 +605,9 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
525
605
  execution: {
526
606
  isolation: "live" | "envelope";
527
607
  };
528
- access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
529
608
  web?: "off" | "auto" | "cached" | "live" | undefined;
609
+ instructions?: string | undefined;
610
+ access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
530
611
  attachments?: {
531
612
  resourceId: string;
532
613
  }[] | undefined;
@@ -577,12 +658,18 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
577
658
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
578
659
  }[] | undefined;
579
660
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
661
+ credentialProfileId?: string | null | undefined;
580
662
  maxToolCalls?: number | undefined;
663
+ maxSeconds?: number | undefined;
664
+ denyPaths?: string[] | undefined;
665
+ outputSchema?: Record<string, unknown> | undefined;
666
+ maxTurns?: number | undefined;
581
667
  }, {
668
+ web?: "off" | "auto" | "cached" | "live" | undefined;
669
+ instructions?: string | undefined;
582
670
  mode?: "ask" | "plan" | "audit" | "agent" | "orchestrate" | undefined;
583
671
  prompt?: string | undefined;
584
672
  access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
585
- web?: "off" | "auto" | "cached" | "live" | undefined;
586
673
  attachments?: {
587
674
  resourceId: string;
588
675
  }[] | undefined;
@@ -643,7 +730,12 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
643
730
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
644
731
  }[] | undefined;
645
732
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
733
+ credentialProfileId?: string | null | undefined;
646
734
  maxToolCalls?: number | undefined;
735
+ maxSeconds?: number | undefined;
736
+ denyPaths?: string[] | undefined;
737
+ outputSchema?: Record<string, unknown> | undefined;
738
+ maxTurns?: number | undefined;
647
739
  }>;
648
740
  differences: z.ZodDefault<z.ZodArray<z.ZodObject<{
649
741
  field: z.ZodString;
@@ -673,8 +765,9 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
673
765
  execution: {
674
766
  isolation: "live" | "envelope";
675
767
  };
676
- access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
677
768
  web?: "off" | "auto" | "cached" | "live" | undefined;
769
+ instructions?: string | undefined;
770
+ access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
678
771
  attachments?: {
679
772
  resourceId: string;
680
773
  }[] | undefined;
@@ -725,7 +818,12 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
725
818
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
726
819
  }[] | undefined;
727
820
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
821
+ credentialProfileId?: string | null | undefined;
728
822
  maxToolCalls?: number | undefined;
823
+ maxSeconds?: number | undefined;
824
+ denyPaths?: string[] | undefined;
825
+ outputSchema?: Record<string, unknown> | undefined;
826
+ maxTurns?: number | undefined;
729
827
  };
730
828
  differences: {
731
829
  reason: string;
@@ -735,10 +833,11 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
735
833
  }, {
736
834
  sourceRunId: string;
737
835
  request: {
836
+ web?: "off" | "auto" | "cached" | "live" | undefined;
837
+ instructions?: string | undefined;
738
838
  mode?: "ask" | "plan" | "audit" | "agent" | "orchestrate" | undefined;
739
839
  prompt?: string | undefined;
740
840
  access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
741
- web?: "off" | "auto" | "cached" | "live" | undefined;
742
841
  attachments?: {
743
842
  resourceId: string;
744
843
  }[] | undefined;
@@ -799,7 +898,12 @@ export declare const ControlRunAgainDraft: z.ZodObject<{
799
898
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
800
899
  }[] | undefined;
801
900
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
901
+ credentialProfileId?: string | null | undefined;
802
902
  maxToolCalls?: number | undefined;
903
+ maxSeconds?: number | undefined;
904
+ denyPaths?: string[] | undefined;
905
+ outputSchema?: Record<string, unknown> | undefined;
906
+ maxTurns?: number | undefined;
803
907
  };
804
908
  differences?: {
805
909
  reason: string;
@@ -893,8 +997,8 @@ export declare const ControlWebEvidence: z.ZodObject<{
893
997
  }, "strip", z.ZodTypeAny, {
894
998
  status: "failed" | "none" | "attempted" | "satisfied" | "unverified";
895
999
  available: boolean;
896
- mode: "off" | "auto" | "cached" | "live";
897
1000
  target: string | null;
1001
+ mode: "off" | "auto" | "cached" | "live";
898
1002
  tool: string | null;
899
1003
  required: boolean;
900
1004
  attempted: boolean;
@@ -905,8 +1009,8 @@ export declare const ControlWebEvidence: z.ZodObject<{
905
1009
  }, {
906
1010
  status?: "failed" | "none" | "attempted" | "satisfied" | "unverified" | undefined;
907
1011
  available?: boolean | undefined;
908
- mode?: "off" | "auto" | "cached" | "live" | undefined;
909
1012
  target?: string | null | undefined;
1013
+ mode?: "off" | "auto" | "cached" | "live" | undefined;
910
1014
  tool?: string | null | undefined;
911
1015
  required?: boolean | undefined;
912
1016
  attempted?: boolean | undefined;
@@ -1117,6 +1221,63 @@ export declare const ControlRunSummary: z.ZodObject<{
1117
1221
  }>]>>;
1118
1222
  spendUsd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1119
1223
  spendEstimated: z.ZodOptional<z.ZodBoolean>;
1224
+ /** Token usage summed across every attempt (money stays in spendUsd). Each
1225
+ * field null until a harness reported it — never render null as 0, and never
1226
+ * sum into a grand total (codex cached ⊆ input; claude cached disjoint). */
1227
+ inputTokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1228
+ outputTokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1229
+ cachedInputTokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1230
+ /** Typed conformance receipt for a run started with outputSchema: passed =
1231
+ * final/output.json conforms; failed = the answer was missing, unparsable,
1232
+ * or non-conformant (the run still ends success-with-warnings — the
1233
+ * embedder retries). Null when the run had no structured-output contract. */
1234
+ outputConformance: z.ZodOptional<z.ZodNullable<z.ZodEnum<["passed", "failed"]>>>;
1235
+ /** Auth ROUTE RECEIPT (INV-061 disclosure) projected verbatim from the
1236
+ * engine telemetry: requested preference, effective route/source the
1237
+ * deciding attempt disclosed, and a deterministic typed reason. Null on
1238
+ * runs whose telemetry predates the receipt. */
1239
+ authRoute: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1240
+ requested: z.ZodEnum<["subscription", "api_key", "auto"]>;
1241
+ effective: z.ZodDefault<z.ZodNullable<z.ZodEnum<["local_session", "api_key", "unknown"]>>>;
1242
+ source: z.ZodDefault<z.ZodNullable<z.ZodEnum<["native_session", "oauth_token_env", "api_key_env", "api_key_flag", "provider_auth_file", "none"]>>>;
1243
+ reason: z.ZodEnum<["as_requested", "native_first", "no_native_session_fallback", "requested_route_unavailable", "undisclosed"]>;
1244
+ harnessId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1245
+ attemptId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1246
+ /** Requested-vs-observed model mismatch on the deciding attempt; null
1247
+ * when they match or either side is unknown. */
1248
+ modelMismatch: z.ZodDefault<z.ZodNullable<z.ZodObject<{
1249
+ requested: z.ZodString;
1250
+ observed: z.ZodString;
1251
+ }, "strip", z.ZodTypeAny, {
1252
+ requested: string;
1253
+ observed: string;
1254
+ }, {
1255
+ requested: string;
1256
+ observed: string;
1257
+ }>>>;
1258
+ }, "strip", z.ZodTypeAny, {
1259
+ source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
1260
+ harnessId: string | null;
1261
+ requested: "auto" | "subscription" | "api_key";
1262
+ attemptId: string | null;
1263
+ effective: "unknown" | "api_key" | "local_session" | null;
1264
+ reason: "as_requested" | "native_first" | "no_native_session_fallback" | "requested_route_unavailable" | "undisclosed";
1265
+ modelMismatch: {
1266
+ requested: string;
1267
+ observed: string;
1268
+ } | null;
1269
+ }, {
1270
+ requested: "auto" | "subscription" | "api_key";
1271
+ reason: "as_requested" | "native_first" | "no_native_session_fallback" | "requested_route_unavailable" | "undisclosed";
1272
+ source?: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null | undefined;
1273
+ harnessId?: string | null | undefined;
1274
+ attemptId?: string | null | undefined;
1275
+ effective?: "unknown" | "api_key" | "local_session" | null | undefined;
1276
+ modelMismatch?: {
1277
+ requested: string;
1278
+ observed: string;
1279
+ } | null | undefined;
1280
+ }>>>;
1120
1281
  access: z.ZodOptional<z.ZodEnum<["readonly", "workspace_write", "full", "external_sandbox_full", "inherit_native"]>>;
1121
1282
  requestedAccess: z.ZodOptional<z.ZodEnum<["readonly", "workspace_write", "full", "external_sandbox_full", "inherit_native"]>>;
1122
1283
  effectiveAccess: z.ZodOptional<z.ZodEnum<["readonly", "workspace_write", "full", "external_sandbox_full", "inherit_native"]>>;
@@ -1141,8 +1302,8 @@ export declare const ControlRunSummary: z.ZodObject<{
1141
1302
  }, "strip", z.ZodTypeAny, {
1142
1303
  status: "failed" | "none" | "attempted" | "satisfied" | "unverified";
1143
1304
  available: boolean;
1144
- mode: "off" | "auto" | "cached" | "live";
1145
1305
  target: string | null;
1306
+ mode: "off" | "auto" | "cached" | "live";
1146
1307
  tool: string | null;
1147
1308
  required: boolean;
1148
1309
  attempted: boolean;
@@ -1153,8 +1314,8 @@ export declare const ControlRunSummary: z.ZodObject<{
1153
1314
  }, {
1154
1315
  status?: "failed" | "none" | "attempted" | "satisfied" | "unverified" | undefined;
1155
1316
  available?: boolean | undefined;
1156
- mode?: "off" | "auto" | "cached" | "live" | undefined;
1157
1317
  target?: string | null | undefined;
1318
+ mode?: "off" | "auto" | "cached" | "live" | undefined;
1158
1319
  tool?: string | null | undefined;
1159
1320
  required?: boolean | undefined;
1160
1321
  attempted?: boolean | undefined;
@@ -1164,28 +1325,28 @@ export declare const ControlRunSummary: z.ZodObject<{
1164
1325
  errorSummary?: string | null | undefined;
1165
1326
  }>>;
1166
1327
  requestRequirements: z.ZodDefault<z.ZodArray<z.ZodObject<{
1167
- capability: z.ZodLiteral<"browser">;
1328
+ capability: z.ZodEnum<["browser", "path_deny"]>;
1168
1329
  harness_id: z.ZodString;
1169
1330
  eligible: z.ZodBoolean;
1170
1331
  requested: z.ZodBoolean;
1171
1332
  effective: z.ZodBoolean;
1172
- reason: z.ZodEnum<["not_requested", "effective", "manifest_unsupported", "web_policy_off", "access_profile_incompatible"]>;
1333
+ reason: z.ZodEnum<["not_requested", "effective", "manifest_unsupported", "web_policy_off", "access_profile_incompatible", "postdiff_only"]>;
1173
1334
  evidence_refs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1174
1335
  }, "strip", z.ZodTypeAny, {
1175
1336
  requested: boolean;
1176
1337
  effective: boolean;
1177
- reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible";
1178
- evidence_refs: string[];
1179
1338
  harness_id: string;
1339
+ reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible" | "postdiff_only";
1340
+ evidence_refs: string[];
1180
1341
  eligible: boolean;
1181
- capability: "browser";
1342
+ capability: "browser" | "path_deny";
1182
1343
  }, {
1183
1344
  requested: boolean;
1184
1345
  effective: boolean;
1185
- reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible";
1186
1346
  harness_id: string;
1347
+ reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible" | "postdiff_only";
1187
1348
  eligible: boolean;
1188
- capability: "browser";
1349
+ capability: "browser" | "path_deny";
1189
1350
  evidence_refs?: string[] | undefined;
1190
1351
  }>, "many">>;
1191
1352
  toolPermissionPolicy: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -1315,8 +1476,8 @@ export declare const ControlRunSummary: z.ZodObject<{
1315
1476
  webEvidence: {
1316
1477
  status: "failed" | "none" | "attempted" | "satisfied" | "unverified";
1317
1478
  available: boolean;
1318
- mode: "off" | "auto" | "cached" | "live";
1319
1479
  target: string | null;
1480
+ mode: "off" | "auto" | "cached" | "live";
1320
1481
  tool: string | null;
1321
1482
  required: boolean;
1322
1483
  attempted: boolean;
@@ -1328,11 +1489,11 @@ export declare const ControlRunSummary: z.ZodObject<{
1328
1489
  requestRequirements: {
1329
1490
  requested: boolean;
1330
1491
  effective: boolean;
1331
- reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible";
1332
- evidence_refs: string[];
1333
1492
  harness_id: string;
1493
+ reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible" | "postdiff_only";
1494
+ evidence_refs: string[];
1334
1495
  eligible: boolean;
1335
- capability: "browser";
1496
+ capability: "browser" | "path_deny";
1336
1497
  }[];
1337
1498
  outputReadyState: "pending" | "finalizing" | "ready" | "diagnostic";
1338
1499
  toolWarningsTotal: number;
@@ -1359,11 +1520,11 @@ export declare const ControlRunSummary: z.ZodObject<{
1359
1520
  verified: boolean;
1360
1521
  } | null;
1361
1522
  startedAt?: string | undefined;
1523
+ error?: string | undefined;
1362
1524
  createdAt?: string | undefined;
1363
1525
  mode?: "ask" | "plan" | "audit" | "agent" | "orchestrate" | undefined;
1364
1526
  prompt?: string | undefined;
1365
1527
  access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
1366
- error?: string | undefined;
1367
1528
  harnesses?: string[] | undefined;
1368
1529
  runDir?: string | undefined;
1369
1530
  model?: string | undefined;
@@ -1398,6 +1559,22 @@ export declare const ControlRunSummary: z.ZodObject<{
1398
1559
  strategy?: "race" | "attempts" | "swarm" | "create" | "until_clean" | null | undefined;
1399
1560
  spendUsd?: number | null | undefined;
1400
1561
  spendEstimated?: boolean | undefined;
1562
+ inputTokens?: number | null | undefined;
1563
+ outputTokens?: number | null | undefined;
1564
+ cachedInputTokens?: number | null | undefined;
1565
+ outputConformance?: "passed" | "failed" | null | undefined;
1566
+ authRoute?: {
1567
+ source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
1568
+ harnessId: string | null;
1569
+ requested: "auto" | "subscription" | "api_key";
1570
+ attemptId: string | null;
1571
+ effective: "unknown" | "api_key" | "local_session" | null;
1572
+ reason: "as_requested" | "native_first" | "no_native_session_fallback" | "requested_route_unavailable" | "undisclosed";
1573
+ modelMismatch: {
1574
+ requested: string;
1575
+ observed: string;
1576
+ } | null;
1577
+ } | null | undefined;
1401
1578
  requestedAccess?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
1402
1579
  effectiveAccess?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
1403
1580
  webRequired?: boolean | undefined;
@@ -1409,11 +1586,11 @@ export declare const ControlRunSummary: z.ZodObject<{
1409
1586
  runId: string;
1410
1587
  jobId: string;
1411
1588
  startedAt?: string | undefined;
1589
+ error?: string | undefined;
1412
1590
  createdAt?: string | undefined;
1413
1591
  mode?: "ask" | "plan" | "audit" | "agent" | "orchestrate" | undefined;
1414
1592
  prompt?: string | undefined;
1415
1593
  access?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
1416
- error?: string | undefined;
1417
1594
  harnesses?: string[] | undefined;
1418
1595
  runDir?: string | undefined;
1419
1596
  model?: string | undefined;
@@ -1466,6 +1643,22 @@ export declare const ControlRunSummary: z.ZodObject<{
1466
1643
  strategy?: "race" | "attempts" | "swarm" | "create" | "until_clean" | null | undefined;
1467
1644
  spendUsd?: number | null | undefined;
1468
1645
  spendEstimated?: boolean | undefined;
1646
+ inputTokens?: number | null | undefined;
1647
+ outputTokens?: number | null | undefined;
1648
+ cachedInputTokens?: number | null | undefined;
1649
+ outputConformance?: "passed" | "failed" | null | undefined;
1650
+ authRoute?: {
1651
+ requested: "auto" | "subscription" | "api_key";
1652
+ reason: "as_requested" | "native_first" | "no_native_session_fallback" | "requested_route_unavailable" | "undisclosed";
1653
+ source?: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null | undefined;
1654
+ harnessId?: string | null | undefined;
1655
+ attemptId?: string | null | undefined;
1656
+ effective?: "unknown" | "api_key" | "local_session" | null | undefined;
1657
+ modelMismatch?: {
1658
+ requested: string;
1659
+ observed: string;
1660
+ } | null | undefined;
1661
+ } | null | undefined;
1469
1662
  requestedAccess?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
1470
1663
  effectiveAccess?: "readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native" | undefined;
1471
1664
  webRequired?: boolean | undefined;
@@ -1473,8 +1666,8 @@ export declare const ControlRunSummary: z.ZodObject<{
1473
1666
  webEvidence?: {
1474
1667
  status?: "failed" | "none" | "attempted" | "satisfied" | "unverified" | undefined;
1475
1668
  available?: boolean | undefined;
1476
- mode?: "off" | "auto" | "cached" | "live" | undefined;
1477
1669
  target?: string | null | undefined;
1670
+ mode?: "off" | "auto" | "cached" | "live" | undefined;
1478
1671
  tool?: string | null | undefined;
1479
1672
  required?: boolean | undefined;
1480
1673
  attempted?: boolean | undefined;
@@ -1486,10 +1679,10 @@ export declare const ControlRunSummary: z.ZodObject<{
1486
1679
  requestRequirements?: {
1487
1680
  requested: boolean;
1488
1681
  effective: boolean;
1489
- reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible";
1490
1682
  harness_id: string;
1683
+ reason: "effective" | "not_requested" | "manifest_unsupported" | "web_policy_off" | "access_profile_incompatible" | "postdiff_only";
1491
1684
  eligible: boolean;
1492
- capability: "browser";
1685
+ capability: "browser" | "path_deny";
1493
1686
  evidence_refs?: string[] | undefined;
1494
1687
  }[] | undefined;
1495
1688
  toolPermissionPolicy?: Record<string, unknown> | undefined;
@@ -1521,18 +1714,18 @@ export declare const ControlRunSummary: z.ZodObject<{
1521
1714
  }>;
1522
1715
  export type ControlRunSummary = z.infer<typeof ControlRunSummary>;
1523
1716
  export declare const ControlPrimaryOutput: z.ZodObject<{
1524
- kind: z.ZodEnum<["answer", "report", "plan", "summary", "patch", "diagnostic"]>;
1717
+ kind: z.ZodEnum<["answer", "report", "plan", "summary", "patch", "diagnostic", "structured_output"]>;
1525
1718
  path: z.ZodString;
1526
1719
  text: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1527
1720
  bytes: z.ZodOptional<z.ZodNumber>;
1528
1721
  }, "strip", z.ZodTypeAny, {
1529
1722
  path: string;
1530
- kind: "diagnostic" | "plan" | "summary" | "patch" | "answer" | "report";
1723
+ kind: "diagnostic" | "plan" | "summary" | "patch" | "answer" | "report" | "structured_output";
1531
1724
  text: string | null;
1532
1725
  bytes?: number | undefined;
1533
1726
  }, {
1534
1727
  path: string;
1535
- kind: "diagnostic" | "plan" | "summary" | "patch" | "answer" | "report";
1728
+ kind: "diagnostic" | "plan" | "summary" | "patch" | "answer" | "report" | "structured_output";
1536
1729
  bytes?: number | undefined;
1537
1730
  text?: string | null | undefined;
1538
1731
  }>;
@@ -1754,11 +1947,11 @@ export declare const ControlInteractionAnswerResponse: z.ZodObject<{
1754
1947
  status: z.ZodEnum<["delivered", "not_found", "already_resolved", "rejected"]>;
1755
1948
  message: z.ZodOptional<z.ZodString>;
1756
1949
  }, "strip", z.ZodTypeAny, {
1757
- status: "delivered" | "not_found" | "already_resolved" | "rejected";
1950
+ status: "rejected" | "delivered" | "not_found" | "already_resolved";
1758
1951
  accepted: boolean;
1759
1952
  message?: string | undefined;
1760
1953
  }, {
1761
- status: "delivered" | "not_found" | "already_resolved" | "rejected";
1954
+ status: "rejected" | "delivered" | "not_found" | "already_resolved";
1762
1955
  accepted: boolean;
1763
1956
  message?: string | undefined;
1764
1957
  }>;
@@ -1810,13 +2003,13 @@ export declare const RunControl: z.ZodObject<{
1810
2003
  reason?: string | undefined;
1811
2004
  }, {
1812
2005
  kind: "cancel";
1813
- reason?: string | undefined;
1814
2006
  target?: {
1815
2007
  harnessId?: string | undefined;
1816
2008
  attemptId?: string | undefined;
1817
2009
  sessionId?: string | undefined;
1818
2010
  requestId?: string | undefined;
1819
2011
  } | undefined;
2012
+ reason?: string | undefined;
1820
2013
  }>;
1821
2014
  export type RunControl = z.infer<typeof RunControl>;
1822
2015
  export declare const ControlRunControlRequest: z.ZodObject<{
@@ -1850,13 +2043,13 @@ export declare const ControlRunControlRequest: z.ZodObject<{
1850
2043
  reason?: string | undefined;
1851
2044
  }, {
1852
2045
  kind: "cancel";
1853
- reason?: string | undefined;
1854
2046
  target?: {
1855
2047
  harnessId?: string | undefined;
1856
2048
  attemptId?: string | undefined;
1857
2049
  sessionId?: string | undefined;
1858
2050
  requestId?: string | undefined;
1859
2051
  } | undefined;
2052
+ reason?: string | undefined;
1860
2053
  }>;
1861
2054
  }, "strip", z.ZodTypeAny, {
1862
2055
  control: {
@@ -1872,13 +2065,13 @@ export declare const ControlRunControlRequest: z.ZodObject<{
1872
2065
  }, {
1873
2066
  control: {
1874
2067
  kind: "cancel";
1875
- reason?: string | undefined;
1876
2068
  target?: {
1877
2069
  harnessId?: string | undefined;
1878
2070
  attemptId?: string | undefined;
1879
2071
  sessionId?: string | undefined;
1880
2072
  requestId?: string | undefined;
1881
2073
  } | undefined;
2074
+ reason?: string | undefined;
1882
2075
  };
1883
2076
  }>;
1884
2077
  export type ControlRunControlRequest = z.infer<typeof ControlRunControlRequest>;
@@ -1888,14 +2081,14 @@ export declare const ControlRunControlResponse: z.ZodObject<{
1888
2081
  runId: z.ZodOptional<z.ZodString>;
1889
2082
  message: z.ZodOptional<z.ZodString>;
1890
2083
  }, "strip", z.ZodTypeAny, {
1891
- status: "queued" | "applied" | "rejected" | "unsupported";
2084
+ status: "rejected" | "queued" | "applied" | "unsupported";
1892
2085
  accepted: boolean;
1893
2086
  message?: string | undefined;
1894
2087
  runId?: string | undefined;
1895
2088
  }, {
1896
2089
  accepted: boolean;
1897
2090
  message?: string | undefined;
1898
- status?: "queued" | "applied" | "rejected" | "unsupported" | undefined;
2091
+ status?: "rejected" | "queued" | "applied" | "unsupported" | undefined;
1899
2092
  runId?: string | undefined;
1900
2093
  }>;
1901
2094
  export type ControlRunControlResponse = z.infer<typeof ControlRunControlResponse>;
@@ -1970,24 +2163,24 @@ export declare const ControlApplyRequest: z.ZodObject<{
1970
2163
  branch: z.ZodOptional<z.ZodString>;
1971
2164
  message: z.ZodOptional<z.ZodString>;
1972
2165
  }, "strict", z.ZodTypeAny, {
1973
- mode: "apply" | "commit" | "branch" | "pr" | "artifact_only";
1974
2166
  target: {
1975
2167
  kind: "original_project";
1976
2168
  } | {
1977
2169
  kind: "project";
1978
2170
  root: string;
1979
2171
  };
2172
+ mode: "apply" | "commit" | "branch" | "pr" | "artifact_only";
1980
2173
  message?: string | undefined;
1981
2174
  branch?: string | undefined;
1982
2175
  }, {
1983
2176
  message?: string | undefined;
1984
- mode?: "apply" | "commit" | "branch" | "pr" | "artifact_only" | undefined;
1985
2177
  target?: {
1986
2178
  kind: "original_project";
1987
2179
  } | {
1988
2180
  kind: "project";
1989
2181
  root: string;
1990
2182
  } | undefined;
2183
+ mode?: "apply" | "commit" | "branch" | "pr" | "artifact_only" | undefined;
1991
2184
  branch?: string | undefined;
1992
2185
  }>;
1993
2186
  export type ControlApplyRequest = z.infer<typeof ControlApplyRequest>;
@@ -2057,12 +2250,12 @@ export declare const ControlRunDecisionResponse: z.ZodObject<{
2057
2250
  newRunId: z.ZodOptional<z.ZodString>;
2058
2251
  message: z.ZodOptional<z.ZodString>;
2059
2252
  }, "strip", z.ZodTypeAny, {
2060
- status: "applied" | "rejected" | "unsupported" | "requeued";
2253
+ status: "rejected" | "applied" | "unsupported" | "requeued";
2061
2254
  accepted: boolean;
2062
2255
  message?: string | undefined;
2063
2256
  newRunId?: string | undefined;
2064
2257
  }, {
2065
- status: "applied" | "rejected" | "unsupported" | "requeued";
2258
+ status: "rejected" | "applied" | "unsupported" | "requeued";
2066
2259
  accepted: boolean;
2067
2260
  message?: string | undefined;
2068
2261
  newRunId?: string | undefined;
@@ -2079,6 +2272,9 @@ export declare const ControlThread: z.ZodObject<{
2079
2272
  primaryHarness: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2080
2273
  /** Sticky eligible pool for the thread (empty => engine auto-pools). */
2081
2274
  eligibleHarnesses: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2275
+ /** Sticky credential profile (INV-135): clients can SET it via
2276
+ * create/PATCH, so the projection must report it back (round-15 #3). */
2277
+ credentialProfileId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2082
2278
  state: z.ZodDefault<z.ZodEnum<["active", "closed", "trashed", "purged"]>>;
2083
2279
  trashedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2084
2280
  purgeAfter: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2095,6 +2291,7 @@ export declare const ControlThread: z.ZodObject<{
2095
2291
  title: string | null;
2096
2292
  primaryHarness: string | null;
2097
2293
  authPreference: "auto" | "subscription" | "api_key";
2294
+ credentialProfileId: string | null;
2098
2295
  repoRoot: string | null;
2099
2296
  workspaceMode: "in_place" | "isolated";
2100
2297
  eligibleHarnesses: string[];
@@ -2114,6 +2311,7 @@ export declare const ControlThread: z.ZodObject<{
2114
2311
  title?: string | null | undefined;
2115
2312
  primaryHarness?: string | null | undefined;
2116
2313
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
2314
+ credentialProfileId?: string | null | undefined;
2117
2315
  repoRoot?: string | null | undefined;
2118
2316
  workspaceMode?: "in_place" | "isolated" | undefined;
2119
2317
  eligibleHarnesses?: string[] | undefined;
@@ -2130,10 +2328,15 @@ export declare const ControlSession: z.ZodObject<{
2130
2328
  harnessId: z.ZodString;
2131
2329
  nativeSessionId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2132
2330
  observedModel: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2331
+ /** Credential profile the vendor session was created under (INV-135):
2332
+ * resume never crosses profiles, so clients must be able to SEE the
2333
+ * binding they are subject to (round-15 #3). */
2334
+ profileId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2133
2335
  state: z.ZodDefault<z.ZodEnum<["live", "stale", "rebound"]>>;
2134
2336
  }, "strip", z.ZodTypeAny, {
2135
2337
  harnessId: string;
2136
2338
  state: "live" | "stale" | "rebound";
2339
+ profileId: string | null;
2137
2340
  id: string;
2138
2341
  threadId: string;
2139
2342
  observedModel: string | null;
@@ -2143,6 +2346,7 @@ export declare const ControlSession: z.ZodObject<{
2143
2346
  id: string;
2144
2347
  threadId: string;
2145
2348
  state?: "live" | "stale" | "rebound" | undefined;
2349
+ profileId?: string | null | undefined;
2146
2350
  observedModel?: string | null | undefined;
2147
2351
  nativeSessionId?: string | null | undefined;
2148
2352
  }>;
@@ -2521,6 +2725,7 @@ export declare const ControlThreadCreateRequest: z.ZodObject<{
2521
2725
  mode: z.ZodOptional<z.ZodEnum<["ask", "plan", "audit", "agent", "orchestrate"]>>;
2522
2726
  workspace: z.ZodOptional<z.ZodEnum<["in_place", "isolated"]>>;
2523
2727
  authPreference: z.ZodOptional<z.ZodEnum<["subscription", "api_key", "auto"]>>;
2728
+ credentialProfileId: z.ZodOptional<z.ZodString>;
2524
2729
  primaryHarness: z.ZodOptional<z.ZodString>;
2525
2730
  /** Sticky eligible pool for the thread; turns inherit it when unset. */
2526
2731
  eligibleHarnesses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -2537,6 +2742,7 @@ export declare const ControlThreadCreateRequest: z.ZodObject<{
2537
2742
  title?: string | undefined;
2538
2743
  primaryHarness?: string | undefined;
2539
2744
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
2745
+ credentialProfileId?: string | undefined;
2540
2746
  eligibleHarnesses?: string[] | undefined;
2541
2747
  }, {
2542
2748
  workspace?: "in_place" | "isolated" | undefined;
@@ -2551,6 +2757,7 @@ export declare const ControlThreadCreateRequest: z.ZodObject<{
2551
2757
  } | undefined;
2552
2758
  primaryHarness?: string | undefined;
2553
2759
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
2760
+ credentialProfileId?: string | undefined;
2554
2761
  eligibleHarnesses?: string[] | undefined;
2555
2762
  }>;
2556
2763
  export type ControlThreadCreateRequest = z.infer<typeof ControlThreadCreateRequest>;
@@ -2560,16 +2767,19 @@ export declare const ControlThreadUpdateRequest: z.ZodObject<{
2560
2767
  title: z.ZodOptional<z.ZodString>;
2561
2768
  state: z.ZodOptional<z.ZodEnum<["active", "closed"]>>;
2562
2769
  primaryHarness: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2770
+ credentialProfileId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2563
2771
  eligibleHarnesses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2564
2772
  }, "strict", z.ZodTypeAny, {
2565
2773
  state?: "active" | "closed" | undefined;
2566
2774
  title?: string | undefined;
2567
2775
  primaryHarness?: string | null | undefined;
2776
+ credentialProfileId?: string | null | undefined;
2568
2777
  eligibleHarnesses?: string[] | undefined;
2569
2778
  }, {
2570
2779
  state?: "active" | "closed" | undefined;
2571
2780
  title?: string | undefined;
2572
2781
  primaryHarness?: string | null | undefined;
2782
+ credentialProfileId?: string | null | undefined;
2573
2783
  eligibleHarnesses?: string[] | undefined;
2574
2784
  }>;
2575
2785
  export type ControlThreadUpdateRequest = z.infer<typeof ControlThreadUpdateRequest>;
@@ -2585,6 +2795,9 @@ export declare const ControlThreadListResponse: z.ZodObject<{
2585
2795
  primaryHarness: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2586
2796
  /** Sticky eligible pool for the thread (empty => engine auto-pools). */
2587
2797
  eligibleHarnesses: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2798
+ /** Sticky credential profile (INV-135): clients can SET it via
2799
+ * create/PATCH, so the projection must report it back (round-15 #3). */
2800
+ credentialProfileId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2588
2801
  state: z.ZodDefault<z.ZodEnum<["active", "closed", "trashed", "purged"]>>;
2589
2802
  trashedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2590
2803
  purgeAfter: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2601,6 +2814,7 @@ export declare const ControlThreadListResponse: z.ZodObject<{
2601
2814
  title: string | null;
2602
2815
  primaryHarness: string | null;
2603
2816
  authPreference: "auto" | "subscription" | "api_key";
2817
+ credentialProfileId: string | null;
2604
2818
  repoRoot: string | null;
2605
2819
  workspaceMode: "in_place" | "isolated";
2606
2820
  eligibleHarnesses: string[];
@@ -2620,6 +2834,7 @@ export declare const ControlThreadListResponse: z.ZodObject<{
2620
2834
  title?: string | null | undefined;
2621
2835
  primaryHarness?: string | null | undefined;
2622
2836
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
2837
+ credentialProfileId?: string | null | undefined;
2623
2838
  repoRoot?: string | null | undefined;
2624
2839
  workspaceMode?: "in_place" | "isolated" | undefined;
2625
2840
  eligibleHarnesses?: string[] | undefined;
@@ -2637,6 +2852,7 @@ export declare const ControlThreadListResponse: z.ZodObject<{
2637
2852
  title: string | null;
2638
2853
  primaryHarness: string | null;
2639
2854
  authPreference: "auto" | "subscription" | "api_key";
2855
+ credentialProfileId: string | null;
2640
2856
  repoRoot: string | null;
2641
2857
  workspaceMode: "in_place" | "isolated";
2642
2858
  eligibleHarnesses: string[];
@@ -2658,6 +2874,7 @@ export declare const ControlThreadListResponse: z.ZodObject<{
2658
2874
  title?: string | null | undefined;
2659
2875
  primaryHarness?: string | null | undefined;
2660
2876
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
2877
+ credentialProfileId?: string | null | undefined;
2661
2878
  repoRoot?: string | null | undefined;
2662
2879
  workspaceMode?: "in_place" | "isolated" | undefined;
2663
2880
  eligibleHarnesses?: string[] | undefined;
@@ -2681,6 +2898,9 @@ export declare const ControlThreadDetail: z.ZodObject<{
2681
2898
  primaryHarness: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2682
2899
  /** Sticky eligible pool for the thread (empty => engine auto-pools). */
2683
2900
  eligibleHarnesses: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
2901
+ /** Sticky credential profile (INV-135): clients can SET it via
2902
+ * create/PATCH, so the projection must report it back (round-15 #3). */
2903
+ credentialProfileId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2684
2904
  state: z.ZodDefault<z.ZodEnum<["active", "closed", "trashed", "purged"]>>;
2685
2905
  trashedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2686
2906
  purgeAfter: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -2697,6 +2917,7 @@ export declare const ControlThreadDetail: z.ZodObject<{
2697
2917
  title: string | null;
2698
2918
  primaryHarness: string | null;
2699
2919
  authPreference: "auto" | "subscription" | "api_key";
2920
+ credentialProfileId: string | null;
2700
2921
  repoRoot: string | null;
2701
2922
  workspaceMode: "in_place" | "isolated";
2702
2923
  eligibleHarnesses: string[];
@@ -2716,6 +2937,7 @@ export declare const ControlThreadDetail: z.ZodObject<{
2716
2937
  title?: string | null | undefined;
2717
2938
  primaryHarness?: string | null | undefined;
2718
2939
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
2940
+ credentialProfileId?: string | null | undefined;
2719
2941
  repoRoot?: string | null | undefined;
2720
2942
  workspaceMode?: "in_place" | "isolated" | undefined;
2721
2943
  eligibleHarnesses?: string[] | undefined;
@@ -2731,10 +2953,15 @@ export declare const ControlThreadDetail: z.ZodObject<{
2731
2953
  harnessId: z.ZodString;
2732
2954
  nativeSessionId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2733
2955
  observedModel: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2956
+ /** Credential profile the vendor session was created under (INV-135):
2957
+ * resume never crosses profiles, so clients must be able to SEE the
2958
+ * binding they are subject to (round-15 #3). */
2959
+ profileId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2734
2960
  state: z.ZodDefault<z.ZodEnum<["live", "stale", "rebound"]>>;
2735
2961
  }, "strip", z.ZodTypeAny, {
2736
2962
  harnessId: string;
2737
2963
  state: "live" | "stale" | "rebound";
2964
+ profileId: string | null;
2738
2965
  id: string;
2739
2966
  threadId: string;
2740
2967
  observedModel: string | null;
@@ -2744,6 +2971,7 @@ export declare const ControlThreadDetail: z.ZodObject<{
2744
2971
  id: string;
2745
2972
  threadId: string;
2746
2973
  state?: "live" | "stale" | "rebound" | undefined;
2974
+ profileId?: string | null | undefined;
2747
2975
  observedModel?: string | null | undefined;
2748
2976
  nativeSessionId?: string | null | undefined;
2749
2977
  }>, "many">>;
@@ -2984,6 +3212,7 @@ export declare const ControlThreadDetail: z.ZodObject<{
2984
3212
  title: string | null;
2985
3213
  primaryHarness: string | null;
2986
3214
  authPreference: "auto" | "subscription" | "api_key";
3215
+ credentialProfileId: string | null;
2987
3216
  repoRoot: string | null;
2988
3217
  workspaceMode: "in_place" | "isolated";
2989
3218
  eligibleHarnesses: string[];
@@ -2998,6 +3227,7 @@ export declare const ControlThreadDetail: z.ZodObject<{
2998
3227
  sessions: {
2999
3228
  harnessId: string;
3000
3229
  state: "live" | "stale" | "rebound";
3230
+ profileId: string | null;
3001
3231
  id: string;
3002
3232
  threadId: string;
3003
3233
  observedModel: string | null;
@@ -3054,6 +3284,7 @@ export declare const ControlThreadDetail: z.ZodObject<{
3054
3284
  title?: string | null | undefined;
3055
3285
  primaryHarness?: string | null | undefined;
3056
3286
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
3287
+ credentialProfileId?: string | null | undefined;
3057
3288
  repoRoot?: string | null | undefined;
3058
3289
  workspaceMode?: "in_place" | "isolated" | undefined;
3059
3290
  eligibleHarnesses?: string[] | undefined;
@@ -3068,6 +3299,7 @@ export declare const ControlThreadDetail: z.ZodObject<{
3068
3299
  id: string;
3069
3300
  threadId: string;
3070
3301
  state?: "live" | "stale" | "rebound" | undefined;
3302
+ profileId?: string | null | undefined;
3071
3303
  observedModel?: string | null | undefined;
3072
3304
  nativeSessionId?: string | null | undefined;
3073
3305
  }[] | undefined;
@@ -3114,503 +3346,6 @@ export declare const ControlThreadDetail: z.ZodObject<{
3114
3346
  }[] | undefined;
3115
3347
  }>;
3116
3348
  export type ControlThreadDetail = z.infer<typeof ControlThreadDetail>;
3117
- export declare const HarnessStatusDto: z.ZodObject<{
3118
- id: z.ZodString;
3119
- status: z.ZodEnum<["ok", "degraded", "unavailable"]>;
3120
- manifest: z.ZodOptional<z.ZodNullable<z.ZodObject<{
3121
- id: z.ZodString;
3122
- display_name: z.ZodString;
3123
- kind: z.ZodEnum<["local_cli", "remote_api", "fake"]>;
3124
- version: z.ZodOptional<z.ZodString>;
3125
- adapter_version: z.ZodOptional<z.ZodString>;
3126
- provider_family: z.ZodDefault<z.ZodEnum<["openai", "anthropic", "google", "cursor", "opencode", "xai", "local", "unknown"]>>;
3127
- capability_profile: z.ZodDefault<z.ZodObject<{
3128
- auth: z.ZodDefault<z.ZodObject<{
3129
- supported_sources: z.ZodDefault<z.ZodArray<z.ZodEnum<["native_session", "oauth_token_env", "api_key_env", "api_key_flag", "provider_auth_file", "none"]>, "many">>;
3130
- preferred_source: z.ZodDefault<z.ZodNullable<z.ZodEnum<["native_session", "oauth_token_env", "api_key_env", "api_key_flag", "provider_auth_file", "none"]>>>;
3131
- credential_transports: z.ZodDefault<z.ZodArray<z.ZodObject<{
3132
- source: z.ZodEnum<["native_session", "oauth_token_env", "api_key_env", "api_key_flag", "provider_auth_file", "none"]>;
3133
- kind: z.ZodEnum<["config_file", "env_var", "oauth_token_env", "os_keychain", "http_header", "none"]>;
3134
- relocatable_by: z.ZodDefault<z.ZodArray<z.ZodEnum<["HOME", "CONFIG_DIR", "ENV", "none"]>, "many">>;
3135
- }, "strip", z.ZodTypeAny, {
3136
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3137
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3138
- relocatable_by: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[];
3139
- }, {
3140
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3141
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3142
- relocatable_by?: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[] | undefined;
3143
- }>, "many">>;
3144
- }, "strip", z.ZodTypeAny, {
3145
- supported_sources: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[];
3146
- preferred_source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
3147
- credential_transports: {
3148
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3149
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3150
- relocatable_by: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[];
3151
- }[];
3152
- }, {
3153
- supported_sources?: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[] | undefined;
3154
- preferred_source?: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null | undefined;
3155
- credential_transports?: {
3156
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3157
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3158
- relocatable_by?: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[] | undefined;
3159
- }[] | undefined;
3160
- }>>;
3161
- access_control: z.ZodDefault<z.ZodObject<{
3162
- readonly_mechanism: z.ZodDefault<z.ZodEnum<["fs_sandbox", "permission_deny", "tool_allowlist", "none"]>>;
3163
- }, "strip", z.ZodTypeAny, {
3164
- readonly_mechanism: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist";
3165
- }, {
3166
- readonly_mechanism?: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist" | undefined;
3167
- }>>;
3168
- isolation: z.ZodDefault<z.ZodObject<{
3169
- supported_containment: z.ZodDefault<z.ZodArray<z.ZodEnum<["env_or_file_injection", "scoped_home_keychain_bridge", "host_user_context", "process_sandbox", "container"]>, "many">>;
3170
- }, "strip", z.ZodTypeAny, {
3171
- supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
3172
- }, {
3173
- supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
3174
- }>>;
3175
- attachment_inputs: z.ZodDefault<z.ZodArray<z.ZodObject<{
3176
- kind: z.ZodEnum<["image", "file"]>;
3177
- mime_types: z.ZodArray<z.ZodString, "many">;
3178
- max_bytes: z.ZodNumber;
3179
- max_count: z.ZodNumber;
3180
- transport: z.ZodEnum<["file_path", "base64_stream", "base64_inline", "text_inline"]>;
3181
- }, "strict", z.ZodTypeAny, {
3182
- kind: "image" | "file";
3183
- mime_types: string[];
3184
- max_bytes: number;
3185
- max_count: number;
3186
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3187
- }, {
3188
- kind: "image" | "file";
3189
- mime_types: string[];
3190
- max_bytes: number;
3191
- max_count: number;
3192
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3193
- }>, "many">>;
3194
- }, "strip", z.ZodTypeAny, {
3195
- auth: {
3196
- supported_sources: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[];
3197
- preferred_source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
3198
- credential_transports: {
3199
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3200
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3201
- relocatable_by: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[];
3202
- }[];
3203
- };
3204
- access_control: {
3205
- readonly_mechanism: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist";
3206
- };
3207
- isolation: {
3208
- supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
3209
- };
3210
- attachment_inputs: {
3211
- kind: "image" | "file";
3212
- mime_types: string[];
3213
- max_bytes: number;
3214
- max_count: number;
3215
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3216
- }[];
3217
- }, {
3218
- auth?: {
3219
- supported_sources?: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[] | undefined;
3220
- preferred_source?: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null | undefined;
3221
- credential_transports?: {
3222
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3223
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3224
- relocatable_by?: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[] | undefined;
3225
- }[] | undefined;
3226
- } | undefined;
3227
- access_control?: {
3228
- readonly_mechanism?: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist" | undefined;
3229
- } | undefined;
3230
- isolation?: {
3231
- supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
3232
- } | undefined;
3233
- attachment_inputs?: {
3234
- kind: "image" | "file";
3235
- mime_types: string[];
3236
- max_bytes: number;
3237
- max_count: number;
3238
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3239
- }[] | undefined;
3240
- }>>;
3241
- capabilities: z.ZodObject<{
3242
- plan: z.ZodDefault<z.ZodBoolean>;
3243
- implement: z.ZodDefault<z.ZodBoolean>;
3244
- implementation_transport: z.ZodDefault<z.ZodEnum<["workspace", "git_patch_envelope"]>>;
3245
- create_from_scratch: z.ZodDefault<z.ZodBoolean>;
3246
- review: z.ZodDefault<z.ZodBoolean>;
3247
- verify: z.ZodDefault<z.ZodBoolean>;
3248
- synthesize: z.ZodDefault<z.ZodBoolean>;
3249
- read_files: z.ZodDefault<z.ZodBoolean>;
3250
- browser_tool: z.ZodDefault<z.ZodBoolean>;
3251
- web_policy: z.ZodDefault<z.ZodEnum<["native", "tools", "uncontrolled", "none"]>>;
3252
- max_turns: z.ZodDefault<z.ZodBoolean>;
3253
- tool_lists: z.ZodDefault<z.ZodBoolean>;
3254
- interactive: z.ZodDefault<z.ZodBoolean>;
3255
- orchestrate: z.ZodDefault<z.ZodBoolean>;
3256
- json_schema_output: z.ZodDefault<z.ZodBoolean>;
3257
- effort_levels: z.ZodDefault<z.ZodArray<z.ZodEnum<["low", "medium", "high", "xhigh", "max"]>, "many">>;
3258
- known_models: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3259
- known_models_verified_against: z.ZodDefault<z.ZodNullable<z.ZodString>>;
3260
- }, "strip", z.ZodTypeAny, {
3261
- plan: boolean;
3262
- orchestrate: boolean;
3263
- implement: boolean;
3264
- create_from_scratch: boolean;
3265
- review: boolean;
3266
- verify: boolean;
3267
- synthesize: boolean;
3268
- implementation_transport: "workspace" | "git_patch_envelope";
3269
- read_files: boolean;
3270
- browser_tool: boolean;
3271
- web_policy: "none" | "native" | "tools" | "uncontrolled";
3272
- max_turns: boolean;
3273
- tool_lists: boolean;
3274
- interactive: boolean;
3275
- json_schema_output: boolean;
3276
- effort_levels: ("low" | "medium" | "high" | "xhigh" | "max")[];
3277
- known_models: string[];
3278
- known_models_verified_against: string | null;
3279
- }, {
3280
- plan?: boolean | undefined;
3281
- orchestrate?: boolean | undefined;
3282
- implement?: boolean | undefined;
3283
- create_from_scratch?: boolean | undefined;
3284
- review?: boolean | undefined;
3285
- verify?: boolean | undefined;
3286
- synthesize?: boolean | undefined;
3287
- implementation_transport?: "workspace" | "git_patch_envelope" | undefined;
3288
- read_files?: boolean | undefined;
3289
- browser_tool?: boolean | undefined;
3290
- web_policy?: "none" | "native" | "tools" | "uncontrolled" | undefined;
3291
- max_turns?: boolean | undefined;
3292
- tool_lists?: boolean | undefined;
3293
- interactive?: boolean | undefined;
3294
- json_schema_output?: boolean | undefined;
3295
- effort_levels?: ("low" | "medium" | "high" | "xhigh" | "max")[] | undefined;
3296
- known_models?: string[] | undefined;
3297
- known_models_verified_against?: string | null | undefined;
3298
- }>;
3299
- auth_modes: z.ZodDefault<z.ZodArray<z.ZodEnum<["local_session", "api_key", "none"]>, "many">>;
3300
- access_profiles_supported: z.ZodDefault<z.ZodArray<z.ZodEnum<["readonly", "workspace_write", "full", "external_sandbox_full", "inherit_native"]>, "many">>;
3301
- }, "strip", z.ZodTypeAny, {
3302
- kind: "local_cli" | "remote_api" | "fake";
3303
- id: string;
3304
- display_name: string;
3305
- provider_family: "openai" | "anthropic" | "google" | "cursor" | "opencode" | "xai" | "local" | "unknown";
3306
- capability_profile: {
3307
- auth: {
3308
- supported_sources: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[];
3309
- preferred_source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
3310
- credential_transports: {
3311
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3312
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3313
- relocatable_by: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[];
3314
- }[];
3315
- };
3316
- access_control: {
3317
- readonly_mechanism: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist";
3318
- };
3319
- isolation: {
3320
- supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
3321
- };
3322
- attachment_inputs: {
3323
- kind: "image" | "file";
3324
- mime_types: string[];
3325
- max_bytes: number;
3326
- max_count: number;
3327
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3328
- }[];
3329
- };
3330
- capabilities: {
3331
- plan: boolean;
3332
- orchestrate: boolean;
3333
- implement: boolean;
3334
- create_from_scratch: boolean;
3335
- review: boolean;
3336
- verify: boolean;
3337
- synthesize: boolean;
3338
- implementation_transport: "workspace" | "git_patch_envelope";
3339
- read_files: boolean;
3340
- browser_tool: boolean;
3341
- web_policy: "none" | "native" | "tools" | "uncontrolled";
3342
- max_turns: boolean;
3343
- tool_lists: boolean;
3344
- interactive: boolean;
3345
- json_schema_output: boolean;
3346
- effort_levels: ("low" | "medium" | "high" | "xhigh" | "max")[];
3347
- known_models: string[];
3348
- known_models_verified_against: string | null;
3349
- };
3350
- auth_modes: ("api_key" | "none" | "local_session")[];
3351
- access_profiles_supported: ("readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native")[];
3352
- version?: string | undefined;
3353
- adapter_version?: string | undefined;
3354
- }, {
3355
- kind: "local_cli" | "remote_api" | "fake";
3356
- id: string;
3357
- display_name: string;
3358
- capabilities: {
3359
- plan?: boolean | undefined;
3360
- orchestrate?: boolean | undefined;
3361
- implement?: boolean | undefined;
3362
- create_from_scratch?: boolean | undefined;
3363
- review?: boolean | undefined;
3364
- verify?: boolean | undefined;
3365
- synthesize?: boolean | undefined;
3366
- implementation_transport?: "workspace" | "git_patch_envelope" | undefined;
3367
- read_files?: boolean | undefined;
3368
- browser_tool?: boolean | undefined;
3369
- web_policy?: "none" | "native" | "tools" | "uncontrolled" | undefined;
3370
- max_turns?: boolean | undefined;
3371
- tool_lists?: boolean | undefined;
3372
- interactive?: boolean | undefined;
3373
- json_schema_output?: boolean | undefined;
3374
- effort_levels?: ("low" | "medium" | "high" | "xhigh" | "max")[] | undefined;
3375
- known_models?: string[] | undefined;
3376
- known_models_verified_against?: string | null | undefined;
3377
- };
3378
- version?: string | undefined;
3379
- adapter_version?: string | undefined;
3380
- provider_family?: "openai" | "anthropic" | "google" | "cursor" | "opencode" | "xai" | "local" | "unknown" | undefined;
3381
- capability_profile?: {
3382
- auth?: {
3383
- supported_sources?: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[] | undefined;
3384
- preferred_source?: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null | undefined;
3385
- credential_transports?: {
3386
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3387
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3388
- relocatable_by?: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[] | undefined;
3389
- }[] | undefined;
3390
- } | undefined;
3391
- access_control?: {
3392
- readonly_mechanism?: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist" | undefined;
3393
- } | undefined;
3394
- isolation?: {
3395
- supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
3396
- } | undefined;
3397
- attachment_inputs?: {
3398
- kind: "image" | "file";
3399
- mime_types: string[];
3400
- max_bytes: number;
3401
- max_count: number;
3402
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3403
- }[] | undefined;
3404
- } | undefined;
3405
- auth_modes?: ("api_key" | "none" | "local_session")[] | undefined;
3406
- access_profiles_supported?: ("readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native")[] | undefined;
3407
- }>>>;
3408
- enabledIntents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3409
- disabledIntents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3410
- checks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3411
- id: z.ZodString;
3412
- status: z.ZodEnum<["pass", "fail", "skip"]>;
3413
- detail: z.ZodOptional<z.ZodString>;
3414
- duration_ms: z.ZodOptional<z.ZodNumber>;
3415
- }, "strip", z.ZodTypeAny, {
3416
- status: "pass" | "fail" | "skip";
3417
- id: string;
3418
- detail?: string | undefined;
3419
- duration_ms?: number | undefined;
3420
- }, {
3421
- status: "pass" | "fail" | "skip";
3422
- id: string;
3423
- detail?: string | undefined;
3424
- duration_ms?: number | undefined;
3425
- }>, "many">>;
3426
- reasons: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3427
- authSources: z.ZodDefault<z.ZodArray<z.ZodObject<{
3428
- source: z.ZodEnum<["native_session", "oauth_token_env", "api_key_env", "api_key_flag", "provider_auth_file", "none"]>;
3429
- availability: z.ZodEnum<["available", "unavailable", "unknown"]>;
3430
- verification: z.ZodEnum<["passed", "failed", "not_run"]>;
3431
- detail: z.ZodOptional<z.ZodString>;
3432
- }, "strict", z.ZodTypeAny, {
3433
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3434
- availability: "unknown" | "available" | "unavailable";
3435
- verification: "passed" | "failed" | "not_run";
3436
- detail?: string | undefined;
3437
- }, {
3438
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3439
- availability: "unknown" | "available" | "unavailable";
3440
- verification: "passed" | "failed" | "not_run";
3441
- detail?: string | undefined;
3442
- }>, "many">>;
3443
- /** The user's configured per-harness default model, if any. */
3444
- configuredModel: z.ZodDefault<z.ZodNullable<z.ZodString>>;
3445
- /** Strict truth-source check of `configuredModel`: null when no model
3446
- * is configured; a rejection carries the actionable message so UIs render
3447
- * the same honesty `claudexor doctor` prints. */
3448
- configuredModelCheck: z.ZodDefault<z.ZodNullable<z.ZodObject<{
3449
- status: z.ZodEnum<["ok", "rejected"]>;
3450
- message: z.ZodDefault<z.ZodNullable<z.ZodString>>;
3451
- }, "strip", z.ZodTypeAny, {
3452
- message: string | null;
3453
- status: "ok" | "rejected";
3454
- }, {
3455
- status: "ok" | "rejected";
3456
- message?: string | null | undefined;
3457
- }>>>;
3458
- }, "strip", z.ZodTypeAny, {
3459
- status: "unavailable" | "ok" | "degraded";
3460
- id: string;
3461
- checks: {
3462
- status: "pass" | "fail" | "skip";
3463
- id: string;
3464
- detail?: string | undefined;
3465
- duration_ms?: number | undefined;
3466
- }[];
3467
- reasons: string[];
3468
- enabledIntents: string[];
3469
- disabledIntents: string[];
3470
- configuredModel: string | null;
3471
- authSources: {
3472
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3473
- availability: "unknown" | "available" | "unavailable";
3474
- verification: "passed" | "failed" | "not_run";
3475
- detail?: string | undefined;
3476
- }[];
3477
- configuredModelCheck: {
3478
- message: string | null;
3479
- status: "ok" | "rejected";
3480
- } | null;
3481
- manifest?: {
3482
- kind: "local_cli" | "remote_api" | "fake";
3483
- id: string;
3484
- display_name: string;
3485
- provider_family: "openai" | "anthropic" | "google" | "cursor" | "opencode" | "xai" | "local" | "unknown";
3486
- capability_profile: {
3487
- auth: {
3488
- supported_sources: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[];
3489
- preferred_source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
3490
- credential_transports: {
3491
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3492
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3493
- relocatable_by: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[];
3494
- }[];
3495
- };
3496
- access_control: {
3497
- readonly_mechanism: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist";
3498
- };
3499
- isolation: {
3500
- supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
3501
- };
3502
- attachment_inputs: {
3503
- kind: "image" | "file";
3504
- mime_types: string[];
3505
- max_bytes: number;
3506
- max_count: number;
3507
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3508
- }[];
3509
- };
3510
- capabilities: {
3511
- plan: boolean;
3512
- orchestrate: boolean;
3513
- implement: boolean;
3514
- create_from_scratch: boolean;
3515
- review: boolean;
3516
- verify: boolean;
3517
- synthesize: boolean;
3518
- implementation_transport: "workspace" | "git_patch_envelope";
3519
- read_files: boolean;
3520
- browser_tool: boolean;
3521
- web_policy: "none" | "native" | "tools" | "uncontrolled";
3522
- max_turns: boolean;
3523
- tool_lists: boolean;
3524
- interactive: boolean;
3525
- json_schema_output: boolean;
3526
- effort_levels: ("low" | "medium" | "high" | "xhigh" | "max")[];
3527
- known_models: string[];
3528
- known_models_verified_against: string | null;
3529
- };
3530
- auth_modes: ("api_key" | "none" | "local_session")[];
3531
- access_profiles_supported: ("readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native")[];
3532
- version?: string | undefined;
3533
- adapter_version?: string | undefined;
3534
- } | null | undefined;
3535
- }, {
3536
- status: "unavailable" | "ok" | "degraded";
3537
- id: string;
3538
- checks?: {
3539
- status: "pass" | "fail" | "skip";
3540
- id: string;
3541
- detail?: string | undefined;
3542
- duration_ms?: number | undefined;
3543
- }[] | undefined;
3544
- reasons?: string[] | undefined;
3545
- manifest?: {
3546
- kind: "local_cli" | "remote_api" | "fake";
3547
- id: string;
3548
- display_name: string;
3549
- capabilities: {
3550
- plan?: boolean | undefined;
3551
- orchestrate?: boolean | undefined;
3552
- implement?: boolean | undefined;
3553
- create_from_scratch?: boolean | undefined;
3554
- review?: boolean | undefined;
3555
- verify?: boolean | undefined;
3556
- synthesize?: boolean | undefined;
3557
- implementation_transport?: "workspace" | "git_patch_envelope" | undefined;
3558
- read_files?: boolean | undefined;
3559
- browser_tool?: boolean | undefined;
3560
- web_policy?: "none" | "native" | "tools" | "uncontrolled" | undefined;
3561
- max_turns?: boolean | undefined;
3562
- tool_lists?: boolean | undefined;
3563
- interactive?: boolean | undefined;
3564
- json_schema_output?: boolean | undefined;
3565
- effort_levels?: ("low" | "medium" | "high" | "xhigh" | "max")[] | undefined;
3566
- known_models?: string[] | undefined;
3567
- known_models_verified_against?: string | null | undefined;
3568
- };
3569
- version?: string | undefined;
3570
- adapter_version?: string | undefined;
3571
- provider_family?: "openai" | "anthropic" | "google" | "cursor" | "opencode" | "xai" | "local" | "unknown" | undefined;
3572
- capability_profile?: {
3573
- auth?: {
3574
- supported_sources?: ("native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none")[] | undefined;
3575
- preferred_source?: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null | undefined;
3576
- credential_transports?: {
3577
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3578
- kind: "oauth_token_env" | "none" | "config_file" | "env_var" | "os_keychain" | "http_header";
3579
- relocatable_by?: ("none" | "HOME" | "CONFIG_DIR" | "ENV")[] | undefined;
3580
- }[] | undefined;
3581
- } | undefined;
3582
- access_control?: {
3583
- readonly_mechanism?: "none" | "fs_sandbox" | "permission_deny" | "tool_allowlist" | undefined;
3584
- } | undefined;
3585
- isolation?: {
3586
- supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
3587
- } | undefined;
3588
- attachment_inputs?: {
3589
- kind: "image" | "file";
3590
- mime_types: string[];
3591
- max_bytes: number;
3592
- max_count: number;
3593
- transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3594
- }[] | undefined;
3595
- } | undefined;
3596
- auth_modes?: ("api_key" | "none" | "local_session")[] | undefined;
3597
- access_profiles_supported?: ("readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native")[] | undefined;
3598
- } | null | undefined;
3599
- enabledIntents?: string[] | undefined;
3600
- disabledIntents?: string[] | undefined;
3601
- configuredModel?: string | null | undefined;
3602
- authSources?: {
3603
- source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3604
- availability: "unknown" | "available" | "unavailable";
3605
- verification: "passed" | "failed" | "not_run";
3606
- detail?: string | undefined;
3607
- }[] | undefined;
3608
- configuredModelCheck?: {
3609
- status: "ok" | "rejected";
3610
- message?: string | null | undefined;
3611
- } | null | undefined;
3612
- }>;
3613
- export type HarnessStatusDto = z.infer<typeof HarnessStatusDto>;
3614
3349
  export declare const ControlHarnessListResponse: z.ZodObject<{
3615
3350
  harnesses: z.ZodDefault<z.ZodArray<z.ZodObject<{
3616
3351
  id: z.ZodString;
@@ -3677,13 +3412,13 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3677
3412
  max_count: z.ZodNumber;
3678
3413
  transport: z.ZodEnum<["file_path", "base64_stream", "base64_inline", "text_inline"]>;
3679
3414
  }, "strict", z.ZodTypeAny, {
3680
- kind: "image" | "file";
3415
+ kind: "file" | "image";
3681
3416
  mime_types: string[];
3682
3417
  max_bytes: number;
3683
3418
  max_count: number;
3684
3419
  transport: "file_path" | "base64_stream" | "base64_inline" | "text_inline";
3685
3420
  }, {
3686
- kind: "image" | "file";
3421
+ kind: "file" | "image";
3687
3422
  mime_types: string[];
3688
3423
  max_bytes: number;
3689
3424
  max_count: number;
@@ -3706,7 +3441,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3706
3441
  supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
3707
3442
  };
3708
3443
  attachment_inputs: {
3709
- kind: "image" | "file";
3444
+ kind: "file" | "image";
3710
3445
  mime_types: string[];
3711
3446
  max_bytes: number;
3712
3447
  max_count: number;
@@ -3729,7 +3464,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3729
3464
  supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
3730
3465
  } | undefined;
3731
3466
  attachment_inputs?: {
3732
- kind: "image" | "file";
3467
+ kind: "file" | "image";
3733
3468
  mime_types: string[];
3734
3469
  max_bytes: number;
3735
3470
  max_count: number;
@@ -3753,7 +3488,16 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3753
3488
  orchestrate: z.ZodDefault<z.ZodBoolean>;
3754
3489
  json_schema_output: z.ZodDefault<z.ZodBoolean>;
3755
3490
  effort_levels: z.ZodDefault<z.ZodArray<z.ZodEnum<["low", "medium", "high", "xhigh", "max"]>, "many">>;
3756
- known_models: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3491
+ known_models: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
3492
+ id: z.ZodString;
3493
+ routes: z.ZodArray<z.ZodEnum<["local_session", "api_key"]>, "many">;
3494
+ }, "strict", z.ZodTypeAny, {
3495
+ id: string;
3496
+ routes: ("api_key" | "local_session")[];
3497
+ }, {
3498
+ id: string;
3499
+ routes: ("api_key" | "local_session")[];
3500
+ }>]>, "many">>;
3757
3501
  known_models_verified_against: z.ZodDefault<z.ZodNullable<z.ZodString>>;
3758
3502
  }, "strip", z.ZodTypeAny, {
3759
3503
  plan: boolean;
@@ -3772,7 +3516,10 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3772
3516
  interactive: boolean;
3773
3517
  json_schema_output: boolean;
3774
3518
  effort_levels: ("low" | "medium" | "high" | "xhigh" | "max")[];
3775
- known_models: string[];
3519
+ known_models: (string | {
3520
+ id: string;
3521
+ routes: ("api_key" | "local_session")[];
3522
+ })[];
3776
3523
  known_models_verified_against: string | null;
3777
3524
  }, {
3778
3525
  plan?: boolean | undefined;
@@ -3791,15 +3538,18 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3791
3538
  interactive?: boolean | undefined;
3792
3539
  json_schema_output?: boolean | undefined;
3793
3540
  effort_levels?: ("low" | "medium" | "high" | "xhigh" | "max")[] | undefined;
3794
- known_models?: string[] | undefined;
3541
+ known_models?: (string | {
3542
+ id: string;
3543
+ routes: ("api_key" | "local_session")[];
3544
+ })[] | undefined;
3795
3545
  known_models_verified_against?: string | null | undefined;
3796
3546
  }>;
3797
3547
  auth_modes: z.ZodDefault<z.ZodArray<z.ZodEnum<["local_session", "api_key", "none"]>, "many">>;
3798
3548
  access_profiles_supported: z.ZodDefault<z.ZodArray<z.ZodEnum<["readonly", "workspace_write", "full", "external_sandbox_full", "inherit_native"]>, "many">>;
3799
3549
  }, "strip", z.ZodTypeAny, {
3550
+ display_name: string;
3800
3551
  kind: "local_cli" | "remote_api" | "fake";
3801
3552
  id: string;
3802
- display_name: string;
3803
3553
  provider_family: "openai" | "anthropic" | "google" | "cursor" | "opencode" | "xai" | "local" | "unknown";
3804
3554
  capability_profile: {
3805
3555
  auth: {
@@ -3818,7 +3568,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3818
3568
  supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
3819
3569
  };
3820
3570
  attachment_inputs: {
3821
- kind: "image" | "file";
3571
+ kind: "file" | "image";
3822
3572
  mime_types: string[];
3823
3573
  max_bytes: number;
3824
3574
  max_count: number;
@@ -3842,7 +3592,10 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3842
3592
  interactive: boolean;
3843
3593
  json_schema_output: boolean;
3844
3594
  effort_levels: ("low" | "medium" | "high" | "xhigh" | "max")[];
3845
- known_models: string[];
3595
+ known_models: (string | {
3596
+ id: string;
3597
+ routes: ("api_key" | "local_session")[];
3598
+ })[];
3846
3599
  known_models_verified_against: string | null;
3847
3600
  };
3848
3601
  auth_modes: ("api_key" | "none" | "local_session")[];
@@ -3850,9 +3603,9 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3850
3603
  version?: string | undefined;
3851
3604
  adapter_version?: string | undefined;
3852
3605
  }, {
3606
+ display_name: string;
3853
3607
  kind: "local_cli" | "remote_api" | "fake";
3854
3608
  id: string;
3855
- display_name: string;
3856
3609
  capabilities: {
3857
3610
  plan?: boolean | undefined;
3858
3611
  orchestrate?: boolean | undefined;
@@ -3870,7 +3623,10 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3870
3623
  interactive?: boolean | undefined;
3871
3624
  json_schema_output?: boolean | undefined;
3872
3625
  effort_levels?: ("low" | "medium" | "high" | "xhigh" | "max")[] | undefined;
3873
- known_models?: string[] | undefined;
3626
+ known_models?: (string | {
3627
+ id: string;
3628
+ routes: ("api_key" | "local_session")[];
3629
+ })[] | undefined;
3874
3630
  known_models_verified_against?: string | null | undefined;
3875
3631
  };
3876
3632
  version?: string | undefined;
@@ -3893,7 +3649,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3893
3649
  supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
3894
3650
  } | undefined;
3895
3651
  attachment_inputs?: {
3896
- kind: "image" | "file";
3652
+ kind: "file" | "image";
3897
3653
  mime_types: string[];
3898
3654
  max_bytes: number;
3899
3655
  max_count: number;
@@ -3904,6 +3660,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3904
3660
  access_profiles_supported?: ("readonly" | "workspace_write" | "full" | "external_sandbox_full" | "inherit_native")[] | undefined;
3905
3661
  }>>>;
3906
3662
  enabledIntents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3663
+ routableIntents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3907
3664
  disabledIntents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3908
3665
  checks: z.ZodDefault<z.ZodArray<z.ZodObject<{
3909
3666
  id: z.ZodString;
@@ -3938,11 +3695,26 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3938
3695
  verification: "passed" | "failed" | "not_run";
3939
3696
  detail?: string | undefined;
3940
3697
  }>, "many">>;
3941
- /** The user's configured per-harness default model, if any. */
3698
+ readiness: z.ZodDefault<z.ZodArray<z.ZodObject<{
3699
+ id: z.ZodString;
3700
+ kind: z.ZodEnum<["binary", "auth", "smoke", "model", "probe"]>;
3701
+ title: z.ZodString;
3702
+ status: z.ZodEnum<["pass", "fail", "skip"]>;
3703
+ detail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
3704
+ }, "strip", z.ZodTypeAny, {
3705
+ status: "pass" | "fail" | "skip";
3706
+ detail: string | null;
3707
+ kind: "binary" | "auth" | "model" | "smoke" | "probe";
3708
+ id: string;
3709
+ title: string;
3710
+ }, {
3711
+ status: "pass" | "fail" | "skip";
3712
+ kind: "binary" | "auth" | "model" | "smoke" | "probe";
3713
+ id: string;
3714
+ title: string;
3715
+ detail?: string | null | undefined;
3716
+ }>, "many">>;
3942
3717
  configuredModel: z.ZodDefault<z.ZodNullable<z.ZodString>>;
3943
- /** Strict truth-source check of `configuredModel`: null when no model
3944
- * is configured; a rejection carries the actionable message so UIs render
3945
- * the same honesty `claudexor doctor` prints. */
3946
3718
  configuredModelCheck: z.ZodDefault<z.ZodNullable<z.ZodObject<{
3947
3719
  status: z.ZodEnum<["ok", "rejected"]>;
3948
3720
  message: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -3955,6 +3727,13 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3955
3727
  }>>>;
3956
3728
  }, "strip", z.ZodTypeAny, {
3957
3729
  status: "unavailable" | "ok" | "degraded";
3730
+ readiness: {
3731
+ status: "pass" | "fail" | "skip";
3732
+ detail: string | null;
3733
+ kind: "binary" | "auth" | "model" | "smoke" | "probe";
3734
+ id: string;
3735
+ title: string;
3736
+ }[];
3958
3737
  id: string;
3959
3738
  checks: {
3960
3739
  status: "pass" | "fail" | "skip";
@@ -3966,6 +3745,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3966
3745
  enabledIntents: string[];
3967
3746
  disabledIntents: string[];
3968
3747
  configuredModel: string | null;
3748
+ routableIntents: string[];
3969
3749
  authSources: {
3970
3750
  source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
3971
3751
  availability: "unknown" | "available" | "unavailable";
@@ -3977,9 +3757,9 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3977
3757
  status: "ok" | "rejected";
3978
3758
  } | null;
3979
3759
  manifest?: {
3760
+ display_name: string;
3980
3761
  kind: "local_cli" | "remote_api" | "fake";
3981
3762
  id: string;
3982
- display_name: string;
3983
3763
  provider_family: "openai" | "anthropic" | "google" | "cursor" | "opencode" | "xai" | "local" | "unknown";
3984
3764
  capability_profile: {
3985
3765
  auth: {
@@ -3998,7 +3778,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
3998
3778
  supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
3999
3779
  };
4000
3780
  attachment_inputs: {
4001
- kind: "image" | "file";
3781
+ kind: "file" | "image";
4002
3782
  mime_types: string[];
4003
3783
  max_bytes: number;
4004
3784
  max_count: number;
@@ -4022,7 +3802,10 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4022
3802
  interactive: boolean;
4023
3803
  json_schema_output: boolean;
4024
3804
  effort_levels: ("low" | "medium" | "high" | "xhigh" | "max")[];
4025
- known_models: string[];
3805
+ known_models: (string | {
3806
+ id: string;
3807
+ routes: ("api_key" | "local_session")[];
3808
+ })[];
4026
3809
  known_models_verified_against: string | null;
4027
3810
  };
4028
3811
  auth_modes: ("api_key" | "none" | "local_session")[];
@@ -4033,6 +3816,13 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4033
3816
  }, {
4034
3817
  status: "unavailable" | "ok" | "degraded";
4035
3818
  id: string;
3819
+ readiness?: {
3820
+ status: "pass" | "fail" | "skip";
3821
+ kind: "binary" | "auth" | "model" | "smoke" | "probe";
3822
+ id: string;
3823
+ title: string;
3824
+ detail?: string | null | undefined;
3825
+ }[] | undefined;
4036
3826
  checks?: {
4037
3827
  status: "pass" | "fail" | "skip";
4038
3828
  id: string;
@@ -4041,9 +3831,9 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4041
3831
  }[] | undefined;
4042
3832
  reasons?: string[] | undefined;
4043
3833
  manifest?: {
3834
+ display_name: string;
4044
3835
  kind: "local_cli" | "remote_api" | "fake";
4045
3836
  id: string;
4046
- display_name: string;
4047
3837
  capabilities: {
4048
3838
  plan?: boolean | undefined;
4049
3839
  orchestrate?: boolean | undefined;
@@ -4061,7 +3851,10 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4061
3851
  interactive?: boolean | undefined;
4062
3852
  json_schema_output?: boolean | undefined;
4063
3853
  effort_levels?: ("low" | "medium" | "high" | "xhigh" | "max")[] | undefined;
4064
- known_models?: string[] | undefined;
3854
+ known_models?: (string | {
3855
+ id: string;
3856
+ routes: ("api_key" | "local_session")[];
3857
+ })[] | undefined;
4065
3858
  known_models_verified_against?: string | null | undefined;
4066
3859
  };
4067
3860
  version?: string | undefined;
@@ -4084,7 +3877,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4084
3877
  supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
4085
3878
  } | undefined;
4086
3879
  attachment_inputs?: {
4087
- kind: "image" | "file";
3880
+ kind: "file" | "image";
4088
3881
  mime_types: string[];
4089
3882
  max_bytes: number;
4090
3883
  max_count: number;
@@ -4097,6 +3890,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4097
3890
  enabledIntents?: string[] | undefined;
4098
3891
  disabledIntents?: string[] | undefined;
4099
3892
  configuredModel?: string | null | undefined;
3893
+ routableIntents?: string[] | undefined;
4100
3894
  authSources?: {
4101
3895
  source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
4102
3896
  availability: "unknown" | "available" | "unavailable";
@@ -4111,6 +3905,13 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4111
3905
  }, "strip", z.ZodTypeAny, {
4112
3906
  harnesses: {
4113
3907
  status: "unavailable" | "ok" | "degraded";
3908
+ readiness: {
3909
+ status: "pass" | "fail" | "skip";
3910
+ detail: string | null;
3911
+ kind: "binary" | "auth" | "model" | "smoke" | "probe";
3912
+ id: string;
3913
+ title: string;
3914
+ }[];
4114
3915
  id: string;
4115
3916
  checks: {
4116
3917
  status: "pass" | "fail" | "skip";
@@ -4122,6 +3923,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4122
3923
  enabledIntents: string[];
4123
3924
  disabledIntents: string[];
4124
3925
  configuredModel: string | null;
3926
+ routableIntents: string[];
4125
3927
  authSources: {
4126
3928
  source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
4127
3929
  availability: "unknown" | "available" | "unavailable";
@@ -4133,9 +3935,9 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4133
3935
  status: "ok" | "rejected";
4134
3936
  } | null;
4135
3937
  manifest?: {
3938
+ display_name: string;
4136
3939
  kind: "local_cli" | "remote_api" | "fake";
4137
3940
  id: string;
4138
- display_name: string;
4139
3941
  provider_family: "openai" | "anthropic" | "google" | "cursor" | "opencode" | "xai" | "local" | "unknown";
4140
3942
  capability_profile: {
4141
3943
  auth: {
@@ -4154,7 +3956,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4154
3956
  supported_containment: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[];
4155
3957
  };
4156
3958
  attachment_inputs: {
4157
- kind: "image" | "file";
3959
+ kind: "file" | "image";
4158
3960
  mime_types: string[];
4159
3961
  max_bytes: number;
4160
3962
  max_count: number;
@@ -4178,7 +3980,10 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4178
3980
  interactive: boolean;
4179
3981
  json_schema_output: boolean;
4180
3982
  effort_levels: ("low" | "medium" | "high" | "xhigh" | "max")[];
4181
- known_models: string[];
3983
+ known_models: (string | {
3984
+ id: string;
3985
+ routes: ("api_key" | "local_session")[];
3986
+ })[];
4182
3987
  known_models_verified_against: string | null;
4183
3988
  };
4184
3989
  auth_modes: ("api_key" | "none" | "local_session")[];
@@ -4191,6 +3996,13 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4191
3996
  harnesses?: {
4192
3997
  status: "unavailable" | "ok" | "degraded";
4193
3998
  id: string;
3999
+ readiness?: {
4000
+ status: "pass" | "fail" | "skip";
4001
+ kind: "binary" | "auth" | "model" | "smoke" | "probe";
4002
+ id: string;
4003
+ title: string;
4004
+ detail?: string | null | undefined;
4005
+ }[] | undefined;
4194
4006
  checks?: {
4195
4007
  status: "pass" | "fail" | "skip";
4196
4008
  id: string;
@@ -4199,9 +4011,9 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4199
4011
  }[] | undefined;
4200
4012
  reasons?: string[] | undefined;
4201
4013
  manifest?: {
4014
+ display_name: string;
4202
4015
  kind: "local_cli" | "remote_api" | "fake";
4203
4016
  id: string;
4204
- display_name: string;
4205
4017
  capabilities: {
4206
4018
  plan?: boolean | undefined;
4207
4019
  orchestrate?: boolean | undefined;
@@ -4219,7 +4031,10 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4219
4031
  interactive?: boolean | undefined;
4220
4032
  json_schema_output?: boolean | undefined;
4221
4033
  effort_levels?: ("low" | "medium" | "high" | "xhigh" | "max")[] | undefined;
4222
- known_models?: string[] | undefined;
4034
+ known_models?: (string | {
4035
+ id: string;
4036
+ routes: ("api_key" | "local_session")[];
4037
+ })[] | undefined;
4223
4038
  known_models_verified_against?: string | null | undefined;
4224
4039
  };
4225
4040
  version?: string | undefined;
@@ -4242,7 +4057,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4242
4057
  supported_containment?: ("env_or_file_injection" | "scoped_home_keychain_bridge" | "host_user_context" | "process_sandbox" | "container")[] | undefined;
4243
4058
  } | undefined;
4244
4059
  attachment_inputs?: {
4245
- kind: "image" | "file";
4060
+ kind: "file" | "image";
4246
4061
  mime_types: string[];
4247
4062
  max_bytes: number;
4248
4063
  max_count: number;
@@ -4255,6 +4070,7 @@ export declare const ControlHarnessListResponse: z.ZodObject<{
4255
4070
  enabledIntents?: string[] | undefined;
4256
4071
  disabledIntents?: string[] | undefined;
4257
4072
  configuredModel?: string | null | undefined;
4073
+ routableIntents?: string[] | undefined;
4258
4074
  authSources?: {
4259
4075
  source: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
4260
4076
  availability: "unknown" | "available" | "unavailable";
@@ -4281,13 +4097,16 @@ export declare const ControlHarnessModelsResponse: z.ZodObject<{
4281
4097
  id: z.ZodString;
4282
4098
  label: z.ZodDefault<z.ZodNullable<z.ZodString>>;
4283
4099
  context_window: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
4100
+ routes: z.ZodDefault<z.ZodNullable<z.ZodArray<z.ZodEnum<["local_session", "api_key"]>, "many">>>;
4284
4101
  }, "strip", z.ZodTypeAny, {
4285
4102
  id: string;
4286
4103
  label: string | null;
4104
+ routes: ("api_key" | "local_session")[] | null;
4287
4105
  context_window: number | null;
4288
4106
  }, {
4289
4107
  id: string;
4290
4108
  label?: string | null | undefined;
4109
+ routes?: ("api_key" | "local_session")[] | null | undefined;
4291
4110
  context_window?: number | null | undefined;
4292
4111
  }>, "many">>;
4293
4112
  source: z.ZodEnum<["api", "manifest", "none"]>;
@@ -4301,6 +4120,7 @@ export declare const ControlHarnessModelsResponse: z.ZodObject<{
4301
4120
  models: {
4302
4121
  id: string;
4303
4122
  label: string | null;
4123
+ routes: ("api_key" | "local_session")[] | null;
4304
4124
  context_window: number | null;
4305
4125
  }[];
4306
4126
  }, {
@@ -4310,6 +4130,7 @@ export declare const ControlHarnessModelsResponse: z.ZodObject<{
4310
4130
  models?: {
4311
4131
  id: string;
4312
4132
  label?: string | null | undefined;
4133
+ routes?: ("api_key" | "local_session")[] | null | undefined;
4313
4134
  context_window?: number | null | undefined;
4314
4135
  }[] | undefined;
4315
4136
  }>;
@@ -4442,41 +4263,48 @@ export declare const ControlSettingsSnapshot: z.ZodObject<{
4442
4263
  fallbackModel: z.ZodDefault<z.ZodNullable<z.ZodString>>;
4443
4264
  web: z.ZodDefault<z.ZodEnum<["off", "auto", "cached", "live"]>>;
4444
4265
  authPreference: z.ZodDefault<z.ZodEnum<["subscription", "api_key", "auto"]>>;
4266
+ /** Profile-selection policy (INV-135): what happens when the
4267
+ * selected account hits its quota. Drives the app's auto-switch
4268
+ * toggle read-back. */
4269
+ profileLimitAction: z.ZodDefault<z.ZodEnum<["fail", "ask", "rotate"]>>;
4445
4270
  }, "strip", z.ZodTypeAny, {
4446
- web: "off" | "auto" | "cached" | "live";
4447
4271
  enabled: boolean;
4272
+ web: "off" | "auto" | "cached" | "live";
4448
4273
  effort: "low" | "medium" | "high" | "xhigh" | "max" | null;
4449
4274
  authPreference: "auto" | "subscription" | "api_key";
4450
- defaultModel: string | null;
4451
4275
  maxTurns: number | null;
4276
+ defaultModel: string | null;
4452
4277
  maxRounds: number | null;
4453
4278
  toolsAllow: string[];
4454
4279
  toolsDeny: string[];
4455
4280
  fallbackModel: string | null;
4281
+ profileLimitAction: "ask" | "fail" | "rotate";
4456
4282
  }, {
4457
- web?: "off" | "auto" | "cached" | "live" | undefined;
4458
4283
  enabled?: boolean | undefined;
4284
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4459
4285
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4460
4286
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4461
- defaultModel?: string | null | undefined;
4462
4287
  maxTurns?: number | null | undefined;
4288
+ defaultModel?: string | null | undefined;
4463
4289
  maxRounds?: number | null | undefined;
4464
4290
  toolsAllow?: string[] | undefined;
4465
4291
  toolsDeny?: string[] | undefined;
4466
4292
  fallbackModel?: string | null | undefined;
4293
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4467
4294
  }>>>;
4468
4295
  }, "strip", z.ZodTypeAny, {
4469
4296
  harnesses: Record<string, {
4470
- web: "off" | "auto" | "cached" | "live";
4471
4297
  enabled: boolean;
4298
+ web: "off" | "auto" | "cached" | "live";
4472
4299
  effort: "low" | "medium" | "high" | "xhigh" | "max" | null;
4473
4300
  authPreference: "auto" | "subscription" | "api_key";
4474
- defaultModel: string | null;
4475
4301
  maxTurns: number | null;
4302
+ defaultModel: string | null;
4476
4303
  maxRounds: number | null;
4477
4304
  toolsAllow: string[];
4478
4305
  toolsDeny: string[];
4479
4306
  fallbackModel: string | null;
4307
+ profileLimitAction: "ask" | "fail" | "rotate";
4480
4308
  }>;
4481
4309
  budget: {
4482
4310
  paidBudgetPerRun: {
@@ -4513,16 +4341,17 @@ export declare const ControlSettingsSnapshot: z.ZodObject<{
4513
4341
  interactionTimeoutMs: number;
4514
4342
  }, {
4515
4343
  harnesses?: Record<string, {
4516
- web?: "off" | "auto" | "cached" | "live" | undefined;
4517
4344
  enabled?: boolean | undefined;
4345
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4518
4346
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4519
4347
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4520
- defaultModel?: string | null | undefined;
4521
4348
  maxTurns?: number | null | undefined;
4349
+ defaultModel?: string | null | undefined;
4522
4350
  maxRounds?: number | null | undefined;
4523
4351
  toolsAllow?: string[] | undefined;
4524
4352
  toolsDeny?: string[] | undefined;
4525
4353
  fallbackModel?: string | null | undefined;
4354
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4526
4355
  }> | undefined;
4527
4356
  budget?: {
4528
4357
  paidBudgetPerRun?: {
@@ -4574,28 +4403,33 @@ export declare const ControlHarnessSettingsPatch: z.ZodObject<{
4574
4403
  fallbackModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4575
4404
  web: z.ZodOptional<z.ZodEnum<["off", "auto", "cached", "live"]>>;
4576
4405
  authPreference: z.ZodOptional<z.ZodEnum<["subscription", "api_key", "auto"]>>;
4406
+ /** Auto-switch accounts on quota limits (INV-135): rotate enables the
4407
+ * profile-rotation engine for this harness; fail restores the default. */
4408
+ profileLimitAction: z.ZodOptional<z.ZodEnum<["fail", "ask", "rotate"]>>;
4577
4409
  }, "strict", z.ZodTypeAny, {
4578
- web?: "off" | "auto" | "cached" | "live" | undefined;
4579
4410
  enabled?: boolean | undefined;
4411
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4580
4412
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4581
4413
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4582
- defaultModel?: string | null | undefined;
4583
4414
  maxTurns?: number | null | undefined;
4415
+ defaultModel?: string | null | undefined;
4584
4416
  maxRounds?: number | null | undefined;
4585
4417
  toolsAllow?: string[] | undefined;
4586
4418
  toolsDeny?: string[] | undefined;
4587
4419
  fallbackModel?: string | null | undefined;
4420
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4588
4421
  }, {
4589
- web?: "off" | "auto" | "cached" | "live" | undefined;
4590
4422
  enabled?: boolean | undefined;
4423
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4591
4424
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4592
4425
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4593
- defaultModel?: string | null | undefined;
4594
4426
  maxTurns?: number | null | undefined;
4427
+ defaultModel?: string | null | undefined;
4595
4428
  maxRounds?: number | null | undefined;
4596
4429
  toolsAllow?: string[] | undefined;
4597
4430
  toolsDeny?: string[] | undefined;
4598
4431
  fallbackModel?: string | null | undefined;
4432
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4599
4433
  }>;
4600
4434
  export type ControlHarnessSettingsPatch = z.infer<typeof ControlHarnessSettingsPatch>;
4601
4435
  export declare const ControlSettingsUpdateRequest: z.ZodObject<{
@@ -4647,41 +4481,47 @@ export declare const ControlSettingsUpdateRequest: z.ZodObject<{
4647
4481
  fallbackModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4648
4482
  web: z.ZodOptional<z.ZodEnum<["off", "auto", "cached", "live"]>>;
4649
4483
  authPreference: z.ZodOptional<z.ZodEnum<["subscription", "api_key", "auto"]>>;
4484
+ /** Auto-switch accounts on quota limits (INV-135): rotate enables the
4485
+ * profile-rotation engine for this harness; fail restores the default. */
4486
+ profileLimitAction: z.ZodOptional<z.ZodEnum<["fail", "ask", "rotate"]>>;
4650
4487
  }, "strict", z.ZodTypeAny, {
4651
- web?: "off" | "auto" | "cached" | "live" | undefined;
4652
4488
  enabled?: boolean | undefined;
4489
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4653
4490
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4654
4491
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4655
- defaultModel?: string | null | undefined;
4656
4492
  maxTurns?: number | null | undefined;
4493
+ defaultModel?: string | null | undefined;
4657
4494
  maxRounds?: number | null | undefined;
4658
4495
  toolsAllow?: string[] | undefined;
4659
4496
  toolsDeny?: string[] | undefined;
4660
4497
  fallbackModel?: string | null | undefined;
4498
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4661
4499
  }, {
4662
- web?: "off" | "auto" | "cached" | "live" | undefined;
4663
4500
  enabled?: boolean | undefined;
4501
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4664
4502
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4665
4503
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4666
- defaultModel?: string | null | undefined;
4667
4504
  maxTurns?: number | null | undefined;
4505
+ defaultModel?: string | null | undefined;
4668
4506
  maxRounds?: number | null | undefined;
4669
4507
  toolsAllow?: string[] | undefined;
4670
4508
  toolsDeny?: string[] | undefined;
4671
4509
  fallbackModel?: string | null | undefined;
4510
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4672
4511
  }>>>;
4673
4512
  }, "strict", z.ZodTypeAny, {
4674
4513
  harnesses?: Record<string, {
4675
- web?: "off" | "auto" | "cached" | "live" | undefined;
4676
4514
  enabled?: boolean | undefined;
4515
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4677
4516
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4678
4517
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4679
- defaultModel?: string | null | undefined;
4680
4518
  maxTurns?: number | null | undefined;
4519
+ defaultModel?: string | null | undefined;
4681
4520
  maxRounds?: number | null | undefined;
4682
4521
  toolsAllow?: string[] | undefined;
4683
4522
  toolsDeny?: string[] | undefined;
4684
4523
  fallbackModel?: string | null | undefined;
4524
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4685
4525
  }> | undefined;
4686
4526
  primaryHarness?: string | null | undefined;
4687
4527
  routingGoal?: "auto" | "quality" | "economy" | undefined;
@@ -4704,16 +4544,17 @@ export declare const ControlSettingsUpdateRequest: z.ZodObject<{
4704
4544
  routingPolicy?: "auto" | "primary" | undefined;
4705
4545
  }, {
4706
4546
  harnesses?: Record<string, {
4707
- web?: "off" | "auto" | "cached" | "live" | undefined;
4708
4547
  enabled?: boolean | undefined;
4548
+ web?: "off" | "auto" | "cached" | "live" | undefined;
4709
4549
  effort?: "low" | "medium" | "high" | "xhigh" | "max" | null | undefined;
4710
4550
  authPreference?: "auto" | "subscription" | "api_key" | undefined;
4711
- defaultModel?: string | null | undefined;
4712
4551
  maxTurns?: number | null | undefined;
4552
+ defaultModel?: string | null | undefined;
4713
4553
  maxRounds?: number | null | undefined;
4714
4554
  toolsAllow?: string[] | undefined;
4715
4555
  toolsDeny?: string[] | undefined;
4716
4556
  fallbackModel?: string | null | undefined;
4557
+ profileLimitAction?: "ask" | "fail" | "rotate" | undefined;
4717
4558
  }> | undefined;
4718
4559
  primaryHarness?: string | null | undefined;
4719
4560
  routingGoal?: "auto" | "quality" | "economy" | undefined;