summaryrefslogtreecommitdiff
path: root/packages/server/src/core/client.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src/core/client.ts')
-rw-r--r--packages/server/src/core/client.ts45
1 files changed, 40 insertions, 5 deletions
diff --git a/packages/server/src/core/client.ts b/packages/server/src/core/client.ts
index 4c20c0ad..b8d47476 100644
--- a/packages/server/src/core/client.ts
+++ b/packages/server/src/core/client.ts
@@ -22,6 +22,7 @@ import { getCoreSystemPrompt } from './prompts.js';
import { ReadManyFilesTool } from '../tools/read-many-files.js';
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
import { checkNextSpeaker } from '../utils/nextSpeakerChecker.js';
+import { reportError } from '../utils/errorReporting.js';
export class GeminiClient {
private client: GoogleGenAI;
@@ -87,8 +88,8 @@ export class GeminiClient {
);
}
} catch (error) {
+ // Not using reportError here as it's a startup/config phase, not a chat/generation phase error.
console.error('Error reading full file context:', error);
- // Optionally add an error message part to the context
initialParts.push({
text: '\n--- Error reading full file context ---',
});
@@ -125,7 +126,12 @@ export class GeminiClient {
history,
});
} catch (error) {
- console.error('Error initializing Gemini chat session:', error);
+ await reportError(
+ error,
+ 'Error initializing Gemini chat session.',
+ history,
+ 'startChat',
+ );
const message = error instanceof Error ? error.message : 'Unknown error.';
throw new Error(`Failed to initialize chat: ${message}`);
}
@@ -185,18 +191,47 @@ export class GeminiClient {
});
const text = getResponseText(result);
if (!text) {
- throw new Error('API returned an empty response.');
+ const error = new Error(
+ 'API returned an empty response for generateJson.',
+ );
+ await reportError(
+ error,
+ 'Error in generateJson: API returned an empty response.',
+ contents,
+ 'generateJson-empty-response',
+ );
+ throw error;
}
try {
return JSON.parse(text);
} catch (parseError) {
- console.error('Failed to parse JSON response:', text);
+ await reportError(
+ parseError,
+ 'Failed to parse JSON response from generateJson.',
+ {
+ responseTextFailedToParse: text,
+ originalRequestContents: contents,
+ },
+ 'generateJson-parse',
+ );
throw new Error(
`Failed to parse API response as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}`,
);
}
} catch (error) {
- console.error('Error generating JSON content:', error);
+ // Avoid double reporting for the empty response case handled above
+ if (
+ error instanceof Error &&
+ error.message === 'API returned an empty response for generateJson.'
+ ) {
+ throw error;
+ }
+ await reportError(
+ error,
+ 'Error generating JSON content via API.',
+ contents,
+ 'generateJson-api',
+ );
const message =
error instanceof Error ? error.message : 'Unknown API error.';
throw new Error(`Failed to generate JSON content: ${message}`);