@claudexor/schema 3.5.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/accounts-migration.d.ts +112 -0
  2. package/dist/accounts-migration.d.ts.map +1 -0
  3. package/dist/accounts-migration.js +74 -0
  4. package/dist/accounts-migration.js.map +1 -0
  5. package/dist/agent-capabilities.d.ts +32 -0
  6. package/dist/agent-capabilities.d.ts.map +1 -1
  7. package/dist/agent-capabilities.js +4 -0
  8. package/dist/agent-capabilities.js.map +1 -1
  9. package/dist/config.d.ts +48 -30
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +32 -11
  12. package/dist/config.js.map +1 -1
  13. package/dist/control-harness-list.d.ts +197 -1
  14. package/dist/control-harness-list.d.ts.map +1 -1
  15. package/dist/control-operation-responses.d.ts +7 -7
  16. package/dist/control-run-detail.d.ts +19 -19
  17. package/dist/control-run-failure.d.ts +4 -4
  18. package/dist/control-run-failure.d.ts.map +1 -1
  19. package/dist/control-run-failure.js +7 -1
  20. package/dist/control-run-failure.js.map +1 -1
  21. package/dist/control.d.ts +23 -23
  22. package/dist/control.d.ts.map +1 -1
  23. package/dist/control.js +8 -8
  24. package/dist/control.js.map +1 -1
  25. package/dist/credential-profile-snapshot.d.ts +644 -30
  26. package/dist/credential-profile-snapshot.d.ts.map +1 -1
  27. package/dist/credential-profile.d.ts +365 -38
  28. package/dist/credential-profile.d.ts.map +1 -1
  29. package/dist/credential-profile.js +140 -28
  30. package/dist/credential-profile.js.map +1 -1
  31. package/dist/credential-store.d.ts +19 -6
  32. package/dist/credential-store.d.ts.map +1 -1
  33. package/dist/credential-store.js +21 -6
  34. package/dist/credential-store.js.map +1 -1
  35. package/dist/events.d.ts +44 -4
  36. package/dist/events.d.ts.map +1 -1
  37. package/dist/events.js +34 -0
  38. package/dist/events.js.map +1 -1
  39. package/dist/harness.d.ts +252 -59
  40. package/dist/harness.d.ts.map +1 -1
  41. package/dist/harness.js +2 -32
  42. package/dist/harness.js.map +1 -1
  43. package/dist/index.d.ts +1 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/mcp-run-result.d.ts +10 -10
  48. package/dist/platform-auth.d.ts +196 -0
  49. package/dist/platform-auth.d.ts.map +1 -0
  50. package/dist/platform-auth.js +142 -0
  51. package/dist/platform-auth.js.map +1 -0
  52. package/dist/quota.d.ts +42 -21
  53. package/dist/quota.d.ts.map +1 -1
  54. package/dist/quota.js +35 -0
  55. package/dist/quota.js.map +1 -1
  56. package/dist/rate-limit.d.ts +9 -0
  57. package/dist/rate-limit.d.ts.map +1 -1
  58. package/dist/rate-limit.js +21 -0
  59. package/dist/rate-limit.js.map +1 -1
  60. package/dist/readiness.d.ts +178 -1
  61. package/dist/readiness.d.ts.map +1 -1
  62. package/dist/readiness.js +12 -0
  63. package/dist/readiness.js.map +1 -1
  64. package/dist/setup-login.d.ts +5 -5
  65. package/dist/setup.d.ts +102 -95
  66. package/dist/setup.d.ts.map +1 -1
  67. package/dist/setup.js +29 -5
  68. package/dist/setup.js.map +1 -1
  69. package/generated/AccountsUnifiedMigrationFile.schema.json +61 -0
  70. package/generated/AgentCapabilityCatalog.schema.json +26 -0
  71. package/generated/ControlAccountPoolsResponse.schema.json +93 -0
  72. package/generated/ControlAccountsMigrationRollbackRequest.schema.json +18 -0
  73. package/generated/ControlAccountsMigrationRollbackResponse.schema.json +63 -0
  74. package/generated/ControlCredentialProfileCreateRequest.schema.json +1 -1
  75. package/generated/ControlCredentialProfileCreateResponse.schema.json +4 -4
  76. package/generated/ControlCredentialProfileDeleteResponse.schema.json +28 -4
  77. package/generated/ControlCredentialProfileUpdateResponse.schema.json +4 -4
  78. package/generated/ControlCredentialProfilesQueryResponse.schema.json +212 -7
  79. package/generated/ControlCredentialProfilesResponse.schema.json +81 -5
  80. package/generated/ControlCredentialProfilesSnapshotResponse.schema.json +209 -7
  81. package/generated/ControlHarnessAccountPool.schema.json +79 -0
  82. package/generated/ControlHarnessListResponse.schema.json +124 -0
  83. package/generated/ControlHarnessSettingsPatch.schema.json +2 -1
  84. package/generated/ControlPoolNextUp.schema.json +63 -0
  85. package/generated/ControlQuotaResponse.schema.json +4 -2
  86. package/generated/ControlRunDetail.schema.json +2 -1
  87. package/generated/ControlRunListResponse.schema.json +2 -1
  88. package/generated/ControlRunSummary.schema.json +2 -1
  89. package/generated/ControlSettingsSnapshot.schema.json +3 -2
  90. package/generated/ControlSettingsUpdateRequest.schema.json +2 -1
  91. package/generated/ControlSetupJob.schema.json +5 -1
  92. package/generated/ControlSetupJobCreateRequest.schema.json +1 -1
  93. package/generated/ControlSetupJobEvent.schema.json +5 -1
  94. package/generated/ControlSetupJobListResponse.schema.json +5 -1
  95. package/generated/ControlSetupJobSnapshot.schema.json +5 -1
  96. package/generated/CredentialProfile.schema.json +3 -3
  97. package/generated/CredentialProfileStatus.schema.json +1 -1
  98. package/generated/GlobalConfig.schema.json +7 -6
  99. package/generated/HarnessEvent.schema.json +2 -1
  100. package/generated/HarnessManifest.schema.json +98 -0
  101. package/generated/HarnessStatusDto.schema.json +124 -0
  102. package/generated/McpRunHandleResult.schema.json +2 -1
  103. package/generated/McpRunToolResult.schema.json +2 -1
  104. package/generated/RunEvent.schema.json +4 -0
  105. package/generated/RunFailure.schema.json +2 -1
  106. package/package.json +2 -2
