@chrisromp/copilot-bridge 0.10.0 → 0.12.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 +4 -0
- package/config.sample.json +20 -0
- package/dist/config.d.ts +9 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +117 -0
- package/dist/config.js.map +1 -1
- package/dist/core/bridge-docs.d.ts +1 -1
- package/dist/core/bridge-docs.d.ts.map +1 -1
- package/dist/core/bridge-docs.js +133 -1
- package/dist/core/bridge-docs.js.map +1 -1
- package/dist/core/bridge.d.ts +19 -2
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +29 -5
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/command-handler.d.ts +16 -4
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +258 -51
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/model-fallback.d.ts +2 -2
- package/dist/core/model-fallback.d.ts.map +1 -1
- package/dist/core/model-fallback.js +11 -4
- package/dist/core/model-fallback.js.map +1 -1
- package/dist/core/quiet-mode.js +1 -1
- package/dist/core/session-manager.d.ts +40 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +316 -36
- package/dist/core/session-manager.js.map +1 -1
- package/dist/index.js +243 -48
- package/dist/index.js.map +1 -1
- package/dist/state/store.d.ts +1 -0
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +13 -2
- package/dist/state/store.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/templates/admin/AGENTS.md +38 -38
- package/templates/agents/AGENTS.md +0 -49
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { setChannelPrefs, getChannelPrefs, getGlobalSetting, setGlobalSetting } from '../state/store.js';
|
|
2
2
|
import { discoverAgentDefinitions, discoverAgentNames } from './inter-agent.js';
|
|
3
|
+
import { isBotAdminAny } from '../config.js';
|
|
3
4
|
const VALID_REASONING_EFFORTS = new Set(['low', 'medium', 'high', 'xhigh']);
|
|
4
5
|
const TRUTHY = new Set(['on', 'true', 'yes', '1', 'enable', 'enabled']);
|
|
5
6
|
const FALSY = new Set(['off', 'false', 'no', '0', 'disable', 'disabled']);
|
|
@@ -24,40 +25,73 @@ function redactedModelLabel(index) {
|
|
|
24
25
|
function isStreamerMode() {
|
|
25
26
|
return getGlobalSetting('streamer_mode') === '1';
|
|
26
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse user input that may contain a provider prefix (e.g., "ollama-local:qwen3:8b").
|
|
30
|
+
* Splits on the first colon, checks if the prefix is a known provider name.
|
|
31
|
+
* Returns { provider, bareModel } if a provider prefix was found, or null if not.
|
|
32
|
+
*/
|
|
33
|
+
export function parseProviderModel(input, providerNames) {
|
|
34
|
+
const colonIdx = input.indexOf(':');
|
|
35
|
+
if (colonIdx <= 0)
|
|
36
|
+
return null;
|
|
37
|
+
const prefix = input.slice(0, colonIdx);
|
|
38
|
+
const canonical = providerNames.find(p => p.toLowerCase() === prefix.toLowerCase());
|
|
39
|
+
if (canonical) {
|
|
40
|
+
return { provider: canonical, bareModel: input.slice(colonIdx + 1) };
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
27
44
|
/**
|
|
28
45
|
* Fuzzy-match user input to a model from the available list.
|
|
29
|
-
*
|
|
46
|
+
* Supports provider:model syntax (e.g., "ollama-local:qwen3:8b") and bare model
|
|
47
|
+
* names that resolve against Copilot models first, then BYOK providers.
|
|
48
|
+
* Returns:
|
|
30
49
|
* - { model, alternatives } on success (alternatives may be empty)
|
|
31
50
|
* - { error } only when truly no match is found
|
|
32
51
|
*/
|
|
33
|
-
export function resolveModel(input, models) {
|
|
52
|
+
export function resolveModel(input, models, providerNames) {
|
|
34
53
|
const lower = input.toLowerCase().trim();
|
|
35
54
|
if (!lower)
|
|
36
55
|
return { error: '⚠️ Please specify a model name.' };
|
|
37
|
-
|
|
56
|
+
const providers = providerNames ?? [];
|
|
57
|
+
// Check for provider:model syntax — if prefix is a known provider, scope to that provider's models
|
|
58
|
+
const parsed = parseProviderModel(lower, providers);
|
|
59
|
+
if (parsed) {
|
|
60
|
+
if (!parsed.bareModel)
|
|
61
|
+
return { error: '⚠️ Please specify a model name after the provider prefix.' };
|
|
62
|
+
const prefixed = `${parsed.provider}:${parsed.bareModel}`;
|
|
63
|
+
const scoped = models.filter(m => m.id.toLowerCase().startsWith(`${parsed.provider.toLowerCase()}:`));
|
|
64
|
+
// Exact match on full prefixed ID
|
|
65
|
+
const exact = scoped.find(m => m.id.toLowerCase() === prefixed);
|
|
66
|
+
if (exact)
|
|
67
|
+
return { model: exact, alternatives: [] };
|
|
68
|
+
// Fuzzy within provider scope
|
|
69
|
+
return fuzzyMatch(parsed.bareModel, scoped, `provider "${parsed.provider}"`);
|
|
70
|
+
}
|
|
71
|
+
// Exact match on id or name (works for both Copilot and full BYOK IDs)
|
|
38
72
|
const exact = models.find(m => m.id.toLowerCase() === lower || m.name.toLowerCase() === lower);
|
|
39
73
|
if (exact)
|
|
40
74
|
return { model: exact, alternatives: [] };
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
75
|
+
// For bare model input, try Copilot models first, then BYOK
|
|
76
|
+
if (providers.length > 0) {
|
|
77
|
+
const copilotModels = models.filter(m => !providers.some(p => m.id.toLowerCase().startsWith(`${p.toLowerCase()}:`)));
|
|
78
|
+
const copilotResult = fuzzyMatch(lower, copilotModels);
|
|
79
|
+
if ('model' in copilotResult)
|
|
80
|
+
return copilotResult;
|
|
81
|
+
// Try each BYOK provider in config order
|
|
82
|
+
for (const prov of providers) {
|
|
83
|
+
const provModels = models.filter(m => m.id.toLowerCase().startsWith(`${prov.toLowerCase()}:`));
|
|
84
|
+
// Match against the bare part of the ID (after provider prefix)
|
|
85
|
+
const bareExact = provModels.find(m => {
|
|
86
|
+
const bare = m.id.slice(prov.length + 1);
|
|
87
|
+
return bare.toLowerCase() === lower;
|
|
88
|
+
});
|
|
89
|
+
if (bareExact)
|
|
90
|
+
return { model: bareExact, alternatives: [] };
|
|
91
|
+
}
|
|
92
|
+
// Fall through to global fuzzy match
|
|
59
93
|
}
|
|
60
|
-
return
|
|
94
|
+
return fuzzyMatch(lower, models);
|
|
61
95
|
}
|
|
62
96
|
/** Pick the best model from ambiguous candidates. Prefers shorter IDs and closer matches. */
|
|
63
97
|
function pickBestMatch(input, candidates) {
|
|
@@ -74,6 +108,111 @@ function pickBestMatch(input, candidates) {
|
|
|
74
108
|
return a.name.length - b.name.length;
|
|
75
109
|
})[0];
|
|
76
110
|
}
|
|
111
|
+
/** Fuzzy-match input against a set of models. */
|
|
112
|
+
function fuzzyMatch(input, models, scope) {
|
|
113
|
+
if (models.length === 0) {
|
|
114
|
+
return { error: scope
|
|
115
|
+
? `⚠️ No models found for ${scope}.`
|
|
116
|
+
: `⚠️ Unknown model "${input}". Use \`/model\` to see available models.` };
|
|
117
|
+
}
|
|
118
|
+
// Substring match
|
|
119
|
+
const substringMatches = models.filter(m => m.id.toLowerCase().includes(input) || m.name.toLowerCase().includes(input));
|
|
120
|
+
if (substringMatches.length === 1)
|
|
121
|
+
return { model: substringMatches[0], alternatives: [] };
|
|
122
|
+
// Token match
|
|
123
|
+
const tokens = input.split(/[\s\-_.]+/).filter(Boolean);
|
|
124
|
+
const tokenMatches = models.filter(m => {
|
|
125
|
+
const haystack = `${m.id} ${m.name}`.toLowerCase();
|
|
126
|
+
return tokens.every(t => haystack.includes(t));
|
|
127
|
+
});
|
|
128
|
+
if (tokenMatches.length === 1)
|
|
129
|
+
return { model: tokenMatches[0], alternatives: [] };
|
|
130
|
+
// Multiple matches — pick best
|
|
131
|
+
const candidates = (substringMatches.length > 0 ? substringMatches : tokenMatches).slice(0, 8);
|
|
132
|
+
if (candidates.length > 1) {
|
|
133
|
+
const best = pickBestMatch(input, candidates);
|
|
134
|
+
const alternatives = candidates.filter(m => m.id !== best.id);
|
|
135
|
+
return { model: best, alternatives };
|
|
136
|
+
}
|
|
137
|
+
return { error: scope
|
|
138
|
+
? `⚠️ Unknown model "${input}" in ${scope}. Use \`/model\` to see available models.`
|
|
139
|
+
: `⚠️ Unknown model "${input}". Use \`/model\` to see available models.` };
|
|
140
|
+
}
|
|
141
|
+
/** Build the formatted model listing, optionally grouped by provider. */
|
|
142
|
+
function formatModelListing(models, providerNames, currentModel, currentProvider, filterProvider) {
|
|
143
|
+
const streamer = isStreamerMode();
|
|
144
|
+
let hiddenIndex = 0;
|
|
145
|
+
// Determine if the current model matches a given model entry
|
|
146
|
+
const isCurrent = (m) => {
|
|
147
|
+
if (!currentModel)
|
|
148
|
+
return false;
|
|
149
|
+
if (currentProvider) {
|
|
150
|
+
// BYOK active: only match the prefixed BYOK entry, not the Copilot model with the same bare name
|
|
151
|
+
return m.id === `${currentProvider}:${currentModel}`;
|
|
152
|
+
}
|
|
153
|
+
return m.id === currentModel;
|
|
154
|
+
};
|
|
155
|
+
const formatRow = (m, showBilling) => {
|
|
156
|
+
const current = isCurrent(m) ? ' ← current' : '';
|
|
157
|
+
const reasoning = m.supportedReasoningEfforts?.length ? ' 🧠' : '';
|
|
158
|
+
const hidden = streamer && isHiddenModel(m);
|
|
159
|
+
const displayName = hidden ? redactedModelLabel(++hiddenIndex) : `\`${m.id}\``;
|
|
160
|
+
if (showBilling) {
|
|
161
|
+
const billing = m.billing ? `${m.billing.multiplier}x` : '—';
|
|
162
|
+
return `| ${displayName} | ${billing} |${reasoning}${current} |`;
|
|
163
|
+
}
|
|
164
|
+
return `| ${displayName} |${reasoning}${current} |`;
|
|
165
|
+
};
|
|
166
|
+
const copilotHeader = '| Model | Billing | |\n|:------|--------:|:--|';
|
|
167
|
+
const byokHeader = '| Model | |\n|:------|:--|';
|
|
168
|
+
const title = filterProvider ? `**Models: ${filterProvider}**` : '**Available Models**';
|
|
169
|
+
const lines = [title, ''];
|
|
170
|
+
if (providerNames.length > 0 && !filterProvider) {
|
|
171
|
+
// Group by provider: Copilot first, then each BYOK provider
|
|
172
|
+
const copilotModels = models.filter(m => !providerNames.some(p => m.id.startsWith(`${p}:`)));
|
|
173
|
+
if (copilotModels.length > 0) {
|
|
174
|
+
lines.push('**GitHub Copilot**', '', copilotHeader);
|
|
175
|
+
for (const m of copilotModels)
|
|
176
|
+
lines.push(formatRow(m, true));
|
|
177
|
+
lines.push('');
|
|
178
|
+
}
|
|
179
|
+
for (const prov of providerNames) {
|
|
180
|
+
const provModels = models.filter(m => m.id.startsWith(`${prov}:`));
|
|
181
|
+
if (provModels.length > 0) {
|
|
182
|
+
lines.push(`**${prov}**`, '', byokHeader);
|
|
183
|
+
for (const m of provModels)
|
|
184
|
+
lines.push(formatRow(m, false));
|
|
185
|
+
lines.push('');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else if (filterProvider) {
|
|
190
|
+
// Filtered to single BYOK provider — no billing column
|
|
191
|
+
lines.push(byokHeader);
|
|
192
|
+
for (const m of models)
|
|
193
|
+
lines.push(formatRow(m, false));
|
|
194
|
+
lines.push('');
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
// Flat listing (no providers configured)
|
|
198
|
+
lines.push(copilotHeader);
|
|
199
|
+
for (const m of models)
|
|
200
|
+
lines.push(formatRow(m, true));
|
|
201
|
+
lines.push('');
|
|
202
|
+
}
|
|
203
|
+
const hasCopilotModels = !filterProvider && models.some(m => !providerNames.some(p => m.id.startsWith(`${p}:`)));
|
|
204
|
+
const legend = hasCopilotModels
|
|
205
|
+
? '🧠 = supports reasoning effort · Billing = premium request multiplier'
|
|
206
|
+
: '🧠 = supports reasoning effort';
|
|
207
|
+
lines.push(legend);
|
|
208
|
+
lines.push('↳ Use `/model <name>` to switch');
|
|
209
|
+
if (providerNames.length > 0 && !filterProvider) {
|
|
210
|
+
const shown = providerNames.slice(0, 3).join(', ');
|
|
211
|
+
const suffix = providerNames.length > 3 ? ', …' : '';
|
|
212
|
+
lines.push(`↳ Use \`/model <provider>\` to filter (${shown}${suffix})`);
|
|
213
|
+
}
|
|
214
|
+
return lines.join('\n');
|
|
215
|
+
}
|
|
77
216
|
/** Format a token count as a human-readable string (e.g., 109000 → "109k"). */
|
|
78
217
|
function formatTokens(n) {
|
|
79
218
|
if (n >= 1000)
|
|
@@ -149,13 +288,19 @@ export function parseCommand(text) {
|
|
|
149
288
|
args: trimmed.slice(spaceIdx + 1).trim(),
|
|
150
289
|
};
|
|
151
290
|
}
|
|
152
|
-
export function handleCommand(channelId, text, sessionInfo, effectivePrefs, channelMeta, models, mcpInfo, contextUsage) {
|
|
291
|
+
export function handleCommand(channelId, text, sessionInfo, effectivePrefs, channelMeta, models, mcpInfo, contextUsage, providers) {
|
|
153
292
|
const parsed = parseCommand(text);
|
|
154
293
|
if (!parsed)
|
|
155
294
|
return { handled: false };
|
|
156
|
-
// Resolve current model's info from models list
|
|
157
|
-
|
|
158
|
-
|
|
295
|
+
// Resolve current model's info from models list (only for commands that need it)
|
|
296
|
+
// When a BYOK provider is active, prefer the provider-prefixed entry to avoid
|
|
297
|
+
// inheriting metadata (e.g., supportedReasoningEfforts) from a same-named Copilot model
|
|
298
|
+
const needsModelInfo = ['reasoning', 'status', 'model', 'models'].includes(parsed.command);
|
|
299
|
+
const currentProvider = needsModelInfo ? (getChannelPrefs(channelId)?.provider ?? null) : null;
|
|
300
|
+
const currentModelInfo = needsModelInfo && models && sessionInfo
|
|
301
|
+
? (currentProvider
|
|
302
|
+
? models.find(m => m.id === `${currentProvider}:${sessionInfo.model}`) ?? null
|
|
303
|
+
: models.find(m => m.id === sessionInfo.model) ?? null)
|
|
159
304
|
: null;
|
|
160
305
|
switch (parsed.command) {
|
|
161
306
|
case 'new':
|
|
@@ -163,11 +308,19 @@ export function handleCommand(channelId, text, sessionInfo, effectivePrefs, chan
|
|
|
163
308
|
case 'stop':
|
|
164
309
|
case 'cancel':
|
|
165
310
|
return { handled: true, action: 'stop_session', response: '🛑 Stopping current task...' };
|
|
166
|
-
case 'reload':
|
|
167
|
-
|
|
311
|
+
case 'reload': {
|
|
312
|
+
const arg = parsed.args?.trim().toLowerCase();
|
|
313
|
+
if (arg === 'config') {
|
|
168
314
|
return { handled: true, action: 'reload_config', response: '🔄 Reloading config...' };
|
|
169
315
|
}
|
|
316
|
+
if (arg === 'mcp') {
|
|
317
|
+
return { handled: true, action: 'reload_mcp', response: '🔄 Reloading MCP servers...' };
|
|
318
|
+
}
|
|
319
|
+
if (arg === 'skills') {
|
|
320
|
+
return { handled: true, action: 'reload_skills', response: '🔄 Reloading skills...' };
|
|
321
|
+
}
|
|
170
322
|
return { handled: true, action: 'reload_session', response: '🔄 Reloading session...' };
|
|
323
|
+
}
|
|
171
324
|
case 'resume': {
|
|
172
325
|
if (!parsed.args) {
|
|
173
326
|
// No args = list available sessions for this channel's working directory
|
|
@@ -177,38 +330,41 @@ export function handleCommand(channelId, text, sessionInfo, effectivePrefs, chan
|
|
|
177
330
|
}
|
|
178
331
|
case 'model':
|
|
179
332
|
case 'models': {
|
|
333
|
+
const providerNames = providers ? Object.keys(providers) : [];
|
|
334
|
+
const currentProvider = getChannelPrefs(channelId)?.provider ?? null;
|
|
180
335
|
if (!parsed.args) {
|
|
181
|
-
// No args: show model table
|
|
336
|
+
// No args: show model table grouped by provider
|
|
182
337
|
if (!models || models.length === 0) {
|
|
183
338
|
return { handled: true, response: '⚠️ Model list not available.' };
|
|
184
339
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
'
|
|
191
|
-
'|:------|--------:|:--|',
|
|
192
|
-
];
|
|
193
|
-
for (const m of models) {
|
|
194
|
-
const current = sessionInfo?.model === m.id ? ' ← current' : '';
|
|
195
|
-
const reasoning = m.supportedReasoningEfforts?.length ? ' 🧠' : '';
|
|
196
|
-
const billing = m.billing ? `${m.billing.multiplier}x` : '—';
|
|
197
|
-
const hidden = streamer && isHiddenModel(m);
|
|
198
|
-
const displayName = hidden ? redactedModelLabel(++hiddenIndex) : `\`${m.id}\``;
|
|
199
|
-
lines.push(`| ${displayName} | ${billing} |${reasoning}${current} |`);
|
|
340
|
+
return { handled: true, response: formatModelListing(models, providerNames, sessionInfo?.model ?? null, currentProvider) };
|
|
341
|
+
}
|
|
342
|
+
// Check if arg is a provider name → show just that provider's models
|
|
343
|
+
if (providerNames.some(p => p.toLowerCase() === parsed.args.toLowerCase().trim())) {
|
|
344
|
+
if (!models || models.length === 0) {
|
|
345
|
+
return { handled: true, response: '⚠️ Model list not available.' };
|
|
200
346
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
347
|
+
const provName = providerNames.find(p => p.toLowerCase() === parsed.args.toLowerCase().trim());
|
|
348
|
+
const provModels = models.filter(m => m.id.toLowerCase().startsWith(`${provName.toLowerCase()}:`));
|
|
349
|
+
if (provModels.length === 0) {
|
|
350
|
+
return { handled: true, response: `⚠️ No models found for provider "${provName}".` };
|
|
351
|
+
}
|
|
352
|
+
return { handled: true, response: formatModelListing(provModels, providerNames, sessionInfo?.model ?? null, currentProvider, provName) };
|
|
204
353
|
}
|
|
205
354
|
if (!models || models.length === 0) {
|
|
206
|
-
|
|
355
|
+
// Best-effort provider parsing when model list is unavailable
|
|
356
|
+
const parsedInput = parseProviderModel(parsed.args, providerNames);
|
|
357
|
+
const fallbackProvider = parsedInput?.provider ?? null;
|
|
358
|
+
const fallbackModelId = parsedInput?.bareModel ?? parsed.args;
|
|
359
|
+
return { handled: true, action: 'switch_model', payload: { modelId: fallbackModelId, provider: fallbackProvider }, response: `🔄 Switching model to **${parsed.args}**...` };
|
|
207
360
|
}
|
|
208
|
-
const result = resolveModel(parsed.args, models);
|
|
361
|
+
const result = resolveModel(parsed.args, models, providerNames);
|
|
209
362
|
if ('error' in result) {
|
|
210
363
|
return { handled: true, response: result.error };
|
|
211
364
|
}
|
|
365
|
+
// Determine provider from the resolved model ID
|
|
366
|
+
const resolvedProvider = providerNames.find(p => result.model.id.toLowerCase().startsWith(`${p.toLowerCase()}:`)) ?? null;
|
|
367
|
+
const bareModelId = resolvedProvider ? result.model.id.slice(resolvedProvider.length + 1) : result.model.id;
|
|
212
368
|
const streamerSwitch = isStreamerMode();
|
|
213
369
|
const switchName = (streamerSwitch && isHiddenModel(result.model))
|
|
214
370
|
? 'a hidden model'
|
|
@@ -221,7 +377,53 @@ export function handleCommand(channelId, text, sessionInfo, effectivePrefs, chan
|
|
|
221
377
|
if (altList)
|
|
222
378
|
response += `\n↳ Also matched: ${altList}`;
|
|
223
379
|
}
|
|
224
|
-
return { handled: true, action: 'switch_model', payload:
|
|
380
|
+
return { handled: true, action: 'switch_model', payload: { modelId: bareModelId, provider: resolvedProvider }, response };
|
|
381
|
+
}
|
|
382
|
+
case 'provider':
|
|
383
|
+
case 'providers': {
|
|
384
|
+
const providerMap = providers ?? {};
|
|
385
|
+
const provNames = Object.keys(providerMap);
|
|
386
|
+
const args = parsed.args?.trim();
|
|
387
|
+
if (!args) {
|
|
388
|
+
// List all providers
|
|
389
|
+
if (provNames.length === 0) {
|
|
390
|
+
return { handled: true, response: 'No BYOK providers configured.\n↳ Add providers in `config.json` under the `"providers"` key, then `/reload config`.' };
|
|
391
|
+
}
|
|
392
|
+
const lines = ['**Configured Providers**', ''];
|
|
393
|
+
for (const name of provNames) {
|
|
394
|
+
const p = providerMap[name];
|
|
395
|
+
const modelCount = p.models?.length ?? 0;
|
|
396
|
+
const authMethod = p.apiKeyEnv ? `apiKeyEnv: ${p.apiKeyEnv}` : p.bearerTokenEnv ? `bearerTokenEnv: ${p.bearerTokenEnv}` : p.apiKey ? 'apiKey (inline)' : p.bearerToken ? 'bearerToken (inline)' : 'none';
|
|
397
|
+
lines.push(`**${name}**`);
|
|
398
|
+
lines.push(` URL: \`${p.baseUrl}\``);
|
|
399
|
+
lines.push(` Type: ${p.type ?? 'openai'} · Auth: ${authMethod} · Models: ${modelCount}`);
|
|
400
|
+
lines.push(` Models: ${p.models.map(m => `\`${m.id}\``).join(', ')}`);
|
|
401
|
+
lines.push('');
|
|
402
|
+
}
|
|
403
|
+
lines.push('↳ Use `/provider test <name>` to test connectivity');
|
|
404
|
+
lines.push('↳ Use `/model <provider>:<model>` to switch to a provider model');
|
|
405
|
+
return { handled: true, response: lines.join('\n') };
|
|
406
|
+
}
|
|
407
|
+
// /provider test <name>
|
|
408
|
+
const testMatch = args.match(/^test\s+(.+)$/i);
|
|
409
|
+
if (testMatch) {
|
|
410
|
+
const target = testMatch[1].trim();
|
|
411
|
+
const canonical = provNames.find(p => p.toLowerCase() === target.toLowerCase());
|
|
412
|
+
if (!canonical) {
|
|
413
|
+
return { handled: true, response: `⚠️ Unknown provider "${target}". Configured: ${provNames.join(', ')}` };
|
|
414
|
+
}
|
|
415
|
+
return { handled: true, action: 'provider_test', payload: canonical, response: `🔄 Testing provider "${canonical}"...` };
|
|
416
|
+
}
|
|
417
|
+
// /provider add|remove — guide to config file (admin can help)
|
|
418
|
+
if (/^(add|remove|delete)\b/i.test(args)) {
|
|
419
|
+
const botName = channelMeta?.bot;
|
|
420
|
+
const isAdmin = botName ? isBotAdminAny(botName) : false;
|
|
421
|
+
if (isAdmin) {
|
|
422
|
+
return { handled: true, response: `Sure — I can help with that. Tell me the provider details (name, base URL, auth, models) and I'll update \`config.json\` for you.` };
|
|
423
|
+
}
|
|
424
|
+
return { handled: true, response: 'Providers are managed in `config.json` under the `"providers"` key.\n↳ Ask the **admin** bot to add/remove providers, or edit the file directly, then `/reload config`.' };
|
|
425
|
+
}
|
|
426
|
+
return { handled: true, response: '⚠️ Unknown subcommand. Usage:\n `/provider` — list providers\n `/provider test <name>` — test connectivity\n `/model <provider>:<model>` — switch model' };
|
|
225
427
|
}
|
|
226
428
|
case 'agent': {
|
|
227
429
|
const agent = parsed.args || null;
|
|
@@ -324,10 +526,11 @@ export function handleCommand(channelId, text, sessionInfo, effectivePrefs, chan
|
|
|
324
526
|
};
|
|
325
527
|
const sessionMode = prefs?.sessionMode ?? 'interactive';
|
|
326
528
|
const modeDisplay = modeLabels[sessionMode] ?? '🛡️ Interactive';
|
|
529
|
+
const providerDisplay = prefs?.provider ? `${prefs.provider}:` : '';
|
|
327
530
|
const lines = [
|
|
328
531
|
'📊 **Session Status**',
|
|
329
532
|
`• Session: \`${sessionInfo.sessionId.slice(0, 8)}...\``,
|
|
330
|
-
`• Model: **${modelDisplay}**`,
|
|
533
|
+
`• Model: **${providerDisplay}${modelDisplay}**`,
|
|
331
534
|
`• Agent: ${sessionInfo.agent ? `**${sessionInfo.agent}**` : 'Default (Copilot)'}`,
|
|
332
535
|
`• Mode: ${modeDisplay}`,
|
|
333
536
|
`• Yolo: ${(effectivePrefs?.permissionMode ?? prefs?.permissionMode) === 'autopilot' ? '🤠 On' : '🛡️ Off'}`,
|
|
@@ -458,6 +661,8 @@ export function handleCommand(channelId, text, sessionInfo, effectivePrefs, chan
|
|
|
458
661
|
'`/stop` — Stop the current task (alias: `/cancel`)',
|
|
459
662
|
'`/reload` — Reload session (re-reads AGENTS.md, workspace config)',
|
|
460
663
|
'`/reload config` — Hot-reload config.json',
|
|
664
|
+
'`/reload mcp` — Reload MCP servers (no session restart)',
|
|
665
|
+
'`/reload skills` — Reload skills (no session restart)',
|
|
461
666
|
'`/resume [id]` — Resume current session (or a past one by ID)',
|
|
462
667
|
'`/model [name]` — List models or switch model (fuzzy match)',
|
|
463
668
|
'`/agent <name>` — Switch custom agent (empty to deselect)',
|
|
@@ -487,6 +692,8 @@ export function handleCommand(channelId, text, sessionInfo, effectivePrefs, chan
|
|
|
487
692
|
'`/skills disable <name...>` — Disable skills for this channel',
|
|
488
693
|
'`/skills enable|disable all` — Enable or disable all skills',
|
|
489
694
|
'`/mcp` — Show MCP servers and their source',
|
|
695
|
+
'`/provider` — List configured BYOK providers',
|
|
696
|
+
'`/provider test <name>` — Test provider connectivity',
|
|
490
697
|
'`/plan` — Toggle plan mode (on/off)',
|
|
491
698
|
'`/plan show` — Show current plan',
|
|
492
699
|
'`/plan summary` — Show plan summary',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-handler.js","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command-handler.js","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export declare function isModelError(error: any): boolean;
|
|
|
36
36
|
* When availableModels is empty (e.g., listModels() failed), config fallbacks
|
|
37
37
|
* are included unfiltered so they still get attempted.
|
|
38
38
|
*/
|
|
39
|
-
export declare function buildFallbackChain(primaryModel: string, availableModels: string[], configFallbacks?: string[]): string[];
|
|
39
|
+
export declare function buildFallbackChain(primaryModel: string, availableModels: string[], configFallbacks?: string[], byokPrefixes?: string[]): string[];
|
|
40
40
|
/**
|
|
41
41
|
* Attempt an action with automatic model fallback.
|
|
42
42
|
*
|
|
@@ -49,7 +49,7 @@ export declare function buildFallbackChain(primaryModel: string, availableModels
|
|
|
49
49
|
* @param action - Async action to attempt; receives the model ID to use
|
|
50
50
|
* @returns Object with the action result and the model that worked
|
|
51
51
|
*/
|
|
52
|
-
export declare function tryWithFallback<T>(primaryModel: string, availableModels: string[], configFallbacks: string[] | undefined, action: (model: string) => Promise<T
|
|
52
|
+
export declare function tryWithFallback<T>(primaryModel: string, availableModels: string[], configFallbacks: string[] | undefined, action: (model: string) => Promise<T>, byokPrefixes?: string[]): Promise<{
|
|
53
53
|
result: T;
|
|
54
54
|
usedModel: string;
|
|
55
55
|
didFallback: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-fallback.d.ts","sourceRoot":"","sources":["../../src/core/model-fallback.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAgEpD;AAqDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAwBrF;AAsBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAiBhD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EAAE,EACzB,eAAe,CAAC,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"model-fallback.d.ts","sourceRoot":"","sources":["../../src/core/model-fallback.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAgEpD;AAqDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAwBrF;AAsBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAiBhD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EAAE,EACzB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,EAAE,CAyBV;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EAAE,EACzB,eAAe,EAAE,MAAM,EAAE,GAAG,SAAS,EACrC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACrC,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAqCjE"}
|
|
@@ -228,12 +228,19 @@ export function isModelError(error) {
|
|
|
228
228
|
* When availableModels is empty (e.g., listModels() failed), config fallbacks
|
|
229
229
|
* are included unfiltered so they still get attempted.
|
|
230
230
|
*/
|
|
231
|
-
export function buildFallbackChain(primaryModel, availableModels, configFallbacks) {
|
|
231
|
+
export function buildFallbackChain(primaryModel, availableModels, configFallbacks, byokPrefixes) {
|
|
232
232
|
const hasAvailability = availableModels.length > 0;
|
|
233
233
|
const availableSet = new Set(availableModels);
|
|
234
|
-
|
|
234
|
+
// Exclude BYOK models from auto-fallback (they use different endpoints/auth)
|
|
235
|
+
const prefixes = byokPrefixes ?? [];
|
|
236
|
+
const isByok = (m) => prefixes.some(p => m.startsWith(`${p}:`));
|
|
237
|
+
const copilotModels = prefixes.length > 0
|
|
238
|
+
? availableModels.filter(m => !isByok(m))
|
|
239
|
+
: availableModels;
|
|
240
|
+
const autoChain = hasAvailability ? getFallbackChain(primaryModel, copilotModels) : [];
|
|
235
241
|
if (configFallbacks && configFallbacks.length > 0) {
|
|
236
242
|
const configSet = new Set(configFallbacks);
|
|
243
|
+
// Config fallbacks may include BYOK models — respect those explicitly
|
|
237
244
|
const filtered = hasAvailability
|
|
238
245
|
? configFallbacks.filter(m => m !== primaryModel && availableSet.has(m))
|
|
239
246
|
: configFallbacks.filter(m => m !== primaryModel);
|
|
@@ -256,7 +263,7 @@ export function buildFallbackChain(primaryModel, availableModels, configFallback
|
|
|
256
263
|
* @param action - Async action to attempt; receives the model ID to use
|
|
257
264
|
* @returns Object with the action result and the model that worked
|
|
258
265
|
*/
|
|
259
|
-
export async function tryWithFallback(primaryModel, availableModels, configFallbacks, action) {
|
|
266
|
+
export async function tryWithFallback(primaryModel, availableModels, configFallbacks, action, byokPrefixes) {
|
|
260
267
|
// Try primary model first
|
|
261
268
|
try {
|
|
262
269
|
const result = await action(primaryModel);
|
|
@@ -267,7 +274,7 @@ export async function tryWithFallback(primaryModel, availableModels, configFallb
|
|
|
267
274
|
throw err; // Not a model error — don't try fallbacks
|
|
268
275
|
}
|
|
269
276
|
log.warn(`Model "${primaryModel}" failed: ${err.message ?? err}. Trying fallbacks...`);
|
|
270
|
-
const chain = buildFallbackChain(primaryModel, availableModels, configFallbacks);
|
|
277
|
+
const chain = buildFallbackChain(primaryModel, availableModels, configFallbacks, byokPrefixes);
|
|
271
278
|
if (chain.length === 0) {
|
|
272
279
|
log.error(`No fallback models available for "${primaryModel}"`);
|
|
273
280
|
throw err;
|