microsoft / microsoft/simplechat
[Generated presentations] Add durable long-form PowerPoint generation
- Dominant language
- Python
- Stars
- 152
- Forks
- 116
- Avg merge
- 7h 7m
- Merged PRs (30d)
- 122
Description
## Summary
Add durable long-form PowerPoint generation so a user, agent, or workflow can request a new PPTX from conversation, selected-source, or source-free evidence and receive an authorized downloadable artifact without relying on synchronous single-message export.
This is generation of a new presentation, not editing an existing deck or applying a user-provided template.
## User Value
The current PowerPoint export is useful for short assistant messages, but users need complete 20-, 30-, and larger-slide decks: executive briefings, analysis reports, training material, proposals, and operational presentations. Those workloads require staged planning, slide-level quality controls, media/table/chart layout, and durable execution beyond one browser request.
## Current Limitation
`/api/message/export-powerpoint` builds a deck synchronously from one message and returns an immediate browser download. It limits requested decks to 30 slides (with a 60-slide structured-markdown path) and has no durable job record, checkpointed slide generation, cancellation, resume/retry semantics, progress reporting, or artifact publication lifecycle for large decks.
## Proposed Behavior
- Build a new PPTX through Chat, Search, selected agents, Analyze, Compare, workflows, or source-free prompts.
- Use a hierarchical deck plan: audience/purpose and outline, slide specifications, bounded slide-content generation, deterministic layout/rendering, deck-level validation, and final package publication.
- Support reliably producing 20- and 30-slide decks, with configured higher limits based on measured resource and quality gates.
- Use the generic durable generated-artifact job contract shared with #1071: persisted states, leases, checkpoints, cancellation, retry, source/revision reauthorization, idempotent artifact publication, and progress delivery.
- Keep PowerPoint-specific planning, visual/layout adaptation, chart/image/table placement, and PPTX package validation in a dedicated renderer adapter; do not repurpose the tabular CSV executor.
- Preserve existing immediate per-message PowerPoint export for small decks where appropriate.
## Acceptance Criteria
- [ ] Users can request a new PPTX through supported generation paths without first exporting a single assistant message.
- [ ] The capability reliably produces at least 20- and 30-slide decks from a persisted outline and slide plan; configured higher limits are bounded by resource and quality policy.
- [ ] Each slide is checkpointed with stable identity, source/evidence linkage where applicable, and a clear terminal result; a worker restart can resume safely without duplicating slides or artifacts.
- [ ] The job exposes queued, running, completed, failed, and canceled states; supports authorized cancellation, retry/resume where safe, and progress visible from the originating conversation.
- [ ] Source access, source revision, conversation authorization, and any artifact/media references are revalidated at execution and before publication.
- [ ] Slide rendering handles supported text, bullets, tables, charts, images, citations/notes, title/section slides, and appendix material without silently dropping planned content.
- [ ] Layout validation catches overflowing or empty slide bodies, missing required slides, unreadable content, invalid media, package corruption, and incomplete coverage before publishing a complete result.
- [ ] Partial-generation and unsupported-content states are explicit; incomplete decks are not presented as complete deliverables.
- [ ] Completion creates one authorized downloadable PPTX chat artifact with existing workspace promotion support and no duplicate publication on retry.
- [ ] Existing small per-message PowerPoint export remains compatible and does not require a background job.
- [ ] Functional tests cover 20/30-slide generation, structured deck input, checkpoint/restart, cancellation, retry, authorization loss, source revision changes, media/table/chart layout, package round-trip validation, and artifact download authorization.
## Non-Goals
- Editing existing PowerPoint files, tracked by #969 and #999.
- User-provided template selection or placeholder mapping, tracked by #968.
- Reusing the tabular CSV/JSON batch executor as the PPTX renderer.
## Related Work
- #1071 establishes the universal CSV output capability and should drive extraction of format-neutral durable artifact/job primitives.
- #1072 tracks durable long-form Word generation using the same generic job/artifact framework with a DOCX-specific renderer.
- #482 delivered the original basic Word/PowerPoint/Excel/CSV output capability; this issue extends its PowerPoint portion to large, durable deck generation.
Contributor guide
Assessment
This issue has not been assessed yet.