@xenosystem/agent-sdk 0.8.12

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 (175) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +511 -0
  3. package/dist/agents/index.cjs +17 -0
  4. package/dist/agents/index.d.cts +244 -0
  5. package/dist/agents/index.d.ts +244 -0
  6. package/dist/agents/index.js +17 -0
  7. package/dist/agents/metafile-cjs.json +1 -0
  8. package/dist/agents/metafile-esm.json +1 -0
  9. package/dist/artifacts/browser.cjs +1 -0
  10. package/dist/artifacts/browser.d.cts +8 -0
  11. package/dist/artifacts/browser.d.ts +8 -0
  12. package/dist/artifacts/browser.js +1 -0
  13. package/dist/artifacts/diff-artifact-C2tQZWcs.d.cts +354 -0
  14. package/dist/artifacts/diff-artifact-C2tQZWcs.d.ts +354 -0
  15. package/dist/artifacts/index.cjs +10 -0
  16. package/dist/artifacts/index.d.cts +588 -0
  17. package/dist/artifacts/index.d.ts +588 -0
  18. package/dist/artifacts/index.js +10 -0
  19. package/dist/artifacts/metafile-cjs.json +1 -0
  20. package/dist/artifacts/metafile-esm.json +1 -0
  21. package/dist/automation/index.cjs +438 -0
  22. package/dist/automation/index.d.cts +878 -0
  23. package/dist/automation/index.d.ts +878 -0
  24. package/dist/automation/index.js +438 -0
  25. package/dist/automation/metafile-cjs.json +1 -0
  26. package/dist/automation/metafile-esm.json +1 -0
  27. package/dist/control-plane/index.cjs +7 -0
  28. package/dist/control-plane/index.d.cts +403 -0
  29. package/dist/control-plane/index.d.ts +403 -0
  30. package/dist/control-plane/index.js +7 -0
  31. package/dist/control-plane/metafile-cjs.json +1 -0
  32. package/dist/control-plane/metafile-esm.json +1 -0
  33. package/dist/control-room/index.cjs +1 -0
  34. package/dist/control-room/index.d.cts +216 -0
  35. package/dist/control-room/index.d.ts +216 -0
  36. package/dist/control-room/index.js +1 -0
  37. package/dist/control-room/metafile-cjs.json +1 -0
  38. package/dist/control-room/metafile-esm.json +1 -0
  39. package/dist/electron/index.cjs +1476 -0
  40. package/dist/electron/index.d.cts +1583 -0
  41. package/dist/electron/index.d.ts +1583 -0
  42. package/dist/electron/index.js +1476 -0
  43. package/dist/electron/metafile-cjs.json +1 -0
  44. package/dist/electron/metafile-esm.json +1 -0
  45. package/dist/governance/index.cjs +33 -0
  46. package/dist/governance/index.d.cts +397 -0
  47. package/dist/governance/index.d.ts +397 -0
  48. package/dist/governance/index.js +33 -0
  49. package/dist/governance/metafile-cjs.json +1 -0
  50. package/dist/governance/metafile-esm.json +1 -0
  51. package/dist/hooks/index.cjs +9 -0
  52. package/dist/hooks/index.d.cts +198 -0
  53. package/dist/hooks/index.d.ts +198 -0
  54. package/dist/hooks/index.js +9 -0
  55. package/dist/hooks/metafile-cjs.json +1 -0
  56. package/dist/hooks/metafile-esm.json +1 -0
  57. package/dist/hosted/index.cjs +1 -0
  58. package/dist/hosted/index.d.cts +490 -0
  59. package/dist/hosted/index.d.ts +490 -0
  60. package/dist/hosted/index.js +1 -0
  61. package/dist/hosted/metafile-cjs.json +1 -0
  62. package/dist/hosted/metafile-esm.json +1 -0
  63. package/dist/index.cjs +2161 -0
  64. package/dist/index.d.cts +12259 -0
  65. package/dist/index.d.ts +12259 -0
  66. package/dist/index.js +2161 -0
  67. package/dist/intelligence/index.cjs +10 -0
  68. package/dist/intelligence/index.d.cts +220 -0
  69. package/dist/intelligence/index.d.ts +220 -0
  70. package/dist/intelligence/index.js +10 -0
  71. package/dist/intelligence/metafile-cjs.json +1 -0
  72. package/dist/intelligence/metafile-esm.json +1 -0
  73. package/dist/mcp/index.cjs +28 -0
  74. package/dist/mcp/index.d.cts +960 -0
  75. package/dist/mcp/index.d.ts +960 -0
  76. package/dist/mcp/index.js +28 -0
  77. package/dist/mcp/metafile-cjs.json +1 -0
  78. package/dist/mcp/metafile-esm.json +1 -0
  79. package/dist/metafile-cjs.json +1 -0
  80. package/dist/metafile-esm.json +1 -0
  81. package/dist/oracle/index.cjs +1 -0
  82. package/dist/oracle/index.d.cts +310 -0
  83. package/dist/oracle/index.d.ts +310 -0
  84. package/dist/oracle/index.js +1 -0
  85. package/dist/oracle/metafile-cjs.json +1 -0
  86. package/dist/oracle/metafile-esm.json +1 -0
  87. package/dist/providers/index.cjs +11 -0
  88. package/dist/providers/index.d.cts +462 -0
  89. package/dist/providers/index.d.ts +462 -0
  90. package/dist/providers/index.js +11 -0
  91. package/dist/providers/metafile-cjs.json +1 -0
  92. package/dist/providers/metafile-esm.json +1 -0
  93. package/dist/recipes/index.cjs +2 -0
  94. package/dist/recipes/index.d.cts +86 -0
  95. package/dist/recipes/index.d.ts +86 -0
  96. package/dist/recipes/index.js +2 -0
  97. package/dist/recipes/metafile-cjs.json +1 -0
  98. package/dist/recipes/metafile-esm.json +1 -0
  99. package/dist/research/index.cjs +3 -0
  100. package/dist/research/index.d.cts +285 -0
  101. package/dist/research/index.d.ts +285 -0
  102. package/dist/research/index.js +3 -0
  103. package/dist/research/metafile-cjs.json +1 -0
  104. package/dist/research/metafile-esm.json +1 -0
  105. package/dist/session/index.cjs +56 -0
  106. package/dist/session/index.d.cts +523 -0
  107. package/dist/session/index.d.ts +523 -0
  108. package/dist/session/index.js +56 -0
  109. package/dist/session/metafile-cjs.json +1 -0
  110. package/dist/session/metafile-esm.json +1 -0
  111. package/dist/sharing/index.cjs +4 -0
  112. package/dist/sharing/index.d.cts +272 -0
  113. package/dist/sharing/index.d.ts +272 -0
  114. package/dist/sharing/index.js +4 -0
  115. package/dist/sharing/metafile-cjs.json +1 -0
  116. package/dist/sharing/metafile-esm.json +1 -0
  117. package/dist/skills/index.cjs +6 -0
  118. package/dist/skills/index.d.cts +277 -0
  119. package/dist/skills/index.d.ts +277 -0
  120. package/dist/skills/index.js +6 -0
  121. package/dist/skills/metafile-cjs.json +1 -0
  122. package/dist/skills/metafile-esm.json +1 -0
  123. package/dist/soul/index.cjs +32 -0
  124. package/dist/soul/index.d.cts +138 -0
  125. package/dist/soul/index.d.ts +138 -0
  126. package/dist/soul/index.js +32 -0
  127. package/dist/soul/metafile-cjs.json +1 -0
  128. package/dist/soul/metafile-esm.json +1 -0
  129. package/dist/terminal/index.cjs +4 -0
  130. package/dist/terminal/index.d.cts +55 -0
  131. package/dist/terminal/index.d.ts +55 -0
  132. package/dist/terminal/index.js +4 -0
  133. package/dist/terminal/metafile-cjs.json +1 -0
  134. package/dist/terminal/metafile-esm.json +1 -0
  135. package/dist/ui/index.cjs +35 -0
  136. package/dist/ui/index.d.cts +298 -0
  137. package/dist/ui/index.d.ts +298 -0
  138. package/dist/ui/index.js +35 -0
  139. package/dist/ui/metafile-cjs.json +1 -0
  140. package/dist/ui/metafile-esm.json +1 -0
  141. package/dist/utils/index.cjs +23 -0
  142. package/dist/utils/index.d.cts +245 -0
  143. package/dist/utils/index.d.ts +245 -0
  144. package/dist/utils/index.js +23 -0
  145. package/dist/utils/metafile-cjs.json +1 -0
  146. package/dist/utils/metafile-esm.json +1 -0
  147. package/native/mxc/LICENSE.microsoft-mxc-sdk.md +21 -0
  148. package/native/mxc/README.md +25 -0
  149. package/native/mxc/bin/arm64/lxc-exec +0 -0
  150. package/native/mxc/bin/arm64/mxc-exec-mac +0 -0
  151. package/native/mxc/bin/arm64/wxc-exec.exe +0 -0
  152. package/native/mxc/bin/arm64/wxc-host-prep.exe +0 -0
  153. package/native/mxc/bin/x64/lxc-exec +0 -0
  154. package/native/mxc/bin/x64/wxc-exec.exe +0 -0
  155. package/native/mxc/bin/x64/wxc-host-prep.exe +0 -0
  156. package/native/mxc/package.json +58 -0
  157. package/ownership/CLEAN_ROOM_CONTRIBUTOR_GUIDE.md +63 -0
  158. package/ownership/audit.mjs +727 -0
  159. package/ownership/evidence/PROPRIETARY-COMMAND-1/implementation-record.md +77 -0
  160. package/ownership/evidence/PROPRIETARY-COMMAND-1/provenance-review.md +51 -0
  161. package/ownership/evidence/PROPRIETARY-MEDIA-1/implementation-record.md +131 -0
  162. package/ownership/evidence/PROPRIETARY-MEDIA-1/provenance-review.md +50 -0
  163. package/ownership/evidence/PROPRIETARY-PTY-1/implementation-record.md +86 -0
  164. package/ownership/evidence/PROPRIETARY-PTY-1/provenance-review.md +52 -0
  165. package/ownership/evidence/PROPRIETARY-RUNTIME-1/implementation-record.md +68 -0
  166. package/ownership/evidence/PROPRIETARY-RUNTIME-1/provenance-review.md +32 -0
  167. package/ownership/evidence/PROPRIETARY-TOOLCHAIN-1/implementation-record.md +53 -0
  168. package/ownership/evidence/PROPRIETARY-TOOLCHAIN-1/provenance-review.md +32 -0
  169. package/ownership/evidence/PROPRIETARY-UI-1/implementation-record.md +96 -0
  170. package/ownership/evidence/PROPRIETARY-UI-1/provenance-review.md +46 -0
  171. package/ownership/ownership-policy.json +232 -0
  172. package/ownership/ownership-policy.schema.json +192 -0
  173. package/ownership/templates/clean-room-implementation-record.md +70 -0
  174. package/ownership/templates/provenance-review.md +51 -0
  175. package/package.json +209 -0
