Skip to content

feat(tools): build deck generation into doc_gen - #288

Merged
WSHAPER merged 4 commits into
mainfrom
feat/slide-deck-tool
Nov 4, 2026
Merged

WSHAPER merged 4 commits into
mainfrom
feat/slide-deck-tool

Conversation

@WSHAPER

@WSHAPER WSHAPER commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Per review feedback, deck generation lives in the doc_gen tool instead of a standalone tool, so there is exactly one tool for office document generation.

Summary

  • doc_gen's slides format now prefers the slides ExApp: when marp_slides:slide_deck_generation is registered server-side, the brief is passed as the prompt input and the task type default output format applies (no hardcoding).
  • Falls back to richdocuments:slide_deck_generation with the text input when the ExApp is not installed. Both task types answer with the slide_deck output key, so the download link construction stays shared.
  • is_available is true when richdocuments is in the capabilities OR the ExApp task type is registered, so instances with only the ExApp still get the tool for decks.
  • The standalone slide deck tool and its tests are removed.

Tests

test_doc_gen_links.py extended: marp preference, richdocuments fallback, both download link shapes and the availability matrix. Full suite: 37 passing.

Assisted by opencode with zai/glm-5.3, reviewed by WSHAPER

Add a chat tool that schedules the marp_slides ExApp's deck generation
task through the shared run_task helper. The tool takes a deck brief
(the provider's own AI authors the full Marp Markdown from it), not
slide contents, and returns the assistant download link for the
generated PPTX. Availability is gated on the task type being registered
server-side. The link correctly extracts absolute_url from the app_api
OCS response dict rather than f-stringing the whole response.

Depends on: #286

Assisted-by: opencode (zai/glm-5.3)
Signed-off-by: WSHAPER <42714629+WSHAPER@users.noreply.github.com>
@WSHAPER
WSHAPER force-pushed the feat/slide-deck-tool branch from 03dedd1 to a592c72 Compare October 25, 2026 09:58
@marcelklehr

Copy link
Copy Markdown
Member

Looks good. I wonder if we should build this into the doc_gen tool instead of potentially exposing two tools that do the same thing. What do you think?

@WSHAPER

WSHAPER commented Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

Looks good. I wonder if we should build this into the doc_gen tool instead of potentially exposing two tools that do the same thing. What do you think?

Yeah, sounds good.

The review of PR #288 asked for one tool instead of two overlapping
ones, so the standalone slide_deck tool is gone and decks are routed
through generate_document's "slides" format.

The slides case now prefers the marp_slides ExApp: when its
slide_deck_generation task type is registered server-side, dispatch
it with the "prompt" input key and no output_format key (the task
type's default applies), otherwise fall back to the existing
richdocuments:slide_deck_generation dispatch with the "text" input
key. Both task types answer with the slide_deck output key, so the
download link construction stays shared across the slides branches.
is_available also reports the tool on instances that only have the
ExApp installed, not just where richdocuments is enabled.

Assisted-by: opencode (zai/glm-5.3)
Signed-off-by: WSHAPER <42714629+WSHAPER@users.noreply.github.com>
@WSHAPER

WSHAPER commented Oct 27, 2026

Copy link
Copy Markdown
Contributor Author

Built into doc_gen in 1e3941d as suggested: the slides format prefers the marp_slides ExApp task type when registered and falls back to richdocuments' deck task otherwise, the standalone tool is gone. doc_gen is now also available on instances that only have the ExApp.

@WSHAPER WSHAPER changed the title feat(tools): add slide deck generation tool for the marp_slides ExApp feat(tools): build deck generation into doc_gen Oct 27, 2026
Comment thread ex_app/lib/all_tools/doc_gen.py Resolved
Derive the offered formats from the task processing task types registry
instead of the richdocuments capability: the docstring only lists formats
whose backing task type is registered, unservable format requests fail
soft with the available formats, and is_available is true iff at least
one format is servable.

Assisted-by: opencode (zai/glm-5.3)
Signed-off-by: WSHAPER <42714629+WSHAPER@users.noreply.github.com>
Comment thread ex_app/lib/all_tools/doc_gen.py Resolved
Co-authored-by: Marcel Klehr <mklehr@gmx.net>
Signed-off-by: Ilia Karpov <42714629+WSHAPER@users.noreply.github.com>
@WSHAPER
WSHAPER merged commit 58a085a into main Nov 4, 2026
7 of 8 checks passed
@WSHAPER
WSHAPER deleted the feat/slide-deck-tool branch November 4, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants