microsoft / microsoft/simplechat

[Generated presentations] Add durable long-form PowerPoint generation

Open
#1,073 0 comments 0 reactions 1 assignee Claimed by @paullizer View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.