LICENSE
README.md
pyproject.toml
src/shuttleslide/__init__.py
src/shuttleslide/cli.py
src/shuttleslide.egg-info/PKG-INFO
src/shuttleslide.egg-info/SOURCES.txt
src/shuttleslide.egg-info/dependency_links.txt
src/shuttleslide.egg-info/entry_points.txt
src/shuttleslide.egg-info/requires.txt
src/shuttleslide.egg-info/top_level.txt
src/shuttleslide/_vendored/__init__.py
src/shuttleslide/_vendored/svg_to_pptx/__init__.py
src/shuttleslide/_vendored/svg_to_pptx/animation_config.py
src/shuttleslide/_vendored/svg_to_pptx/drawingml_context.py
src/shuttleslide/_vendored/svg_to_pptx/drawingml_converter.py
src/shuttleslide/_vendored/svg_to_pptx/drawingml_elements.py
src/shuttleslide/_vendored/svg_to_pptx/drawingml_paths.py
src/shuttleslide/_vendored/svg_to_pptx/drawingml_styles.py
src/shuttleslide/_vendored/svg_to_pptx/drawingml_utils.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_builder.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_cli.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_dimensions.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_discovery.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_media.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_narration.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_notes.py
src/shuttleslide/_vendored/svg_to_pptx/pptx_slide_xml.py
src/shuttleslide/_vendored/svg_to_pptx/tspan_flattener.py
src/shuttleslide/_vendored/svg_to_pptx/use_expander.py
src/shuttleslide/agent/__init__.py
src/shuttleslide/agent/asyncio_diag.py
src/shuttleslide/agent/callbacks.py
src/shuttleslide/agent/cdn_assets.py
src/shuttleslide/agent/config.py
src/shuttleslide/agent/dsl_to_html.py
src/shuttleslide/agent/geometry.py
src/shuttleslide/agent/html_contract.py
src/shuttleslide/agent/html_guide.py
src/shuttleslide/agent/orchestrator.py
src/shuttleslide/agent/prompts.py
src/shuttleslide/agent/state.py
src/shuttleslide/agent/theme_tokens.py
src/shuttleslide/agent/llm/__init__.py
src/shuttleslide/agent/llm/client.py
src/shuttleslide/agent/llm/tool_call.py
src/shuttleslide/agent/nodes/__init__.py
src/shuttleslide/agent/nodes/image_acquirer.py
src/shuttleslide/agent/nodes/outline_planner.py
src/shuttleslide/agent/nodes/slide_builder.py
src/shuttleslide/agent/nodes/theme_designer.py
src/shuttleslide/agent/nodes/image_sources/__init__.py
src/shuttleslide/agent/nodes/image_sources/acquire.py
src/shuttleslide/agent/nodes/image_sources/bing_web.py
src/shuttleslide/agent/nodes/image_sources/describer.py
src/shuttleslide/agent/nodes/image_sources/screenshot.py
src/shuttleslide/agent/nodes/image_sources/search.py
src/shuttleslide/agent/nodes/image_sources/verifier.py
src/shuttleslide/agent/review/__init__.py
src/shuttleslide/agent/review/broadcaster.py
src/shuttleslide/agent/review/core_stages.py
src/shuttleslide/agent/review/house_rules_hook.py
src/shuttleslide/agent/review/input_extract.py
src/shuttleslide/agent/review/interactive_orchestrator.py
src/shuttleslide/agent/review/item_regenerator.py
src/shuttleslide/agent/review/mock_orchestrator.py
src/shuttleslide/agent/review/outline_mutation.py
src/shuttleslide/agent/review/registry.py
src/shuttleslide/agent/review/review_gate.py
src/shuttleslide/agent/review/server.py
src/shuttleslide/agent/review/sessions.py
src/shuttleslide/agent/review/snapshots.py
src/shuttleslide/agent/review/stage.py
src/shuttleslide/agent/review/stale.py
src/shuttleslide/agent/review/stale_propagation.py
src/shuttleslide/agent/review/state_persistence.py
src/shuttleslide/agent/review/ws_protocol.py
src/shuttleslide/agent/review/editors/__init__.py
src/shuttleslide/agent/review/editors/base.py
src/shuttleslide/agent/review/editors/image_uploader.py
src/shuttleslide/agent/review/editors/json_editor.py
src/shuttleslide/agent/review/editors/slide_editor.py
src/shuttleslide/agent/review/editors/svg_editor.py
src/shuttleslide/agent/review/static/app.js
src/shuttleslide/agent/review/static/index.html
src/shuttleslide/agent/review/static/styles.css
src/shuttleslide/agent/templates/__init__.py
src/shuttleslide/agent/templates/presentation.html.j2
src/shuttleslide/agent/templates/layouts/free_form.html.j2
src/shuttleslide/agent/tools/__init__.py
src/shuttleslide/agent/tools/outline_tools.py
src/shuttleslide/agent/tools/registry.py
src/shuttleslide/agent/tools/slide_tools.py
src/shuttleslide/agent/tools/svg_tools.py
src/shuttleslide/agent/tools/theme_tools.py
src/shuttleslide/extensions/__init__.py
src/shuttleslide/extensions/cli_registry.py
src/shuttleslide/html_to_pptx/__init__.py
src/shuttleslide/html_to_pptx/font_embedder.py
src/shuttleslide/html_to_pptx/fonts.py
src/shuttleslide/html_to_pptx/html_utils.py
src/shuttleslide/html_to_pptx/image_utils.py
src/shuttleslide/html_to_pptx/layouts.py
src/shuttleslide/html_to_pptx/renderer.py
src/shuttleslide/html_to_pptx/schema.py
src/shuttleslide/html_to_pptx/style_mapper.py
src/shuttleslide/html_to_pptx/vector_icon.py
src/shuttleslide/html_to_pptx/analyzer/__init__.py
src/shuttleslide/html_to_pptx/analyzer/browser.py
src/shuttleslide/html_to_pptx/analyzer/extractor.py
src/shuttleslide/html_to_pptx/js/extract_background.js
src/shuttleslide/html_to_pptx/js/extract_layout.js
src/shuttleslide/html_to_pptx/js/extract_theme.js
src/shuttleslide/html_to_pptx/rule/__init__.py
src/shuttleslide/html_to_pptx/rule/classifier.py
src/shuttleslide/html_to_pptx/rule/containment.py
src/shuttleslide/html_to_pptx/rule/converter.py
src/shuttleslide/html_to_pptx/rule/layout.py
src/shuttleslide/html_to_pptx/rule/transformer.py
src/shuttleslide/pptx_to_html/__init__.py
src/shuttleslide/pptx_to_html/models.py
src/shuttleslide/pptx_to_html/text_measure.py
src/shuttleslide/pptx_to_html/theme_colors.py
src/shuttleslide/pptx_to_html/converters/__init__.py
src/shuttleslide/pptx_to_html/converters/images.py
src/shuttleslide/pptx_to_html/converters/shapes.py
src/shuttleslide/pptx_to_html/converters/svg_generator.py
src/shuttleslide/pptx_to_html/converters/tables.py
src/shuttleslide/pptx_to_html/converters/text.py
src/shuttleslide/pptx_to_html/converters/ecma_geometry/__init__.py
src/shuttleslide/pptx_to_html/converters/ecma_geometry/coordinate_system.py
src/shuttleslide/pptx_to_html/converters/ecma_geometry/formula_engine.py
src/shuttleslide/pptx_to_html/converters/ecma_geometry/parser.py
src/shuttleslide/pptx_to_html/converters/ecma_geometry/path_converter.py
src/shuttleslide/pptx_to_html/converters/ecma_geometry/preset_cache.py
src/shuttleslide/pptx_to_html/data/presetShapeDefinitions.xml
src/shuttleslide/pptx_to_html/layouts/base.py
src/shuttleslide/pptx_to_html/layouts/flow.py
src/shuttleslide/pptx_to_html/layouts/pptview.py
src/shuttleslide/pptx_to_html/layouts/slideshow.py
src/shuttleslide/pptx_to_html/parser/__init__.py
src/shuttleslide/pptx_to_html/parser/background_mixin.py
src/shuttleslide/pptx_to_html/parser/bullets_mixin.py
src/shuttleslide/pptx_to_html/parser/color_mixin.py
src/shuttleslide/pptx_to_html/parser/core.py
src/shuttleslide/pptx_to_html/parser/group_mixin.py
src/shuttleslide/pptx_to_html/parser/image_mixin.py
src/shuttleslide/pptx_to_html/parser/master_styles_mixin.py
src/shuttleslide/pptx_to_html/parser/shape_mixin.py
src/shuttleslide/pptx_to_html/parser/table_mixin.py
src/shuttleslide/pptx_to_html/parser/text_mixin.py
src/shuttleslide/pptx_to_html/templates/pptview.css
src/shuttleslide/pptx_to_html/templates/pptview.html
src/shuttleslide/pptx_to_html/templates/pptview.js
src/shuttleslide/pptx_to_html/templates/slideshow.css
src/shuttleslide/pptx_to_html/templates/slideshow.html
src/shuttleslide/pptx_to_html/templates/slideshow.js
src/shuttleslide/pptx_to_html/utils/__init__.py
src/shuttleslide/pptx_to_html/utils/colors.py
src/shuttleslide/pptx_to_html/utils/namespaces.py
src/shuttleslide/pptx_to_html/utils/text_sanitizer.py
src/shuttleslide/pptx_to_html/utils/units.py
tests/test_agent_canvas_dimensions.py
tests/test_agent_config.py
tests/test_autofit_parsing.py
tests/test_build_new_slide_broadcast.py
tests/test_canvas_persist_regression.py
tests/test_canvas_review_e2e.py
tests/test_cli_output_path.py
tests/test_core_stages.py
tests/test_describer.py
tests/test_edit_cancellation.py
tests/test_editors.py
tests/test_extensions_cli_registry.py
tests/test_font_parser.py
tests/test_geometry_aspect_ratio.py
tests/test_house_rules_hook.py
tests/test_image_acquirer.py
tests/test_image_uploader_description.py
tests/test_interactive_orchestrator.py
tests/test_interactive_orchestrator_e2e.py
tests/test_interactive_orchestrator_edit.py
tests/test_line_spacing_accuracy.py
tests/test_llm_client.py
tests/test_load_run_ratio_restore.py
tests/test_outline_mutation.py
tests/test_paragraph_spacing_accuracy.py
tests/test_parser_inheritance.py
tests/test_pipeline_done_collapse.py
tests/test_pptx_to_html.py
tests/test_progressive_outline.py
tests/test_regenerate_coordinator.py
tests/test_review_gate.py
tests/test_review_server.py
tests/test_review_snapshots.py
tests/test_review_ui_extensions.py
tests/test_slide_builder_prompt_canvas.py
tests/test_stage_registry.py
tests/test_stale_propagation.py
tests/test_stale_store.py
tests/test_state_persistence.py
tests/test_svg_dimensions.py
tests/test_svg_externalization.py
tests/test_svg_to_pptx_per_paragraph_spacing.py
tests/test_table_cell_styling.py
tests/test_text_autonum.py
tests/test_text_measurer.py
tests/test_text_shrink.py
tests/test_text_whitespace_runs.py
tests/test_theme_contrast.py
tests/test_theme_propagation.py
tests/test_theme_tokens.py