(messages: AICompletionRequest_Message[])
| 92 | } |
| 93 | |
| 94 | async function requestAI(messages: AICompletionRequest_Message[]) { |
| 95 | await new Promise((resolve) => setTimeout(resolve, 1000)); |
| 96 | try { |
| 97 | const request = createProto(AICompletionRequestSchema, { messages }); |
| 98 | // Silent mode avoids error notifications for AI completion failures. |
| 99 | const response = await sqlServiceClientConnect.aICompletion(request, { |
| 100 | contextValues: createContextValues().set(silentContextKey, true), |
| 101 | }); |
| 102 | const text = |
| 103 | head(head(response.candidates)?.content?.parts)?.text?.trim() ?? ""; |
| 104 | const card = JSON.parse(text) as Record<string, string>; |
| 105 | return values(card ?? {}); |
| 106 | } catch { |
| 107 | return []; |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | async function fetchSuggestions(metadata: string): Promise<string[]> { |
| 112 | const entry = entries.get(metadata); |
no test coverage detected