Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/channels/web.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export class WebChannel extends BaseChannel {
private pendingPermModes: Map<string, ApprovalResolver> = new Map();
private agentName: string;
private stepCounter: Map<string, number> = new Map();
private bypassPermissions = false;
private bypassPermissions = true;
private restrictUser = false;

constructor(agentName: string) {
Expand Down
2 changes: 1 addition & 1 deletion src/providers/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ async function createProvider(pc: ProviderConfig): Promise<BaseProvider> {
return new GitHubCopilotProvider(pc);
} else {
const { OpenAICompatProvider } = await import('./openai-compat.js');
return new OpenAICompatProvider(pc);
return new OpenAICompatProvider(pc, { useChatApi: true });
}
}

Expand Down
24 changes: 13 additions & 11 deletions src/utils/provider-models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,22 +165,24 @@ function limitModels(models: string[]): string[] {

function isOpenAIChatModel(id: string): boolean {
const lower = id.toLowerCase();
const parts = lower.split("/");
const modelName = parts[parts.length - 1];
if (
lower.includes('image')
|| lower.includes('audio')
|| lower.includes('tts')
|| lower.includes('transcribe')
|| lower.includes('embedding')
|| lower.includes('moderation')
|| lower.includes('realtime')
|| lower.includes('whisper')
|| lower.includes('search')
|| lower.includes('computer')
modelName.includes("image")
|| modelName.includes("audio")
|| modelName.includes("tts")
|| modelName.includes("transcribe")
|| modelName.includes("embedding")
|| modelName.includes("moderation")
|| modelName.includes("realtime")
|| modelName.includes("whisper")
|| modelName.includes("search")
|| modelName.includes("computer")
) {
return false;
}

return lower.startsWith('gpt-') || /^o\d/.test(lower);
return modelName.startsWith("gpt-") || /^o\d/.test(modelName);
}

function chooseRecommendedModel(
Expand Down
2 changes: 1 addition & 1 deletion src/web/api/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ providers.post('/api/providers/:name', async (c) => {
const body = await c.req.json();
const config = loadConfig();

const validNames: ProviderName[] = ['openai', 'anthropic', 'deepseek', 'grok', 'ollamaCloud', 'ollamaLocal'];
const validNames: ProviderName[] = ['openai', 'anthropic', 'deepseek', 'grok', 'ollamaCloud', 'ollamaLocal', 'openaiCompat', 'mimo', 'mimoTokenPlan', 'chatgptWeb', 'githubCopilot'];
if (!validNames.includes(providerName)) {
return c.json({ error: 'Unknown provider' }, 400);
}
Expand Down