offrouter-core 0.2.1 → 0.2.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 (139) hide show
  1. package/dist/audit.d.ts +137 -0
  2. package/dist/audit.d.ts.map +1 -0
  3. package/dist/audit.js +320 -0
  4. package/dist/audit.js.map +1 -0
  5. package/dist/auth/credential-chain.d.ts +84 -0
  6. package/dist/auth/credential-chain.d.ts.map +1 -0
  7. package/dist/auth/credential-chain.js +150 -0
  8. package/dist/auth/credential-chain.js.map +1 -0
  9. package/dist/auth/index.d.ts +10 -0
  10. package/dist/auth/index.d.ts.map +1 -0
  11. package/dist/auth/index.js +7 -0
  12. package/dist/auth/index.js.map +1 -0
  13. package/dist/auth/keychain.d.ts +60 -0
  14. package/dist/auth/keychain.d.ts.map +1 -0
  15. package/dist/auth/keychain.js +104 -0
  16. package/dist/auth/keychain.js.map +1 -0
  17. package/dist/auth/oauth-pkce.d.ts +138 -0
  18. package/dist/auth/oauth-pkce.d.ts.map +1 -0
  19. package/dist/auth/oauth-pkce.js +375 -0
  20. package/dist/auth/oauth-pkce.js.map +1 -0
  21. package/dist/auth/oauth-server.d.ts +36 -0
  22. package/dist/auth/oauth-server.d.ts.map +1 -0
  23. package/dist/auth/oauth-server.js +210 -0
  24. package/dist/auth/oauth-server.js.map +1 -0
  25. package/dist/config.d.ts +76 -0
  26. package/dist/config.d.ts.map +1 -0
  27. package/dist/config.js +355 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/delegation.d.ts +123 -0
  30. package/dist/delegation.d.ts.map +1 -0
  31. package/dist/delegation.js +455 -0
  32. package/dist/delegation.js.map +1 -0
  33. package/dist/index.d.ts +41 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +26 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/policy.d.ts +45 -0
  38. package/dist/policy.d.ts.map +1 -0
  39. package/dist/policy.js +318 -0
  40. package/dist/policy.js.map +1 -0
  41. package/{src/protocol.ts → dist/protocol.d.ts} +2 -2
  42. package/dist/protocol.d.ts.map +1 -0
  43. package/dist/protocol.js +6 -0
  44. package/dist/protocol.js.map +1 -0
  45. package/dist/providers/adapter.d.ts +137 -0
  46. package/dist/providers/adapter.d.ts.map +1 -0
  47. package/dist/providers/adapter.js +163 -0
  48. package/dist/providers/adapter.js.map +1 -0
  49. package/dist/providers/catalog-data.d.ts +128 -0
  50. package/dist/providers/catalog-data.d.ts.map +1 -0
  51. package/dist/providers/catalog-data.js +397 -0
  52. package/dist/providers/catalog-data.js.map +1 -0
  53. package/dist/providers/catalog.d.ts +63 -0
  54. package/dist/providers/catalog.d.ts.map +1 -0
  55. package/dist/providers/catalog.js +394 -0
  56. package/dist/providers/catalog.js.map +1 -0
  57. package/dist/providers/fake.d.ts +46 -0
  58. package/dist/providers/fake.d.ts.map +1 -0
  59. package/dist/providers/fake.js +234 -0
  60. package/dist/providers/fake.js.map +1 -0
  61. package/dist/providers/openai-compatible.d.ts +65 -0
  62. package/dist/providers/openai-compatible.d.ts.map +1 -0
  63. package/dist/providers/openai-compatible.js +434 -0
  64. package/dist/providers/openai-compatible.js.map +1 -0
  65. package/dist/proxy/responses-mapper.d.ts +366 -0
  66. package/dist/proxy/responses-mapper.d.ts.map +1 -0
  67. package/dist/proxy/responses-mapper.js +517 -0
  68. package/dist/proxy/responses-mapper.js.map +1 -0
  69. package/dist/proxy/responses-server.d.ts +29 -0
  70. package/dist/proxy/responses-server.d.ts.map +1 -0
  71. package/dist/proxy/responses-server.js +360 -0
  72. package/dist/proxy/responses-server.js.map +1 -0
  73. package/dist/router.d.ts +18 -0
  74. package/dist/router.d.ts.map +1 -0
  75. package/dist/router.js +296 -0
  76. package/dist/router.js.map +1 -0
  77. package/dist/schemas.d.ts +560 -0
  78. package/dist/schemas.d.ts.map +1 -0
  79. package/{src/schemas.ts → dist/schemas.js} +83 -103
  80. package/dist/schemas.js.map +1 -0
  81. package/dist/secrets.d.ts +112 -0
  82. package/dist/secrets.d.ts.map +1 -0
  83. package/dist/secrets.js +326 -0
  84. package/dist/secrets.js.map +1 -0
  85. package/dist/types.d.ts +117 -0
  86. package/dist/types.d.ts.map +1 -0
  87. package/dist/types.js +6 -0
  88. package/dist/types.js.map +1 -0
  89. package/dist/usage-file.d.ts +59 -0
  90. package/dist/usage-file.d.ts.map +1 -0
  91. package/dist/usage-file.js +316 -0
  92. package/dist/usage-file.js.map +1 -0
  93. package/dist/usage.d.ts +235 -0
  94. package/dist/usage.d.ts.map +1 -0
  95. package/dist/usage.js +517 -0
  96. package/dist/usage.js.map +1 -0
  97. package/package.json +7 -2
  98. package/src/audit.test.ts +0 -302
  99. package/src/audit.ts +0 -553
  100. package/src/auth/credential-chain.test.ts +0 -326
  101. package/src/auth/credential-chain.ts +0 -235
  102. package/src/auth/index.ts +0 -45
  103. package/src/auth/keychain.test.ts +0 -265
  104. package/src/auth/keychain.ts +0 -168
  105. package/src/auth/oauth-pkce.test.ts +0 -329
  106. package/src/auth/oauth-pkce.ts +0 -571
  107. package/src/auth/oauth-server.test.ts +0 -83
  108. package/src/auth/oauth-server.ts +0 -296
  109. package/src/config.test.ts +0 -479
  110. package/src/config.ts +0 -505
  111. package/src/delegation.test.ts +0 -368
  112. package/src/delegation.ts +0 -605
  113. package/src/index.ts +0 -280
  114. package/src/policy.test.ts +0 -634
  115. package/src/policy.ts +0 -420
  116. package/src/providers/adapter.test.ts +0 -293
  117. package/src/providers/adapter.ts +0 -328
  118. package/src/providers/catalog-data.test.ts +0 -258
  119. package/src/providers/catalog-data.ts +0 -498
  120. package/src/providers/catalog.test.ts +0 -84
  121. package/src/providers/catalog.ts +0 -483
  122. package/src/providers/fake.ts +0 -312
  123. package/src/providers/openai-compatible.test.ts +0 -366
  124. package/src/providers/openai-compatible.ts +0 -554
  125. package/src/proxy/responses-mapper.test.ts +0 -290
  126. package/src/proxy/responses-mapper.ts +0 -736
  127. package/src/proxy/responses-server.test.ts +0 -322
  128. package/src/proxy/responses-server.ts +0 -469
  129. package/src/router.test.ts +0 -699
  130. package/src/router.ts +0 -352
  131. package/src/schemas.test.ts +0 -291
  132. package/src/secrets.test.ts +0 -271
  133. package/src/secrets.ts +0 -461
  134. package/src/types.ts +0 -173
  135. package/src/usage-file.test.ts +0 -243
  136. package/src/usage-file.ts +0 -435
  137. package/src/usage.test.ts +0 -335
  138. package/src/usage.ts +0 -859
  139. package/tsconfig.json +0 -9
