@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
@@ -4,9 +4,9 @@
4
4
  * Handles model selection, switching, and automatic fallback
5
5
  * when a provider fails.
6
6
  */
7
- import { createLogger } from '../utils/logger.js';
8
- import { ModelRegistry } from '../providers/registry.js';
9
- import { isFailoverError, describeFailoverError, resolveFallbackCandidates } from './fallback/index.js';
7
+ import { createLogger } from '../../utils/logger.js';
8
+ import { resolveModel, getAvailableModels, DEFAULT_MODEL } from '../../providers/index.js';
9
+ import { isFailoverError, describeFailoverError, resolveFallbackCandidates } from '../fallback/index.js';
10
10
  const log = createLogger('ModelManager');
11
11
  /**
12
12
  * Get the last assistant content from agent messages
@@ -25,7 +25,6 @@ function getLastAssistantContent(agent) {
25
25
  return null;
26
26
  }
27
27
  export class ModelManager {
28
- modelRegistry;
29
28
  defaultModel;
30
29
  config;
31
30
  currentModelName;
@@ -34,10 +33,9 @@ export class ModelManager {
34
33
  channelManager;
35
34
  constructor(config = {}) {
36
35
  this.config = config.config;
37
- this.defaultModel = config.defaultModel || 'minimax/MiniMax-M2.5';
36
+ this.defaultModel = config.defaultModel || DEFAULT_MODEL;
38
37
  this.currentModelName = this.defaultModel;
39
- this.currentProvider = 'google';
40
- this.modelRegistry = new ModelRegistry(config.config ?? null, { ollamaEnabled: false });
38
+ this.currentProvider = 'anthropic';
41
39
  }
42
40
  /**
43
41
  * Set channel manager reference for accessing session-specific settings
@@ -45,12 +43,6 @@ export class ModelManager {
45
43
  setChannelManager(channelManager) {
46
44
  this.channelManager = channelManager;
47
45
  }
48
- /**
49
- * Get the model registry
50
- */
51
- getRegistry() {
52
- return this.modelRegistry;
53
- }
54
46
  /**
55
47
  * Get current model name
56
48
  */
