MCPcopy Create free account
hub / github.com/apache/maka / askUserQuestion

Method askUserQuestion

packages/runtime/src/tool-runtime.ts:2095–2188  ·  view source on GitHub ↗
(
    turnId: string,
    toolUseId: string,
    questions: UserQuestion[],
    abortSignal: AbortSignal,
    queue: DurableSessionEventSink,
  )

Source from the content-addressed store, hash-verified

2093 }
2094
2095 private async askUserQuestion(
2096 turnId: string,
2097 toolUseId: string,
2098 questions: UserQuestion[],
2099 abortSignal: AbortSignal,
2100 queue: DurableSessionEventSink,
2101 ): Promise<UserQuestionResult> {
2102 throwIfAborted(abortSignal);
2103 const hostedRun = this.interactionRun();
2104 const requestId = this.input.newId();
2105 const parked = this.userQuestions.park(requestId, {
2106 toolUseId,
2107 questions,
2108 hosted: hostedRun !== undefined,
2109 });
2110 const onAbort = (): void => {
2111 if (hostedRun) return;
2112 this.userQuestions.reject(requestId, abortErrorFromSignal(abortSignal));
2113 this.finishDeferredQuestionTurnClosure();
2114 };
2115 abortSignal.addEventListener('abort', onAbort, { once: true });
2116 if (hostedRun) void parked.catch(() => undefined);
2117 try {
2118 const request: UserQuestionRequestEvent = {
2119 type: 'user_question_request',
2120 id: this.input.newId(),
2121 turnId,
2122 ts: this.input.now(),
2123 requestId,
2124 toolUseId,
2125 questions,
2126 };
2127 if (hostedRun) {
2128 const settlement = this.createUserQuestionSettlement(turnId, requestId);
2129 const admission = hostedRun.admitUserQuestionRequest({ request, settlement });
2130 try {
2131 await racePromiseWithAbort(admission, abortSignal);
2132 } catch (error) {
2133 if (abortSignal.aborted) {
2134 void admission.catch((admissionError) => {
2135 this.userQuestions.reject(
2136 requestId,
2137 admissionError instanceof Error
2138 ? admissionError
2139 : new RuntimeInteractionFailStopError(
2140 `Could not confirm admission for question ${requestId}`,
2141 admissionError,
2142 ),
2143 );
2144 this.finishDeferredQuestionTurnClosure();
2145 });
2146 throw abortErrorFromSignal(abortSignal);
2147 }
2148 this.userQuestions.reject(
2149 requestId,
2150 error instanceof Error
2151 ? error
2152 : new RuntimeInteractionFailStopError(

Calls 15

interactionRunMethod · 0.95
abortErrorFromSignalFunction · 0.85
throwIfAbortedFunction · 0.70
racePromiseWithAbortFunction · 0.70
newIdMethod · 0.65
addEventListenerMethod · 0.65
nowMethod · 0.65

Tested by

no test coverage detected