@@ -0,0 +1,112 @@
1
+ import { z } from "zod/v3";
2
+ /**
3
+ * Unified-accounts startup migration state (INV-135 rewrite, plan §L.3).
4
+ *
5
+ * The per-harness record lives in `~/.claudexor/v3/migration/accounts-unified.json`
6
+ * — deliberately a SEPARATE file, never a config.yaml key: the 3.5.0 strict
7
+ * config parser must keep reading the migrated config, and a downgraded engine
8
+ * simply never opens this file. Phases are restart-idempotent; an INCOMPLETE
9
+ * record is a typed refusal of that harness's runs only (other harnesses keep
10
+ * working) until the next daemon start finishes the remaining phases.
11
+ */
12
+ export declare const AccountsMigrationPhase: z.ZodEnum<["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"]>;
13
+ export type AccountsMigrationPhase = z.infer<typeof AccountsMigrationPhase>;
14
+ export declare const AccountsHarnessMigration: z.ZodObject<{
15
+ phase: z.ZodEnum<["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"]>;
16
+ row_id: z.ZodString;
17
+ legacy_aliases: z.ZodArray<z.ZodNullable<z.ZodString>, "many">;
18
+ locator: z.ZodString;
19
+ backup_ref: z.ZodNullable<z.ZodString>;
20
+ }, "strict", z.ZodTypeAny, {
21
+ phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
22
+ row_id: string;
23
+ legacy_aliases: (string | null)[];
24
+ locator: string;
25
+ backup_ref: string | null;
26
+ }, {
27
+ phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
28
+ row_id: string;
29
+ legacy_aliases: (string | null)[];
30
+ locator: string;
31
+ backup_ref: string | null;
32
+ }>;
33
+ export type AccountsHarnessMigration = z.infer<typeof AccountsHarnessMigration>;
34
+ /** The whole migration file: harness id → its migration record. */
35
+ export declare const AccountsUnifiedMigrationFile: z.ZodRecord<z.ZodString, z.ZodObject<{
36
+ phase: z.ZodEnum<["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"]>;
37
+ row_id: z.ZodString;
38
+ legacy_aliases: z.ZodArray<z.ZodNullable<z.ZodString>, "many">;
39
+ locator: z.ZodString;
40
+ backup_ref: z.ZodNullable<z.ZodString>;
41
+ }, "strict", z.ZodTypeAny, {
42
+ phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
43
+ row_id: string;
44
+ legacy_aliases: (string | null)[];
45
+ locator: string;
46
+ backup_ref: string | null;
47
+ }, {
48
+ phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
49
+ row_id: string;
50
+ legacy_aliases: (string | null)[];
51
+ locator: string;
52
+ backup_ref: string | null;
53
+ }>>;
54
+ export type AccountsUnifiedMigrationFile = z.infer<typeof AccountsUnifiedMigrationFile>;
55
+ /** POST /accounts-migration/rollback — the supported downgrade path's first
56
+ * step (run BEFORE installing 3.5.0, whose canonicalizers refuse the migrated
57
+ * row's native locator). Surgically reverses the migration: sessions,
58
+ * checkpoints, and lane homes return to the null engine-default keys, the
59
+ * auto-registered row leaves the registry, and its `enabled` state returns to
60
+ * the `native_credentials_enabled` setting. */
61
+ export declare const ControlAccountsMigrationRollbackRequest: z.ZodObject<{
62
+ harnessId: z.ZodOptional<z.ZodString>;
63
+ }, "strict", z.ZodTypeAny, {
64
+ harnessId?: string | undefined;
65
+ }, {
66
+ harnessId?: string | undefined;
67
+ }>;
68
+ export type ControlAccountsMigrationRollbackRequest = z.infer<typeof ControlAccountsMigrationRollbackRequest>;
69
+ export declare const ControlAccountsMigrationRollbackResponse: z.ZodObject<{
70
+ rolledBack: z.ZodArray<z.ZodObject<{
71
+ harness_id: z.ZodString;
72
+ row_id: z.ZodString;
73
+ sessions: z.ZodNumber;
74
+ checkpoints: z.ZodNumber;
75
+ lanes: z.ZodNumber;
76
+ skipped_partitions: z.ZodArray<z.ZodString, "many">;
77
+ }, "strict", z.ZodTypeAny, {
78
+ harness_id: string;
79
+ row_id: string;
80
+ sessions: number;
81
+ checkpoints: number;
82
+ lanes: number;
83
+ skipped_partitions: string[];
84
+ }, {
85
+ harness_id: string;
86
+ row_id: string;
87
+ sessions: number;
88
+ checkpoints: number;
89
+ lanes: number;
90
+ skipped_partitions: string[];
91
+ }>, "many">;
92
+ }, "strict", z.ZodTypeAny, {
93
+ rolledBack: {
94
+ harness_id: string;
95
+ row_id: string;
96
+ sessions: number;
97
+ checkpoints: number;
98
+ lanes: number;
99
+ skipped_partitions: string[];
100
+ }[];
101
+ }, {
102
+ rolledBack: {
103
+ harness_id: string;
104
+ row_id: string;
105
+ sessions: number;
106
+ checkpoints: number;
107
+ lanes: number;
108
+ skipped_partitions: string[];
109
+ }[];
110
+ }>;
111
+ export type ControlAccountsMigrationRollbackResponse = z.infer<typeof ControlAccountsMigrationRollbackResponse>;
112
+ //# sourceMappingURL=accounts-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts-migration.d.ts","sourceRoot":"","sources":["../src/accounts-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,iGAIhC,CAAC;AACJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;EAwBwB,CAAC;AAC9D,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEhF,mEAAmE;AACnE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;GAE4C,CAAC;AACtF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;;;+CAK+C;AAC/C,eAAO,MAAM,uCAAuC;;;;;;EAOc,CAAC;AACnE,MAAM,MAAM,uCAAuC,GAAG,CAAC,CAAC,KAAK,CAC3D,OAAO,uCAAuC,CAC/C,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BY,CAAC;AAClE,MAAM,MAAM,wCAAwC,GAAG,CAAC,CAAC,KAAK,CAC5D,OAAO,wCAAwC,CAChD,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { z } from "zod/v3";
2
+ import { Id } from "./primitives.js";
3
+ /**
4
+ * Unified-accounts startup migration state (INV-135 rewrite, plan §L.3).
5
+ *
6
+ * The per-harness record lives in `~/.claudexor/v3/migration/accounts-unified.json`
7
+ * — deliberately a SEPARATE file, never a config.yaml key: the 3.5.0 strict
8
+ * config parser must keep reading the migrated config, and a downgraded engine
9
+ * simply never opens this file. Phases are restart-idempotent; an INCOMPLETE
10
+ * record is a typed refusal of that harness's runs only (other harnesses keep
11
+ * working) until the next daemon start finishes the remaining phases.
12
+ */
13
+ export const AccountsMigrationPhase = z
14
+ .enum(["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"])
15
+ .describe("Crash-recoverable migration phase for one harness: reserved (id + backup persisted) → registry_written (row in config) → continuity_migrated (sessions/checkpoints/lane homes on the row id) → completed (legacy null quota subject retired). rolling_back marks an in-flight rollback: the startup migration never resumes it forward; re-running the rollback command finishes it.");
16
+ export const AccountsHarnessMigration = z
17
+ .object({
18
+ phase: AccountsMigrationPhase,
19
+ row_id: Id.describe("The reserved registry row id (claude-default / codex-default, deterministic -2 suffix on collision) — persisted BEFORE any other phase so a crash can never re-reserve a different id."),
20
+ legacy_aliases: z
21
+ .array(z.string().nullable())
22
+ .describe("Every legacy identity this row absorbed — [null] for the engine-default subject. Deletion of the row must retire the canonical id PLUS these aliases in one lifecycle operation."),
23
+ locator: z
24
+ .string()
25
+ .describe("The exact legacy native store dir registered as the row's isolation_locator (bytes never move). Also the delete fence's exact-path allowlist entry for this row."),
26
+ backup_ref: z
27
+ .string()
28
+ .nullable()
29
+ .describe("Pre-migration backup directory (config.yaml copy), the manual-recovery half of the supported downgrade path; null when the backup could not be written."),
30
+ })
31
+ .strict()
32
+ .describe("Per-harness unified-accounts migration record.");
33
+ /** The whole migration file: harness id → its migration record. */
34
+ export const AccountsUnifiedMigrationFile = z
35
+ .record(z.string(), AccountsHarnessMigration)
36
+ .describe("accounts-unified.json: harness id → unified-accounts migration record.");
37
+ /** POST /accounts-migration/rollback — the supported downgrade path's first
38
+ * step (run BEFORE installing 3.5.0, whose canonicalizers refuse the migrated
39
+ * row's native locator). Surgically reverses the migration: sessions,
40
+ * checkpoints, and lane homes return to the null engine-default keys, the
41
+ * auto-registered row leaves the registry, and its `enabled` state returns to
42
+ * the `native_credentials_enabled` setting. */
43
+ export const ControlAccountsMigrationRollbackRequest = z
44
+ .object({
45
+ harnessId: Id.optional().describe("Roll back one harness's migration; omitted = every migrated harness."),
46
+ })
47
+ .strict()
48
+ .describe("Request body for POST /accounts-migration/rollback.");
49
+ export const ControlAccountsMigrationRollbackResponse = z
50
+ .object({
51
+ rolledBack: z
52
+ .array(z
53
+ .object({
54
+ harness_id: Id,
55
+ row_id: Id.describe("The auto-registered row the rollback removed."),
56
+ sessions: z
57
+ .number()
58
+ .int()
59
+ .describe("Thread sessions returned to the null engine-default subject."),
60
+ checkpoints: z
61
+ .number()
62
+ .int()
63
+ .describe("Lane checkpoints re-seeded onto the null lane."),
64
+ lanes: z.number().int().describe("Durable lane home dirs renamed back."),
65
+ skipped_partitions: z
66
+ .array(z.string())
67
+ .describe("Quarantined project partitions whose sessions could NOT be rolled back (disclosed residual: recover them and rerun the rollback before downgrading)."),
68
+ })
69
+ .strict())
70
+ .describe("Per-harness rollback receipts (empty when nothing was migrated)."),
71
+ })
72
+ .strict()
73
+ .describe("Receipt for a unified-accounts migration rollback.");
74
+ //# sourceMappingURL=accounts-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts-migration.js","sourceRoot":"","sources":["../src/accounts-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,IAAI,CAAC,CAAC,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;KAC1F,QAAQ,CACP,sXAAsX,CACvX,CAAC;AAGJ,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,KAAK,EAAE,sBAAsB;IAC7B,MAAM,EAAE,EAAE,CAAC,QAAQ,CACjB,wLAAwL,CACzL;IACD,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC5B,QAAQ,CACP,kLAAkL,CACnL;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CACP,kKAAkK,CACnK;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yJAAyJ,CAC1J;CACJ,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,gDAAgD,CAAC,CAAC;AAG9D,mEAAmE;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC;KAC5C,QAAQ,CAAC,wEAAwE,CAAC,CAAC;AAGtF;;;;;+CAK+C;AAC/C,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC;KACrD,MAAM,CAAC;IACN,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/B,sEAAsE,CACvE;CACF,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,qDAAqD,CAAC,CAAC;AAKnE,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAC;KACtD,MAAM,CAAC;IACN,UAAU,EAAE,CAAC;SACV,KAAK,CACJ,CAAC;SACE,MAAM,CAAC;QACN,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QACpE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,CAAC,8DAA8D,CAAC;QAC3E,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACxE,kBAAkB,EAAE,CAAC;aAClB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,CACP,sJAAsJ,CACvJ;KACJ,CAAC;SACD,MAAM,EAAE,CACZ;SACA,QAAQ,CAAC,kEAAkE,CAAC;CAChF,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,oDAAoD,CAAC,CAAC"}
@@ -120,6 +120,13 @@ export declare const CatalogHarness: z.ZodObject<{
120
120
  remediation?: string | null | undefined;
121
121
  requiresFullAccess?: boolean | undefined;
122
122
  }>;
