diff --git a/apps/x/packages/core/src/agents/runtime.ts b/apps/x/packages/core/src/agents/runtime.ts index baf23c3e..09347145 100644 --- a/apps/x/packages/core/src/agents/runtime.ts +++ b/apps/x/packages/core/src/agents/runtime.ts @@ -850,13 +850,21 @@ export async function* streamAgent({ const tools = await buildTools(agent); // set up provider + model - const provider = await isSignedIn() + const signedIn = await isSignedIn(); + const provider = signedIn ? await getGatewayProvider() : createProvider(modelConfig.provider); const knowledgeGraphAgents = ["note_creation", "email-draft", "meeting-prep", "labeling_agent", "note_tagging_agent", "agent_notes_agent"]; - const modelId = (knowledgeGraphAgents.includes(state.agentName!) && modelConfig.knowledgeGraphModel) - ? modelConfig.knowledgeGraphModel - : modelConfig.model; + const isKgAgent = knowledgeGraphAgents.includes(state.agentName!); + const isInlineTaskAgent = state.agentName === "inline_task_agent"; + const defaultModel = signedIn ? "gpt-5.4" : modelConfig.model; + const defaultKgModel = signedIn ? "gpt-5.4-nano" : defaultModel; + const defaultInlineTaskModel = signedIn ? "gpt-5.4-mini" : defaultModel; + const modelId = isInlineTaskAgent + ? defaultInlineTaskModel + : (isKgAgent && modelConfig.knowledgeGraphModel) + ? modelConfig.knowledgeGraphModel + : isKgAgent ? defaultKgModel : defaultModel; const model = provider.languageModel(modelId); logger.log(`using model: ${modelId}`); diff --git a/apps/x/packages/core/src/knowledge/summarize_meeting.ts b/apps/x/packages/core/src/knowledge/summarize_meeting.ts index d3d09248..534b6655 100644 --- a/apps/x/packages/core/src/knowledge/summarize_meeting.ts +++ b/apps/x/packages/core/src/knowledge/summarize_meeting.ts @@ -4,6 +4,8 @@ import { generateText } from 'ai'; import container from '../di/container.js'; import type { IModelConfigRepo } from '../models/repo.js'; import { createProvider } from '../models/models.js'; +import { isSignedIn } from '../account/account.js'; +import { getGatewayProvider } from '../models/gateway.js'; import { WorkDir } from '../config/config.js'; const CALENDAR_SYNC_DIR = path.join(WorkDir, 'calendar_sync'); @@ -137,8 +139,13 @@ function loadCalendarEventContext(calendarEventJson: string): string { export async function summarizeMeeting(transcript: string, meetingStartTime?: string, calendarEventJson?: string): Promise { const repo = container.resolve('modelConfigRepo'); const config = await repo.getConfig(); - const provider = createProvider(config.provider); - const model = provider.languageModel(config.model); + const signedIn = await isSignedIn(); + const provider = signedIn + ? await getGatewayProvider() + : createProvider(config.provider); + const modelId = config.meetingNotesModel + || (signedIn ? "gpt-5.4" : config.model); + const model = provider.languageModel(modelId); // If a specific calendar event was linked, use it directly. // Otherwise fall back to scanning events within ±3 hours. diff --git a/apps/x/packages/core/src/models/repo.ts b/apps/x/packages/core/src/models/repo.ts index d941336c..4643951e 100644 --- a/apps/x/packages/core/src/models/repo.ts +++ b/apps/x/packages/core/src/models/repo.ts @@ -51,6 +51,7 @@ export class FSModelConfigRepo implements IModelConfigRepo { model: config.model, models: config.models, knowledgeGraphModel: config.knowledgeGraphModel, + meetingNotesModel: config.meetingNotesModel, }; const toWrite = { ...config, providers: existingProviders }; diff --git a/apps/x/packages/shared/src/models.ts b/apps/x/packages/shared/src/models.ts index 30403f94..2c1588e8 100644 --- a/apps/x/packages/shared/src/models.ts +++ b/apps/x/packages/shared/src/models.ts @@ -12,4 +12,5 @@ export const LlmModelConfig = z.object({ model: z.string(), models: z.array(z.string()).optional(), knowledgeGraphModel: z.string().optional(), + meetingNotesModel: z.string().optional(), });