Branch: refs/heads/main Home: https://github.com/xwiki-contrib/ai-llm Commit: c81cd1a75335b162cf14272524fc99cd434ec0af https://github.com/xwiki-contrib/ai-llm/commit/c81cd1a75335b162cf14272524fc9... Author: Paul Pantiru <[email protected]> Date: 2026-07-03 (Fri, 03 Jul 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/pom.xml M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtml.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPSourceText.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtmlTest.java Log Message: ----------- LLMAI-139: Add DOM outline, anchor sections and provenance to get_document rendered HTML * rendered=true, format=html: outline=true returns a DOM heading-anchor outline with per-section token/table/image/rendering-error stats; over-budget documents auto-degrade to it instead of the line-based head window (rendered HTML is not line-addressable) * new section parameter reads one heading-addressed section (heading to the next same-or-higher heading in document order, via DOM Range so headings nested in group divs are handled); unknown anchors return the available outline; over-budget sections degrade to their sub-outline * offset/limit are rejected for format=html with steering to outline/section * headings without ids (sheet-generated HTML) get synthetic (hN) anchors so they stay addressable * empty-body documents displayed through a sheet or xobjects carry a provenance note on both source and rendered reads (SheetManager, view action, viewability-filtered); the rendered-read advice is omitted when rendered content is disabled for the wiki * MCPRenderedHtml becomes a parse-once wrapper over the cleaned DOM (terminal serialize/sectionHtml); the source-text regex scans (heading outline, stack-trace collapsing) move to MCPSourceText * surrogate-safe output truncation; man page and description teach the outline-to-section workflow Commit: d73671217971217b982c1e9255edba45e0d28c8d https://github.com/xwiki-contrib/ai-llm/commit/d73671217971217b982c1e9255edb... Author: Paul Pantiru <[email protected]> Date: 2026-07-04 (Sat, 04 Jul 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtml.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPSourceText.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtmlTest.java Log Message: ----------- LLMAI-139: Chunk anchors for over-budget leaf sections in get_document rendered HTML * an over-budget section with no sub-headings (and an over-budget headingless document) now returns a CHUNK MAP instead of a capped head: the content is partitioned into ~4000-token runs of consecutive blocks, each addressed as #((parent)/K) and titled by its first 8 words * partition is a pure function of the cleaned DOM (greedy same-parent packing, descent into oversized subtrees such as giant tables down to row runs, atomic floor for unsplittable nodes), so chunk anchors resolve identically across requests; maps echo the document version * chunk maps paginate themselves via #((parent)/mapP) anchors; out-of-range chunk or page errors re-embed the current map (neutral prose when the section meanwhile fits the budget) * the tool now branches on size estimates before serializing (the DOM must stay unmutated for partitioning); borderline estimate misses keep a capped head whose footer steers to #((parent)/1) * shared response budget constants move to MCPSourceText; man page gains a chunk example Commit: 3c60b1a23017f6dc032e1db4b65fadcafcd6da9a https://github.com/xwiki-contrib/ai-llm/commit/3c60b1a23017f6dc032e1db4b65fa... Author: Paul Pantiru <[email protected]> Date: 2026-07-04 (Sat, 04 Jul 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/DefaultMCPDocumentAccess.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/DefaultMCPWikiReach.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPEditDocumentTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPQueryDocumentsTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPWriteDocumentTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/DefaultMCPDocumentAccessTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPEditDocumentToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPQueryDocumentsToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPWriteDocumentToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/MCPServerConfigSheet.xml M application-ai-llm-mcp/application-ai-llm-mcp-ui/src/main/resources/AI/MCP/Code/Translations.xml Log Message: ----------- [Misc] Pre-release QA fixes: reach-off descriptions, sparse-outline hint, message consistency, admin doc notes * reach-off endpoints no longer advertise wiki-prefixed reference/author examples in any tool schema (get/edit/write/query); reach-on variants unchanged * source outline with 0-1 headings hints at the rendered HTML outline for script-driven pages, gated on the wiki's rendered-content setting * agent-facing refusal messages unified on quote style and content-neutral wording (space filter, cross-wiki reach, rights, wiki validation); log messages keep the bracket convention * admin config sheet security box documents that a disabled endpoint does not hide a wiki from cross-wiki reach, and that filters are scoping, not secrecy Commit: 98d6f237726f8680ece0672cce926dcc500460a0 https://github.com/xwiki-contrib/ai-llm/commit/98d6f237726f8680ece0672cce926... Author: Paul Pantiru <[email protected]> Date: 2026-07-04 (Sat, 04 Jul 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtml.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtmlTest.java Log Message: ----------- LLMAI-139: Add detail=full to get_document rendered HTML * detail="stripped" (default) | "full" for rendered=true, format=html: full keeps every element attribute so an agent can verify markup it wrote; scripts, styles, comments and the rendering-error stack-trace block are still removed in both details through the same code path * attribute values longer than 500 chars are shortened at parse time with an announced [...shortened] marker (surrogate-safe; class exempt - its tokens drive the section walk's error stats), so the DOM, the size estimator and the serialization agree; the whole budget ladder (outline/section/chunk map) is detail-agnostic and adapts automatically * full-detail banner advertises the threshold from the shared constant, warns the view is still not browser-faithful, and marks attribute text as untrusted page data (it can be invisible in a browser - security-audit hardening); the stripped banner gained a detail="full" discoverability hook * chunk-map caveat extended: chunks shift when the detail changes, not only on edits * security audit: clean (no findings above Low); prompt-injection surface accepted as documented - attribute text never reaches tool descriptions/schema, framing spoofing blocked by attribute escaping Commit: bcbc6c2e538c7db5186450485cc2623dd111dfb1 https://github.com/xwiki-contrib/ai-llm/commit/bcbc6c2e538c7db5186450485cc26... Author: Paul Pantiru <[email protected]> Date: 2026-07-04 (Sat, 04 Jul 2026) Changed paths: M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentTool.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/main/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtml.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPGetDocumentToolTest.java M application-ai-llm-mcp/application-ai-llm-mcp-server/src/test/java/org/xwiki/contrib/llm/mcp/internal/MCPRenderedHtmlTest.java Log Message: ----------- LLMAI-139: Column metadata for table row-run chunks + liveData placeholder signal * a chunk produced by descending into an oversized table now carries the table's column headers (first th row, thead-first search, extracted once at partition time and inherited by all chunks inside that table's subtree); the chunk-fetch response header gains a 'Columns: A | B | C' line right after the Chunk: line, capped at 200 chars - the fetched fragment stays a pure Range clone * chunk maps and section responses are unchanged; man page chunk example mentions the Columns line * the liveData class token is now kept in stripped mode: Live Data renders client-side, so the server-rendered page holds only an empty placeholder div - the surviving token tells the agent the content is browser-populated rather than missing (live-observed on Main.AllDocs) Compare: https://github.com/xwiki-contrib/ai-llm/compare/2f8b9752520a...bcbc6c2e538c To unsubscribe from these emails, change your notification settings at https://github.com/xwiki-contrib/ai-llm/settings/notifications