123
+ setupLogin: z.ZodOptional<z.ZodNullable<z.ZodObject<{
124
+ mode: z.ZodEnum<["in_app", "external_terminal"]>;
125
+ }, "strict", z.ZodTypeAny, {
126
+ mode: "external_terminal" | "in_app";
127
+ }, {
128
+ mode: "external_terminal" | "in_app";
129
+ }>>>;
123
130
  }, "strip", z.ZodTypeAny, {
124
131
  id: string;
125
132
  enabled: boolean;
@@ -153,6 +160,9 @@ export declare const CatalogHarness: z.ZodObject<{
153
160
  remediation: string | null;
154
161
  requiresFullAccess: boolean;
155
162
  };
163
+ setupLogin?: {
164
+ mode: "external_terminal" | "in_app";
165
+ } | null | undefined;
156
166
  }, {
157
167
  id: string;
158
168
  enabled: boolean;
@@ -186,6 +196,9 @@ export declare const CatalogHarness: z.ZodObject<{
186
196
  remediation?: string | null | undefined;
187
197
  requiresFullAccess?: boolean | undefined;
188
198
  };
199
+ setupLogin?: {
200
+ mode: "external_terminal" | "in_app";
201
+ } | null | undefined;
189
202
  }>;
190
203
  export type CatalogHarness = z.infer<typeof CatalogHarness>;
