task feature/deliverable-docx-r1 (backend half): docgen markdown→styled OOXML, write_docx tool, artifact_ref pinned as content after final text, prompt routing. go test ./... 19 pkgs ok.
task feature/deliverable-docx-r1 (backend half): docgen markdown→styled OOXML, write_docx tool, artifact_ref pinned as content after final text, prompt routing. go test ./... 19 pkgs ok.
Why: docx deliverables were plain text saved with a .docx name (no
headings/tables/styles), and the artifact_ref part was marked Process
so the deliverable vanished into the collapsed process section — the
user saw only model-written text like "📄 xxx.docx 工件 ID …" instead
of an openable, formatted document delivered in the conversation.
Evidence:
- new internal/docgen: Markdown -> styled OOXML (Title/Heading1-4,
numbered+bullet lists with numbering.xml, GFM tables with shaded
header, quotes, code blocks, bold/italic/strike, real hyperlinks);
zero third-party deps; tests cover zip structure, XML well-formedness,
numbering refs, hyperlink rels, escaping, plain-text fallback
- ingest round-trip test proves generated docx parses back to blocks
- new write_docx builtin tool (markdown in -> styled .docx artifact);
write_artifact prompt now routes Word docs to it; task.doc-minutes
output contract requires write_docx delivery
- llm.go: artifact refs collected as deliverables and appended as
content parts AFTER the final text (pinned tail, not process); mock
#dogfood path generates a real styled docx; runmgr skips string
indexing for binary office mimes
- go test ./... 19 packages ok (incl. new e2e asserting <w:tbl> and
title text inside the artifact served by the API)
Impact: model-written documents open in Word/WPS with real layout and
preview with formatting (mammoth maps Heading1-4 to h1-h4); every tool
artifact now lands as a visible in-chat card; no behavior change for
text artifacts.
Refs: task feature/deliverable-docx-r1
weichen
merged commit 8550bb0bd2 into main2026-10-01 02:49:55 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
task feature/deliverable-docx-r1 (backend half): docgen markdown→styled OOXML, write_docx tool, artifact_ref pinned as content after final text, prompt routing. go test ./... 19 pkgs ok.
Why: docx deliverables were plain text saved with a .docx name (no headings/tables/styles), and the artifact_ref part was marked Process so the deliverable vanished into the collapsed process section — the user saw only model-written text like "📄 xxx.docx 工件 ID …" instead of an openable, formatted document delivered in the conversation. Evidence: - new internal/docgen: Markdown -> styled OOXML (Title/Heading1-4, numbered+bullet lists with numbering.xml, GFM tables with shaded header, quotes, code blocks, bold/italic/strike, real hyperlinks); zero third-party deps; tests cover zip structure, XML well-formedness, numbering refs, hyperlink rels, escaping, plain-text fallback - ingest round-trip test proves generated docx parses back to blocks - new write_docx builtin tool (markdown in -> styled .docx artifact); write_artifact prompt now routes Word docs to it; task.doc-minutes output contract requires write_docx delivery - llm.go: artifact refs collected as deliverables and appended as content parts AFTER the final text (pinned tail, not process); mock #dogfood path generates a real styled docx; runmgr skips string indexing for binary office mimes - go test ./... 19 packages ok (incl. new e2e asserting <w:tbl> and title text inside the artifact served by the API) Impact: model-written documents open in Word/WPS with real layout and preview with formatting (mammoth maps Heading1-4 to h1-h4); every tool artifact now lands as a visible in-chat card; no behavior change for text artifacts. Refs: task feature/deliverable-docx-r1