642
643
/** Resolves the target session URI for `create_chat` against the known sessions. */
644
>
function resolveChatSession(sessionInput: string, sessions: readonly IAgentSessionMetadata[]): URI {
sessionServerTools.ts
645
>
const session = resolveKnownSession(sessionInput, sessions);
646
>
if (!session) {
647
throw new Error(`Invalid ${createChatToolName} input: session must match the URI of a known session (see list_sessions).`);
648
}
650
>
}
651
652
/** Validates and resolves create-chat arguments; defaults the session to {@link currentSession} when omitted. */
653
export function getCreateChatArgs(rawArgs: unknown, sessions: readonly IAgentSessionMetadata[], models: readonly IAgentModelInfo[], currentSession?: URI): { session: URI; prompt: string; title?: string; model?: IAgentModelInfo } {
655
>
const prompt = getRequiredString(args.prompt, 'prompt', createChatToolName);
656
>
const title = getOptionalString(args.title, 'title', createChatToolName);
657
>
const modelName = getOptionalString(args.model, 'model', createChatToolName);
658
>
const model = resolveModel(modelName, models);
659
>
const sessionInput = getOptionalString(args.session, 'session', createChatToolName);
660
>
let session: URI;
661
>
if (sessionInput !== undefined) {
662
>
session = resolveChatSession(sessionInput, sessions);
663
>
} else if (currentSession) {
664
session = currentSession;
665
} else {
666
throw new Error(`Invalid ${createChatToolName} input: no session provided and the current session could not be determined.`);
667
}
668
>
return { session, prompt, ...(title !== undefined ? { title } : {}), ...(model !== undefined ? { model } : {}) };
sessionServerTools.ts
669
>
}
670
671
/** Adds a chat to a session, sends its initial prompt, and returns the created channels. */