@xopcai/xopcbot 0.1.5 → 0.2.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 (285) hide show
  1. package/README.md +6 -6
  2. package/README.zh-CN.md +6 -6
  3. package/dist/agent/__tests__/media-processing.test.d.ts +6 -0
  4. package/dist/agent/__tests__/media-processing.test.js +385 -0
  5. package/dist/agent/__tests__/media-processing.test.js.map +1 -0
  6. package/dist/agent/fallback/__tests__/index.test.js +16 -5
  7. package/dist/agent/fallback/__tests__/index.test.js.map +1 -1
  8. package/dist/agent/fallback/candidates.d.ts +2 -4
  9. package/dist/agent/fallback/candidates.js +19 -26
  10. package/dist/agent/fallback/candidates.js.map +1 -1
  11. package/dist/agent/helpers.d.ts +1 -0
  12. package/dist/agent/helpers.js.map +1 -1
  13. package/dist/agent/index.d.ts +6 -1
  14. package/dist/agent/index.js +10 -1
  15. package/dist/agent/index.js.map +1 -1
  16. package/dist/agent/models/compat.d.ts +35 -0
  17. package/dist/agent/models/compat.js +110 -0
  18. package/dist/agent/models/compat.js.map +1 -0
  19. package/dist/agent/models/fallback.d.ts +38 -0
  20. package/dist/agent/models/fallback.js +133 -0
  21. package/dist/agent/models/fallback.js.map +1 -0
  22. package/dist/agent/models/index.d.ts +10 -0
  23. package/dist/agent/models/index.js +11 -0
  24. package/dist/agent/models/index.js.map +1 -0
  25. package/dist/agent/{model-manager.d.ts → models/manager.d.ts} +2 -8
  26. package/dist/agent/{model-manager.js → models/manager.js} +38 -24
  27. package/dist/agent/models/manager.js.map +1 -0
  28. package/dist/agent/models/scan.d.ts +46 -0
  29. package/dist/agent/models/scan.js +177 -0
  30. package/dist/agent/models/scan.js.map +1 -0
  31. package/dist/agent/models/selection.d.ts +44 -0
  32. package/dist/agent/models/selection.js +141 -0
  33. package/dist/agent/models/selection.js.map +1 -0
  34. package/dist/agent/prompt/index.js +1 -1
  35. package/dist/agent/prompt/index.js.map +1 -1
  36. package/dist/agent/service.js +34 -16
  37. package/dist/agent/service.js.map +1 -1
  38. package/dist/agent/skills/__tests__/test-framework.test.js +15 -7
  39. package/dist/agent/skills/__tests__/test-framework.test.js.map +1 -1
  40. package/dist/agent/skills/config.d.ts +1 -1
  41. package/dist/agent/skills/config.js +2 -2
  42. package/dist/agent/skills/config.js.map +1 -1
  43. package/dist/agent/skills/index.js +15 -28
  44. package/dist/agent/skills/index.js.map +1 -1
  45. package/dist/agent/skills/installer.d.ts +1 -1
  46. package/dist/agent/skills/installer.js +1 -1
  47. package/dist/agent/skills/scanner.d.ts +1 -1
  48. package/dist/agent/skills/scanner.js +1 -1
  49. package/dist/agent/skills/test-framework.js +21 -20
  50. package/dist/agent/skills/test-framework.js.map +1 -1
  51. package/dist/agent/skills/types.d.ts +3 -3
  52. package/dist/agent/skills/types.js +1 -1
  53. package/dist/agent/skills/watcher.d.ts +1 -1
  54. package/dist/agent/skills/watcher.js +1 -1
  55. package/dist/agent/system-prompt.d.ts +67 -0
  56. package/dist/agent/system-prompt.js +351 -0
  57. package/dist/agent/system-prompt.js.map +1 -0
  58. package/dist/agent/tools/__tests__/send-media.test.d.ts +6 -0
  59. package/dist/agent/tools/__tests__/send-media.test.js +251 -0
  60. package/dist/agent/tools/__tests__/send-media.test.js.map +1 -0
  61. package/dist/agent/types.agent-defaults.d.ts +48 -0
  62. package/dist/agent/types.agent-defaults.js +5 -0
  63. package/dist/agent/types.agent-defaults.js.map +1 -0
  64. package/dist/agent/types.d.ts +14 -6
  65. package/dist/agent/types.js +5 -0
  66. package/dist/agent/types.js.map +1 -1
  67. package/dist/agent/workspace.d.ts +94 -0
  68. package/dist/agent/workspace.js +625 -0
  69. package/dist/agent/workspace.js.map +1 -0
  70. package/dist/auth/index.js +1 -1
  71. package/dist/auth/index.js.map +1 -1
  72. package/dist/auth/oauth/index.d.ts +1 -0
  73. package/dist/auth/oauth/index.js +1 -0
  74. package/dist/auth/oauth/index.js.map +1 -1
  75. package/dist/auth/oauth/kimi.d.ts +2 -1
  76. package/dist/auth/oauth/kimi.js +51 -48
  77. package/dist/auth/oauth/kimi.js.map +1 -1
  78. package/dist/auth/oauth/minimax-cn.d.ts +12 -0
  79. package/dist/auth/oauth/minimax-cn.js +111 -0
  80. package/dist/auth/oauth/minimax-cn.js.map +1 -0
  81. package/dist/auth/oauth/qwen.d.ts +5 -0
  82. package/dist/auth/oauth/qwen.js +54 -84
  83. package/dist/auth/oauth/qwen.js.map +1 -1
  84. package/dist/auth/profiles/index.d.ts +0 -2
  85. package/dist/auth/profiles/index.js +0 -2
  86. package/dist/auth/profiles/index.js.map +1 -1
  87. package/dist/auth/storage.js +7 -1
  88. package/dist/auth/storage.js.map +1 -1
  89. package/dist/channels/__tests__/media-integration.test.d.ts +6 -0
  90. package/dist/channels/__tests__/media-integration.test.js +398 -0
  91. package/dist/channels/__tests__/media-integration.test.js.map +1 -0
  92. package/dist/channels/__tests__/media.test.d.ts +6 -0
  93. package/dist/channels/__tests__/media.test.js +251 -0
  94. package/dist/channels/__tests__/media.test.js.map +1 -0
  95. package/dist/channels/access-control.d.ts +1 -1
  96. package/dist/channels/access-control.js +1 -1
  97. package/dist/channels/draft-stream.d.ts +1 -1
  98. package/dist/channels/draft-stream.js +1 -1
  99. package/dist/channels/format.d.ts +1 -1
  100. package/dist/channels/format.js +1 -1
  101. package/dist/channels/telegram/command-handler.js +15 -48
  102. package/dist/channels/telegram/command-handler.js.map +1 -1
  103. package/dist/channels/telegram/plugin.js +3 -2
  104. package/dist/channels/telegram/plugin.js.map +1 -1
  105. package/dist/channels/telegram/webhook.d.ts +1 -1
  106. package/dist/channels/telegram/webhook.js +1 -1
  107. package/dist/channels/types.d.ts +1 -1
  108. package/dist/channels/types.js +1 -1
  109. package/dist/channels/update-offset-store.d.ts +1 -1
  110. package/dist/channels/update-offset-store.js +1 -1
  111. package/dist/cli/commands/auth.js +8 -23
  112. package/dist/cli/commands/auth.js.map +1 -1
  113. package/dist/cli/commands/gateway.js +9 -1
  114. package/dist/cli/commands/gateway.js.map +1 -1
  115. package/dist/cli/commands/models.js +35 -29
  116. package/dist/cli/commands/models.js.map +1 -1
  117. package/dist/cli/commands/onboard.js +73 -58
  118. package/dist/cli/commands/onboard.js.map +1 -1
  119. package/dist/cli/commands/skills.js +6 -6
  120. package/dist/cli/commands/skills.js.map +1 -1
  121. package/dist/cli/index.js +0 -0
  122. package/dist/cli/templates.d.ts +2 -0
  123. package/dist/cli/templates.js +1 -1
  124. package/dist/cli/templates.js.map +1 -1
  125. package/dist/config/defaults.d.ts +19 -0
  126. package/dist/config/defaults.js +168 -0
  127. package/dist/config/defaults.js.map +1 -0
  128. package/dist/config/index.d.ts +5 -0
  129. package/dist/config/index.js +4 -0
  130. package/dist/config/index.js.map +1 -1
  131. package/dist/config/integration.d.ts +12 -0
  132. package/dist/config/integration.js +14 -0
  133. package/dist/config/integration.js.map +1 -0
  134. package/dist/config/models-json.d.ts +454 -0
  135. package/dist/config/models-json.js +323 -0
  136. package/dist/config/models-json.js.map +1 -0
  137. package/dist/config/paths.d.ts +2 -0
  138. package/dist/config/paths.js +4 -0
  139. package/dist/config/paths.js.map +1 -1
  140. package/dist/config/reload.d.ts +1 -1
  141. package/dist/config/reload.js +3 -3
  142. package/dist/config/reload.js.map +1 -1
  143. package/dist/config/resolve-config-value.d.ts +36 -0
  144. package/dist/config/resolve-config-value.js +218 -0
  145. package/dist/config/resolve-config-value.js.map +1 -0
  146. package/dist/config/rules.js +3 -2
  147. package/dist/config/rules.js.map +1 -1
  148. package/dist/config/schema.d.ts +17 -884
  149. package/dist/config/schema.js +36 -312
  150. package/dist/config/schema.js.map +1 -1
  151. package/dist/config/types.models.d.ts +54 -0
  152. package/dist/config/types.models.js +2 -0
  153. package/dist/config/types.models.js.map +1 -0
  154. package/dist/cron/validation.d.ts +4 -4
  155. package/dist/gateway/hono/app.js +230 -78
  156. package/dist/gateway/hono/app.js.map +1 -1
  157. package/dist/gateway/hono/oauth-async.d.ts +14 -0
  158. package/dist/gateway/hono/oauth-async.js +285 -0
  159. package/dist/gateway/hono/oauth-async.js.map +1 -0
  160. package/dist/gateway/hono/oauth.d.ts +9 -0
  161. package/dist/gateway/hono/oauth.js +157 -0
  162. package/dist/gateway/hono/oauth.js.map +1 -0
  163. package/dist/gateway/hono/sse.js +5 -2
  164. package/dist/gateway/hono/sse.js.map +1 -1
  165. package/dist/gateway/service.d.ts +6 -2
  166. package/dist/gateway/service.js +20 -6
  167. package/dist/gateway/service.js.map +1 -1
  168. package/dist/gateway/static/root/assets/flow-BqIEBwW6.js +2 -0
  169. package/dist/gateway/static/root/assets/flow-BqIEBwW6.js.map +1 -0
  170. package/dist/gateway/static/root/assets/main-Br2tw-87.js +5168 -0
  171. package/dist/gateway/static/root/assets/main-Br2tw-87.js.map +1 -0
  172. package/dist/gateway/static/root/assets/main-DwlbPf8Z.css +1 -0
  173. package/dist/gateway/static/root/index.html +2 -2
  174. package/dist/plugins/index.d.ts +0 -2
  175. package/dist/plugins/index.js +0 -2
  176. package/dist/plugins/index.js.map +1 -1
  177. package/dist/plugins/types.d.ts +0 -2
  178. package/dist/plugins/types.js +0 -2
  179. package/dist/plugins/types.js.map +1 -1
  180. package/dist/providers/index.d.ts +50 -22
  181. package/dist/providers/index.js +276 -50
  182. package/dist/providers/index.js.map +1 -1
  183. package/dist/providers/model-registry.d.ts +84 -0
  184. package/dist/providers/model-registry.js +385 -0
  185. package/dist/providers/model-registry.js.map +1 -0
  186. package/dist/types/providers.d.ts +2 -63
  187. package/dist/types/providers.js +1 -1
  188. package/dist/utils/__tests__/frontmatter.test.js +4 -3
  189. package/dist/utils/__tests__/frontmatter.test.js.map +1 -1
  190. package/dist/utils/diagnostic-events.d.ts +230 -0
  191. package/dist/utils/diagnostic-events.js +189 -0
  192. package/dist/utils/diagnostic-events.js.map +1 -0
  193. package/dist/utils/frontmatter.d.ts +0 -1
  194. package/dist/utils/frontmatter.js +13 -77
  195. package/dist/utils/frontmatter.js.map +1 -1
  196. package/dist/utils/log-stream.d.ts +95 -0
  197. package/dist/utils/log-stream.js +229 -0
  198. package/dist/utils/log-stream.js.map +1 -0
  199. package/dist/utils/logger.d.ts +5 -0
  200. package/dist/utils/logger.js +25 -0
  201. package/dist/utils/logger.js.map +1 -1
  202. package/dist/utils/redact.d.ts +73 -0
  203. package/dist/utils/redact.js +245 -0
  204. package/dist/utils/redact.js.map +1 -0
  205. package/package.json +6 -4
  206. package/skills/find-skills/SKILL.md +0 -9
  207. package/dist/__tests__/core.test.d.ts +0 -1
  208. package/dist/__tests__/core.test.js +0 -72
  209. package/dist/__tests__/core.test.js.map +0 -1
  210. package/dist/agent/model-manager.js.map +0 -1
  211. package/dist/cli/commands/configure.d.ts +0 -1
  212. package/dist/cli/commands/configure.js +0 -171
  213. package/dist/cli/commands/configure.js.map +0 -1
  214. package/dist/cli/commands/gateway-daemon.d.ts +0 -1
  215. package/dist/cli/commands/gateway-daemon.js +0 -141
  216. package/dist/cli/commands/gateway-daemon.js.map +0 -1
  217. package/dist/config/__tests__/diff.test.d.ts +0 -1
  218. package/dist/config/__tests__/diff.test.js +0 -192
  219. package/dist/config/__tests__/diff.test.js.map +0 -1
  220. package/dist/config/__tests__/loader.test.d.ts +0 -1
  221. package/dist/config/__tests__/loader.test.js +0 -356
  222. package/dist/config/__tests__/loader.test.js.map +0 -1
  223. package/dist/config/__tests__/paths.test.d.ts +0 -1
  224. package/dist/config/__tests__/paths.test.js +0 -192
  225. package/dist/config/__tests__/paths.test.js.map +0 -1
  226. package/dist/config/__tests__/reload.test.d.ts +0 -1
  227. package/dist/config/__tests__/reload.test.js +0 -374
  228. package/dist/config/__tests__/reload.test.js.map +0 -1
  229. package/dist/config/__tests__/rules.test.d.ts +0 -1
  230. package/dist/config/__tests__/rules.test.js +0 -204
  231. package/dist/config/__tests__/rules.test.js.map +0 -1
  232. package/dist/config/__tests__/schema.test.d.ts +0 -1
  233. package/dist/config/__tests__/schema.test.js +0 -672
  234. package/dist/config/__tests__/schema.test.js.map +0 -1
  235. package/dist/daemon/background-start.d.ts +0 -33
  236. package/dist/daemon/background-start.js +0 -89
  237. package/dist/daemon/background-start.js.map +0 -1
  238. package/dist/daemon/gateway-manager.d.ts +0 -87
  239. package/dist/daemon/gateway-manager.js +0 -324
  240. package/dist/daemon/gateway-manager.js.map +0 -1
  241. package/dist/daemon/index.d.ts +0 -5
  242. package/dist/daemon/index.js +0 -6
  243. package/dist/daemon/index.js.map +0 -1
  244. package/dist/gateway/static/root/assets/main-DevbZW9K.js +0 -2227
  245. package/dist/gateway/static/root/assets/main-DevbZW9K.js.map +0 -1
  246. package/dist/gateway/static/root/assets/main-DxZg1Nmz.css +0 -1
  247. package/dist/providers/__tests__/registry.test.d.ts +0 -1
  248. package/dist/providers/__tests__/registry.test.js +0 -110
  249. package/dist/providers/__tests__/registry.test.js.map +0 -1
  250. package/dist/providers/api-strategies.d.ts +0 -15
  251. package/dist/providers/api-strategies.js +0 -96
  252. package/dist/providers/api-strategies.js.map +0 -1
  253. package/dist/providers/auto-discovery.d.ts +0 -39
  254. package/dist/providers/auto-discovery.js +0 -189
  255. package/dist/providers/auto-discovery.js.map +0 -1
  256. package/dist/providers/config.d.ts +0 -25
  257. package/dist/providers/config.js +0 -42
  258. package/dist/providers/config.js.map +0 -1
  259. package/dist/providers/model-catalog.d.ts +0 -92
  260. package/dist/providers/model-catalog.js +0 -998
  261. package/dist/providers/model-catalog.js.map +0 -1
  262. package/dist/providers/models-dev-data.d.ts +0 -11
  263. package/dist/providers/models-dev-data.js +0 -1035
  264. package/dist/providers/models-dev-data.js.map +0 -1
  265. package/dist/providers/models-dev.d.ts +0 -34
  266. package/dist/providers/models-dev.js +0 -33
  267. package/dist/providers/models-dev.js.map +0 -1
  268. package/dist/providers/pi-ai.d.ts +0 -62
  269. package/dist/providers/pi-ai.js +0 -221
  270. package/dist/providers/pi-ai.js.map +0 -1
  271. package/dist/providers/provider-catalog.d.ts +0 -91
  272. package/dist/providers/provider-catalog.js +0 -791
  273. package/dist/providers/provider-catalog.js.map +0 -1
  274. package/dist/providers/registry.d.ts +0 -135
  275. package/dist/providers/registry.js +0 -475
  276. package/dist/providers/registry.js.map +0 -1
  277. package/dist/providers/types.d.ts +0 -95
  278. package/dist/providers/types.js +0 -7
  279. package/dist/providers/types.js.map +0 -1
  280. package/dist/session/chat-manager.d.ts +0 -49
  281. package/dist/session/chat-manager.js +0 -167
  282. package/dist/session/chat-manager.js.map +0 -1
  283. package/dist/session/chat-types.d.ts +0 -53
  284. package/dist/session/chat-types.js +0 -63
  285. package/dist/session/chat-types.js.map +0 -1
