Skip to content

Commit 0a582da

Browse files
committed
fix: simplify user-facing OpenCode request errors and enrich session.prompt diagnostics in logs
1 parent f32aee2 commit 0a582da

3 files changed

Lines changed: 26 additions & 16 deletions

File tree

src/bot/index.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,16 @@ export function createBot(): Bot<Context> {
850850
}
851851
}
852852

853+
const promptErrorLogContext = {
854+
sessionId: currentSession.id,
855+
directory: currentSession.directory,
856+
agent: currentAgent || "default",
857+
modelProvider: storedModel.providerID || "default",
858+
modelId: storedModel.modelID || "default",
859+
variant: storedModel.variant || "default",
860+
promptLength: text.length,
861+
};
862+
853863
logger.info(`[Bot] Calling session.prompt (fire-and-forget) with agent=${currentAgent}...`);
854864

855865
// CRITICAL: DO NOT wait for session.prompt to complete.
@@ -861,24 +871,26 @@ export function createBot(): Bot<Context> {
861871
task: () => opencodeClient.session.prompt(promptOptions),
862872
onSuccess: ({ error }) => {
863873
if (error) {
864-
const details = formatErrorDetails(error);
865-
logger.error("OpenCode API error:", error);
866-
// Send the error via API directly because ctx is no longer available
867-
void bot.api
868-
.sendMessage(
869-
ctx.chat.id,
870-
t("bot.prompt_send_error_detailed", {
871-
details,
872-
}),
873-
)
874-
.catch(() => {});
874+
const details = formatErrorDetails(error, 6000);
875+
logger.error(
876+
"[Bot] OpenCode API returned an error for session.prompt",
877+
promptErrorLogContext,
878+
);
879+
logger.error("[Bot] session.prompt error details:", details);
880+
logger.error("[Bot] session.prompt raw API error object:", error);
881+
882+
// Send user-friendly error via API directly because ctx is no longer available
883+
void bot.api.sendMessage(ctx.chat.id, t("bot.prompt_send_error")).catch(() => {});
875884
return;
876885
}
877886

878887
logger.info("[Bot] session.prompt completed");
879888
},
880889
onError: (error) => {
881-
logger.error("[Bot] session.prompt background task failed:", error);
890+
const details = formatErrorDetails(error, 6000);
891+
logger.error("[Bot] session.prompt background task failed", promptErrorLogContext);
892+
logger.error("[Bot] session.prompt background failure details:", details);
893+
logger.error("[Bot] session.prompt raw background error object:", error);
882894
void bot.api.sendMessage(ctx.chat.id, t("bot.prompt_send_error")).catch(() => {});
883895
},
884896
});

src/i18n/en.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ export const en = {
6161
"⏳ Agent is already running a task. Wait for completion or use /stop to interrupt current run.",
6262
"bot.session_reset_project_mismatch":
6363
"⚠️ Active session does not match the selected project, so it was reset. Use /sessions to pick one or /new to create a new session.",
64-
"bot.prompt_send_error_detailed": "🔴 Failed to send request.\n\nDetails: {details}",
65-
"bot.prompt_send_error": "🔴 An error occurred while sending request to OpenCode.",
64+
"bot.prompt_send_error": "Failed to send request to OpenCode.",
6665
"bot.unknown_command": "⚠️ Unknown command: {command}. Use /help to see available commands.",
6766

6867
"status.header_running": "🟢 **OpenCode Server is running**",

src/i18n/ru.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ export const ru: I18nDictionary = {
6060
"⏳ Агент уже выполняет задачу. Дождитесь завершения или используйте /stop, чтобы прервать текущий запуск.",
6161
"bot.session_reset_project_mismatch":
6262
"⚠️ Активная сессия не соответствует выбранному проекту, поэтому была сброшена. Используйте /sessions для выбора или /new для создания новой сессии.",
63-
"bot.prompt_send_error_detailed": "🔴 Ошибка при отправке запроса.\n\nДетали: {details}",
64-
"bot.prompt_send_error": "🔴 Произошла ошибка при отправке запроса в OpenCode.",
63+
"bot.prompt_send_error": "Не удалось отправить запрос в OpenCode.",
6564
"bot.unknown_command": "⚠️ Неизвестная команда: {command}. Используйте /help для списка команд.",
6665

6766
"status.header_running": "🟢 **OpenCode Server запущен**",

0 commit comments

Comments
 (0)