@@ -0,0 +1,560 @@
1
+ /**
2
+ * Zod schemas for OffRouter V1 routing contracts.
3
+ * Aligned with docs/contracts/v1-routing-contract.md
4
+ */
5
+ import { z } from "zod";
6
+ export declare const AuthTierSchema: z.ZodEnum<["subscription", "local", "api-key"]>;
7
+ export declare const AuthScopeSchema: z.ZodEnum<["first-party", "third-party", "unknown"]>;
8
+ export declare const SubscriptionStatusSchema: z.ZodEnum<["active", "near-limit", "exhausted", "rate-limited", "expired", "unconfigured", "unknown"]>;
9
+ export declare const ProviderHealthSchema: z.ZodEnum<["healthy", "degraded", "dead"]>;
10
+ export declare const FallbackReasonSchema: z.ZodEnum<["primary", "subscription_exhausted", "subscription_degraded", "subscription_unconfigured", "subscription_scope_denied", "local_preferred", "api_key_fallback", "policy_denied", "provider_error"]>;
11
+ export declare const HarnessKindSchema: z.ZodEnum<["claude", "codex", "gemini", "grok", "cursor", "pi", "other"]>;
12
+ export declare const TaskKindSchema: z.ZodEnum<["explain", "code", "review", "plan", "research", "image", "tools", "other"]>;
13
+ export declare const RiskLevelSchema: z.ZodEnum<["low", "medium", "high"]>;
14
+ export declare const PolicyDenialCodeSchema: z.ZodEnum<["profile_not_allowlisted", "work_profile_denied", "provider_denied", "project_untrusted", "privacy_label_denied", "local_only_required", "cost_cap_exceeded", "api_key_blocked_by_subscription_first_policy", "subscription_scope_denied", "capability_missing"]>;
15
+ export declare const PolicyDenialTargetSchema: z.ZodEnum<["profile", "provider", "model", "workspace", "candidate"]>;
16
+ export declare const PolicyDenialSchema: z.ZodObject<{
17
+ code: z.ZodEnum<["profile_not_allowlisted", "work_profile_denied", "provider_denied", "project_untrusted", "privacy_label_denied", "local_only_required", "cost_cap_exceeded", "api_key_blocked_by_subscription_first_policy", "subscription_scope_denied", "capability_missing"]>;
18
+ target: z.ZodEnum<["profile", "provider", "model", "workspace", "candidate"]>;
19
+ id: z.ZodString;
20
+ message: z.ZodString;
21
+ }, "strict", z.ZodTypeAny, {
22
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
23
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
24
+ id: string;
25
+ message: string;
26
+ }, {
27
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
28
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
29
+ id: string;
30
+ message: string;
31
+ }>;
32
+ export declare const ProviderCandidateSchema: z.ZodObject<{
33
+ providerId: z.ZodString;
34
+ modelId: z.ZodString;
35
+ displayName: z.ZodOptional<z.ZodString>;
36
+ authTier: z.ZodEnum<["subscription", "local", "api-key"]>;
37
+ authScope: z.ZodEnum<["first-party", "third-party", "unknown"]>;
38
+ subscriptionStatus: z.ZodOptional<z.ZodEnum<["active", "near-limit", "exhausted", "rate-limited", "expired", "unconfigured", "unknown"]>>;
39
+ health: z.ZodEnum<["healthy", "degraded", "dead"]>;
40
+ accountId: z.ZodOptional<z.ZodString>;
41
+ subscriptionQuotaPercentRemaining: z.ZodOptional<z.ZodNumber>;
42
+ supportsTools: z.ZodBoolean;
43
+ supportsStreaming: z.ZodBoolean;
44
+ supportsJson: z.ZodBoolean;
45
+ supportsImages: z.ZodBoolean;
46
+ contextWindowTokens: z.ZodOptional<z.ZodNumber>;
47
+ maxOutputTokens: z.ZodOptional<z.ZodNumber>;
48
+ estimatedCostUsd: z.ZodOptional<z.ZodNumber>;
49
+ }, "strict", z.ZodTypeAny, {
50
+ authTier: "subscription" | "local" | "api-key";
51
+ authScope: "first-party" | "third-party" | "unknown";
52
+ providerId: string;
53
+ modelId: string;
54
+ health: "healthy" | "degraded" | "dead";
55
+ supportsTools: boolean;
56
+ supportsStreaming: boolean;
57
+ supportsJson: boolean;
58
+ supportsImages: boolean;
59
+ displayName?: string | undefined;
60
+ subscriptionStatus?: "unknown" | "active" | "near-limit" | "exhausted" | "rate-limited" | "expired" | "unconfigured" | undefined;
61
+ accountId?: string | undefined;
62
+ subscriptionQuotaPercentRemaining?: number | undefined;
63
+ contextWindowTokens?: number | undefined;
64
+ maxOutputTokens?: number | undefined;
65
+ estimatedCostUsd?: number | undefined;
66
+ }, {
67
+ authTier: "subscription" | "local" | "api-key";
68
+ authScope: "first-party" | "third-party" | "unknown";
69
+ providerId: string;
70
+ modelId: string;
71
+ health: "healthy" | "degraded" | "dead";
72
+ supportsTools: boolean;
73
+ supportsStreaming: boolean;
74
+ supportsJson: boolean;
75
+ supportsImages: boolean;
76
+ displayName?: string | undefined;
77
+ subscriptionStatus?: "unknown" | "active" | "near-limit" | "exhausted" | "rate-limited" | "expired" | "unconfigured" | undefined;
78
+ accountId?: string | undefined;
79
+ subscriptionQuotaPercentRemaining?: number | undefined;
80
+ contextWindowTokens?: number | undefined;
81
+ maxOutputTokens?: number | undefined;
82
+ estimatedCostUsd?: number | undefined;
83
+ }>;
84
+ export declare const HarnessRefSchema: z.ZodObject<{
85
+ kind: z.ZodEnum<["claude", "codex", "gemini", "grok", "cursor", "pi", "other"]>;
86
+ profile: z.ZodString;
87
+ }, "strict", z.ZodTypeAny, {
88
+ kind: "claude" | "codex" | "gemini" | "grok" | "cursor" | "pi" | "other";
89
+ profile: string;
90
+ }, {
91
+ kind: "claude" | "codex" | "gemini" | "grok" | "cursor" | "pi" | "other";
92
+ profile: string;
93
+ }>;
94
+ /**
95
+ * Task payload for routing: preview + digest only.
96
+ * Full prompts are rejected here by schema absence of `prompt`.
97
+ */
98
+ export declare const RouteTaskSchema: z.ZodObject<{
99
+ promptPreview: z.ZodString;
100
+ promptDigest: z.ZodString;
101
+ kind: z.ZodEnum<["explain", "code", "review", "plan", "research", "image", "tools", "other"]>;
102
+ risk: z.ZodEnum<["low", "medium", "high"]>;
103
+ requiresTools: z.ZodOptional<z.ZodBoolean>;
104
+ requiresImages: z.ZodOptional<z.ZodBoolean>;
105
+ requiresStreaming: z.ZodOptional<z.ZodBoolean>;
106
+ requiresJson: z.ZodOptional<z.ZodBoolean>;
107
+ }, "strict", z.ZodTypeAny, {
108
+ kind: "code" | "other" | "explain" | "review" | "plan" | "research" | "image" | "tools";
109
+ promptPreview: string;
110
+ promptDigest: string;
111
+ risk: "low" | "medium" | "high";
112
+ requiresTools?: boolean | undefined;
113
+ requiresImages?: boolean | undefined;
114
+ requiresStreaming?: boolean | undefined;
115
+ requiresJson?: boolean | undefined;
116
+ }, {
117
+ kind: "code" | "other" | "explain" | "review" | "plan" | "research" | "image" | "tools";
118
+ promptPreview: string;
119
+ promptDigest: string;
120
+ risk: "low" | "medium" | "high";
121
+ requiresTools?: boolean | undefined;
122
+ requiresImages?: boolean | undefined;
123
+ requiresStreaming?: boolean | undefined;
124
+ requiresJson?: boolean | undefined;
125
+ }>;
126
+ export declare const WorkspaceRefSchema: z.ZodObject<{
127
+ cwd: z.ZodString;
128
+ trusted: z.ZodBoolean;
129
+ privacyLabel: z.ZodOptional<z.ZodString>;
130
+ }, "strict", z.ZodTypeAny, {
131
+ cwd: string;
132
+ trusted: boolean;
133
+ privacyLabel?: string | undefined;
134
+ }, {
135
+ cwd: string;
136
+ trusted: boolean;
137
+ privacyLabel?: string | undefined;
138
+ }>;
139
+ export declare const RouteConstraintsSchema: z.ZodObject<{
140
+ maxCostUsd: z.ZodOptional<z.ZodNumber>;
141
+ localOnly: z.ZodOptional<z.ZodBoolean>;
142
+ allowApiKeyFallback: z.ZodOptional<z.ZodBoolean>;
143
+ subscriptionFirst: z.ZodOptional<z.ZodBoolean>;
144
+ }, "strict", z.ZodTypeAny, {
145
+ maxCostUsd?: number | undefined;
146
+ localOnly?: boolean | undefined;
147
+ allowApiKeyFallback?: boolean | undefined;
148
+ subscriptionFirst?: boolean | undefined;
149
+ }, {
150
+ maxCostUsd?: number | undefined;
151
+ localOnly?: boolean | undefined;
152
+ allowApiKeyFallback?: boolean | undefined;
153
+ subscriptionFirst?: boolean | undefined;
154
+ }>;
155
+ export declare const RouteRequestSchema: z.ZodObject<{
156
+ protocolVersion: z.ZodLiteral<"offrouter.route.v1">;
157
+ requestId: z.ZodString;
158
+ harness: z.ZodObject<{
159
+ kind: z.ZodEnum<["claude", "codex", "gemini", "grok", "cursor", "pi", "other"]>;
160
+ profile: z.ZodString;
161
+ }, "strict", z.ZodTypeAny, {
162
+ kind: "claude" | "codex" | "gemini" | "grok" | "cursor" | "pi" | "other";
163
+ profile: string;
164
+ }, {
165
+ kind: "claude" | "codex" | "gemini" | "grok" | "cursor" | "pi" | "other";
166
+ profile: string;
167
+ }>;
168
+ task: z.ZodObject<{
169
+ promptPreview: z.ZodString;
170
+ promptDigest: z.ZodString;
171
+ kind: z.ZodEnum<["explain", "code", "review", "plan", "research", "image", "tools", "other"]>;
172
+ risk: z.ZodEnum<["low", "medium", "high"]>;
173
+ requiresTools: z.ZodOptional<z.ZodBoolean>;
174
+ requiresImages: z.ZodOptional<z.ZodBoolean>;
175
+ requiresStreaming: z.ZodOptional<z.ZodBoolean>;
176
+ requiresJson: z.ZodOptional<z.ZodBoolean>;
177
+ }, "strict", z.ZodTypeAny, {
178
+ kind: "code" | "other" | "explain" | "review" | "plan" | "research" | "image" | "tools";
179
+ promptPreview: string;
180
+ promptDigest: string;
181
+ risk: "low" | "medium" | "high";
182
+ requiresTools?: boolean | undefined;
183
+ requiresImages?: boolean | undefined;
184
+ requiresStreaming?: boolean | undefined;
185
+ requiresJson?: boolean | undefined;
186
+ }, {
187
+ kind: "code" | "other" | "explain" | "review" | "plan" | "research" | "image" | "tools";
188
+ promptPreview: string;
189
+ promptDigest: string;
190
+ risk: "low" | "medium" | "high";
191
+ requiresTools?: boolean | undefined;
192
+ requiresImages?: boolean | undefined;
193
+ requiresStreaming?: boolean | undefined;
194
+ requiresJson?: boolean | undefined;
195
+ }>;
196
+ workspace: z.ZodObject<{
197
+ cwd: z.ZodString;
198
+ trusted: z.ZodBoolean;
199
+ privacyLabel: z.ZodOptional<z.ZodString>;
200
+ }, "strict", z.ZodTypeAny, {
201
+ cwd: string;
202
+ trusted: boolean;
203
+ privacyLabel?: string | undefined;
204
+ }, {
205
+ cwd: string;
206
+ trusted: boolean;
207
+ privacyLabel?: string | undefined;
208
+ }>;
209
+ constraints: z.ZodObject<{
210
+ maxCostUsd: z.ZodOptional<z.ZodNumber>;
211
+ localOnly: z.ZodOptional<z.ZodBoolean>;
212
+ allowApiKeyFallback: z.ZodOptional<z.ZodBoolean>;
213
+ subscriptionFirst: z.ZodOptional<z.ZodBoolean>;
214
+ }, "strict", z.ZodTypeAny, {
215
+ maxCostUsd?: number | undefined;
216
+ localOnly?: boolean | undefined;
217
+ allowApiKeyFallback?: boolean | undefined;
218
+ subscriptionFirst?: boolean | undefined;
219
+ }, {
220
+ maxCostUsd?: number | undefined;
221
+ localOnly?: boolean | undefined;
222
+ allowApiKeyFallback?: boolean | undefined;
223
+ subscriptionFirst?: boolean | undefined;
224
+ }>;
225
+ }, "strict", z.ZodTypeAny, {
226
+ workspace: {
227
+ cwd: string;
228
+ trusted: boolean;
229
+ privacyLabel?: string | undefined;
230
+ };
231
+ task: {
232
+ kind: "code" | "other" | "explain" | "review" | "plan" | "research" | "image" | "tools";
233
+ promptPreview: string;
234
+ promptDigest: string;
235
+ risk: "low" | "medium" | "high";
236
+ requiresTools?: boolean | undefined;
237
+ requiresImages?: boolean | undefined;
238
+ requiresStreaming?: boolean | undefined;
239
+ requiresJson?: boolean | undefined;
240
+ };
241
+ protocolVersion: "offrouter.route.v1";
242
+ requestId: string;
243
+ harness: {
244
+ kind: "claude" | "codex" | "gemini" | "grok" | "cursor" | "pi" | "other";
245
+ profile: string;
246
+ };
247
+ constraints: {
248
+ maxCostUsd?: number | undefined;
249
+ localOnly?: boolean | undefined;
250
+ allowApiKeyFallback?: boolean | undefined;
251
+ subscriptionFirst?: boolean | undefined;
252
+ };
253
+ }, {
254
+ workspace: {
255
+ cwd: string;
256
+ trusted: boolean;
257
+ privacyLabel?: string | undefined;
258
+ };
259
+ task: {
260
+ kind: "code" | "other" | "explain" | "review" | "plan" | "research" | "image" | "tools";
261
+ promptPreview: string;
262
+ promptDigest: string;
263
+ risk: "low" | "medium" | "high";
264
+ requiresTools?: boolean | undefined;
265
+ requiresImages?: boolean | undefined;
266
+ requiresStreaming?: boolean | undefined;
267
+ requiresJson?: boolean | undefined;
268
+ };
269
+ protocolVersion: "offrouter.route.v1";
270
+ requestId: string;
271
+ harness: {
272
+ kind: "claude" | "codex" | "gemini" | "grok" | "cursor" | "pi" | "other";
273
+ profile: string;
274
+ };
275
+ constraints: {
276
+ maxCostUsd?: number | undefined;
277
+ localOnly?: boolean | undefined;
278
+ allowApiKeyFallback?: boolean | undefined;
279
+ subscriptionFirst?: boolean | undefined;
280
+ };
281
+ }>;
282
+ export declare const SelectedRouteSchema: z.ZodObject<{
283
+ provider: z.ZodString;
284
+ model: z.ZodString;
285
+ authTier: z.ZodEnum<["subscription", "local", "api-key"]>;
286
+ authScope: z.ZodOptional<z.ZodEnum<["first-party", "third-party", "unknown"]>>;
287
+ accountId: z.ZodOptional<z.ZodString>;
288
+ }, "strict", z.ZodTypeAny, {
289
+ provider: string;
290
+ model: string;
291
+ authTier: "subscription" | "local" | "api-key";
292
+ authScope?: "first-party" | "third-party" | "unknown" | undefined;
293
+ accountId?: string | undefined;
294
+ }, {
295
+ provider: string;
296
+ model: string;
297
+ authTier: "subscription" | "local" | "api-key";
298
+ authScope?: "first-party" | "third-party" | "unknown" | undefined;
299
+ accountId?: string | undefined;
300
+ }>;
301
+ export declare const FallbackChainEntrySchema: z.ZodObject<{
302
+ provider: z.ZodString;
303
+ model: z.ZodString;
304
+ authTier: z.ZodEnum<["subscription", "local", "api-key"]>;
305
+ reason: z.ZodEnum<["primary", "subscription_exhausted", "subscription_degraded", "subscription_unconfigured", "subscription_scope_denied", "local_preferred", "api_key_fallback", "policy_denied", "provider_error"]>;
306
+ }, "strict", z.ZodTypeAny, {
307
+ provider: string;
308
+ model: string;
309
+ authTier: "subscription" | "local" | "api-key";
310
+ reason: "primary" | "subscription_exhausted" | "subscription_degraded" | "subscription_unconfigured" | "subscription_scope_denied" | "local_preferred" | "api_key_fallback" | "policy_denied" | "provider_error";
311
+ }, {
312
+ provider: string;
313
+ model: string;
314
+ authTier: "subscription" | "local" | "api-key";
315
+ reason: "primary" | "subscription_exhausted" | "subscription_degraded" | "subscription_unconfigured" | "subscription_scope_denied" | "local_preferred" | "api_key_fallback" | "policy_denied" | "provider_error";
316
+ }>;
317
+ export declare const RouteDecisionSchema: z.ZodObject<{
318
+ protocolVersion: z.ZodLiteral<"offrouter.route.v1">;
319
+ decisionId: z.ZodString;
320
+ requestId: z.ZodString;
321
+ route: z.ZodOptional<z.ZodNullable<z.ZodObject<{
322
+ provider: z.ZodString;
323
+ model: z.ZodString;
324
+ authTier: z.ZodEnum<["subscription", "local", "api-key"]>;
325
+ authScope: z.ZodOptional<z.ZodEnum<["first-party", "third-party", "unknown"]>>;
326
+ accountId: z.ZodOptional<z.ZodString>;
327
+ }, "strict", z.ZodTypeAny, {
328
+ provider: string;
329
+ model: string;
330
+ authTier: "subscription" | "local" | "api-key";
331
+ authScope?: "first-party" | "third-party" | "unknown" | undefined;
332
+ accountId?: string | undefined;
333
+ }, {
334
+ provider: string;
335
+ model: string;
336
+ authTier: "subscription" | "local" | "api-key";
337
+ authScope?: "first-party" | "third-party" | "unknown" | undefined;
338
+ accountId?: string | undefined;
339
+ }>>>;
340
+ reason: z.ZodString;
341
+ explanation: z.ZodString;
342
+ fallbackChain: z.ZodOptional<z.ZodArray<z.ZodObject<{
343
+ provider: z.ZodString;
344
+ model: z.ZodString;
345
+ authTier: z.ZodEnum<["subscription", "local", "api-key"]>;
346
+ reason: z.ZodEnum<["primary", "subscription_exhausted", "subscription_degraded", "subscription_unconfigured", "subscription_scope_denied", "local_preferred", "api_key_fallback", "policy_denied", "provider_error"]>;
347
+ }, "strict", z.ZodTypeAny, {
348
+ provider: string;
349
+ model: string;
350
+ authTier: "subscription" | "local" | "api-key";
351
+ reason: "primary" | "subscription_exhausted" | "subscription_degraded" | "subscription_unconfigured" | "subscription_scope_denied" | "local_preferred" | "api_key_fallback" | "policy_denied" | "provider_error";
352
+ }, {
353
+ provider: string;
354
+ model: string;
355
+ authTier: "subscription" | "local" | "api-key";
356
+ reason: "primary" | "subscription_exhausted" | "subscription_degraded" | "subscription_unconfigured" | "subscription_scope_denied" | "local_preferred" | "api_key_fallback" | "policy_denied" | "provider_error";
357
+ }>, "many">>;
358
+ policyDenials: z.ZodOptional<z.ZodArray<z.ZodObject<{
359
+ code: z.ZodEnum<["profile_not_allowlisted", "work_profile_denied", "provider_denied", "project_untrusted", "privacy_label_denied", "local_only_required", "cost_cap_exceeded", "api_key_blocked_by_subscription_first_policy", "subscription_scope_denied", "capability_missing"]>;
360
+ target: z.ZodEnum<["profile", "provider", "model", "workspace", "candidate"]>;
361
+ id: z.ZodString;
362
+ message: z.ZodString;
363
+ }, "strict", z.ZodTypeAny, {
364
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
365
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
366
+ id: string;
367
+ message: string;
368
+ }, {
369
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
370
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
371
+ id: string;
372
+ message: string;
373
+ }>, "many">>;
374
+ confidence: z.ZodOptional<z.ZodNumber>;
375
+ auditSummary: z.ZodOptional<z.ZodString>;
376
+ blocked: z.ZodOptional<z.ZodBoolean>;
377
+ needsConfiguration: z.ZodOptional<z.ZodBoolean>;
378
+ nearLimitWarning: z.ZodOptional<z.ZodString>;
379
+ }, "strict", z.ZodTypeAny, {
380
+ reason: string;
381
+ explanation: string;
382
+ protocolVersion: "offrouter.route.v1";
383
+ requestId: string;
384
+ decisionId: string;
385
+ route?: {
386
+ provider: string;
387
+ model: string;
388
+ authTier: "subscription" | "local" | "api-key";
389
+ authScope?: "first-party" | "third-party" | "unknown" | undefined;
390
+ accountId?: string | undefined;
391
+ } | null | undefined;
392
+ fallbackChain?: {
393
+ provider: string;
394
+ model: string;
395
+ authTier: "subscription" | "local" | "api-key";
396
+ reason: "primary" | "subscription_exhausted" | "subscription_degraded" | "subscription_unconfigured" | "subscription_scope_denied" | "local_preferred" | "api_key_fallback" | "policy_denied" | "provider_error";
397
+ }[] | undefined;
398
+ policyDenials?: {
399
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
400
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
401
+ id: string;
402
+ message: string;
403
+ }[] | undefined;
404
+ confidence?: number | undefined;
405
+ auditSummary?: string | undefined;
406
+ blocked?: boolean | undefined;
407
+ needsConfiguration?: boolean | undefined;
408
+ nearLimitWarning?: string | undefined;
409
+ }, {
410
+ reason: string;
411
+ explanation: string;
412
+ protocolVersion: "offrouter.route.v1";
413
+ requestId: string;
414
+ decisionId: string;
415
+ route?: {
416
+ provider: string;
417
+ model: string;
418
+ authTier: "subscription" | "local" | "api-key";
419
+ authScope?: "first-party" | "third-party" | "unknown" | undefined;
420
+ accountId?: string | undefined;
421
+ } | null | undefined;
422
+ fallbackChain?: {
423
+ provider: string;
424
+ model: string;
425
+ authTier: "subscription" | "local" | "api-key";
426
+ reason: "primary" | "subscription_exhausted" | "subscription_degraded" | "subscription_unconfigured" | "subscription_scope_denied" | "local_preferred" | "api_key_fallback" | "policy_denied" | "provider_error";
427
+ }[] | undefined;
428
+ policyDenials?: {
429
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
430
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
431
+ id: string;
432
+ message: string;
433
+ }[] | undefined;
434
+ confidence?: number | undefined;
435
+ auditSummary?: string | undefined;
436
+ blocked?: boolean | undefined;
437
+ needsConfiguration?: boolean | undefined;
438
+ nearLimitWarning?: string | undefined;
439
+ }>;
440
+ export declare const PolicyDecisionSchema: z.ZodObject<{
441
+ allowed: z.ZodArray<z.ZodObject<{
442
+ providerId: z.ZodString;
443
+ modelId: z.ZodString;
444
+ displayName: z.ZodOptional<z.ZodString>;
445
+ authTier: z.ZodEnum<["subscription", "local", "api-key"]>;
446
+ authScope: z.ZodEnum<["first-party", "third-party", "unknown"]>;
447
+ subscriptionStatus: z.ZodOptional<z.ZodEnum<["active", "near-limit", "exhausted", "rate-limited", "expired", "unconfigured", "unknown"]>>;
448
+ health: z.ZodEnum<["healthy", "degraded", "dead"]>;
449
+ accountId: z.ZodOptional<z.ZodString>;
450
+ subscriptionQuotaPercentRemaining: z.ZodOptional<z.ZodNumber>;
451
+ supportsTools: z.ZodBoolean;
452
+ supportsStreaming: z.ZodBoolean;
453
+ supportsJson: z.ZodBoolean;
454
+ supportsImages: z.ZodBoolean;
455
+ contextWindowTokens: z.ZodOptional<z.ZodNumber>;
456
+ maxOutputTokens: z.ZodOptional<z.ZodNumber>;
457
+ estimatedCostUsd: z.ZodOptional<z.ZodNumber>;
458
+ }, "strict", z.ZodTypeAny, {
459
+ authTier: "subscription" | "local" | "api-key";
460
+ authScope: "first-party" | "third-party" | "unknown";
461
+ providerId: string;
462
+ modelId: string;
463
+ health: "healthy" | "degraded" | "dead";
464
+ supportsTools: boolean;
465
+ supportsStreaming: boolean;
466
+ supportsJson: boolean;
467
+ supportsImages: boolean;
468
+ displayName?: string | undefined;
469
+ subscriptionStatus?: "unknown" | "active" | "near-limit" | "exhausted" | "rate-limited" | "expired" | "unconfigured" | undefined;
470
+ accountId?: string | undefined;
471
+ subscriptionQuotaPercentRemaining?: number | undefined;
472
+ contextWindowTokens?: number | undefined;
473
+ maxOutputTokens?: number | undefined;
474
+ estimatedCostUsd?: number | undefined;
475
+ }, {
476
+ authTier: "subscription" | "local" | "api-key";
477
+ authScope: "first-party" | "third-party" | "unknown";
478
+ providerId: string;
479
+ modelId: string;
480
+ health: "healthy" | "degraded" | "dead";
481
+ supportsTools: boolean;
482
+ supportsStreaming: boolean;
483
+ supportsJson: boolean;
484
+ supportsImages: boolean;
485
+ displayName?: string | undefined;
486
+ subscriptionStatus?: "unknown" | "active" | "near-limit" | "exhausted" | "rate-limited" | "expired" | "unconfigured" | undefined;
487
+ accountId?: string | undefined;
488
+ subscriptionQuotaPercentRemaining?: number | undefined;
489
+ contextWindowTokens?: number | undefined;
490
+ maxOutputTokens?: number | undefined;
491
+ estimatedCostUsd?: number | undefined;
492
+ }>, "many">;
493
+ denials: z.ZodArray<z.ZodObject<{
494
+ code: z.ZodEnum<["profile_not_allowlisted", "work_profile_denied", "provider_denied", "project_untrusted", "privacy_label_denied", "local_only_required", "cost_cap_exceeded", "api_key_blocked_by_subscription_first_policy", "subscription_scope_denied", "capability_missing"]>;
495
+ target: z.ZodEnum<["profile", "provider", "model", "workspace", "candidate"]>;
496
+ id: z.ZodString;
497
+ message: z.ZodString;
498
+ }, "strict", z.ZodTypeAny, {
499
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
500
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
501
+ id: string;
502
+ message: string;
503
+ }, {
504
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
505
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
506
+ id: string;
507
+ message: string;
508
+ }>, "many">;
509
+ }, "strict", z.ZodTypeAny, {
510
+ allowed: {
511
+ authTier: "subscription" | "local" | "api-key";
512
+ authScope: "first-party" | "third-party" | "unknown";
513
+ providerId: string;
514
+ modelId: string;
515
+ health: "healthy" | "degraded" | "dead";
516
+ supportsTools: boolean;
517
+ supportsStreaming: boolean;
518
+ supportsJson: boolean;
519
+ supportsImages: boolean;
520
+ displayName?: string | undefined;
521
+ subscriptionStatus?: "unknown" | "active" | "near-limit" | "exhausted" | "rate-limited" | "expired" | "unconfigured" | undefined;
522
+ accountId?: string | undefined;
523
+ subscriptionQuotaPercentRemaining?: number | undefined;
524
+ contextWindowTokens?: number | undefined;
525
+ maxOutputTokens?: number | undefined;
526
+ estimatedCostUsd?: number | undefined;
527
+ }[];
528
+ denials: {
529
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
530
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
531
+ id: string;
532
+ message: string;
533
+ }[];
534
+ }, {
535
+ allowed: {
536
+ authTier: "subscription" | "local" | "api-key";
537
+ authScope: "first-party" | "third-party" | "unknown";
538
+ providerId: string;
539
+ modelId: string;
540
+ health: "healthy" | "degraded" | "dead";
541
+ supportsTools: boolean;
542
+ supportsStreaming: boolean;
543
+ supportsJson: boolean;
544
+ supportsImages: boolean;
545
+ displayName?: string | undefined;
546
+ subscriptionStatus?: "unknown" | "active" | "near-limit" | "exhausted" | "rate-limited" | "expired" | "unconfigured" | undefined;
547
+ accountId?: string | undefined;
548
+ subscriptionQuotaPercentRemaining?: number | undefined;
549
+ contextWindowTokens?: number | undefined;
550
+ maxOutputTokens?: number | undefined;
551
+ estimatedCostUsd?: number | undefined;
552
+ }[];
553
+ denials: {
554
+ code: "subscription_scope_denied" | "profile_not_allowlisted" | "work_profile_denied" | "provider_denied" | "project_untrusted" | "privacy_label_denied" | "local_only_required" | "cost_cap_exceeded" | "api_key_blocked_by_subscription_first_policy" | "capability_missing";
555
+ target: "profile" | "provider" | "model" | "workspace" | "candidate";
556
+ id: string;
557
+ message: string;
558
+ }[];
559
+ }>;
560
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc,iDAA+C,CAAC;AAE3E,eAAO,MAAM,eAAe,sDAI1B,CAAC;AAEH,eAAO,MAAM,wBAAwB,wGAQnC,CAAC;AAEH,eAAO,MAAM,oBAAoB,4CAA0C,CAAC;AAE5E,eAAO,MAAM,oBAAoB,+MAU/B,CAAC;AAEH,eAAO,MAAM,iBAAiB,2EAQ5B,CAAC;AAEH,eAAO,MAAM,cAAc,yFASzB,CAAC;AAEH,eAAO,MAAM,eAAe,sCAAoC,CAAC;AAEjE,eAAO,MAAM,sBAAsB,8QAWjC,CAAC;AAEH,eAAO,MAAM,wBAAwB,uEAMnC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAOpB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBzB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;;;;;;EAKlB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWjB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAMpB,CAAC;AAEZ,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAOxB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAQrB,CAAC;AAEZ,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAO1B,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBrB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKtB,CAAC"}