fix: avoid opencode structured output session breakage

Replace server-enforced structured output with local JSON parsing for Git generation
Render generated commit and PR JSON responses as compact chat cards
Tighten generation prompts while preserving active session context
This commit is contained in:
Bohdan Triapitsyn
2026-05-14 02:16:52 +03:00
parent bac655ddb4
commit 92f1fa7dfe
17 changed files with 282 additions and 47 deletions
+7
View File
@@ -1453,6 +1453,13 @@ export const dict = {
'chat.messageBody.actions.saveAsPlan': 'Save as plan',
'chat.messageBody.actions.startNewSession': 'Start new session from this answer',
'chat.messageBody.actions.startNewMultiRun': 'Start new multi-run from this answer',
'chat.generatedResult.actions.copy': 'Copy',
'chat.generatedResult.actions.copied': 'Copied',
'chat.generatedResult.commit.title': 'Generated commit message',
'chat.generatedResult.commit.highlights': 'Highlights',
'chat.generatedResult.pullRequest.title': 'Generated pull request',
'chat.generatedResult.pullRequest.titleLabel': 'Title',
'chat.generatedResult.pullRequest.bodyLabel': 'Body',
'chat.messageBody.tts.stopSpeaking': 'Stop speaking',
'chat.messageBody.tts.readAloud': 'Read aloud',
'chat.messageBody.tts.readAloudWithProvider': 'Read aloud ({provider} voice)',
+7
View File
@@ -1419,6 +1419,13 @@ export const dict: Record<I18nKey, string> = {
"chat.messageBody.actions.saveAsPlan": "Guardar como plan",
"chat.messageBody.actions.startNewSession": "Iniciar nueva sesión desde esta respuesta",
"chat.messageBody.actions.startNewMultiRun": "Iniciar nuevo multi-run desde esta respuesta",
"chat.generatedResult.actions.copy": "Copiar",
"chat.generatedResult.actions.copied": "Copiado",
"chat.generatedResult.commit.title": "Mensaje de commit generado",
"chat.generatedResult.commit.highlights": "Puntos clave",
"chat.generatedResult.pullRequest.title": "Pull request generado",
"chat.generatedResult.pullRequest.titleLabel": "Título",
"chat.generatedResult.pullRequest.bodyLabel": "Descripción",
"chat.messageBody.tts.stopSpeaking": "Dejar de hablar",
"chat.messageBody.tts.readAloud": "Leer en voz alta",
"chat.messageBody.tts.readAloudWithProvider": "Leer en voz alta ({provider} voz)",
+7
View File
@@ -1453,6 +1453,13 @@ export const dict: Record<I18nKey, string> = {
'chat.messageBody.actions.saveAsPlan': '플랜으로 저장',
'chat.messageBody.actions.startNewSession': '이 응답에서 새 세션 시작',
'chat.messageBody.actions.startNewMultiRun': '이 응답에서 새 멀티런 시작',
'chat.generatedResult.actions.copy': '복사',
'chat.generatedResult.actions.copied': '복사됨',
'chat.generatedResult.commit.title': '생성된 커밋 메시지',
'chat.generatedResult.commit.highlights': '하이라이트',
'chat.generatedResult.pullRequest.title': '생성된 Pull Request',
'chat.generatedResult.pullRequest.titleLabel': '제목',
'chat.generatedResult.pullRequest.bodyLabel': '본문',
'chat.messageBody.tts.stopSpeaking': '읽기 중지',
'chat.messageBody.tts.readAloud': '소리 내어 읽기',
'chat.messageBody.tts.readAloudWithProvider': '소리 내어 읽기({provider} 음성)',
+7
View File
@@ -516,6 +516,13 @@ export const dict: Record<I18nKey, string> = {
'chat.messageBody.actions.saveAsPlan': 'Zapisz jako plan',
'chat.messageBody.actions.startNewSession': 'Rozpocznij nową sesję z tej odpowiedzi',
'chat.messageBody.actions.startNewMultiRun': 'Rozpocznij nowe wielokrotne uruchomienie z tej odpowiedzi',
'chat.generatedResult.actions.copy': 'Kopiuj',
'chat.generatedResult.actions.copied': 'Skopiowano',
'chat.generatedResult.commit.title': 'Wygenerowana wiadomość commita',
'chat.generatedResult.commit.highlights': 'Najważniejsze',
'chat.generatedResult.pullRequest.title': 'Wygenerowany pull request',
'chat.generatedResult.pullRequest.titleLabel': 'Tytuł',
'chat.generatedResult.pullRequest.bodyLabel': 'Opis',
'chat.messageBody.tts.stopSpeaking': 'Przestań mówić',
'chat.messageBody.tts.readAloud': 'Czytaj na głos',
'chat.messageBody.tts.readAloudWithProvider': 'Czytaj na głos ({provider} voice)',
@@ -1419,6 +1419,13 @@ export const dict: Record<I18nKey, string> = {
"chat.messageBody.actions.saveAsPlan": "Salvar como plano",
"chat.messageBody.actions.startNewSession": "Iniciar nova sessão a partir desta resposta",
"chat.messageBody.actions.startNewMultiRun": "Iniciar novo multi-run a partir desta resposta",
"chat.generatedResult.actions.copy": "Copiar",
"chat.generatedResult.actions.copied": "Copiado",
"chat.generatedResult.commit.title": "Mensagem de commit gerada",
"chat.generatedResult.commit.highlights": "Destaques",
"chat.generatedResult.pullRequest.title": "Pull request gerado",
"chat.generatedResult.pullRequest.titleLabel": "Título",
"chat.generatedResult.pullRequest.bodyLabel": "Descrição",
"chat.messageBody.tts.stopSpeaking": "Parar de falar",
"chat.messageBody.tts.readAloud": "Ler em voz alta",
"chat.messageBody.tts.readAloudWithProvider": "Ler em voz alta (voz {provider})",
+7
View File
@@ -1419,6 +1419,13 @@ export const dict: Record<I18nKey, string> = {
"chat.messageBody.actions.saveAsPlan": "Зберегти як план",
"chat.messageBody.actions.startNewSession": "Почати нову сесію із цієї відповіді",
"chat.messageBody.actions.startNewMultiRun": "Почніть новий Multi-run із цієї відповіді",
"chat.generatedResult.actions.copy": "Копіювати",
"chat.generatedResult.actions.copied": "Скопійовано",
"chat.generatedResult.commit.title": "Згенероване повідомлення коміту",
"chat.generatedResult.commit.highlights": "Основне",
"chat.generatedResult.pullRequest.title": "Згенерований pull request",
"chat.generatedResult.pullRequest.titleLabel": "Заголовок",
"chat.generatedResult.pullRequest.bodyLabel": "Опис",
"chat.messageBody.tts.stopSpeaking": "Зупинити озвучення",
"chat.messageBody.tts.readAloud": "Прочитати вголос",
"chat.messageBody.tts.readAloudWithProvider": "Прочитати вголос (голос {provider})",
@@ -1419,6 +1419,13 @@ export const dict: Record<I18nKey, string> = {
'chat.messageBody.actions.saveAsPlan': '保存为计划',
'chat.messageBody.actions.startNewSession': '基于此回答开始新会话',
'chat.messageBody.actions.startNewMultiRun': '基于此回答开始新的多运行',
'chat.generatedResult.actions.copy': '复制',
'chat.generatedResult.actions.copied': '已复制',
'chat.generatedResult.commit.title': '生成的提交消息',
'chat.generatedResult.commit.highlights': '要点',
'chat.generatedResult.pullRequest.title': '生成的 Pull Request',
'chat.generatedResult.pullRequest.titleLabel': '标题',
'chat.generatedResult.pullRequest.bodyLabel': '正文',
'chat.messageBody.tts.stopSpeaking': '停止朗读',
'chat.messageBody.tts.readAloud': '朗读',
'chat.messageBody.tts.readAloudWithProvider': '朗读({provider} 语音)',