# henryhyw/slidepoise architecture

> Architecture diagram of the GitHub repository henryhyw/slidepoise, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/henryhyw/slidepoise
- Repository: https://github.com/henryhyw/slidepoise

## Overview

SlidePoise is an agentic presentation framework: an Agent develops the deck plan, explores visual compositions, reconstructs selected designs as editable PowerPoint objects, and reviews rendered slides. The graph preserves those stages plus shared style/assets and the optional management console. README documentation supports the workflow; sampled runtime code confirms scene-to-PowerPoint rendering and reconstruction checks, but not every handoff or review call, so uncertain links are omitted.

Main entry points: [`webapp/server.py`](https://github.com/henryhyw/slidepoise/blob/main/webapp/server.py) (Management Console), [`slidepoise/runtime/src/slidepoise/reconstruction/scene.py`](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/reconstruction/scene.py) (Scene Reconstruction), [`framework/image_generation.py`](https://github.com/henryhyw/slidepoise/blob/main/framework/image_generation.py) (Image Generation), [`slidepoise/runtime/src/slidepoise/preview_tools.py`](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/preview_tools.py) (Rendered Review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Deck Workflow"]
  node_plan["Deck Planning"]
  node_design["Visual Design"]
  node_imagegen["Image Generation"]
  node_interpret["Design Interpretation"]
  node_review["Rendered Review<br/>[preview_tools.py]"]
end

subgraph group_runtime["Reconstruction Runtime"]
  node_measure["Scene Measurement"]
  node_reconstruct["Scene Reconstruction<br/>[scene.py]"]
  node_coverage["Content Validation<br/>[coverage.py]"]
  node_render["PowerPoint Renderer<br/>[scene_to_pptx.mjs]"]
  node_textcheck["Text Audit"]
end

subgraph group_context["Shared Context"]
  node_profiles[("Profiles<br/>[profiles.py]")]
  node_designconfig[("Design Settings<br/>[design.py]")]
  node_libraries[("Asset Libraries<br/>[library_sets.py]")]
  node_sessions[("Presentation Sessions<br/>[sessions.py]")]
end

subgraph group_management["Local Management"]
  node_console["Management Console<br/>[server.py]"]
  node_consoleui["Console UI<br/>[app.js]"]
  node_sessionui["Session Panel<br/>[app.js]"]
end

node_agent(("AI Agent"))
node_pptx["Editable PowerPoint"]

node_agent -->|"develops brief"| node_plan
node_plan -->|"guides composition"| node_design
node_design -->|"requests concepts"| node_imagegen
node_imagegen -->|"returns images"| node_design
node_design -->|"selected design"| node_interpret
node_agent -->|"identifies elements"| node_interpret
node_interpret -->|"submits scene"| node_measure
node_measure -->|"provides geometry"| node_reconstruct
node_reconstruct -->|"checks obligations"| node_coverage
node_reconstruct -->|"provides scene"| node_render
node_render -->|"writes deck"| node_pptx
node_pptx -->|"renders slides"| node_review
node_review -->|"provides evidence"| node_agent
node_pptx -->|"audits text"| node_textcheck
node_profiles -->|"guides style"| node_design
node_designconfig -->|"sets defaults"| node_design
node_libraries -->|"supplies assets"| node_design
node_sessions -->|"stores run context"| node_plan
node_consoleui -->|"calls API"| node_console
node_sessionui -->|"calls API"| node_console
node_console -->|"authors profiles"| node_profiles
node_console -->|"manages resources"| node_libraries
node_console -->|"manages sessions"| node_sessions

click node_imagegen "https://github.com/henryhyw/slidepoise/blob/main/framework/image_generation.py"
click node_measure "https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/scripts/measure_visual_scene.py"
click node_reconstruct "https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/reconstruction/scene.py"
click node_coverage "https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/reconstruction/coverage.py"
click node_render "https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/js/scene_to_pptx.mjs"
click node_review "https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/preview_tools.py"
click node_textcheck "https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/scripts/audit_powerpoint_text.py"
click node_profiles "https://github.com/henryhyw/slidepoise/blob/main/framework/profiles.py"
click node_designconfig "https://github.com/henryhyw/slidepoise/blob/main/framework/design.py"
click node_libraries "https://github.com/henryhyw/slidepoise/blob/main/framework/library_sets.py"
click node_sessions "https://github.com/henryhyw/slidepoise/blob/main/framework/sessions.py"
click node_console "https://github.com/henryhyw/slidepoise/blob/main/webapp/server.py"
click node_consoleui "https://github.com/henryhyw/slidepoise/blob/main/webapp/console/app.js"
click node_sessionui "https://github.com/henryhyw/slidepoise/blob/main/webapp/ui/app.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_plan,node_design,node_imagegen,node_interpret,node_review toneBlue
class node_measure,node_reconstruct,node_coverage,node_render,node_textcheck toneAmber
class node_profiles,node_designconfig,node_libraries,node_sessions toneMint
class node_console,node_consoleui,node_sessionui toneRose
class node_agent,node_pptx toneIndigo
```

## Components

### Deck Workflow

- **Deck Planning**
- **Visual Design**
- [Image Generation](https://github.com/henryhyw/slidepoise/blob/main/framework/image_generation.py): `framework/image_generation.py`
- **Design Interpretation**
- [Rendered Review](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/preview_tools.py): `slidepoise/runtime/src/slidepoise/preview_tools.py`

### Reconstruction Runtime

- [Scene Measurement](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/scripts/measure_visual_scene.py): `slidepoise/runtime/scripts/measure_visual_scene.py`
- [Scene Reconstruction](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/reconstruction/scene.py): `slidepoise/runtime/src/slidepoise/reconstruction/scene.py`
- [Content Validation](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/src/slidepoise/reconstruction/coverage.py): `slidepoise/runtime/src/slidepoise/reconstruction/coverage.py`
- [PowerPoint Renderer](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/js/scene_to_pptx.mjs): `slidepoise/runtime/js/scene_to_pptx.mjs`
- [Text Audit](https://github.com/henryhyw/slidepoise/blob/main/slidepoise/runtime/scripts/audit_powerpoint_text.py): `slidepoise/runtime/scripts/audit_powerpoint_text.py`

### Shared Context

- [Profiles](https://github.com/henryhyw/slidepoise/blob/main/framework/profiles.py): `framework/profiles.py`
- [Design Settings](https://github.com/henryhyw/slidepoise/blob/main/framework/design.py): `framework/design.py`
- [Asset Libraries](https://github.com/henryhyw/slidepoise/blob/main/framework/library_sets.py): `framework/library_sets.py`
- [Presentation Sessions](https://github.com/henryhyw/slidepoise/blob/main/framework/sessions.py): `framework/sessions.py`

### Local Management

- [Management Console](https://github.com/henryhyw/slidepoise/blob/main/webapp/server.py): `webapp/server.py`
- [Console UI](https://github.com/henryhyw/slidepoise/blob/main/webapp/console/app.js): `webapp/console/app.js`
- [Session Panel](https://github.com/henryhyw/slidepoise/blob/main/webapp/ui/app.js): `webapp/ui/app.js`

### Other components

- **AI Agent**
- **Editable PowerPoint**

## Connections

- AI Agent → Deck Planning: develops brief
- Deck Planning → Visual Design: guides composition
- Visual Design → Image Generation: requests concepts
- Image Generation → Visual Design: returns images
- Visual Design → Design Interpretation: selected design
- AI Agent → Design Interpretation: identifies elements
- Design Interpretation → Scene Measurement: submits scene
- Scene Measurement → Scene Reconstruction: provides geometry
- Scene Reconstruction → Content Validation: checks obligations
- Scene Reconstruction → PowerPoint Renderer: provides scene
- PowerPoint Renderer → Editable PowerPoint: writes deck
- Editable PowerPoint → Rendered Review: renders slides
- Rendered Review → AI Agent: provides evidence
- Editable PowerPoint → Text Audit: audits text
- Profiles → Visual Design: guides style
- Design Settings → Visual Design: sets defaults
- Asset Libraries → Visual Design: supplies assets
- Presentation Sessions → Deck Planning: stores run context
- Console UI → Management Console: calls API
- Session Panel → Management Console: calls API
- Management Console → Profiles: authors profiles
- Management Console → Asset Libraries: manages resources
- Management Console → Presentation Sessions: manages sessions
