add ask AI

This commit is contained in:
2025-06-13 15:01:08 +09:00
parent 962017f922
commit fb0e5107cf
14 changed files with 506 additions and 383 deletions

View File

@ -4,15 +4,21 @@ export interface AppConfig {
collections: {
comment: string;
user: string;
chat: string;
};
host: string;
rkey?: string; // Current post rkey if on post page
aiEnabled: boolean;
aiAskAi: boolean;
aiProvider: string;
aiModel: string;
aiHost: string;
}
// Generate collection names from host
// Format: ${reg}.${name}.${sub}
// Example: log.syui.ai -> ai.syui.log
function generateCollectionNames(host: string): { comment: string; user: string } {
function generateCollectionNames(host: string): { comment: string; user: string; chat: string } {
try {
// Remove protocol if present
const cleanHost = host.replace(/^https?:\/\//, '');
@ -31,14 +37,16 @@ function generateCollectionNames(host: string): { comment: string; user: string
return {
comment: collectionBase,
user: `${collectionBase}.user`
user: `${collectionBase}.user`,
chat: `${collectionBase}.chat`
};
} catch (error) {
console.warn('Failed to generate collection names from host:', host, error);
// Fallback to default collections
return {
comment: 'ai.syui.log',
user: 'ai.syui.log.user'
user: 'ai.syui.log.user',
chat: 'ai.syui.log.chat'
};
}
}
@ -61,22 +69,36 @@ export function getAppConfig(): AppConfig {
const collections = {
comment: import.meta.env.VITE_COLLECTION_COMMENT || autoGeneratedCollections.comment,
user: import.meta.env.VITE_COLLECTION_USER || autoGeneratedCollections.user,
chat: import.meta.env.VITE_COLLECTION_CHAT || autoGeneratedCollections.chat,
};
const rkey = extractRkeyFromUrl();
// AI configuration
const aiEnabled = import.meta.env.VITE_AI_ENABLED === 'true';
const aiAskAi = import.meta.env.VITE_AI_ASK_AI === 'true';
const aiProvider = import.meta.env.VITE_AI_PROVIDER || 'ollama';
const aiModel = import.meta.env.VITE_AI_MODEL || 'gemma2:2b';
const aiHost = import.meta.env.VITE_AI_HOST || 'https://ollama.syui.ai';
console.log('App configuration:', {
host,
adminDid,
collections,
rkey: rkey || 'none (not on post page)'
rkey: rkey || 'none (not on post page)',
ai: { enabled: aiEnabled, askAi: aiAskAi, provider: aiProvider, model: aiModel, host: aiHost }
});
return {
adminDid,
collections,
host,
rkey
rkey,
aiEnabled,
aiAskAi,
aiProvider,
aiModel,
aiHost
};
}