Fix Bedrock advocate synthesis: engine guard, response_format, Claude engine option

- DeepResearchAgent: engine guard now accepts dbn_legal_v3, claude_sonnet, claude_haiku
  (previously stripped these to azure_mini, breaking dbn_legal_v3 selection and
  preventing Claude engines from reaching the correct synthesis branch)
- DbnBedrockGateway: remove response_format=json_object from chat payload — LiteLLM
  converts this to a tool-use constraint for Bedrock, routing output into tool_calls
  instead of content (root cause of the {} empty brief)
- advocate.php: add Claude Sonnet 4.6 (AWS Bedrock) engine option
- account, billing, dashboard, nav, min-sak: pending UI/flow changes from prior sessions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 20:22:12 +02:00
parent 8205a22205
commit b78ab1e257
8 changed files with 1226 additions and 802 deletions
+4 -3
View File
@@ -96,9 +96,10 @@ final class DbnBedrockGateway
'temperature' => (float)($options['temperature'] ?? 0.2),
'max_tokens' => $options['max_tokens'] ?? 1200,
];
if (!empty($options['json'])) {
$payload['response_format'] = ['type' => 'json_object'];
}
// response_format is intentionally omitted for Claude via Bedrock.
// LiteLLM converts json_object to a tool-use constraint, routing output
// into tool_calls instead of content. Claude follows JSON instructions
// in the system prompt without needing response_format.
return $this->postJson($this->liteLlmUrl, $payload, (int)($options['timeout'] ?? 90));
}
+2 -2
View File
@@ -40,7 +40,7 @@ final class DbnDeepResearchAgent
): array {
$seedQuery = trim($seedQuery);
$pastedText = trim($pastedText);
$engine = in_array($engine, ['azure_mini', 'azure_full', 'gpu'], true) ? $engine : 'azure_mini';
$engine = in_array($engine, ['azure_mini', 'azure_full', 'gpu', 'dbn_legal', 'dbn_legal_v3', 'claude_sonnet', 'claude_haiku'], true) ? $engine : 'azure_mini';
$language = dbnToolsNormalizeUiLanguage($language);
$controls = $this->normalizeControls($controls);
@@ -1221,7 +1221,7 @@ PROMPT;
): array {
$seedQuery = trim($seedQuery);
$pastedText = trim($pastedText);
$engine = in_array($engine, ['azure_mini', 'azure_full', 'gpu'], true) ? $engine : 'azure_mini';
$engine = in_array($engine, ['azure_mini', 'azure_full', 'gpu', 'dbn_legal', 'dbn_legal_v3', 'claude_sonnet', 'claude_haiku'], true) ? $engine : 'azure_mini';
$language = dbnToolsNormalizeUiLanguage($language);
$controls = $this->normalizeControls($controls);
+1 -1
View File
@@ -88,7 +88,7 @@ $_navAssetBase = str_contains($_navScriptPath, '/dashboard/') ? '../assets' : 'a
<?= htmlspecialchars(dbnToolsT('nav_login', $_navLang)) ?>
</a>
<?php else: ?>
<a class="dbn-nav__account-link" href="/dashboard.php#account" title="<?= htmlspecialchars($_navEmail) ?>">
<a class="dbn-nav__account-link" href="/account.php" title="<?= htmlspecialchars($_navEmail) ?>">
<?php if ($_navUser !== ''): ?>
<span class="dbn-nav__username"><?= htmlspecialchars($_navUser) ?></span>
<?php endif; ?>