@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.
- package/README.md +6 -6
- package/README.zh-CN.md +6 -6
- package/dist/agent/__tests__/media-processing.test.d.ts +6 -0
- package/dist/agent/__tests__/media-processing.test.js +385 -0
- package/dist/agent/__tests__/media-processing.test.js.map +1 -0
- package/dist/agent/fallback/__tests__/index.test.js +16 -5
- package/dist/agent/fallback/__tests__/index.test.js.map +1 -1
- package/dist/agent/fallback/candidates.d.ts +2 -4
- package/dist/agent/fallback/candidates.js +19 -26
- package/dist/agent/fallback/candidates.js.map +1 -1
- package/dist/agent/helpers.d.ts +1 -0
- package/dist/agent/helpers.js.map +1 -1
- package/dist/agent/index.d.ts +6 -1
- package/dist/agent/index.js +10 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/models/compat.d.ts +35 -0
- package/dist/agent/models/compat.js +110 -0
- package/dist/agent/models/compat.js.map +1 -0
- package/dist/agent/models/fallback.d.ts +38 -0
- package/dist/agent/models/fallback.js +133 -0
- package/dist/agent/models/fallback.js.map +1 -0
- package/dist/agent/models/index.d.ts +10 -0
- package/dist/agent/models/index.js +11 -0
- package/dist/agent/models/index.js.map +1 -0
- package/dist/agent/{model-manager.d.ts → models/manager.d.ts} +2 -8
- package/dist/agent/{model-manager.js → models/manager.js} +38 -24
- package/dist/agent/models/manager.js.map +1 -0
- package/dist/agent/models/scan.d.ts +46 -0
- package/dist/agent/models/scan.js +177 -0
- package/dist/agent/models/scan.js.map +1 -0
- package/dist/agent/models/selection.d.ts +44 -0
- package/dist/agent/models/selection.js +141 -0
- package/dist/agent/models/selection.js.map +1 -0
- package/dist/agent/prompt/index.js +1 -1
- package/dist/agent/prompt/index.js.map +1 -1
- package/dist/agent/service.js +34 -16
- package/dist/agent/service.js.map +1 -1
- package/dist/agent/skills/__tests__/test-framework.test.js +15 -7
- package/dist/agent/skills/__tests__/test-framework.test.js.map +1 -1
- package/dist/agent/skills/config.d.ts +1 -1
- package/dist/agent/skills/config.js +2 -2
- package/dist/agent/skills/config.js.map +1 -1
- package/dist/agent/skills/index.js +15 -28
- package/dist/agent/skills/index.js.map +1 -1
- package/dist/agent/skills/installer.d.ts +1 -1
- package/dist/agent/skills/installer.js +1 -1
- package/dist/agent/skills/scanner.d.ts +1 -1
- package/dist/agent/skills/scanner.js +1 -1
- package/dist/agent/skills/test-framework.js +21 -20
- package/dist/agent/skills/test-framework.js.map +1 -1
- package/dist/agent/skills/types.d.ts +3 -3
- package/dist/agent/skills/types.js +1 -1
- package/dist/agent/skills/watcher.d.ts +1 -1
- package/dist/agent/skills/watcher.js +1 -1
- package/dist/agent/system-prompt.d.ts +67 -0
- package/dist/agent/system-prompt.js +351 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/tools/__tests__/send-media.test.d.ts +6 -0
- package/dist/agent/tools/__tests__/send-media.test.js +251 -0
- package/dist/agent/tools/__tests__/send-media.test.js.map +1 -0
- package/dist/agent/types.agent-defaults.d.ts +48 -0
- package/dist/agent/types.agent-defaults.js +5 -0
- package/dist/agent/types.agent-defaults.js.map +1 -0
- package/dist/agent/types.d.ts +14 -6
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -1
- package/dist/agent/workspace.d.ts +94 -0
- package/dist/agent/workspace.js +625 -0
- package/dist/agent/workspace.js.map +1 -0
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/oauth/index.d.ts +1 -0
- package/dist/auth/oauth/index.js +1 -0
- package/dist/auth/oauth/index.js.map +1 -1
- package/dist/auth/oauth/kimi.d.ts +2 -1
- package/dist/auth/oauth/kimi.js +51 -48
- package/dist/auth/oauth/kimi.js.map +1 -1
- package/dist/auth/oauth/minimax-cn.d.ts +12 -0
- package/dist/auth/oauth/minimax-cn.js +111 -0
- package/dist/auth/oauth/minimax-cn.js.map +1 -0
- package/dist/auth/oauth/qwen.d.ts +5 -0
- package/dist/auth/oauth/qwen.js +54 -84
- package/dist/auth/oauth/qwen.js.map +1 -1
- package/dist/auth/profiles/index.d.ts +0 -2
- package/dist/auth/profiles/index.js +0 -2
- package/dist/auth/profiles/index.js.map +1 -1
- package/dist/auth/storage.js +7 -1
- package/dist/auth/storage.js.map +1 -1
- package/dist/channels/__tests__/media-integration.test.d.ts +6 -0
- package/dist/channels/__tests__/media-integration.test.js +398 -0
- package/dist/channels/__tests__/media-integration.test.js.map +1 -0
- package/dist/channels/__tests__/media.test.d.ts +6 -0
- package/dist/channels/__tests__/media.test.js +251 -0
- package/dist/channels/__tests__/media.test.js.map +1 -0
- package/dist/channels/access-control.d.ts +1 -1
- package/dist/channels/access-control.js +1 -1
- package/dist/channels/draft-stream.d.ts +1 -1
- package/dist/channels/draft-stream.js +1 -1
- package/dist/channels/format.d.ts +1 -1
- package/dist/channels/format.js +1 -1
- package/dist/channels/telegram/command-handler.js +15 -48
- package/dist/channels/telegram/command-handler.js.map +1 -1
- package/dist/channels/telegram/plugin.js +3 -2
- package/dist/channels/telegram/plugin.js.map +1 -1
- package/dist/channels/telegram/webhook.d.ts +1 -1
- package/dist/channels/telegram/webhook.js +1 -1
- package/dist/channels/types.d.ts +1 -1
- package/dist/channels/types.js +1 -1
- package/dist/channels/update-offset-store.d.ts +1 -1
- package/dist/channels/update-offset-store.js +1 -1
- package/dist/cli/commands/auth.js +8 -23
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/gateway.js +9 -1
- package/dist/cli/commands/gateway.js.map +1 -1
- package/dist/cli/commands/models.js +35 -29
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/onboard.js +73 -58
- package/dist/cli/commands/onboard.js.map +1 -1
- package/dist/cli/commands/skills.js +6 -6
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/cli/templates.d.ts +2 -0
- package/dist/cli/templates.js +1 -1
- package/dist/cli/templates.js.map +1 -1
- package/dist/config/defaults.d.ts +19 -0
- package/dist/config/defaults.js +168 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/integration.d.ts +12 -0
- package/dist/config/integration.js +14 -0
- package/dist/config/integration.js.map +1 -0
- package/dist/config/models-json.d.ts +454 -0
- package/dist/config/models-json.js +323 -0
- package/dist/config/models-json.js.map +1 -0
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.js +4 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/reload.d.ts +1 -1
- package/dist/config/reload.js +3 -3
- package/dist/config/reload.js.map +1 -1
- package/dist/config/resolve-config-value.d.ts +36 -0
- package/dist/config/resolve-config-value.js +218 -0
- package/dist/config/resolve-config-value.js.map +1 -0
- package/dist/config/rules.js +3 -2
- package/dist/config/rules.js.map +1 -1
- package/dist/config/schema.d.ts +17 -884
- package/dist/config/schema.js +36 -312
- package/dist/config/schema.js.map +1 -1
- package/dist/config/types.models.d.ts +54 -0
- package/dist/config/types.models.js +2 -0
- package/dist/config/types.models.js.map +1 -0
- package/dist/cron/validation.d.ts +4 -4
- package/dist/gateway/hono/app.js +230 -78
- package/dist/gateway/hono/app.js.map +1 -1
- package/dist/gateway/hono/oauth-async.d.ts +14 -0
- package/dist/gateway/hono/oauth-async.js +285 -0
- package/dist/gateway/hono/oauth-async.js.map +1 -0
- package/dist/gateway/hono/oauth.d.ts +9 -0
- package/dist/gateway/hono/oauth.js +157 -0
- package/dist/gateway/hono/oauth.js.map +1 -0
- package/dist/gateway/hono/sse.js +5 -2
- package/dist/gateway/hono/sse.js.map +1 -1
- package/dist/gateway/service.d.ts +6 -2
- package/dist/gateway/service.js +20 -6
- package/dist/gateway/service.js.map +1 -1
- package/dist/gateway/static/root/assets/flow-BqIEBwW6.js +2 -0
- package/dist/gateway/static/root/assets/flow-BqIEBwW6.js.map +1 -0
- package/dist/gateway/static/root/assets/main-Br2tw-87.js +5168 -0
- package/dist/gateway/static/root/assets/main-Br2tw-87.js.map +1 -0
- package/dist/gateway/static/root/assets/main-DwlbPf8Z.css +1 -0
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/plugins/index.d.ts +0 -2
- package/dist/plugins/index.js +0 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/types.d.ts +0 -2
- package/dist/plugins/types.js +0 -2
- package/dist/plugins/types.js.map +1 -1
- package/dist/providers/index.d.ts +50 -22
- package/dist/providers/index.js +276 -50
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/model-registry.d.ts +84 -0
- package/dist/providers/model-registry.js +385 -0
- package/dist/providers/model-registry.js.map +1 -0
- package/dist/types/providers.d.ts +2 -63
- package/dist/types/providers.js +1 -1
- package/dist/utils/__tests__/frontmatter.test.js +4 -3
- package/dist/utils/__tests__/frontmatter.test.js.map +1 -1
- package/dist/utils/diagnostic-events.d.ts +230 -0
- package/dist/utils/diagnostic-events.js +189 -0
- package/dist/utils/diagnostic-events.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +0 -1
- package/dist/utils/frontmatter.js +13 -77
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/log-stream.d.ts +95 -0
- package/dist/utils/log-stream.js +229 -0
- package/dist/utils/log-stream.js.map +1 -0
- package/dist/utils/logger.d.ts +5 -0
- package/dist/utils/logger.js +25 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/redact.d.ts +73 -0
- package/dist/utils/redact.js +245 -0
- package/dist/utils/redact.js.map +1 -0
- package/package.json +6 -4
- package/skills/find-skills/SKILL.md +0 -9
- package/dist/__tests__/core.test.d.ts +0 -1
- package/dist/__tests__/core.test.js +0 -72
- package/dist/__tests__/core.test.js.map +0 -1
- package/dist/agent/model-manager.js.map +0 -1
- package/dist/cli/commands/configure.d.ts +0 -1
- package/dist/cli/commands/configure.js +0 -171
- package/dist/cli/commands/configure.js.map +0 -1
- package/dist/cli/commands/gateway-daemon.d.ts +0 -1
- package/dist/cli/commands/gateway-daemon.js +0 -141
- package/dist/cli/commands/gateway-daemon.js.map +0 -1
- package/dist/config/__tests__/diff.test.d.ts +0 -1
- package/dist/config/__tests__/diff.test.js +0 -192
- package/dist/config/__tests__/diff.test.js.map +0 -1
- package/dist/config/__tests__/loader.test.d.ts +0 -1
- package/dist/config/__tests__/loader.test.js +0 -356
- package/dist/config/__tests__/loader.test.js.map +0 -1
- package/dist/config/__tests__/paths.test.d.ts +0 -1
- package/dist/config/__tests__/paths.test.js +0 -192
- package/dist/config/__tests__/paths.test.js.map +0 -1
- package/dist/config/__tests__/reload.test.d.ts +0 -1
- package/dist/config/__tests__/reload.test.js +0 -374
- package/dist/config/__tests__/reload.test.js.map +0 -1
- package/dist/config/__tests__/rules.test.d.ts +0 -1
- package/dist/config/__tests__/rules.test.js +0 -204
- package/dist/config/__tests__/rules.test.js.map +0 -1
- package/dist/config/__tests__/schema.test.d.ts +0 -1
- package/dist/config/__tests__/schema.test.js +0 -672
- package/dist/config/__tests__/schema.test.js.map +0 -1
- package/dist/daemon/background-start.d.ts +0 -33
- package/dist/daemon/background-start.js +0 -89
- package/dist/daemon/background-start.js.map +0 -1
- package/dist/daemon/gateway-manager.d.ts +0 -87
- package/dist/daemon/gateway-manager.js +0 -324
- package/dist/daemon/gateway-manager.js.map +0 -1
- package/dist/daemon/index.d.ts +0 -5
- package/dist/daemon/index.js +0 -6
- package/dist/daemon/index.js.map +0 -1
- package/dist/gateway/static/root/assets/main-DevbZW9K.js +0 -2227
- package/dist/gateway/static/root/assets/main-DevbZW9K.js.map +0 -1
- package/dist/gateway/static/root/assets/main-DxZg1Nmz.css +0 -1
- package/dist/providers/__tests__/registry.test.d.ts +0 -1
- package/dist/providers/__tests__/registry.test.js +0 -110
- package/dist/providers/__tests__/registry.test.js.map +0 -1
- package/dist/providers/api-strategies.d.ts +0 -15
- package/dist/providers/api-strategies.js +0 -96
- package/dist/providers/api-strategies.js.map +0 -1
- package/dist/providers/auto-discovery.d.ts +0 -39
- package/dist/providers/auto-discovery.js +0 -189
- package/dist/providers/auto-discovery.js.map +0 -1
- package/dist/providers/config.d.ts +0 -25
- package/dist/providers/config.js +0 -42
- package/dist/providers/config.js.map +0 -1
- package/dist/providers/model-catalog.d.ts +0 -92
- package/dist/providers/model-catalog.js +0 -998
- package/dist/providers/model-catalog.js.map +0 -1
- package/dist/providers/models-dev-data.d.ts +0 -11
- package/dist/providers/models-dev-data.js +0 -1035
- package/dist/providers/models-dev-data.js.map +0 -1
- package/dist/providers/models-dev.d.ts +0 -34
- package/dist/providers/models-dev.js +0 -33
- package/dist/providers/models-dev.js.map +0 -1
- package/dist/providers/pi-ai.d.ts +0 -62
- package/dist/providers/pi-ai.js +0 -221
- package/dist/providers/pi-ai.js.map +0 -1
- package/dist/providers/provider-catalog.d.ts +0 -91
- package/dist/providers/provider-catalog.js +0 -791
- package/dist/providers/provider-catalog.js.map +0 -1
- package/dist/providers/registry.d.ts +0 -135
- package/dist/providers/registry.js +0 -475
- package/dist/providers/registry.js.map +0 -1
- package/dist/providers/types.d.ts +0 -95
- package/dist/providers/types.js +0 -7
- package/dist/providers/types.js.map +0 -1
- package/dist/session/chat-manager.d.ts +0 -49
- package/dist/session/chat-manager.js +0 -167
- package/dist/session/chat-manager.js.map +0 -1
- package/dist/session/chat-types.d.ts +0 -53
- package/dist/session/chat-types.js +0 -63
- 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 '
|
|
8
|
-
import {
|
|
9
|
-
import { isFailoverError, describeFailoverError, resolveFallbackCandidates } from '
|
|
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 ||
|
|
36
|
+
this.defaultModel = config.defaultModel || DEFAULT_MODEL;
|
|
38
37
|
this.currentModelName = this.defaultModel;
|
|
39
|
-
this.currentProvider = '
|
|
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 =
|
|
63
|
+
const found = resolveModel(modelId);
|
|
72
64
|
if (!found) {
|
|
73
|
-
log.warn({ modelId }, 'Model not found
|
|
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 =
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
211
|
+
return getAvailableModels(this.config);
|
|
205
212
|
}
|
|
206
213
|
/**
|
|
207
214
|
* Get models grouped by provider
|
|
208
215
|
*/
|
|
209
216
|
getModelsByProvider() {
|
|
210
|
-
|
|
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=
|
|
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 (
|
|
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":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;KACrB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE;IAC3B,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7C,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACjD,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;KACvB,CAAC,CAAC,CAAC;CACL,CAAC,CAAC;AAcH,yCAAyC;AACzC,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,4DAA4D;QACrE,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,mBAAmB,CAAC,UAAkB,OAAO;IAC3D,OAAO;QACL,OAAO,EAAE,YAAY,OAAO,EAAE;QAC9B,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,gBAAgB,CAAC,cAAwB;IACvD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,mCAAmC,CAAC;IAExC,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/prompt/index.ts"],"names":[],"mappings":"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"}
|