MCPcopy Create free account
hub / github.com/cortexkit/magic-context / askFinalQuestion

Function askFinalQuestion

packages/plugin/scripts/longmemeval/runner.ts:609–658  ·  view source on GitHub ↗
(args: {
    client: OpencodeClient;
    config: RunnerConfig;
    question: LongMemEvalQuestion;
    questionState: QuestionRunState;
    state: RunnerStateFile;
})

Source from the content-addressed store, hash-verified

607}
608
609async function askFinalQuestion(args: {
610 client: OpencodeClient;
611 config: RunnerConfig;
612 question: LongMemEvalQuestion;
613 questionState: QuestionRunState;
614 state: RunnerStateFile;
615}): Promise<void> {
616 const { client, config, question, questionState, state } = args;
617 if (questionState.finalQuestion.asked && questionState.finalQuestion.answerText !== null) {
618 return;
619 }
620
621 questionState.status = "asking-final-question";
622 questionState.updatedAt = nowIso();
623 state.inProgress[question.question_id] = questionState;
624 await persistState(config, state);
625
626 const sessionId = await ensureFinalQuestionSession(client, config, question, questionState, state);
627 await sendBannerIfNeeded({
628 client,
629 config,
630 sessionId,
631 questionState,
632 state,
633 questionId: question.question_id,
634 bannerText: buildFinalQuestionBanner(question.question_date),
635 markBannerSent: () => {
636 questionState.finalQuestion.bannerSent = true;
637 },
638 alreadySent: questionState.finalQuestion.bannerSent,
639 operationLabel: `final-banner:${question.question_id}`,
640 });
641
642 await sleepWithLog(config, `Question ${question.question_id} final prompt delay`, config.finalQuestionDelayMs);
643
644 const prompt = config.questionPromptTemplate.replace("{question}", question.question);
645 const result = await sendPromptAndCapture(client, config, sessionId, prompt, {
646 operationLabel: `final-question:${question.question_id}`,
647 tools: {},
648 system:
649 "Answer from conversational memory only. Do not search files, do not call tools, and do not rely on external retrieval. If you do not remember, say you do not know.",
650 });
651
652 addOpenCodeUsage(questionState, result.usage, result.actualCostUsd, config);
653 questionState.finalQuestion.asked = true;
654 questionState.finalQuestion.answerText = result.assistantText;
655 questionState.updatedAt = nowIso();
656 state.inProgress[question.question_id] = questionState;
657 await persistState(config, state);
658}
659
660async function judgeQuestion(args: {
661 config: RunnerConfig;

Callers 1

processQuestionFunction · 0.85

Calls 8

nowIsoFunction · 0.85
persistStateFunction · 0.85
sendBannerIfNeededFunction · 0.85
buildFinalQuestionBannerFunction · 0.85
sleepWithLogFunction · 0.85
sendPromptAndCaptureFunction · 0.85
addOpenCodeUsageFunction · 0.85

Tested by

no test coverage detected