Part of the Learnify 2.0 rebuild. Depends on #41, #45.
Context
Grounded sessions cite their sources. The Citations API is available on Bedrock: PDFs cite page numbers, custom-content chunks cite block indices, streamed via citations_delta. cited_text costs no output tokens. (Citations are incompatible with structured outputs — fine: widgets are emitted via tools, and concept-graph decomposition is a separate call.)
Tasks
Acceptance criteria
- Attach a YouTube lecture + a PDF → explanations carry citation chips; chip click jumps to the exact quote
- Detach sources → session runs ungrounded
Part of the Learnify 2.0 rebuild. Depends on #41, #45.
Context
Grounded sessions cite their sources. The Citations API is available on Bedrock: PDFs cite page numbers, custom-content chunks cite block indices, streamed via
citations_delta.cited_textcosts no output tokens. (Citations are incompatible with structured outputs — fine: widgets are emitted via tools, and concept-graph decomposition is a separate call.)Tasks
citations: {enabled: true}) withcache_control— PDFs as base64 document blocks, URL/YouTube as custom-content blockscitations_deltain the agent loop → citation markers streamed ontoNarrationcite: {sourceId, quote}props validated server-side by substring match againstsource_chunks(drop invalid cites)Acceptance criteria