@@ -68,9 +60,9 @@ export class ModelManager {
68
60
  */
69
61
  async switchModelForSession(sessionKey, modelId) {
70
62
  try {
71
- const found = this.modelRegistry.findByRef(modelId);
63
+ const found = resolveModel(modelId);
72
64
  if (!found) {
73
- log.warn({ modelId }, 'Model not found in registry');
65
+ log.warn({ modelId }, 'Model not found');
74
66
  return false;
75
67
  }
76
68
  this.sessionModels.set(sessionKey, modelId);
@@ -115,7 +107,7 @@ export class ModelManager {
115
107
  return; // No change needed
116
108
  }
117
109
  try {
118
- const found = this.modelRegistry.findByRef(targetModelId);
110
+ const found = resolveModel(targetModelId);
119
111
  if (!found) {
120
112
  log.warn({ modelId: targetModelId }, 'Model not found, keeping current');
121
113
  return;
@@ -141,9 +133,12 @@ export class ModelManager {
141
133
  let lastError;
142
134
  for (let i = 0; i < candidates.length; i++) {
143
135
  const candidate = candidates[i];
144
- const candidateModel = this.modelRegistry.find(candidate.provider, candidate.model);
145
- if (!candidateModel) {
146
- log.warn({ provider: candidate.provider, model: candidate.model }, 'Fallback model not found in registry');
136
+ let candidateModel;
137
+ try {
138
+ candidateModel = resolveModel(`${candidate.provider}/${candidate.model}`);
139
+ }
140
+ catch {
141
+ log.warn({ provider: candidate.provider, model: candidate.model }, 'Fallback model not found');
147
142
  continue;
148
143
  }
149
144
  log.info({ attempt: i + 1, total: candidates.length, provider: candidate.provider, model: candidate.model }, 'Attempting model');
@@ -157,6 +152,8 @@ export class ModelManager {
157
152
  await agent.waitForIdle();
158
153
  // Get usage from agent state if available
159
154
  const usage = agent.state.lastUsage || undefined;
155
+ // Log the successfully used model
156
+ log.info({ provider: candidate.provider, model: candidate.model, success: true }, 'Model call completed');
160
157
  return {
161
158
  content: getLastAssistantContent(agent),
162
159
  usage,
@@ -189,25 +186,42 @@ export class ModelManager {
189
186
  * Find model by reference (provider/modelId)
190
187
  */
191
188
  findByRef(ref) {
192
- return this.modelRegistry.findByRef(ref);
189
+ try {
190
+ return resolveModel(ref);
191
+ }
192
+ catch {
193
+ return undefined;
194
+ }
193
195
  }
194
196
  /**
195
197
  * Find model by provider and ID
196
198
  */
197
199
  find(provider, modelId) {
198
- return this.modelRegistry.find(provider, modelId);
200
+ try {
201
+ return resolveModel(`${provider}/${modelId}`);
202
+ }
203
+ catch {
204
+ return undefined;
205
+ }
199
206
  }
200
207
  /**
201
208
  * Get all available models
202
209
  */
203
210
  getAllModels() {
204
- return this.modelRegistry.getAll();
211
+ return getAvailableModels(this.config);
205
212
  }
206
213
  /**
207
214
  * Get models grouped by provider
208
215
  */
209
216
  getModelsByProvider() {
210
- return this.modelRegistry.getByProvider();
217
+ const all = this.getAllModels();
218
+ const grouped = new Map();
219
+ for (const model of all) {
220
+ const list = grouped.get(model.provider) ?? [];
221
+ list.push(model);
222
+ grouped.set(model.provider, list);
223
+ }
224
+ return grouped;
211
225
  }
212
226
  }
213
- //# sourceMappingURL=model-manager.js.map
227
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/agent/models/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Model Scan
3
+ *
4
+ * Scans and discovers models from provider configurations.
5
+ */
6
+ import type { ModelProviderConfig, ModelDefinitionConfig, ModelsConfig } from '../../config/types.models.js';
7
+ export interface ScanResult {
8
+ provider: string;
9
+ models: ModelDefinitionConfig[];
10
+ errors: string[];
11
+ }
12
+ /**
13
+ * Scan all providers from config and return discovered models
14
+ */
15
+ export declare function scanProviders(config: {
16
+ models?: ModelsConfig;
17
+ }): ScanResult[];
18
+ /**
19
+ * Scan a single provider and return its models
20
+ */
21
+ export declare function scanProvider(providerId: string, providerConfig: ModelProviderConfig): ScanResult;
22
+ /**
23
+ * Validate and normalize a model definition
24
+ */
25
+ export declare function validateModelDefinition(providerId: string, model: ModelDefinitionConfig): {
26
+ model: ModelDefinitionConfig | null;
27
+ errors: string[];
28
+ };
29
+ /**
30
+ * Build a map of all available models by ID
31
+ */
32
+ export declare function buildModelMap(config: {
33
+ models?: ModelsConfig;
34
+ }): Map<string, ModelDefinitionConfig>;
35
+ /**
36
+ * Check if a model reference is valid
37
+ */
38
+ export declare function isValidModelRef(config: {
39
+ models?: ModelsConfig;
40
+ }, modelRef: string): boolean;
41
+ /**
42
+ * Get model definition by reference
43
+ */
44
+ export declare function getModelByRef(config: {
45
+ models?: ModelsConfig;
46
+ }, modelRef: string): ModelDefinitionConfig | null;
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Model Scan
3
+ *
4
+ * Scans and discovers models from provider configurations.
5
+ */
6
+ import { parseModelRef, normalizeProviderId } from './selection.js';
7
+ /**
8
+ * Scan all providers from config and return discovered models
9
+ */
10
+ export function scanProviders(config) {
11
+ const results = [];
12
+ const providers = config.models?.providers;
13
+ if (!providers) {
14
+ return results;
15
+ }
16
+ for (const [providerId, providerConfig] of Object.entries(providers)) {
17
+ const result = scanProvider(providerId, providerConfig);
18
+ results.push(result);
19
+ }
20
+ return results;
21
+ }
22
+ /**
23
+ * Scan a single provider and return its models
24
+ */
25
+ export function scanProvider(providerId, providerConfig) {
26
+ const errors = [];
27
+ const models = [];
28
+ // Validate provider config
29
+ if (!providerConfig.baseUrl) {
30
+ errors.push(`Provider ${providerId}: missing baseUrl`);
31
+ }
32
+ if (!providerConfig.models || providerConfig.models.length === 0) {
33
+ errors.push(`Provider ${providerId}: no models defined`);
34
+ }
35
+ // Process each model
36
+ for (const model of providerConfig.models || []) {
37
+ const validated = validateModelDefinition(providerId, model);
38
+ if (validated.errors.length > 0) {
39
+ errors.push(...validated.errors.map(e => `Model ${model.id}: ${e}`));
40
+ }
41
+ if (validated.model) {
42
+ models.push(validated.model);
43
+ }
44
+ }
45
+ return {
46
+ provider: normalizeProviderId(providerId),
47
+ models,
48
+ errors,
49
+ };
50
+ }
51
+ /**
52
+ * Validate and normalize a model definition
53
+ */
54
+ export function validateModelDefinition(providerId, model) {
55
+ const errors = [];
56
+ // Validate required fields
57
+ if (!model.id || model.id.trim() === '') {
58
+ errors.push('missing id');
59
+ }
60
+ if (!model.name || model.name.trim() === '') {
61
+ errors.push('missing name');
62
+ }
63
+ // Validate API type if provided
64
+ if (model.api) {
65
+ const validApis = [
66
+ 'openai-completions',
67
+ 'openai-responses',
68
+ 'anthropic-messages',
69
+ 'google-generative-ai',
70
+ 'github-copilot',
71
+ 'bedrock-converse-stream',
72
+ 'ollama',
73
+ ];
74
+ if (!validApis.includes(model.api)) {
75
+ errors.push(`invalid api type: ${model.api}`);
76
+ }
77
+ }
78
+ // Validate context window if provided
79
+ if (model.contextWindow !== undefined) {
80
+ if (!Number.isFinite(model.contextWindow) || model.contextWindow <= 0) {
81
+ errors.push('contextWindow must be a positive number');
82
+ }
83
+ }
84
+ // Validate maxTokens if provided
85
+ if (model.maxTokens !== undefined) {
86
+ if (!Number.isFinite(model.maxTokens) || model.maxTokens <= 0) {
87
+ errors.push('maxTokens must be a positive number');
88
+ }
89
+ }
90
+ // Validate cost fields if provided
91
+ if (model.cost) {
92
+ const costFields = ['input', 'output', 'cacheRead', 'cacheWrite'];
93
+ for (const field of costFields) {
94
+ if (model.cost[field] !== undefined) {
95
+ if (typeof model.cost[field] !== 'number' || model.cost[field] < 0) {
96
+ errors.push(`cost.${field} must be a non-negative number`);
97
+ }
98
+ }
99
+ }
100
+ }
101
+ // Validate input types if provided
102
+ if (model.input) {
103
+ const validInputs = ['text', 'image'];
104
+ for (const inputType of model.input) {
105
+ if (!validInputs.includes(inputType)) {
106
+ errors.push(`invalid input type: ${inputType}`);
107
+ }
108
+ }
109
+ }
110
+ if (errors.length > 0) {
111
+ return { model: null, errors };
112
+ }
113
+ // Normalize and enrich model
114
+ const normalized = {
115
+ id: model.id,
116
+ name: model.name,
117
+ api: model.api,
118
+ reasoning: model.reasoning ?? false,
119
+ input: model.input ?? ['text'],
120
+ cost: model.cost ?? { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
121
+ contextWindow: model.contextWindow ?? 128000,
122
+ maxTokens: model.maxTokens ?? Math.min(8192, model.contextWindow ?? 128000),
123
+ headers: model.headers,
124
+ compat: model.compat,
125
+ };
126
+ return { model: normalized, errors: [] };
127
+ }
128
+ /**
129
+ * Build a map of all available models by ID
130
+ */
131
+ export function buildModelMap(config) {
132
+ const modelMap = new Map();
133
+ const results = scanProviders(config);
134
+ for (const result of results) {
135
+ for (const model of result.models) {
136
+ const key = `${result.provider}/${model.id}`;
137
+ modelMap.set(key, model);
138
+ // Also set by just model ID for convenience
139
+ if (!modelMap.has(model.id)) {
140
+ modelMap.set(model.id, model);
141
+ }
142
+ }
143
+ }
144
+ return modelMap;
145
+ }
146
+ /**
147
+ * Check if a model reference is valid
148
+ */
149
+ export function isValidModelRef(config, modelRef) {
150
+ const modelMap = buildModelMap(config);
151
+ // Try parsing as provider/model
152
+ const parsed = parseModelRef(modelRef);
153
+ if (parsed) {
154
+ const key = `${parsed.provider}/${parsed.model}`;
155
+ return modelMap.has(key);
156
+ }
157
+ // Try as direct model ID
158
+ return modelMap.has(modelRef);
159
+ }
160
+ /**
161
+ * Get model definition by reference
162
+ */
163
+ export function getModelByRef(config, modelRef) {
164
+ const modelMap = buildModelMap(config);
165
+ // Try direct ID first
166
+ if (modelMap.has(modelRef)) {
167
+ return modelMap.get(modelRef) ?? null;
168
+ }
169
+ // Try parsing as provider/model
170
+ const parsed = parseModelRef(modelRef);
171
+ if (parsed) {
172
+ const key = `${parsed.provider}/${parsed.model}`;
173
+ return modelMap.get(key) ?? null;
174
+ }
175
+ return null;
176
+ }
177
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/agent/models/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Model Selection
3
+ *
4
+ * Handles model reference parsing, provider normalization, and alias resolution.
5
+ */
6
+ import type { ModelDefinitionConfig, ModelProviderConfig } from '../../config/types.models.js';
7
+ export interface ModelRef {
8
+ provider: string;
9
+ model: string;
10
+ }
11
+ export type ThinkLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
12
+ export declare function normalizeProviderId(provider: string): string;
13
+ /**
14
+ * Parse a model reference string (e.g., "anthropic/claude-opus-4-6")
15
+ * into provider and model parts.
16
+ */
17
+ export declare function parseModelRef(ref: string, defaultProvider?: string): ModelRef | null;
18
+ /**
19
+ * Create a model key string (provider/model)
20
+ */
21
+ export declare function modelKey(provider: string, model: string): string;
22
+ /**
23
+ * Resolve a model reference, handling aliases
24
+ */
25
+ export declare function resolveModelRef(ref: string, defaultProvider?: string): ModelRef | null;
26
+ /**
27
+ * Find provider config by normalized provider ID
28
+ */
29
+ export declare function findProviderConfig(providers: Record<string, ModelProviderConfig> | undefined, provider: string): ModelProviderConfig | undefined;
30
+ /**
31
+ * Find model config within a provider
32
+ */
33
+ export declare function findModelConfig(provider: ModelProviderConfig, modelId: string): ModelDefinitionConfig | undefined;
34
+ /**
35
+ * Get full model config from providers by model reference
36
+ */
37
+ export declare function getModelConfig(providers: Record<string, ModelProviderConfig> | undefined, modelRef: string, defaultProvider?: string): {
38
+ provider: ModelProviderConfig;
39
+ model: ModelDefinitionConfig;
40
+ } | null;
41
+ /**
42
+ * Get all available model IDs from all providers
43
+ */
44
+ export declare function getAllModelIds(providers: Record<string, ModelProviderConfig> | undefined): string[];
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Model Selection
3
+ *
4
+ * Handles model reference parsing, provider normalization, and alias resolution.
5
+ */
6
+ import { resolveModelAlias } from '../../config/defaults.js';
7
+ // ============================================
8
+ // Provider ID Normalization
9
+ // ============================================
10
+ export function normalizeProviderId(provider) {
11
+ const normalized = provider.trim().toLowerCase();
12
+ // Alias mappings
13
+ if (normalized === 'z.ai' || normalized === 'z-ai') {
14
+ return 'zai';
15
+ }
16
+ if (normalized === 'opencode-zen') {
17
+ return 'opencode';
18
+ }
19
+ if (normalized === 'qwen') {
20
+ return 'qwen-portal';
21
+ }
22
+ if (normalized === 'kimi-code') {
23
+ return 'kimi-coding';
24
+ }
25
+ // Backward compatibility for older provider naming
26
+ if (normalized === 'bytedance' || normalized === 'doubao') {
27
+ return 'volcengine';
28
+ }
29
+ return normalized;
30
+ }
31
+ // ============================================
32
+ // Model Reference Parsing
33
+ // ============================================
34
+ /**
35
+ * Parse a model reference string (e.g., "anthropic/claude-opus-4-6")
36
+ * into provider and model parts.
37
+ */
38
+ export function parseModelRef(ref, defaultProvider) {
39
+ if (!ref || typeof ref !== 'string') {
40
+ return null;
41
+ }
42
+ const trimmed = ref.trim();
43
+ if (!trimmed) {
44
+ return null;
45
+ }
46
+ const slashIndex = trimmed.indexOf('/');
47
+ if (slashIndex === -1) {
48
+ // No slash - treat entire string as model, use default provider
49
+ const model = trimmed;
50
+ const provider = defaultProvider || 'openai'; // Default to openai
51
+ return { provider, model };
52
+ }
53
+ const provider = trimmed.slice(0, slashIndex);
54
+ const model = trimmed.slice(slashIndex + 1);
55
+ if (!provider || !model) {
56
+ return null;
57
+ }
58
+ return { provider: normalizeProviderId(provider), model };
59
+ }
60
+ /**
61
+ * Create a model key string (provider/model)
62
+ */
63
+ export function modelKey(provider, model) {
64
+ return `${provider}/${model}`;
65
+ }
66
+ /**
67
+ * Resolve a model reference, handling aliases
68
+ */
69
+ export function resolveModelRef(ref, defaultProvider) {
70
+ // First, check if it's an alias
71
+ const resolved = resolveModelAlias(ref);
72
+ const modelRef = resolved || ref;
73
+ return parseModelRef(modelRef, defaultProvider);
74
+ }
75
+ // ============================================
76
+ // Provider Lookup
77
+ // ============================================
78
+ /**
79
+ * Find provider config by normalized provider ID
80
+ */
81
+ export function findProviderConfig(providers, provider) {
82
+ if (!providers) {
83
+ return undefined;
84
+ }
85
+ const normalizedProviderId = normalizeProviderId(provider);
86
+ // Try exact match first
87
+ if (providers[normalizedProviderId]) {
88
+ return providers[normalizedProviderId];
89
+ }
90
+ // Try normalized match
91
+ for (const [key, config] of Object.entries(providers)) {
92
+ if (normalizeProviderId(key) === normalizedProviderId) {
93
+ return config;
94
+ }
95
+ }
96
+ return undefined;
97
+ }
98
+ /**
99
+ * Find model config within a provider
100
+ */
101
+ export function findModelConfig(provider, modelId) {
102
+ const normalizedModelId = modelId.toLowerCase();
103
+ return provider.models.find((m) => m.id.toLowerCase() === normalizedModelId);
104
+ }
105
+ /**
106
+ * Get full model config from providers by model reference
107
+ */
108
+ export function getModelConfig(providers, modelRef, defaultProvider) {
109
+ const ref = resolveModelRef(modelRef, defaultProvider);
110
+ if (!ref) {
111
+ return null;
112
+ }
113
+ const provider = findProviderConfig(providers, ref.provider);
114
+ if (!provider) {
115
+ return null;
116
+ }
117
+ const model = findModelConfig(provider, ref.model);
118
+ if (!model) {
119
+ return null;
120
+ }
121
+ return { provider, model };
122
+ }
123
+ // ============================================
124
+ // Provider Detection
125
+ // ============================================
126
+ /**
127
+ * Get all available model IDs from all providers
128
+ */
129
+ export function getAllModelIds(providers) {
130
+ if (!providers) {
131
+ return [];
132
+ }
133
+ const ids = [];
134
+ for (const provider of Object.values(providers)) {
135
+ for (const model of provider.models) {
136
+ ids.push(modelKey(provider.baseUrl, model.id));
137
+ }
138
+ }
139
+ return ids;
140
+ }
141
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/agent/models/selection.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export function buildToolSection(availableTools) {
41
41
  priority: 10,
42
42
  };
43
43
  }
44
- // Key guidelines - direct and concise (inspired by pi)
44
+ // Key guidelines - direct and concise ()
45
45
  export function buildGuidelinesSection() {
46
46
  return {
47
47
  header: '## Guidelines',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/prompt/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/prompt/index.ts"],"names":[],"mappings":"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"}