@@ -0,0 +1,454 @@
1
+ /**
2
+ * Models.json configuration types and schema
3
+ *
4
+ * Supports custom providers and models (Ollama, vLLM, LM Studio, proxies)
5
+ *
6
+ * File location: ~/.xopcbot/models.json (or XOPCBOT_MODELS_JSON env var)
7
+ */
8
+ import { z } from 'zod';
9
+ export { getModelsJsonPath } from './paths.js';
10
+ export declare const OpenRouterRoutingSchema: z.ZodObject<{
11
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
+ }, z.core.$strip>;
14
+ export declare const VercelGatewayRoutingSchema: z.ZodObject<{
15
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ }, z.core.$strip>;
18
+ export declare const OpenAICompletionsCompatSchema: z.ZodObject<{
19
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
20
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
21
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
22
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
23
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
24
+ max_completion_tokens: "max_completion_tokens";
25
+ max_tokens: "max_tokens";
26
+ }>>;
27
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
28
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
29
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
30
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
31
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
32
+ openai: "openai";
33
+ zai: "zai";
34
+ qwen: "qwen";
35
+ }>>;
36
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
37
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
38
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
39
+ }, z.core.$strip>>;
40
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
41
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
42
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
43
+ }, z.core.$strip>>;
44
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
45
+ }, z.core.$strip>;
46
+ export declare const OpenAIResponsesCompatSchema: z.ZodObject<{}, z.core.$strip>;
47
+ export declare const OpenAICompatSchema: z.ZodUnion<readonly [z.ZodObject<{
48
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
49
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
50
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
51
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
52
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
53
+ max_completion_tokens: "max_completion_tokens";
54
+ max_tokens: "max_tokens";
55
+ }>>;
56
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
57
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
58
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
59
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
60
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
61
+ openai: "openai";
62
+ zai: "zai";
63
+ qwen: "qwen";
64
+ }>>;
65
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
66
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
68
+ }, z.core.$strip>>;
69
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
70
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
71
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
72
+ }, z.core.$strip>>;
73
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
74
+ }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>;
75
+ export declare const CustomModelSchema: z.ZodObject<{
76
+ id: z.ZodString;
77
+ name: z.ZodOptional<z.ZodString>;
78
+ api: z.ZodOptional<z.ZodEnum<{
79
+ "openai-completions": "openai-completions";
80
+ "openai-responses": "openai-responses";
81
+ "anthropic-messages": "anthropic-messages";
82
+ "google-generative-ai": "google-generative-ai";
83
+ "azure-openai-responses": "azure-openai-responses";
84
+ "bedrock-converse-stream": "bedrock-converse-stream";
85
+ "openai-codex-responses": "openai-codex-responses";
86
+ "google-gemini-cli": "google-gemini-cli";
87
+ "google-vertex": "google-vertex";
88
+ }>>;
89
+ reasoning: z.ZodOptional<z.ZodBoolean>;
90
+ input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
91
+ text: "text";
92
+ image: "image";
93
+ }>>>;
94
+ contextWindow: z.ZodOptional<z.ZodNumber>;
95
+ maxTokens: z.ZodOptional<z.ZodNumber>;
96
+ cost: z.ZodOptional<z.ZodObject<{
97
+ input: z.ZodNumber;
98
+ output: z.ZodNumber;
99
+ cacheRead: z.ZodNumber;
100
+ cacheWrite: z.ZodNumber;
101
+ }, z.core.$strip>>;
102
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
103
+ compat: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
104
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
105
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
106
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
107
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
108
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
109
+ max_completion_tokens: "max_completion_tokens";
110
+ max_tokens: "max_tokens";
111
+ }>>;
112
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
113
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
114
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
115
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
116
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
117
+ openai: "openai";
118
+ zai: "zai";
119
+ qwen: "qwen";
120
+ }>>;
121
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
122
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
123
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
124
+ }, z.core.$strip>>;
125
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
126
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
127
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
128
+ }, z.core.$strip>>;
129
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
130
+ }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>>;
131
+ }, z.core.$strip>;
132
+ export declare const ModelOverrideSchema: z.ZodObject<{
133
+ name: z.ZodOptional<z.ZodString>;
134
+ reasoning: z.ZodOptional<z.ZodBoolean>;
135
+ input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
136
+ text: "text";
137
+ image: "image";
138
+ }>>>;
139
+ contextWindow: z.ZodOptional<z.ZodNumber>;
140
+ maxTokens: z.ZodOptional<z.ZodNumber>;
141
+ cost: z.ZodOptional<z.ZodObject<{
142
+ input: z.ZodOptional<z.ZodNumber>;
143
+ output: z.ZodOptional<z.ZodNumber>;
144
+ cacheRead: z.ZodOptional<z.ZodNumber>;
145
+ cacheWrite: z.ZodOptional<z.ZodNumber>;
146
+ }, z.core.$strip>>;
147
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
148
+ compat: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
149
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
150
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
151
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
152
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
153
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
154
+ max_completion_tokens: "max_completion_tokens";
155
+ max_tokens: "max_tokens";
156
+ }>>;
157
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
158
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
159
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
160
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
161
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
162
+ openai: "openai";
163
+ zai: "zai";
164
+ qwen: "qwen";
165
+ }>>;
166
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
167
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
168
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
169
+ }, z.core.$strip>>;
170
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
171
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
172
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
173
+ }, z.core.$strip>>;
174
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
175
+ }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>>;
176
+ }, z.core.$strip>;
177
+ export declare const ProviderConfigSchema: z.ZodObject<{
178
+ baseUrl: z.ZodOptional<z.ZodString>;
179
+ apiKey: z.ZodOptional<z.ZodString>;
180
+ api: z.ZodOptional<z.ZodEnum<{
181
+ "openai-completions": "openai-completions";
182
+ "openai-responses": "openai-responses";
183
+ "anthropic-messages": "anthropic-messages";
184
+ "google-generative-ai": "google-generative-ai";
185
+ "azure-openai-responses": "azure-openai-responses";
186
+ "bedrock-converse-stream": "bedrock-converse-stream";
187
+ "openai-codex-responses": "openai-codex-responses";
188
+ "google-gemini-cli": "google-gemini-cli";
189
+ "google-vertex": "google-vertex";
190
+ }>>;
191
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
192
+ authHeader: z.ZodOptional<z.ZodBoolean>;
193
+ models: z.ZodOptional<z.ZodArray<z.ZodObject<{
194
+ id: z.ZodString;
195
+ name: z.ZodOptional<z.ZodString>;
196
+ api: z.ZodOptional<z.ZodEnum<{
197
+ "openai-completions": "openai-completions";
198
+ "openai-responses": "openai-responses";
199
+ "anthropic-messages": "anthropic-messages";
200
+ "google-generative-ai": "google-generative-ai";
201
+ "azure-openai-responses": "azure-openai-responses";
202
+ "bedrock-converse-stream": "bedrock-converse-stream";
203
+ "openai-codex-responses": "openai-codex-responses";
204
+ "google-gemini-cli": "google-gemini-cli";
205
+ "google-vertex": "google-vertex";
206
+ }>>;
207
+ reasoning: z.ZodOptional<z.ZodBoolean>;
208
+ input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
209
+ text: "text";
210
+ image: "image";
211
+ }>>>;
212
+ contextWindow: z.ZodOptional<z.ZodNumber>;
213
+ maxTokens: z.ZodOptional<z.ZodNumber>;
214
+ cost: z.ZodOptional<z.ZodObject<{
215
+ input: z.ZodNumber;
216
+ output: z.ZodNumber;
217
+ cacheRead: z.ZodNumber;
218
+ cacheWrite: z.ZodNumber;
219
+ }, z.core.$strip>>;
220
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
221
+ compat: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
222
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
223
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
224
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
225
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
226
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
227
+ max_completion_tokens: "max_completion_tokens";
228
+ max_tokens: "max_tokens";
229
+ }>>;
230
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
231
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
232
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
233
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
234
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
235
+ openai: "openai";
236
+ zai: "zai";
237
+ qwen: "qwen";
238
+ }>>;
239
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
240
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
241
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
242
+ }, z.core.$strip>>;
243
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
244
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
245
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
246
+ }, z.core.$strip>>;
247
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
248
+ }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>>;
249
+ }, z.core.$strip>>>;
250
+ modelOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
251
+ name: z.ZodOptional<z.ZodString>;
252
+ reasoning: z.ZodOptional<z.ZodBoolean>;
253
+ input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
254
+ text: "text";
255
+ image: "image";
256
+ }>>>;
257
+ contextWindow: z.ZodOptional<z.ZodNumber>;
258
+ maxTokens: z.ZodOptional<z.ZodNumber>;
259
+ cost: z.ZodOptional<z.ZodObject<{
260
+ input: z.ZodOptional<z.ZodNumber>;
261
+ output: z.ZodOptional<z.ZodNumber>;
262
+ cacheRead: z.ZodOptional<z.ZodNumber>;
263
+ cacheWrite: z.ZodOptional<z.ZodNumber>;
264
+ }, z.core.$strip>>;
265
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
266
+ compat: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
267
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
268
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
269
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
270
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
271
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
272
+ max_completion_tokens: "max_completion_tokens";
273
+ max_tokens: "max_tokens";
274
+ }>>;
275
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
276
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
277
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
278
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
279
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
280
+ openai: "openai";
281
+ zai: "zai";
282
+ qwen: "qwen";
283
+ }>>;
284
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
285
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
286
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
287
+ }, z.core.$strip>>;
288
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
289
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
290
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
291
+ }, z.core.$strip>>;
292
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
293
+ }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>>;
294
+ }, z.core.$strip>>>;
295
+ }, z.core.$strip>;
296
+ export declare const ModelsJsonSchema: z.ZodObject<{
297
+ providers: z.ZodRecord<z.ZodString, z.ZodObject<{
298
+ baseUrl: z.ZodOptional<z.ZodString>;
299
+ apiKey: z.ZodOptional<z.ZodString>;
300
+ api: z.ZodOptional<z.ZodEnum<{
301
+ "openai-completions": "openai-completions";
302
+ "openai-responses": "openai-responses";
303
+ "anthropic-messages": "anthropic-messages";
304
+ "google-generative-ai": "google-generative-ai";
305
+ "azure-openai-responses": "azure-openai-responses";
306
+ "bedrock-converse-stream": "bedrock-converse-stream";
307
+ "openai-codex-responses": "openai-codex-responses";
308
+ "google-gemini-cli": "google-gemini-cli";
309
+ "google-vertex": "google-vertex";
310
+ }>>;
311
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
312
+ authHeader: z.ZodOptional<z.ZodBoolean>;
313
+ models: z.ZodOptional<z.ZodArray<z.ZodObject<{
314
+ id: z.ZodString;
315
+ name: z.ZodOptional<z.ZodString>;
316
+ api: z.ZodOptional<z.ZodEnum<{
317
+ "openai-completions": "openai-completions";
318
+ "openai-responses": "openai-responses";
319
+ "anthropic-messages": "anthropic-messages";
320
+ "google-generative-ai": "google-generative-ai";
321
+ "azure-openai-responses": "azure-openai-responses";
322
+ "bedrock-converse-stream": "bedrock-converse-stream";
323
+ "openai-codex-responses": "openai-codex-responses";
324
+ "google-gemini-cli": "google-gemini-cli";
325
+ "google-vertex": "google-vertex";
326
+ }>>;
327
+ reasoning: z.ZodOptional<z.ZodBoolean>;
328
+ input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
329
+ text: "text";
330
+ image: "image";
331
+ }>>>;
332
+ contextWindow: z.ZodOptional<z.ZodNumber>;
333
+ maxTokens: z.ZodOptional<z.ZodNumber>;
334
+ cost: z.ZodOptional<z.ZodObject<{
335
+ input: z.ZodNumber;
336
+ output: z.ZodNumber;
337
+ cacheRead: z.ZodNumber;
338
+ cacheWrite: z.ZodNumber;
339
+ }, z.core.$strip>>;
340
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
341
+ compat: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
342
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
343
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
344
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
345
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
346
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
347
+ max_completion_tokens: "max_completion_tokens";
348
+ max_tokens: "max_tokens";
349
+ }>>;
350
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
351
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
352
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
353
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
354
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
355
+ openai: "openai";
356
+ zai: "zai";
357
+ qwen: "qwen";
358
+ }>>;
359
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
360
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
361
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
362
+ }, z.core.$strip>>;
363
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
364
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
365
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
366
+ }, z.core.$strip>>;
367
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
368
+ }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>>;
369
+ }, z.core.$strip>>>;
370
+ modelOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
371
+ name: z.ZodOptional<z.ZodString>;
372
+ reasoning: z.ZodOptional<z.ZodBoolean>;
373
+ input: z.ZodOptional<z.ZodArray<z.ZodEnum<{
374
+ text: "text";
375
+ image: "image";
376
+ }>>>;
377
+ contextWindow: z.ZodOptional<z.ZodNumber>;
378
+ maxTokens: z.ZodOptional<z.ZodNumber>;
379
+ cost: z.ZodOptional<z.ZodObject<{
380
+ input: z.ZodOptional<z.ZodNumber>;
381
+ output: z.ZodOptional<z.ZodNumber>;
382
+ cacheRead: z.ZodOptional<z.ZodNumber>;
383
+ cacheWrite: z.ZodOptional<z.ZodNumber>;
384
+ }, z.core.$strip>>;
385
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
386
+ compat: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
387
+ supportsStore: z.ZodOptional<z.ZodBoolean>;
388
+ supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
389
+ supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
390
+ supportsUsageInStreaming: z.ZodOptional<z.ZodBoolean>;
391
+ maxTokensField: z.ZodOptional<z.ZodEnum<{
392
+ max_completion_tokens: "max_completion_tokens";
393
+ max_tokens: "max_tokens";
394
+ }>>;
395
+ requiresToolResultName: z.ZodOptional<z.ZodBoolean>;
396
+ requiresAssistantAfterToolResult: z.ZodOptional<z.ZodBoolean>;
397
+ requiresThinkingAsText: z.ZodOptional<z.ZodBoolean>;
398
+ requiresMistralToolIds: z.ZodOptional<z.ZodBoolean>;
399
+ thinkingFormat: z.ZodOptional<z.ZodEnum<{
400
+ openai: "openai";
401
+ zai: "zai";
402
+ qwen: "qwen";
403
+ }>>;
404
+ openRouterRouting: z.ZodOptional<z.ZodObject<{
405
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
406
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
407
+ }, z.core.$strip>>;
408
+ vercelGatewayRouting: z.ZodOptional<z.ZodObject<{
409
+ only: z.ZodOptional<z.ZodArray<z.ZodString>>;
410
+ order: z.ZodOptional<z.ZodArray<z.ZodString>>;
411
+ }, z.core.$strip>>;
412
+ supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
413
+ }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>>;
414
+ }, z.core.$strip>>>;
415
+ }, z.core.$strip>>;
416
+ }, z.core.$strip>;
417
+ export type OpenRouterRouting = z.infer<typeof OpenRouterRoutingSchema>;
418
+ export type VercelGatewayRouting = z.infer<typeof VercelGatewayRoutingSchema>;
419
+ export type OpenAICompletionsCompat = z.infer<typeof OpenAICompletionsCompatSchema>;
420
+ export type OpenAIResponsesCompat = z.infer<typeof OpenAIResponsesCompatSchema>;
421
+ export type OpenAICompat = z.infer<typeof OpenAICompatSchema>;
422
+ export type CustomModel = z.infer<typeof CustomModelSchema>;
423
+ export type ModelOverride = z.infer<typeof ModelOverrideSchema>;
424
+ export type ProviderConfig = z.infer<typeof ProviderConfigSchema>;
425
+ export type ModelsJsonConfig = z.infer<typeof ModelsJsonSchema>;
426
+ export interface ValidationError {
427
+ path: string;
428
+ message: string;
429
+ severity: 'error' | 'warning';
430
+ }
431
+ export interface ValidationResult {
432
+ valid: boolean;
433
+ errors: ValidationError[];
434
+ }
435
+ export declare function validateModelsConfig(config: unknown): ValidationResult;
436
+ export declare function getDefaultModelValues(): Required<Pick<CustomModel, 'input' | 'contextWindow' | 'maxTokens' | 'cost'>>;
437
+ /**
438
+ * Load models.json from disk
439
+ */
440
+ export declare function loadModelsJson(path?: string): {
441
+ config: ModelsJsonConfig;
442
+ error?: string;
443
+ };
444
+ /**
445
+ * Save models.json to disk
446
+ */
447
+ export declare function saveModelsJson(path: string, config: ModelsJsonConfig): {
448
+ success: boolean;
449
+ error?: string;
450
+ };
451
+ /**
452
+ * Check if models.json exists
453
+ */
454
+ export declare function modelsJsonExists(path?: string): boolean;