191
204
  export declare const CatalogCliCommand: z.ZodObject<{
@@ -335,6 +348,13 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
335
348
  remediation?: string | null | undefined;
336
349
  requiresFullAccess?: boolean | undefined;
337
350
  }>;
351
+ setupLogin: z.ZodOptional<z.ZodNullable<z.ZodObject<{
352
+ mode: z.ZodEnum<["in_app", "external_terminal"]>;
353
+ }, "strict", z.ZodTypeAny, {
354
+ mode: "external_terminal" | "in_app";
355
+ }, {
356
+ mode: "external_terminal" | "in_app";
357
+ }>>>;
338
358
  }, "strip", z.ZodTypeAny, {
339
359
  id: string;
340
360
  enabled: boolean;
@@ -368,6 +388,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
368
388
  remediation: string | null;
369
389
  requiresFullAccess: boolean;
370
390
  };
391
+ setupLogin?: {
392
+ mode: "external_terminal" | "in_app";
393
+ } | null | undefined;
371
394
  }, {
372
395
  id: string;
373
396
  enabled: boolean;
@@ -401,6 +424,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
401
424
  remediation?: string | null | undefined;
402
425
  requiresFullAccess?: boolean | undefined;
403
426
  };
427
+ setupLogin?: {
428
+ mode: "external_terminal" | "in_app";
429
+ } | null | undefined;
404
430
  }>, "many">;
405
431
  availableHarnesses: z.ZodArray<z.ZodString, "many">;
406
432
  modes: z.ZodArray<z.ZodEnum<["ask", "plan", "agent"]>, "many">;
@@ -501,6 +527,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
501
527
  remediation: string | null;
502
528
  requiresFullAccess: boolean;
503
529
  };
530
+ setupLogin?: {
531
+ mode: "external_terminal" | "in_app";
532
+ } | null | undefined;
504
533
  }[];
505
534
  availableHarnesses: string[];
506
535
  modes: ("agent" | "ask" | "plan")[];
@@ -569,6 +598,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
569
598
  remediation?: string | null | undefined;
570
599
  requiresFullAccess?: boolean | undefined;
571
600
  };
601
+ setupLogin?: {
602
+ mode: "external_terminal" | "in_app";
603
+ } | null | undefined;
572
604
  }[];
573
605
  availableHarnesses: string[];
574
606
  modes: ("agent" | "ask" | "plan")[];
