fix: allow empty text field when doc_ids supplied to all tool APIs

dbnToolsString was called with required=true (default), so it aborted
before dbnToolsInjectDocContent could inject content from the doc picker.
Now passes required=false and validates after injection so doc-only
submissions work in timeline, redact, ask, and summarize.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-24 00:39:46 +02:00
parent fa42c7223a
commit 0fcfed1a86
4 changed files with 13 additions and 4 deletions
+4 -1
View File
@@ -12,6 +12,9 @@ $input = dbnToolsJsonInput(25000);
$language = dbnToolsNormalizeLanguage($input['language'] ?? 'en'); $language = dbnToolsNormalizeLanguage($input['language'] ?? 'en');
dbnToolsWithTelemetry('ask', $language, function () use ($input, $language): array { dbnToolsWithTelemetry('ask', $language, function () use ($input, $language): array {
$question = dbnToolsInjectDocContent($input, dbnToolsString($input, 'question', 4000)); $question = dbnToolsInjectDocContent($input, dbnToolsString($input, 'question', 4000, false));
if (mb_strlen(trim($question), 'UTF-8') < 5) {
dbnToolsAbort('Enter a question or select a document before running.', 422, 'empty_text');
}
return (new DbnLegalToolsService())->ask($question, $language); return (new DbnLegalToolsService())->ask($question, $language);
}); });
+4 -1
View File
@@ -11,7 +11,10 @@ if ($ftRemaining >= 0) { header('X-Credits-Remaining: ' . $ftRemaining); }
$input = dbnToolsJsonInput(400000); $input = dbnToolsJsonInput(400000);
dbnToolsWithTelemetry('redact', '', function () use ($input): array { dbnToolsWithTelemetry('redact', '', function () use ($input): array {
$text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', 128000)); $text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', 128000, false));
if (mb_strlen(trim($text), 'UTF-8') < 10) {
dbnToolsAbort('Paste text, upload a file, or select a document before running.', 422, 'empty_text');
}
$mode = (string)($input['mode'] ?? 'standard'); $mode = (string)($input['mode'] ?? 'standard');
$region = dbnToolsNormalizeRegion($input['region'] ?? 'nordic'); $region = dbnToolsNormalizeRegion($input['region'] ?? 'nordic');
$language = dbnToolsNormalizeLanguage($input['language'] ?? 'en'); $language = dbnToolsNormalizeLanguage($input['language'] ?? 'en');
+1 -1
View File
@@ -27,7 +27,7 @@ $emit = static function (string $event, array $payload): void {
}; };
try { try {
$text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', 128000)); $text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', 128000, false));
if (mb_strlen(trim($text), 'UTF-8') < 50) { if (mb_strlen(trim($text), 'UTF-8') < 50) {
$emit('error', [ $emit('error', [
+4 -1
View File
@@ -14,7 +14,10 @@ $input = dbnToolsJsonInput(400000);
$language = dbnToolsNormalizeLanguage($input['language'] ?? 'en'); $language = dbnToolsNormalizeLanguage($input['language'] ?? 'en');
dbnToolsWithTelemetry('timeline', $language, function () use ($input, $language, $ftUid): array { dbnToolsWithTelemetry('timeline', $language, function () use ($input, $language, $ftUid): array {
$text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', 128000)); $text = dbnToolsInjectDocContent($input, dbnToolsString($input, 'text', 128000, false));
if (mb_strlen(trim($text), 'UTF-8') < 10) {
dbnToolsAbort('Paste text, upload a file, or select a document before running.', 422, 'empty_text');
}
$validEngines = ['azure_mini', 'azure_full', 'gpu']; $validEngines = ['azure_mini', 'azure_full', 'gpu'];
$engine = in_array((string)($input['engine'] ?? ''), $validEngines, true) $engine = in_array((string)($input['engine'] ?? ''), $validEngines, true)