1.4 KiB
1.4 KiB
ADDED Requirements
Requirement: AI JSON responses must use shared candidate extraction
When parsing JSON returned by AI/LLM text generation, the system SHALL use a shared candidate extraction utility that supports object and array contracts, Markdown code fences, <think> blocks, surrounding prose, and multiple JSON candidates.
Scenario: Thinking text contains a mismatched JSON candidate
- GIVEN an AI response contains a
<think>block with a JSON-like candidate that does not match the business schema - AND the final response body contains a valid JSON object that matches the schema predicate
- WHEN the business parser extracts the AI JSON response
- THEN it selects the matching final JSON object instead of the thinking candidate
Scenario: JSON strings contain bracket characters
- GIVEN an AI response contains JSON with string values that include
{,},[, or] - WHEN the shared extractor scans for balanced candidates
- THEN bracket characters inside strings do not terminate or corrupt the candidate
Scenario: Non-AI JSON parsing remains unchanged
- GIVEN code parses stored settings, backups, sync payloads, or HTTP API bodies
- WHEN those payloads are not AI/LLM free-text responses
- THEN the system may continue using direct JSON parsing and does not route them through the AI JSON extractor