@@ -1 +1 @@
1
- {"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAiB,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAQ1E;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,YACzC,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,oBAAoB,CACZ,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAI9E,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAmBkE,CAAC;AACnG,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDsD,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAe3B,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAyBjC,CAAC;AACJ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;EAQ4C,CAAC;AACpF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2ChC,CAAC;AACJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAiB,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAS1E;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,YACzC,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,oBAAoB,CACZ,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAI9E,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAmBkE,CAAC;AACnG,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2DsD,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAe3B,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAyBjC,CAAC;AACJ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;EAQ4C,CAAC;AACpF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2ChC,CAAC;AACJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -6,6 +6,7 @@ import { AttachmentInputClass } from "./attachment.js";
6
6
  import { OutputSchemaDialect } from "./output-schema-dialect.js";
7
7
  import { DelegationCapability } from "./delegation.js";
8
8
  import { GitCapability } from "./git-capability.js";
9
+ import { SetupLoginCapability } from "./readiness.js";
9
10
  /**
10
11
  * AgentCapabilityCatalog — the machine-readable answer to "what can this
11
12
  * Claudexor install do RIGHT NOW", for external agents (MCP hosts, scripts,
@@ -110,6 +111,9 @@ export const CatalogHarness = z
110
111
  .describe("Access profiles the adapter can enforce."),
111
112
  readonlyMechanism: ReadonlyMechanism.describe("HOW read-only is enforced (fs_sandbox | permission_deny | tool_allowlist | none) — none means read-only intent is advisory for this harness."),
112
113
  delegation: DelegationCapability.describe("Whether this installed runtime can offer Delegate through this harness."),
114
+ setupLogin: SetupLoginCapability.nullable()
115
+ .optional()
116
+ .describe("Effective setup-login flow for this harness on the current host; current producers emit null or an object, while omission identifies a legacy catalog row."),
113
117
  })
114
118
  .describe("Per-harness live capability row (manifest + doctor + model truth).");
115
119
  export const CatalogCliCommand = z
@@ -1 +1 @@
1
- {"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,UAAU;IACV,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,aAAa;IACb,oBAAoB;CACZ,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAuD;IACjF,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SACjC,QAAQ,CACP,iKAAiK,CAClK;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4EAA4E,CAAC;IACzF,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+FAA+F,CAChG;CACJ,CAAC;KACD,QAAQ,CAAC,qFAAqF,CAAC,CAAC;AAGnG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,QAAQ,CAAC,yEAAyE,CAAC;IACtF,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,CACP,4HAA4H,CAC7H;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACzE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAC5B,2EAA2E,CAC5E;IACD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC/E,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,2DAA2D,CAAC;IACxE,eAAe,EAAE,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,0DAA0D,CAAC;IACvE,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0FAA0F,CAC3F;IACH,oBAAoB,EAAE,CAAC;SACpB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,kFAAkF,CAAC;IAC/F,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;SACjD,QAAQ,CAAC,yDAAyD,CAAC;IACtE,gBAAgB,EAAE,CAAC;SAChB,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,CAAC,uEAAuE,CAAC;IACpF,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,UAAU,CAAC;SACjB,QAAQ,CAAC,0EAA0E,CAAC;IACvF,uBAAuB,EAAE,CAAC;SACvB,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CAAC,0CAA0C,CAAC;IACvD,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,CAC3C,8IAA8I,CAC/I;IACD,UAAU,EAAE,oBAAoB,CAAC,QAAQ,CACvC,yEAAyE,CAC1E;CACF,CAAC;KACD,QAAQ,CAAC,oEAAoE,CAAC,CAAC;AAGlF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpC,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SAC1C,QAAQ,CACP,kLAAkL,CACnL;IACH,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACzF,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,CAAC,mEAAmE,CAAC;CACjF,CAAC;KACD,QAAQ,CACP,2FAA2F,CAC5F,CAAC;AAGJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,QAAQ,CAAC;SACf,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACzF,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;SACnC,QAAQ,CACP,sIAAsI,CACvI;IACH,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CACP,iHAAiH,CAClH;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;SAClD,QAAQ,CAAC,iEAAiE,CAAC;CAC/E,CAAC;KACD,QAAQ,CACP,uHAAuH,CACxH,CAAC;AAGJ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IAC9F,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAClF,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,QAAQ,CAAC,+EAA+E,CAAC;CAC7F,CAAC;KACD,QAAQ,CAAC,sEAAsE,CAAC,CAAC;AAGpF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAClF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CACP,uGAAuG,CACxG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAChF,GAAG,EAAE,aAAa,CAAC,QAAQ,CACzB,iGAAiG,CAClG;IACD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IAC7F,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC3F,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,QAAQ,CAAC;SACf,QAAQ,CACP,uFAAuF,CACxF;IACH,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,uIAAuI,CACxI;IACH,oBAAoB,EAAE,CAAC;SACpB,KAAK,CAAC,0BAA0B,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,UAAU,EAAE,uBAAuB;IACnC,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,iBAAiB,CAAC;SACxB,QAAQ,CACP,qFAAqF,CACtF;IACH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACvF,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,gMAAgM,CACjM;CACJ,CAAC;KACD,QAAQ,CACP,2FAA2F,CAC5F,CAAC"}
1
+ {"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,UAAU;IACV,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,aAAa;IACb,oBAAoB;CACZ,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAuD;IACjF,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SACjC,QAAQ,CACP,iKAAiK,CAClK;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4EAA4E,CAAC;IACzF,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+FAA+F,CAChG;CACJ,CAAC;KACD,QAAQ,CAAC,qFAAqF,CAAC,CAAC;AAGnG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,QAAQ,CAAC,yEAAyE,CAAC;IACtF,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,CACP,4HAA4H,CAC7H;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACzE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAC5B,2EAA2E,CAC5E;IACD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC/E,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,2DAA2D,CAAC;IACxE,eAAe,EAAE,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,0DAA0D,CAAC;IACvE,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0FAA0F,CAC3F;IACH,oBAAoB,EAAE,CAAC;SACpB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,kFAAkF,CAAC;IAC/F,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;SACjD,QAAQ,CAAC,yDAAyD,CAAC;IACtE,gBAAgB,EAAE,CAAC;SAChB,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,CAAC,uEAAuE,CAAC;IACpF,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,UAAU,CAAC;SACjB,QAAQ,CAAC,0EAA0E,CAAC;IACvF,uBAAuB,EAAE,CAAC;SACvB,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CAAC,0CAA0C,CAAC;IACvD,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,CAC3C,8IAA8I,CAC/I;IACD,UAAU,EAAE,oBAAoB,CAAC,QAAQ,CACvC,yEAAyE,CAC1E;IACD,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE;SACxC,QAAQ,EAAE;SACV,QAAQ,CACP,4JAA4J,CAC7J;CACJ,CAAC;KACD,QAAQ,CAAC,oEAAoE,CAAC,CAAC;AAGlF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpC,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SAC1C,QAAQ,CACP,kLAAkL,CACnL;IACH,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACzF,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,CAAC,mEAAmE,CAAC;CACjF,CAAC;KACD,QAAQ,CACP,2FAA2F,CAC5F,CAAC;AAGJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,QAAQ,CAAC;SACf,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACzF,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;SACnC,QAAQ,CACP,sIAAsI,CACvI;IACH,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CACP,iHAAiH,CAClH;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;SAClD,QAAQ,CAAC,iEAAiE,CAAC;CAC/E,CAAC;KACD,QAAQ,CACP,uHAAuH,CACxH,CAAC;AAGJ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IAC9F,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAClF,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,QAAQ,CAAC,+EAA+E,CAAC;CAC7F,CAAC;KACD,QAAQ,CAAC,sEAAsE,CAAC,CAAC;AAGpF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAClF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CACP,uGAAuG,CACxG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAChF,GAAG,EAAE,aAAa,CAAC,QAAQ,CACzB,iGAAiG,CAClG;IACD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IAC7F,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC3F,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,QAAQ,CAAC;SACf,QAAQ,CACP,uFAAuF,CACxF;IACH,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,uIAAuI,CACxI;IACH,oBAAoB,EAAE,CAAC;SACpB,KAAK,CAAC,0BAA0B,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,UAAU,EAAE,uBAAuB;IACnC,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,iBAAiB,CAAC;SACxB,QAAQ,CACP,qFAAqF,CACtF;IACH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACvF,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,gMAAgM,CACjM;CACJ,CAAC;KACD,QAAQ,CACP,2FAA2F,CAC5F,CAAC"}
package/dist/config.d.ts CHANGED
@@ -371,10 +371,11 @@ export declare const GlobalConfig: z.ZodObject<{
371
371
  keep_last_runs_per_project?: number | undefined;
372
372
  }>>;
373
373
  /**
374
- * Durable NON-SECRET credential-profile registry (INV-135): additional
375
- * credential identities per harness beyond the engine default. Uniqueness
376
- * of (harness_id, profile_id) is enforced here; secret material lives in
377
- * the vendor dir or the secret store, never in config.
374
+ * Durable NON-SECRET named-binding registry (INV-135): additional routing
375
+ * bindings per harness beyond the engine default. Uniqueness of
376
+ * (harness_id, profile_id) is enforced here; credential material may live
377
+ * in Claudexor-owned scoped state, a managed secret store, or a
378
+ * platform-declared vendor/OS-user store, never in config.
378
379
  */
379
380
  credential_profiles: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
380
381
  profile_id: z.ZodString;
@@ -460,20 +461,28 @@ export declare const GlobalConfig: z.ZodObject<{
460
461
  /**
461
462
  * ONE typed profile-selection policy (INV-135, W5.4): what happens
462
463
  * when the selected credential profile hits its vendor limit.
463
- * Rotation is OPT-IN and rotates only on typed vendor-limit
464
- * signals or proactive headroom breaches — never on ordinary
465
- * network errors.
464
+ * `auto` is the stored default and resolves BY CREDENTIAL KIND at
465
+ * decision time (`effectiveLimitAction`): rotate for subscription
466
+ * (`local_session`) subjects, fail for metered API-key or unknown
467
+ * routes. This SUPERSEDES the earlier "rotation is opt-in" lock
468
+ * (CONCEPT-CHANGE(INV-135), owner decision 2026-08-17): a spent
469
+ * subscription window fails over by default, while explicitly
470
+ * persisted `fail`/`ask`/`rotate` values keep their exact meaning
471
+ * and are never rewritten — only the interpretation of an ABSENT
472
+ * key changed. Rotation still fires only on typed vendor-limit
473
+ * signals, proactive headroom breaches, or the structural
474
+ * pre-progress predicate — never on ordinary network errors.
466
475
  */
467
476
  profile_policy: z.ZodDefault<z.ZodObject<{
468
- limit_action: z.ZodDefault<z.ZodEnum<["fail", "ask", "rotate"]>>;
477
+ limit_action: z.ZodDefault<z.ZodEnum<["auto", "fail", "ask", "rotate"]>>;
469
478
  rotation_eligible: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
470
479
  headroom_threshold: z.ZodDefault<z.ZodNumber>;
471
480
  }, "strict", z.ZodTypeAny, {
472
- limit_action: "ask" | "fail" | "rotate";
481
+ limit_action: "ask" | "auto" | "fail" | "rotate";
473
482
  rotation_eligible: string[];
474
483
  headroom_threshold: number;
475
484
  }, {
476
- limit_action?: "ask" | "fail" | "rotate" | undefined;
485
+ limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
477
486
  rotation_eligible?: string[] | undefined;
478
487
  headroom_threshold?: number | undefined;
479
488
  }>>;
@@ -491,7 +500,7 @@ export declare const GlobalConfig: z.ZodObject<{
491
500
  max_turns: number | null;
492
501
  max_rounds: number | null;
493
502
  profile_policy: {
494
- limit_action: "ask" | "fail" | "rotate";
503
+ limit_action: "ask" | "auto" | "fail" | "rotate";
495
504
  rotation_eligible: string[];
496
505
  headroom_threshold: number;
497
506
  };
@@ -508,7 +517,7 @@ export declare const GlobalConfig: z.ZodObject<{
508
517
  max_turns?: number | null | undefined;
509
518
  max_rounds?: number | null | undefined;
510
519
  profile_policy?: {
511
- limit_action?: "ask" | "fail" | "rotate" | undefined;
520
+ limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
512
521
  rotation_eligible?: string[] | undefined;
513
522
  headroom_threshold?: number | undefined;
514
523
  } | undefined;
@@ -575,7 +584,7 @@ export declare const GlobalConfig: z.ZodObject<{
575
584
  max_turns: number | null;
576
585
  max_rounds: number | null;
577
586
  profile_policy: {
578
- limit_action: "ask" | "fail" | "rotate";
587
+ limit_action: "ask" | "auto" | "fail" | "rotate";
579
588
  rotation_eligible: string[];
580
589
  headroom_threshold: number;
581
590
  };
@@ -642,7 +651,7 @@ export declare const GlobalConfig: z.ZodObject<{
642
651
  max_turns?: number | null | undefined;
643
652
  max_rounds?: number | null | undefined;
644
653
  profile_policy?: {
645
- limit_action?: "ask" | "fail" | "rotate" | undefined;
654
+ limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
646
655
  rotation_eligible?: string[] | undefined;
647
656
  headroom_threshold?: number | undefined;
648
657
  } | undefined;
@@ -1003,10 +1012,11 @@ export declare const ResolvedConfig: z.ZodObject<{
1003
1012
  keep_last_runs_per_project?: number | undefined;
1004
1013
  }>>;
1005
1014
  /**
1006
- * Durable NON-SECRET credential-profile registry (INV-135): additional
1007
- * credential identities per harness beyond the engine default. Uniqueness
1008
- * of (harness_id, profile_id) is enforced here; secret material lives in
1009
- * the vendor dir or the secret store, never in config.
1015
+ * Durable NON-SECRET named-binding registry (INV-135): additional routing
1016
+ * bindings per harness beyond the engine default. Uniqueness of
1017
+ * (harness_id, profile_id) is enforced here; credential material may live
1018
+ * in Claudexor-owned scoped state, a managed secret store, or a
1019
+ * platform-declared vendor/OS-user store, never in config.
1010
1020
  */
1011
1021
  credential_profiles: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
1012
1022
  profile_id: z.ZodString;
@@ -1092,20 +1102,28 @@ export declare const ResolvedConfig: z.ZodObject<{
1092
1102
  /**
1093
1103
  * ONE typed profile-selection policy (INV-135, W5.4): what happens
1094
1104
  * when the selected credential profile hits its vendor limit.
1095
- * Rotation is OPT-IN and rotates only on typed vendor-limit
1096
- * signals or proactive headroom breaches — never on ordinary
1097
- * network errors.
1105
+ * `auto` is the stored default and resolves BY CREDENTIAL KIND at
1106
+ * decision time (`effectiveLimitAction`): rotate for subscription
1107
+ * (`local_session`) subjects, fail for metered API-key or unknown
1108
+ * routes. This SUPERSEDES the earlier "rotation is opt-in" lock
1109
+ * (CONCEPT-CHANGE(INV-135), owner decision 2026-08-17): a spent
1110
+ * subscription window fails over by default, while explicitly
1111
+ * persisted `fail`/`ask`/`rotate` values keep their exact meaning
1112
+ * and are never rewritten — only the interpretation of an ABSENT
1113
+ * key changed. Rotation still fires only on typed vendor-limit
1114
+ * signals, proactive headroom breaches, or the structural
1115
+ * pre-progress predicate — never on ordinary network errors.
1098
1116
  */
1099
1117
  profile_policy: z.ZodDefault<z.ZodObject<{
1100
- limit_action: z.ZodDefault<z.ZodEnum<["fail", "ask", "rotate"]>>;
1118
+ limit_action: z.ZodDefault<z.ZodEnum<["auto", "fail", "ask", "rotate"]>>;
1101
1119
  rotation_eligible: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1102
1120
  headroom_threshold: z.ZodDefault<z.ZodNumber>;
1103
1121
  }, "strict", z.ZodTypeAny, {
1104
- limit_action: "ask" | "fail" | "rotate";
1122
+ limit_action: "ask" | "auto" | "fail" | "rotate";
1105
1123
  rotation_eligible: string[];
1106
1124
  headroom_threshold: number;
1107
1125
  }, {
1108
- limit_action?: "ask" | "fail" | "rotate" | undefined;
1126
+ limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
1109
1127
  rotation_eligible?: string[] | undefined;
1110
1128
  headroom_threshold?: number | undefined;
1111
1129
  }>>;
@@ -1123,7 +1141,7 @@ export declare const ResolvedConfig: z.ZodObject<{
1123
1141
  max_turns: number | null;
1124
1142
  max_rounds: number | null;
1125
1143
  profile_policy: {
1126
- limit_action: "ask" | "fail" | "rotate";
1144
+ limit_action: "ask" | "auto" | "fail" | "rotate";
1127
1145
  rotation_eligible: string[];
1128
1146
  headroom_threshold: number;
1129
1147
  };
@@ -1140,7 +1158,7 @@ export declare const ResolvedConfig: z.ZodObject<{
1140
1158
  max_turns?: number | null | undefined;
1141
1159
  max_rounds?: number | null | undefined;
1142
1160
  profile_policy?: {
1143
- limit_action?: "ask" | "fail" | "rotate" | undefined;
1161
+ limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
1144
1162
  rotation_eligible?: string[] | undefined;
1145
1163
  headroom_threshold?: number | undefined;
1146
1164
  } | undefined;
@@ -1207,7 +1225,7 @@ export declare const ResolvedConfig: z.ZodObject<{
1207
1225
  max_turns: number | null;
1208
1226
  max_rounds: number | null;
1209
1227
  profile_policy: {
1210
- limit_action: "ask" | "fail" | "rotate";
1228
+ limit_action: "ask" | "auto" | "fail" | "rotate";
1211
1229
  rotation_eligible: string[];
1212
1230
  headroom_threshold: number;
1213
1231
  };
@@ -1274,7 +1292,7 @@ export declare const ResolvedConfig: z.ZodObject<{
1274
1292
  max_turns?: number | null | undefined;
1275
1293
  max_rounds?: number | null | undefined;
1276
1294
  profile_policy?: {
1277
- limit_action?: "ask" | "fail" | "rotate" | undefined;
1295
+ limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
1278
1296
  rotation_eligible?: string[] | undefined;
1279
1297
  headroom_threshold?: number | undefined;
1280
1298
  } | undefined;
@@ -1382,7 +1400,7 @@ export declare const ResolvedConfig: z.ZodObject<{
1382
1400
  max_turns: number | null;
1383
1401
  max_rounds: number | null;
1384
1402
  profile_policy: {
1385
- limit_action: "ask" | "fail" | "rotate";
1403
+ limit_action: "ask" | "auto" | "fail" | "rotate";
1386
1404
  rotation_eligible: string[];
1387
1405
  headroom_threshold: number;
1388
1406
  };
@@ -1490,7 +1508,7 @@ export declare const ResolvedConfig: z.ZodObject<{
1490
1508
  max_turns?: number | null | undefined;
1491
1509
  max_rounds?: number | null | undefined;
1492
1510
  profile_policy?: {
1493
- limit_action?: "ask" | "fail" | "rotate" | undefined;
1511
+ limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
1494
1512
  rotation_eligible?: string[] | undefined;
1495
1513
  headroom_threshold?: number | undefined;
1496
1514
  } | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -258,16 +258,18 @@ export const GlobalConfig = z
258
258
  .default({})
259
259
  .describe("Disk retention policy for engine-owned runtime artifacts."),
260
260
  /**
261
- * Durable NON-SECRET credential-profile registry (INV-135): additional
262
- * credential identities per harness beyond the engine default. Uniqueness
263
- * of (harness_id, profile_id) is enforced here; secret material lives in
264
- * the vendor dir or the secret store, never in config.
261
+ * Durable NON-SECRET named-binding registry (INV-135): additional routing
262
+ * bindings per harness beyond the engine default. Uniqueness of
263
+ * (harness_id, profile_id) is enforced here; credential material may live
264
+ * in Claudexor-owned scoped state, a managed secret store, or a
265
+ * platform-declared vendor/OS-user store, never in config.
265
266
  */
266
267
  credential_profiles: z
267
268
  .array(CredentialProfile)
268
269
  .default([])
269
270
  .superRefine((profiles, ctx) => {
270
271
  const seen = new Set();
272
+ const locators = new Set();
271
273
  for (const p of profiles) {
272
274
  const key = `${p.harness_id}\u0000${p.profile_id}`;
273
275
  if (seen.has(key))
@@ -276,9 +278,20 @@ export const GlobalConfig = z
276
278
  message: `duplicate credential profile ${p.profile_id} for harness ${p.harness_id}`,
277
279
  });
278
280
  seen.add(key);
281
+ // Locator uniqueness (unified account model): two rows sharing one
282
+ // config dir would be two names for ONE scoped state root — deletion,
283
+ // routing, and quota attribution could not tell them apart.
284
+ if (p.isolation_locator) {
285
+ if (locators.has(p.isolation_locator))
286
+ ctx.addIssue({
287
+ code: "custom",
288
+ message: `credential profiles must not share isolation_locator ${p.isolation_locator}`,
289
+ });
290
+ locators.add(p.isolation_locator);
291
+ }
279
292
  }
280
293
  })
281
- .describe("Durable non-secret credential-profile registry; secret material lives in the vendor dir or the secret store, never in config."),
294
+ .describe("Durable non-secret named-binding registry; credential material may live in Claudexor-owned scoped state, a managed secret store, or a platform-declared vendor/OS-user store, never in config."),
282
295
  harnesses: z
283
296
  .record(z.string(), z
284
297
  .object({
@@ -325,16 +338,24 @@ export const GlobalConfig = z
325
338
  /**
326
339
  * ONE typed profile-selection policy (INV-135, W5.4): what happens
327
340
  * when the selected credential profile hits its vendor limit.
328
- * Rotation is OPT-IN and rotates only on typed vendor-limit
329
- * signals or proactive headroom breaches — never on ordinary
330
- * network errors.
341
+ * `auto` is the stored default and resolves BY CREDENTIAL KIND at
342
+ * decision time (`effectiveLimitAction`): rotate for subscription
343
+ * (`local_session`) subjects, fail for metered API-key or unknown
344
+ * routes. This SUPERSEDES the earlier "rotation is opt-in" lock
345
+ * (CONCEPT-CHANGE(INV-135), owner decision 2026-08-17): a spent
346
+ * subscription window fails over by default, while explicitly
347
+ * persisted `fail`/`ask`/`rotate` values keep their exact meaning
348
+ * and are never rewritten — only the interpretation of an ABSENT
349
+ * key changed. Rotation still fires only on typed vendor-limit
350
+ * signals, proactive headroom breaches, or the structural
351
+ * pre-progress predicate — never on ordinary network errors.
331
352
  */
332
353
  profile_policy: z
333
354
  .object({
334
355
  limit_action: z
335
- .enum(["fail", "ask", "rotate"])
336
- .default("fail")
337
- .describe("On a typed vendor limit: fail the attempt, surface a typed ask, or rotate to the next eligible profile."),
356
+ .enum(["auto", "fail", "ask", "rotate"])
357
+ .default("auto")
358
+ .describe("On a typed vendor limit: auto (kind-aware default — rotate for subscription subjects, fail for metered), fail the attempt, surface a typed ask, or rotate to the next eligible profile."),
338
359
  rotation_eligible: z
339
360
  .array(z.string())
340
361
  .default([])