@@ -0,0 +1,462 @@
1
+ interface ToolDefinition {
2
+ name: string;
3
+ description: string;
4
+ input_schema: {
5
+ type: "object";
6
+ properties: Record<string, unknown>;
7
+ required?: string[];
8
+ additionalProperties?: boolean | Record<string, unknown>;
9
+ [keyword: string]: unknown;
10
+ };
11
+ }
12
+ interface ImageUrlBlock {
13
+ type: "image_url";
14
+ image_url: {
15
+ url: string;
16
+ detail?: "auto" | "low" | "high";
17
+ };
18
+ }
19
+ interface ResourceContentBlock {
20
+ type: "resource";
21
+ uri?: string;
22
+ mimeType?: string;
23
+ text?: string;
24
+ data?: string;
25
+ }
26
+ type ToolAssistantContentBlock = TextBlock | ImageUrlBlock | ResourceContentBlock;
27
+ type ToolResultContent = string | ToolAssistantContentBlock[];
28
+ interface TextBlock {
29
+ type: "text";
30
+ text: string;
31
+ }
32
+ interface ToolUseBlock {
33
+ type: "tool_use";
34
+ id: string;
35
+ name: string;
36
+ input: Record<string, unknown>;
37
+ provider_metadata?: Record<string, unknown>;
38
+ }
39
+ type ContentBlock = TextBlock | ToolUseBlock;
40
+ interface ApiTextContentBlock {
41
+ type: "text";
42
+ text: string;
43
+ }
44
+ interface ApiToolUseContentBlock {
45
+ type: "tool_use";
46
+ id: string;
47
+ name: string;
48
+ input: Record<string, unknown>;
49
+ provider_metadata?: Record<string, unknown>;
50
+ }
51
+ interface ApiToolResultContentBlock {
52
+ type: "tool_result";
53
+ tool_use_id: string;
54
+ content: ToolResultContent;
55
+ assistant_content?: ToolAssistantContentBlock[];
56
+ assistant_only_content?: ToolAssistantContentBlock[];
57
+ is_error?: boolean;
58
+ }
59
+ type ApiMessage = {
60
+ role: "user" | "assistant";
61
+ content: string | Array<ApiTextContentBlock | ApiToolUseContentBlock | ApiToolResultContentBlock>;
62
+ };
63
+ interface StreamResult {
64
+ content: ContentBlock[];
65
+ stopReason: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
66
+ inputTokens: number;
67
+ outputTokens: number;
68
+ }
69
+ type LLMProviderMessage = ApiMessage;
70
+ type LLMCompletionResult = StreamResult;
71
+ type ProviderStreamEvent = {
72
+ type: "message.started";
73
+ providerMessageId?: string;
74
+ } | {
75
+ type: "text.delta";
76
+ text: string;
77
+ } | {
78
+ type: "reasoning.delta";
79
+ text: string;
80
+ } | {
81
+ type: "tool_call.started";
82
+ index: number;
83
+ toolCallId: string;
84
+ name: string;
85
+ } | {
86
+ type: "tool_call.arguments.delta";
87
+ index: number;
88
+ toolCallId: string;
89
+ delta: string;
90
+ } | {
91
+ type: "tool_call.completed";
92
+ index: number;
93
+ toolCallId: string;
94
+ name: string;
95
+ input: Record<string, unknown>;
96
+ } | {
97
+ type: "usage.updated";
98
+ inputTokens: number;
99
+ outputTokens: number;
100
+ } | {
101
+ type: "provider.warning";
102
+ code: string;
103
+ message: string;
104
+ } | {
105
+ type: "provider.retry";
106
+ retryAfterMs?: number;
107
+ reason: string;
108
+ } | {
109
+ type: "message.completed";
110
+ stopReason: LLMCompletionResult["stopReason"];
111
+ } | {
112
+ type: "provider.error";
113
+ code: string;
114
+ category: string;
115
+ retryable: boolean;
116
+ } | {
117
+ type: "provider.cancelled";
118
+ };
119
+ interface LLMProviderRequestContext {
120
+ systemPrompt: string;
121
+ attemptId?: string;
122
+ onEvent?: (event: ProviderStreamEvent) => void | Promise<void>;
123
+ }
124
+ interface LLMProviderCapabilities {
125
+ readonly streaming?: boolean;
126
+ readonly textInput?: boolean;
127
+ readonly tools?: boolean;
128
+ readonly parallelToolCalls?: boolean;
129
+ readonly vision?: boolean;
130
+ readonly imageInput?: boolean;
131
+ readonly structuredOutput?: boolean;
132
+ readonly reasoningMetadata?: boolean;
133
+ readonly usageAccounting?: boolean;
134
+ readonly cancellation?: boolean;
135
+ readonly retryAfter?: boolean;
136
+ readonly promptCaching?: boolean;
137
+ readonly [capability: string]: boolean | undefined;
138
+ }
139
+ interface LLMProvider {
140
+ readonly id: string;
141
+ readonly model?: string;
142
+ readonly capabilities?: LLMProviderCapabilities;
143
+ complete(model: string, messages: LLMProviderMessage[], tools: ToolDefinition[], onText?: (text: string) => void, signal?: AbortSignal, context?: LLMProviderRequestContext): Promise<LLMCompletionResult>;
144
+ completeLocal?(model: string, messages: LLMProviderMessage[], tools: ToolDefinition[], onText?: (text: string) => void, signal?: AbortSignal, context?: LLMProviderRequestContext): Promise<LLMCompletionResult>;
145
+ }
146
+ type DualLLMMode = "auto" | "local" | "cloud";
147
+ interface ChatParams {
148
+ messages: Array<{
149
+ role: "system" | "user" | "assistant";
150
+ content: string;
151
+ }>;
152
+ model?: string;
153
+ maxTokens?: number;
154
+ temperature?: number;
155
+ systemPrompt?: string;
156
+ jsonMode?: boolean;
157
+ stop?: string[];
158
+ }
159
+ interface ChatResponse {
160
+ success: boolean;
161
+ content: string;
162
+ endpoint: "local" | "cloud";
163
+ model: string;
164
+ usage: {
165
+ promptTokens: number;
166
+ completionTokens: number;
167
+ totalTokens: number;
168
+ };
169
+ error?: string;
170
+ }
171
+ interface DualLLMStatus {
172
+ mode: DualLLMMode;
173
+ localAvailable: boolean;
174
+ activeEndpoint: "local" | "cloud";
175
+ localModel?: string;
176
+ localUrl: string;
177
+ cloudUrl: string;
178
+ }
179
+ interface DualLLMProviderConfig {
180
+ localUrl?: string;
181
+ cloudUrl?: string;
182
+ cloudApiKey?: string;
183
+ mode?: DualLLMMode;
184
+ localModel?: string;
185
+ cloudModel?: string;
186
+ }
187
+ declare class DualLLMProvider {
188
+ private localUrl;
189
+ private cloudUrl;
190
+ private cloudApiKey;
191
+ private mode;
192
+ private defaultLocalModel;
193
+ private defaultCloudModel;
194
+ private localAvailable;
195
+ private localModelName;
196
+ private lastHealthCheck;
197
+ constructor(config?: DualLLMProviderConfig);
198
+ chat(params: ChatParams): Promise<ChatResponse>;
199
+ chatStream(params: ChatParams): AsyncGenerator<string>;
200
+ isLocalAvailable(forceRefresh?: boolean): Promise<boolean>;
201
+ setMode(mode: DualLLMMode): void;
202
+ getMode(): DualLLMMode;
203
+ setLocalUrl(url: string): void;
204
+ setCloudApiKey(apiKey: string): void;
205
+ getStatus(): Promise<DualLLMStatus>;
206
+ asLLMProvider(options?: {
207
+ id?: string;
208
+ model?: string;
209
+ }): LLMProvider;
210
+ private shouldUseLocal;
211
+ private chatLocal;
212
+ private chatCloud;
213
+ }
214
+ type DirectEndpointProfile = "public-https" | "local-network";
215
+ interface DirectEndpointPolicy {
216
+ profile?: DirectEndpointProfile;
217
+ allowedHosts?: string[];
218
+ resolveHostname?: (hostname: string) => Promise<string[]>;
219
+ }
220
+ declare function validateDirectEndpoint(raw: string, policy?: DirectEndpointPolicy): URL;
221
+ declare function assertDirectEndpointResolution(url: URL, policy?: DirectEndpointPolicy): Promise<void>;
222
+ interface ProviderTransportLimits {
223
+ connectTimeoutMs?: number;
224
+ totalTimeoutMs?: number;
225
+ idleTimeoutMs?: number;
226
+ maxResponseBytes?: number;
227
+ maxHeaderBytes?: number;
228
+ maxEventBytes?: number;
229
+ }
230
+ type DirectProviderKind = "anthropic" | "openai-responses" | "google" | "openai-compatible";
231
+ type DirectProviderCapabilityProfile = Pick<LLMProviderCapabilities, "streaming" | "textInput" | "imageInput" | "tools" | "parallelToolCalls" | "structuredOutput" | "reasoningMetadata" | "usageAccounting" | "cancellation" | "retryAfter" | "promptCaching">;
232
+ interface DirectProviderConfig {
233
+ kind: DirectProviderKind;
234
+ apiKey: string;
235
+ baseURL?: string;
236
+ anthropicVersion?: string;
237
+ maxTokens?: number;
238
+ streaming?: boolean;
239
+ capabilityProfile?: DirectProviderCapabilityProfile;
240
+ endpointProfile?: DirectEndpointProfile;
241
+ allowedHosts?: string[];
242
+ resolveHostname?: (hostname: string) => Promise<string[]>;
243
+ transportLimits?: ProviderTransportLimits;
244
+ chatCompletionsPath?: string;
245
+ authentication?: {
246
+ type: "bearer";
247
+ } | {
248
+ type: "header";
249
+ header: string;
250
+ prefix?: string;
251
+ } | {
252
+ type: "none";
253
+ };
254
+ }
255
+ declare function createDirectProvider(config: DirectProviderConfig): LLMProvider;
256
+ type ProviderErrorCategory = "authentication" | "authorization" | "unsupported_model" | "unsupported_capability" | "rate_limit" | "context_overflow" | "safety_refusal" | "timeout" | "disconnect" | "malformed_response" | "server" | "transport" | "endpoint_policy" | "cancelled";
257
+ type ProviderErrorCode = "PROVIDER_AUTHENTICATION_FAILED" | "PROVIDER_AUTHORIZATION_FAILED" | "PROVIDER_MODEL_UNSUPPORTED" | "PROVIDER_CAPABILITY_UNSUPPORTED" | "PROVIDER_RATE_LIMITED" | "PROVIDER_CONTEXT_OVERFLOW" | "PROVIDER_SAFETY_REFUSAL" | "PROVIDER_TIMEOUT" | "PROVIDER_DISCONNECTED" | "PROVIDER_MALFORMED_RESPONSE" | "PROVIDER_SERVER_ERROR" | "PROVIDER_TRANSPORT_ERROR" | "PROVIDER_ENDPOINT_REJECTED" | "PROVIDER_CANCELLED";
258
+ interface ProviderErrorOptions {
259
+ category: ProviderErrorCategory;
260
+ code: ProviderErrorCode;
261
+ retryable?: boolean;
262
+ providerId?: string;
263
+ statusCode?: number;
264
+ retryAfterMs?: number;
265
+ requestId?: string;
266
+ cause?: unknown;
267
+ }
268
+ declare class ProviderError extends Error {
269
+ readonly category: ProviderErrorCategory;
270
+ readonly code: ProviderErrorCode;
271
+ readonly retryable: boolean;
272
+ readonly providerId?: string;
273
+ readonly statusCode?: number;
274
+ readonly retryAfterMs?: number;
275
+ readonly requestId?: string;
276
+ constructor(message: string, options: ProviderErrorOptions);
277
+ }
278
+ declare function parseRetryAfter(value: string | null, now?: number): number | undefined;
279
+ declare function classifyProviderHttpError(input: {
280
+ providerId: string;
281
+ statusCode: number;
282
+ body: unknown;
283
+ retryAfterMs?: number;
284
+ requestId?: string;
285
+ }): ProviderError;
286
+ declare function providerProtocolError(providerId: string, message: string, cause?: unknown): ProviderError;
287
+ declare function providerCapabilityError(providerId: string, capability: string): ProviderError;
288
+ type ToolSchemaProviderDialect = "xeno" | "anthropic" | "openai-responses" | "openai-chat" | "google";
289
+ interface ToolSchemaProjectionChange {
290
+ path: string;
291
+ keyword: string;
292
+ action: "omitted" | "transformed";
293
+ reason: string;
294
+ }
295
+ interface ToolSchemaProjectionResult {
296
+ schema: ToolDefinition["input_schema"];
297
+ dialect: ToolSchemaProviderDialect;
298
+ canonicalSha256: string;
299
+ projectedSha256: string;
300
+ changes: ToolSchemaProjectionChange[];
301
+ }
302
+ declare class ToolSchemaProjectionError extends Error {
303
+ readonly dialect: ToolSchemaProviderDialect;
304
+ readonly path: string;
305
+ constructor(dialect: ToolSchemaProviderDialect, path: string, message: string);
306
+ }
307
+ declare function projectToolSchemaForProvider(schema: ToolDefinition["input_schema"], providerDialect: ToolSchemaProviderDialect): ToolSchemaProjectionResult;
308
+ declare function projectToolDefinitionsForProvider(tools: ToolDefinition[], providerDialect: ToolSchemaProviderDialect): Array<{
309
+ definition: ToolDefinition;
310
+ projection: ToolSchemaProjectionResult;
311
+ }>;
312
+ declare const XENO_PROVIDER_CATALOG_SCHEMA_VERSION: 1;
313
+ type XenoProviderAdapterKind = DirectProviderKind | "aws-bedrock" | "vertex-ai";
314
+ type XenoProviderCredentialMode = "bearer-env" | "header-env" | "cloud-chain" | "none";
315
+ type XenoProviderReadiness = "ready" | "missing-credential" | "needs-configuration" | "requires-host-adapter" | "blocked";
316
+ interface XenoProviderCapabilities {
317
+ streaming: boolean;
318
+ textInput: boolean;
319
+ imageInput: boolean;
320
+ tools: boolean;
321
+ parallelToolCalls: boolean;
322
+ structuredOutput: boolean;
323
+ reasoningMetadata: boolean;
324
+ usageAccounting: boolean;
325
+ promptCaching: boolean;
326
+ modelDiscovery: boolean;
327
+ }
328
+ interface XenoProviderAuthPreset {
329
+ mode: XenoProviderCredentialMode;
330
+ defaultSecretRef?: string;
331
+ header?: string;
332
+ prefix?: string;
333
+ description: string;
334
+ }
335
+ interface XenoProviderPreset {
336
+ schemaVersion: typeof XENO_PROVIDER_CATALOG_SCHEMA_VERSION;
337
+ id: string;
338
+ displayName: string;
339
+ family: "xeno" | "direct" | "gateway" | "cloud" | "local";
340
+ adapterKind: XenoProviderAdapterKind;
341
+ defaultBaseUrl?: string;
342
+ endpointProfile: DirectEndpointProfile;
343
+ allowedHosts?: string[];
344
+ auth: XenoProviderAuthPreset;
345
+ capabilities: XenoProviderCapabilities;
346
+ discoveryPath?: string;
347
+ requires: string[];
348
+ documentationUrl?: string;
349
+ }
350
+ interface XenoProviderConnection {
351
+ id: string;
352
+ providerId: string;
353
+ baseUrl?: string;
354
+ secretRef?: string;
355
+ model?: string;
356
+ enabled?: boolean;
357
+ metadata?: {
358
+ organizationId?: string;
359
+ projectId?: string;
360
+ region?: string;
361
+ deployment?: string;
362
+ };
363
+ }
364
+ interface XenoProviderConnectionView {
365
+ connection: XenoProviderConnection;
366
+ preset: XenoProviderPreset;
367
+ endpoint?: string;
368
+ secretRef?: string;
369
+ readiness: XenoProviderReadiness;
370
+ blockers: string[];
371
+ }
372
+ interface XenoProviderModelDescriptor {
373
+ id: string;
374
+ displayName?: string;
375
+ ownedBy?: string;
376
+ contextTokens?: number;
377
+ inputCostPerMillion?: number;
378
+ outputCostPerMillion?: number;
379
+ capabilities?: Partial<XenoProviderCapabilities>;
380
+ metadataSource: "provider" | "configuration" | "catalog";
381
+ }
382
+ interface XenoProviderProbeResult {
383
+ schemaVersion: 1;
384
+ connectionId: string;
385
+ providerId: string;
386
+ endpoint?: string;
387
+ readiness: XenoProviderReadiness;
388
+ credentialState: "present" | "missing" | "not-required" | "external";
389
+ reachable: boolean;
390
+ authenticated: boolean | null;
391
+ latencyMs?: number;
392
+ models: XenoProviderModelDescriptor[];
393
+ capabilities: XenoProviderCapabilities;
394
+ errors: string[];
395
+ }
396
+ interface XenoProviderRoutingPolicy {
397
+ allowedProviderIds?: string[];
398
+ deniedProviderIds?: string[];
399
+ fallbackOrder?: string[];
400
+ preferLocal?: boolean;
401
+ require?: Partial<XenoProviderCapabilities>;
402
+ maxInputCostPerMillion?: number;
403
+ maxOutputCostPerMillion?: number;
404
+ }
405
+ interface XenoProviderRouteCandidate {
406
+ connection: XenoProviderConnectionView;
407
+ model: XenoProviderModelDescriptor;
408
+ }
409
+ interface ProbeXenoProviderOptions {
410
+ connection: XenoProviderConnection;
411
+ catalog?: XenoProviderCatalog;
412
+ resolveSecretRef?: (reference: string) => string | undefined | Promise<string | undefined>;
413
+ fetchImpl?: typeof fetch;
414
+ timeoutMs?: number;
415
+ maxResponseBytes?: number;
416
+ resolveHostname?: (hostname: string) => Promise<string[]>;
417
+ }
418
+ declare const BUILT_IN_XENO_PROVIDER_PRESETS: readonly XenoProviderPreset[];
419
+ declare class XenoProviderCatalog {
420
+ private readonly presets;
421
+ constructor(presets?: readonly XenoProviderPreset[]);
422
+ add(value: XenoProviderPreset): void;
423
+ get(id: string): XenoProviderPreset | undefined;
424
+ list(): XenoProviderPreset[];
425
+ resolve(connection: XenoProviderConnection, secretAvailable?: (reference: string) => boolean): XenoProviderConnectionView;
426
+ }
427
+ declare function probeXenoProvider(options: ProbeXenoProviderOptions): Promise<XenoProviderProbeResult>;
428
+ declare function selectXenoProviderRoute(candidates: XenoProviderRouteCandidate[], policy?: XenoProviderRoutingPolicy): XenoProviderRouteCandidate[];
429
+ declare function directProviderConfigFromConnection(view: XenoProviderConnectionView, secret: string | undefined): DirectProviderConfig;
430
+ declare const XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION: 1;
431
+ interface XenoProviderConnectionSnapshot {
432
+ schemaVersion: typeof XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION;
433
+ generation: number;
434
+ updatedAt: string;
435
+ connections: XenoProviderConnection[];
436
+ routingPolicy: XenoProviderRoutingPolicy;
437
+ checksum: {
438
+ algorithm: "sha256";
439
+ value: string;
440
+ };
441
+ }
442
+ interface FileXenoProviderConnectionStoreOptions {
443
+ directory: string;
444
+ catalog?: XenoProviderCatalog;
445
+ now?: () => Date;
446
+ }
447
+ declare class FileXenoProviderConnectionStore {
448
+ readonly directory: string;
449
+ readonly snapshotPath: string;
450
+ readonly lockPath: string;
451
+ private readonly catalog;
452
+ private readonly now;
453
+ constructor(options: FileXenoProviderConnectionStoreOptions);
454
+ upsert(connection: XenoProviderConnection): Promise<XenoProviderConnection>;
455
+ remove(id: string): Promise<boolean>;
456
+ setRoutingPolicy(policy: XenoProviderRoutingPolicy): Promise<XenoProviderRoutingPolicy>;
457
+ get(id: string): Promise<XenoProviderConnection | null>;
458
+ list(): Promise<XenoProviderConnection[]>;
459
+ load(): Promise<XenoProviderConnectionSnapshot>;
460
+ private mutate;
461
+ }
462
+ export { BUILT_IN_XENO_PROVIDER_PRESETS, type ChatParams, type ChatResponse, type DirectEndpointPolicy, type DirectEndpointProfile, type DirectProviderCapabilityProfile, type DirectProviderConfig, type DirectProviderKind, type DualLLMMode, DualLLMProvider, type DualLLMProviderConfig, type DualLLMStatus, FileXenoProviderConnectionStore, type FileXenoProviderConnectionStoreOptions, type ProbeXenoProviderOptions, ProviderError, type ProviderErrorCategory, type ProviderErrorCode, type ProviderErrorOptions, type ProviderTransportLimits, type ToolSchemaProjectionChange, ToolSchemaProjectionError, type ToolSchemaProjectionResult, type ToolSchemaProviderDialect, XENO_PROVIDER_CATALOG_SCHEMA_VERSION, XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION, type XenoProviderAdapterKind, type XenoProviderAuthPreset, type XenoProviderCapabilities, XenoProviderCatalog, type XenoProviderConnection, type XenoProviderConnectionSnapshot, type XenoProviderConnectionView, type XenoProviderCredentialMode, type XenoProviderModelDescriptor, type XenoProviderPreset, type XenoProviderProbeResult, type XenoProviderReadiness, type XenoProviderRouteCandidate, type XenoProviderRoutingPolicy, assertDirectEndpointResolution, classifyProviderHttpError, createDirectProvider, directProviderConfigFromConnection, parseRetryAfter, probeXenoProvider, projectToolDefinitionsForProvider, projectToolSchemaForProvider, providerCapabilityError, providerProtocolError, selectXenoProviderRoute, validateDirectEndpoint };