Skip to content

Commit e8180d8

Browse files
committed
Fix: Deepthink tag recognition & Implement all providers
1 parent 92ad1c8 commit e8180d8

20 files changed

+726
-1517
lines changed

src/components/chat/MarkdownContent.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type CodeProps = React.ClassAttributes<HTMLElement> &
2121
export const MarkdownContent: React.FC<MarkdownContentProps> = ({ content }) => {
2222
const [processedContent, setProcessedContent] = useState('');
2323
const [thinkContent, setThinkContent] = useState<string | null>(null);
24-
const [isThinkExpanded, setIsThinkExpanded] = useState(false);
24+
const [isThinkExpanded, setIsThinkExpanded] = useState(true);
2525

2626
// Process content and check for thinking blocks
2727
useEffect(() => {
@@ -48,7 +48,13 @@ export const MarkdownContent: React.FC<MarkdownContentProps> = ({ content }) =>
4848

4949
// Process the actual content
5050
processed = actualContent;
51-
} else {
51+
}
52+
else if (content.startsWith('<think>')) {
53+
setThinkContent(content.substring(7));
54+
55+
processed = "";
56+
}
57+
else {
5258
setThinkContent(null);
5359
}
5460

src/components/models/SelectModelDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ export const SelectModelDialog: React.FC<SelectModelDialogProps> = ({
187187
</div>
188188
)}
189189
</div>
190-
{selectedModelId === model.id && (
190+
{(selectedModelId === model.id && selectedProviderName === model.provider) && (
191191
<div className="ml-4 text-white">
192192
<Check size={16} />
193193
</div>

src/components/settings/ApiManagement.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import React, { useState } from 'react';
22
import { ChevronRight, Save, AlertCircle } from 'lucide-react';
33
import { ProviderSettings } from '../../services/settings-service';
4+
import { AIProvider } from '../../types/ai-providers';
45

5-
export type AIProvider = 'Forge' | 'OpenAI' | 'Anthropic' | 'Gemini' | 'Fireworks.ai' | 'Together.ai' | 'OpenRouter' | 'Custom';
66

77
interface ApiManagementProps {
88
selectedProvider: AIProvider;
@@ -33,7 +33,7 @@ export const ApiManagement: React.FC<ApiManagementProps> = ({
3333
const currentProviderSettings = providerSettings[selectedProvider] || { apiKey: '' };
3434

3535
const providers: AIProvider[] = [
36-
'Forge',
36+
'TensorBlock',
3737
'OpenAI',
3838
'Anthropic',
3939
'Gemini',

src/components/settings/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
export * from './ApiManagement';
22
export * from './ModelManagement';
3-
export * from './ChatSettings';
4-
export type { AIProvider } from './ApiManagement';
3+
export * from './ChatSettings';

src/pages/SettingsPage.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import React, { useState, useEffect } from 'react';
22
import { Server, MessageSquare } from 'lucide-react';
33
import { SettingsService, ProviderSettings } from '../services/settings-service';
4-
import { ApiManagement, ModelManagement, ChatSettings, AIProvider } from '../components/settings';
4+
import { ApiManagement, ModelManagement, ChatSettings } from '../components/settings';
5+
import { AIProvider } from '../types/ai-providers';
56
import { DatabaseIntegrationService } from '../services/database-integration';
67
import { AIService } from '../services/ai-service';
78

src/services/ai-service.ts

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { AiServiceProvider, CompletionOptions } from './core/ai-service-provider';
2-
import { ProviderFactory } from './providers/providers';
2+
import { ProviderFactory } from './providers/provider-factory';
33
import { Message } from '../types/chat';
44
import { StreamControlHandler } from './streaming-control';
5-
import { AIProvider } from '../components/settings/';
5+
import { AIProvider } from '../types/ai-providers';
6+
import { SettingsService } from './settings-service';
67

78
export interface ModelOption {
89
id: string;
@@ -61,22 +62,22 @@ export class AIService {
6162
*/
6263
private constructor() {
6364
// Initialize with default providers
64-
this.addOpenAIProvider();
65-
this.addForgeProvider();
65+
this.addProviders();
6666
this.setupSettingsListener();
6767
}
6868

69-
private addOpenAIProvider(): void {
70-
const openaiProvider = ProviderFactory.getProvider('OpenAI');
71-
if (openaiProvider) {
72-
this.providers.set('OpenAI', openaiProvider);
73-
}
74-
}
75-
76-
private addForgeProvider(): void {
77-
const forgeProvider = ProviderFactory.getProvider('Forge');
78-
if (forgeProvider) {
79-
this.providers.set('Forge', forgeProvider);
69+
private addProviders(): void {
70+
const settingsService = SettingsService.getInstance();
71+
const settings = settingsService.getSettings();
72+
for (const provider of Object.keys(settings.providers)) {
73+
const providerSettings = settings.providers[provider];
74+
console.log('Provider: ', provider, ' Provider settings: ', providerSettings);
75+
if (providerSettings && providerSettings.apiKey && providerSettings.apiKey.length > 0) {
76+
const providerInstance = ProviderFactory.getNewProvider(provider as AIProvider);
77+
if (providerInstance) {
78+
this.providers.set(provider, providerInstance);
79+
}
80+
}
8081
}
8182
}
8283

@@ -85,7 +86,7 @@ export class AIService {
8586
*/
8687
private setupSettingsListener(): void {
8788
const handleSettingsChange = () => {
88-
ProviderFactory.refreshProviders();
89+
// ProviderFactory.refreshProviders();
8990
// Refresh models when settings change
9091
this.refreshModels();
9192
};
@@ -165,7 +166,7 @@ export class AIService {
165166
}
166167

167168
// If provider not in cache, try to create it
168-
const provider = ProviderFactory.getProvider(name as AIProvider);
169+
const provider = ProviderFactory.getNewProvider(name as AIProvider);
169170
if (provider) {
170171
this.providers.set(name, provider);
171172
return provider;
@@ -383,8 +384,6 @@ export class AIService {
383384
name: model,
384385
provider: providerName
385386
}));
386-
387-
console.log('Models for provider', providerName, modelOptions);
388387

389388
// Cache results
390389
this.modelCache.set(providerName, modelOptions);

src/services/chat-service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ export class ChatService {
455455
// Update UI
456456
conversationUpdate(this.conversations);
457457

458-
const settingsService = SettingsService.getInstance();
458+
// const settingsService = SettingsService.getInstance();
459459

460460
// TODO: Uncomment this when we have a way to handle streaming
461461

src/services/core/ai-service-provider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export interface AiServiceProvider {
5252
/**
5353
* Set up authentication for this provider
5454
*/
55-
setupAuthentication(): void;
55+
recreateClient(): void;
5656

5757
/**
5858
* Check if the provider has a valid API key

src/services/database-integration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { SettingsService, ProviderSettings } from './settings-service';
33
import { Conversation, Message } from '../types/chat';
44
import { ApiSettings } from './api-settings';
55
import { v4 as uuidv4 } from 'uuid';
6-
import { AIProvider } from '../components/settings';
6+
import { AIProvider } from '../types/ai-providers';
77

88
/**
99
* Service for integrating database operations with app components

0 commit comments

Comments
 (0)