assgen 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- assgen-0.3.0/.dockerignore +26 -0
- assgen-0.3.0/.github/copilot-instructions.md +8 -0
- assgen-0.3.0/.github/hooks/hooks.json +29 -0
- assgen-0.3.0/.github/workflows/ci.yml +92 -0
- assgen-0.3.0/.github/workflows/docs.yml +50 -0
- assgen-0.3.0/.github/workflows/release.yml +429 -0
- assgen-0.3.0/.gitignore +57 -0
- assgen-0.3.0/.idea/runConfigurations/assgen_cli.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/assgen_server.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/pytest_all_tests.xml +40 -0
- assgen-0.3.0/.idea/runConfigurations/pytest_debug_mode.xml +41 -0
- assgen-0.3.0/.idea/runConfigurations/pytest_watch_mode.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/pytest_with_profiling.xml +40 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_animate_keyframe.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_animate_mocap.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_ambient_generate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_music_adaptive.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_music_compose.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_music_loop.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_process_convert.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_process_downmix.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_process_loop_optimize.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_process_normalize.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_process_resample.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_process_trim_silence.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_process_waveform.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_sfx_generate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_voice_clone.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_audio_voice_tts.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_blockout_create.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_concept_generate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_concept_style.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_lod_generate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_bounds.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_center.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_convert.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_flipnormals.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_merge.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_scale.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_validate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_mesh_weld.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_model_create.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_model_multiview.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_model_splat.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_narrative_dialogue_npc.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_narrative_dialogue_validate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_narrative_lore_generate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_narrative_quest_design.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_narrative_quest_validate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_procedural_foliage_scatter.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_procedural_level_dungeon.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_procedural_level_voronoi.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_procedural_plant_lsystem.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_procedural_terrain_heightmap.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_procedural_texture_noise.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_procedural_tileset_wfc.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_rig_auto.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_scene_depth_estimate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_scene_lighting_hdri.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_scene_physics_collider.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_sprite_pack.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_atlas_pack.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_channel_pack.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_convert.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_from_concept.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_generate.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_inpaint.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_mipmap.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_normalmap_convert.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_pbr.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_report.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_resize.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_seamless.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_texture_upscale.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_button.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_icon.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_iconset.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_layout.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_mockup.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_panel.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_screen.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_theme.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_ui_widget.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_uv_auto.xml +25 -0
- assgen-0.3.0/.idea/runConfigurations/space_assgen_vfx_particle.xml +25 -0
- assgen-0.3.0/.python-version +1 -0
- assgen-0.3.0/CLAUDE.md +8 -0
- assgen-0.3.0/Makefile +48 -0
- assgen-0.3.0/PERSONAS.md +238 -0
- assgen-0.3.0/PKG-INFO +735 -0
- assgen-0.3.0/README.md +680 -0
- assgen-0.3.0/RELEASING.md +153 -0
- assgen-0.3.0/choco/assgen.nuspec +21 -0
- assgen-0.3.0/choco/tools/chocolateyinstall.ps1 +13 -0
- assgen-0.3.0/choco/tools/chocolateyuninstall.ps1 +8 -0
- assgen-0.3.0/demos/01_version.tape +23 -0
- assgen-0.3.0/demos/02_task_tree.tape +37 -0
- assgen-0.3.0/demos/03_models_catalog.tape +30 -0
- assgen-0.3.0/demos/04_config.tape +37 -0
- assgen-0.3.0/demos/05_server.tape +28 -0
- assgen-0.3.0/demos/06_gen_procedural.tape +23 -0
- assgen-0.3.0/demos/07_compose_pipeline.tape +23 -0
- assgen-0.3.0/demos/08_jobs.tape +23 -0
- assgen-0.3.0/demos/09_output_formats.tape +28 -0
- assgen-0.3.0/demos/10_upgrade.tape +23 -0
- assgen-0.3.0/demos/_settings.tape +8 -0
- assgen-0.3.0/docker/Dockerfile.client +48 -0
- assgen-0.3.0/docker/Dockerfile.server +51 -0
- assgen-0.3.0/docker/Dockerfile.server-cuda +59 -0
- assgen-0.3.0/docker-compose.yml +90 -0
- assgen-0.3.0/docs/PYCHARM_SETUP.md +134 -0
- assgen-0.3.0/docs/api-reference.md +97 -0
- assgen-0.3.0/docs/cli-reference.md +534 -0
- assgen-0.3.0/docs/compose-pipelines.md +333 -0
- assgen-0.3.0/docs/configuration.md +94 -0
- assgen-0.3.0/docs/contributing.md +138 -0
- assgen-0.3.0/docs/design/20260411_120000_UTC_hf_spaces_feasibility.md +282 -0
- assgen-0.3.0/docs/design/20260411_120100_UTC_hf_spaces_spec_tier1.md +1098 -0
- assgen-0.3.0/docs/design/20260411_120200_UTC_hf_spaces_spec_tier2_tier3.md +887 -0
- assgen-0.3.0/docs/design/20260411_120300_UTC_repo_health_improvements.md +570 -0
- assgen-0.3.0/docs/design/20260411_120400_UTC_hf_spaces_packaging_and_sdk.md +670 -0
- assgen-0.3.0/docs/design/20260411_120500_UTC_hf_spaces_implementation_risks.md +417 -0
- assgen-0.3.0/docs/design/20260411_130000_UTC_agent_briefing.md +295 -0
- assgen-0.3.0/docs/design/20260411_131500_UTC_pycharm_run_configs.md +321 -0
- assgen-0.3.0/docs/gen_pages.py +347 -0
- assgen-0.3.0/docs/index.md +102 -0
- assgen-0.3.0/docs/install.md +123 -0
- assgen-0.3.0/docs/introspect/20260328_161334-UTC_CHECKPOINT.md +455 -0
- assgen-0.3.0/docs/model-validation.md +99 -0
- assgen-0.3.0/docs/openapi.json +908 -0
- assgen-0.3.0/docs/quickstart.md +161 -0
- assgen-0.3.0/docs/server-setup.md +302 -0
- assgen-0.3.0/docs/stylesheets/extra.css +20 -0
- assgen-0.3.0/docs/ux-design.md +274 -0
- assgen-0.3.0/docs/workflow-audio-designer.md +231 -0
- assgen-0.3.0/docs/workflow-character-artist.md +203 -0
- assgen-0.3.0/docs/workflow-ci-pipeline.md +289 -0
- assgen-0.3.0/docs/workflow-environment-artist.md +238 -0
- assgen-0.3.0/docs/workflow-solo-indie.md +216 -0
- assgen-0.3.0/mkdocs.yml +129 -0
- assgen-0.3.0/pyinstaller/assgen-client.spec +129 -0
- assgen-0.3.0/pyproject.toml +128 -0
- assgen-0.3.0/scripts/export_openapi.py +74 -0
- assgen-0.3.0/scripts/generate_run_configs.py +147 -0
- assgen-0.3.0/scripts/record-demo.sh +58 -0
- assgen-0.3.0/scripts/smoke_test_inference.py +165 -0
- assgen-0.3.0/scripts/sync_spaces.py +162 -0
- assgen-0.3.0/spaces/_template/README.md +25 -0
- assgen-0.3.0/spaces/_template/app.py +43 -0
- assgen-0.3.0/spaces/assgen.audio.music.compose/README.md +27 -0
- assgen-0.3.0/spaces/assgen.audio.music.compose/app.py +57 -0
- assgen-0.3.0/spaces/assgen.audio.sfx.generate/README.md +27 -0
- assgen-0.3.0/spaces/assgen.audio.sfx.generate/app.py +58 -0
- assgen-0.3.0/spaces/assgen.audio.voice.tts/README.md +27 -0
- assgen-0.3.0/spaces/assgen.audio.voice.tts/app.py +70 -0
- assgen-0.3.0/spaces/assgen.concept.generate/README.md +28 -0
- assgen-0.3.0/spaces/assgen.concept.generate/app.py +68 -0
- assgen-0.3.0/spaces/assgen.model.create/README.md +32 -0
- assgen-0.3.0/spaces/assgen.model.create/app.py +63 -0
- assgen-0.3.0/spaces/assgen.narrative.dialogue.npc/README.md +27 -0
- assgen-0.3.0/spaces/assgen.narrative.dialogue.npc/app.py +74 -0
- assgen-0.3.0/spaces/assgen.procedural.terrain.heightmap/README.md +27 -0
- assgen-0.3.0/spaces/assgen.procedural.terrain.heightmap/app.py +59 -0
- assgen-0.3.0/spaces/assgen.scene.depth.estimate/README.md +28 -0
- assgen-0.3.0/spaces/assgen.scene.depth.estimate/app.py +63 -0
- assgen-0.3.0/spaces/assgen.texture.generate/README.md +28 -0
- assgen-0.3.0/spaces/assgen.texture.generate/app.py +66 -0
- assgen-0.3.0/spaces/assgen.texture.upscale/README.md +28 -0
- assgen-0.3.0/spaces/assgen.texture.upscale/app.py +65 -0
- assgen-0.3.0/src/assgen/__init__.py +3 -0
- assgen-0.3.0/src/assgen/__main__.py +12 -0
- assgen-0.3.0/src/assgen/_version.py +24 -0
- assgen-0.3.0/src/assgen/catalog.py +122 -0
- assgen-0.3.0/src/assgen/catalog.yaml +572 -0
- assgen-0.3.0/src/assgen/client/__init__.py +1 -0
- assgen-0.3.0/src/assgen/client/api.py +209 -0
- assgen-0.3.0/src/assgen/client/auto_server.py +163 -0
- assgen-0.3.0/src/assgen/client/cli.py +142 -0
- assgen-0.3.0/src/assgen/client/commands/__init__.py +1 -0
- assgen-0.3.0/src/assgen/client/commands/audio/__init__.py +1 -0
- assgen-0.3.0/src/assgen/client/commands/audio/music.py +79 -0
- assgen-0.3.0/src/assgen/client/commands/audio/process.py +122 -0
- assgen-0.3.0/src/assgen/client/commands/audio/sfx.py +94 -0
- assgen-0.3.0/src/assgen/client/commands/audio/voice.py +75 -0
- assgen-0.3.0/src/assgen/client/commands/client_cmd.py +133 -0
- assgen-0.3.0/src/assgen/client/commands/compose.py +882 -0
- assgen-0.3.0/src/assgen/client/commands/config.py +658 -0
- assgen-0.3.0/src/assgen/client/commands/gen.py +111 -0
- assgen-0.3.0/src/assgen/client/commands/jobs.py +259 -0
- assgen-0.3.0/src/assgen/client/commands/models.py +161 -0
- assgen-0.3.0/src/assgen/client/commands/pipeline.py +326 -0
- assgen-0.3.0/src/assgen/client/commands/procedural.py +177 -0
- assgen-0.3.0/src/assgen/client/commands/qa.py +90 -0
- assgen-0.3.0/src/assgen/client/commands/scene/__init__.py +1 -0
- assgen-0.3.0/src/assgen/client/commands/scene/lighting.py +86 -0
- assgen-0.3.0/src/assgen/client/commands/scene/physics.py +88 -0
- assgen-0.3.0/src/assgen/client/commands/server.py +249 -0
- assgen-0.3.0/src/assgen/client/commands/submit.py +208 -0
- assgen-0.3.0/src/assgen/client/commands/support.py +166 -0
- assgen-0.3.0/src/assgen/client/commands/tasks.py +418 -0
- assgen-0.3.0/src/assgen/client/commands/upgrade.py +210 -0
- assgen-0.3.0/src/assgen/client/commands/visual/__init__.py +1 -0
- assgen-0.3.0/src/assgen/client/commands/visual/animate.py +95 -0
- assgen-0.3.0/src/assgen/client/commands/visual/blockout.py +70 -0
- assgen-0.3.0/src/assgen/client/commands/visual/concept.py +74 -0
- assgen-0.3.0/src/assgen/client/commands/visual/lod.py +32 -0
- assgen-0.3.0/src/assgen/client/commands/visual/mesh.py +115 -0
- assgen-0.3.0/src/assgen/client/commands/visual/model.py +159 -0
- assgen-0.3.0/src/assgen/client/commands/visual/rig.py +63 -0
- assgen-0.3.0/src/assgen/client/commands/visual/sprite.py +29 -0
- assgen-0.3.0/src/assgen/client/commands/visual/texture.py +227 -0
- assgen-0.3.0/src/assgen/client/commands/visual/ui_cmd.py +328 -0
- assgen-0.3.0/src/assgen/client/commands/visual/uv.py +63 -0
- assgen-0.3.0/src/assgen/client/commands/visual/vfx.py +67 -0
- assgen-0.3.0/src/assgen/client/compose.py +108 -0
- assgen-0.3.0/src/assgen/client/context.py +113 -0
- assgen-0.3.0/src/assgen/client/output.py +431 -0
- assgen-0.3.0/src/assgen/config.py +161 -0
- assgen-0.3.0/src/assgen/db.py +370 -0
- assgen-0.3.0/src/assgen/sdk.py +124 -0
- assgen-0.3.0/src/assgen/server/__init__.py +1 -0
- assgen-0.3.0/src/assgen/server/app.py +215 -0
- assgen-0.3.0/src/assgen/server/cli.py +197 -0
- assgen-0.3.0/src/assgen/server/handlers/__init__.py +8 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_ambient_generate.py +58 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_music_adaptive.py +54 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_music_compose.py +77 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_music_loop.py +120 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_process_convert.py +58 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_process_downmix.py +64 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_process_loop_optimize.py +127 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_process_normalize.py +89 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_process_resample.py +54 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_process_trim_silence.py +66 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_process_waveform.py +96 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_sfx_generate.py +77 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_voice_clone.py +64 -0
- assgen-0.3.0/src/assgen/server/handlers/audio_voice_tts.py +114 -0
- assgen-0.3.0/src/assgen/server/handlers/mesh_utils.py +108 -0
- assgen-0.3.0/src/assgen/server/handlers/narrative_dialogue_npc.py +189 -0
- assgen-0.3.0/src/assgen/server/handlers/narrative_dialogue_validate.py +118 -0
- assgen-0.3.0/src/assgen/server/handlers/narrative_i18n_extract.py +88 -0
- assgen-0.3.0/src/assgen/server/handlers/narrative_lore_generate.py +112 -0
- assgen-0.3.0/src/assgen/server/handlers/narrative_quest_design.py +130 -0
- assgen-0.3.0/src/assgen/server/handlers/narrative_quest_validate.py +149 -0
- assgen-0.3.0/src/assgen/server/handlers/pipeline_asset_manifest.py +75 -0
- assgen-0.3.0/src/assgen/server/handlers/pipeline_asset_rename.py +125 -0
- assgen-0.3.0/src/assgen/server/handlers/pipeline_asset_report.py +90 -0
- assgen-0.3.0/src/assgen/server/handlers/pipeline_asset_validate.py +104 -0
- assgen-0.3.0/src/assgen/server/handlers/pipeline_git_lfs_rules.py +102 -0
- assgen-0.3.0/src/assgen/server/handlers/pipeline_integrate_export.py +152 -0
- assgen-0.3.0/src/assgen/server/handlers/procedural_foliage_scatter.py +129 -0
- assgen-0.3.0/src/assgen/server/handlers/procedural_level_dungeon.py +167 -0
- assgen-0.3.0/src/assgen/server/handlers/procedural_level_voronoi.py +104 -0
- assgen-0.3.0/src/assgen/server/handlers/procedural_plant_lsystem.py +144 -0
- assgen-0.3.0/src/assgen/server/handlers/procedural_terrain_heightmap.py +115 -0
- assgen-0.3.0/src/assgen/server/handlers/procedural_texture_noise.py +116 -0
- assgen-0.3.0/src/assgen/server/handlers/procedural_tileset_wfc.py +158 -0
- assgen-0.3.0/src/assgen/server/handlers/scene_depth_estimate.py +85 -0
- assgen-0.3.0/src/assgen/server/handlers/scene_lighting_hdri.py +91 -0
- assgen-0.3.0/src/assgen/server/handlers/scene_physics_collider.py +104 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_animate_keyframe.py +114 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_animate_mocap.py +226 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_animate_retarget.py +408 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_blockout_create.py +2 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_concept_generate.py +153 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_concept_style.py +93 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_lod_generate.py +93 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_bounds.py +79 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_center.py +54 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_convert.py +48 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_flipnormals.py +46 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_merge.py +56 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_scale.py +72 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_validate.py +84 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_mesh_weld.py +56 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_model_create.py +144 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_model_multiview.py +156 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_model_retopo.py +87 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_model_splat.py +171 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_rig_auto.py +255 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_sprite_pack.py +98 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_atlas_pack.py +114 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_bake.py +209 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_channel_pack.py +83 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_convert.py +71 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_from_concept.py +165 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_generate.py +2 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_inpaint.py +87 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_mipmap.py +65 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_normalmap_convert.py +58 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_pbr.py +205 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_report.py +102 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_resize.py +66 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_seamless.py +80 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_texture_upscale.py +81 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_button.py +193 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_icon.py +2 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_iconset.py +107 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_layout.py +132 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_mockup.py +146 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_panel.py +90 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_screen.py +93 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_theme.py +100 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_ui_widget.py +91 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_uv_auto.py +100 -0
- assgen-0.3.0/src/assgen/server/handlers/visual_vfx_particle.py +2 -0
- assgen-0.3.0/src/assgen/server/logging_setup.py +93 -0
- assgen-0.3.0/src/assgen/server/model_manager.py +308 -0
- assgen-0.3.0/src/assgen/server/routes/__init__.py +1 -0
- assgen-0.3.0/src/assgen/server/routes/health.py +65 -0
- assgen-0.3.0/src/assgen/server/routes/jobs.py +350 -0
- assgen-0.3.0/src/assgen/server/routes/models.py +63 -0
- assgen-0.3.0/src/assgen/server/validation.py +209 -0
- assgen-0.3.0/src/assgen/server/worker.py +286 -0
- assgen-0.3.0/src/assgen/version.py +124 -0
- assgen-0.3.0/tests/__init__.py +0 -0
- assgen-0.3.0/tests/test_api_routes.py +466 -0
- assgen-0.3.0/tests/test_catalog.py +78 -0
- assgen-0.3.0/tests/test_cli_smoke.py +1109 -0
- assgen-0.3.0/tests/test_compose_pipeline.py +240 -0
- assgen-0.3.0/tests/test_db.py +232 -0
- assgen-0.3.0/tests/test_hf_integration.py +211 -0
- assgen-0.3.0/tests/test_tasks.py +106 -0
- assgen-0.3.0/tests/test_validation.py +200 -0
- assgen-0.3.0/tests/test_version.py +126 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# ── build/cache artifacts ────────────────────────────────────────────────────
|
|
2
|
+
.git
|
|
3
|
+
.venv
|
|
4
|
+
.venv/
|
|
5
|
+
__pycache__
|
|
6
|
+
*.pyc
|
|
7
|
+
*.pyo
|
|
8
|
+
.pytest_cache
|
|
9
|
+
.ruff_cache
|
|
10
|
+
|
|
11
|
+
# ── generated / built ────────────────────────────────────────────────────────
|
|
12
|
+
dist/
|
|
13
|
+
site/
|
|
14
|
+
*.egg-info
|
|
15
|
+
*.egg-info/
|
|
16
|
+
|
|
17
|
+
# ── docs source (not needed in image) ────────────────────────────────────────
|
|
18
|
+
docs/
|
|
19
|
+
mkdocs.yml
|
|
20
|
+
|
|
21
|
+
# ── dev / CI files ───────────────────────────────────────────────────────────
|
|
22
|
+
.github/
|
|
23
|
+
tests/
|
|
24
|
+
*.md
|
|
25
|
+
!README.md
|
|
26
|
+
docker/
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
## Documentation
|
|
3
|
+
|
|
4
|
+
When creating documentation files:
|
|
5
|
+
|
|
6
|
+
- Place them in the `docs/` directory or a subdirectory. Typical subdirectories include `docs/design/` and `docs/research/`.
|
|
7
|
+
- Prepend a UTC timestamp to the `.md` filename in the format `YYYYMMDD_HHMMSS_UTC_` so files sort chronologically (e.g., `docs/design/20260329_150800_UTC_architecture_overview.md`).
|
|
8
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"hooks": {
|
|
4
|
+
"sessionStart": [
|
|
5
|
+
{
|
|
6
|
+
"type": "command",
|
|
7
|
+
"bash": "bash ~/.claude/hooks/peon-ping/adapters/copilot.sh sessionStart"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"userPromptSubmitted": [
|
|
11
|
+
{
|
|
12
|
+
"type": "command",
|
|
13
|
+
"bash": "bash ~/.claude/hooks/peon-ping/adapters/copilot.sh userPromptSubmitted"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"postToolUse": [
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"bash": "bash ~/.claude/hooks/peon-ping/adapters/copilot.sh postToolUse"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"errorOccurred": [
|
|
23
|
+
{
|
|
24
|
+
"type": "command",
|
|
25
|
+
"bash": "bash ~/.claude/hooks/peon-ping/adapters/copilot.sh errorOccurred"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint-and-test:
|
|
11
|
+
name: Lint & Test (Python ${{ matrix.python-version }})
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
python-version: ["3.11", "3.12"]
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
22
|
+
uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: ${{ matrix.python-version }}
|
|
25
|
+
cache: pip
|
|
26
|
+
|
|
27
|
+
- name: Install dev dependencies
|
|
28
|
+
run: pip install -e ".[dev]"
|
|
29
|
+
|
|
30
|
+
- name: Lint with ruff
|
|
31
|
+
run: ruff check src/ tests/
|
|
32
|
+
|
|
33
|
+
- name: Check OpenAPI spec is up to date
|
|
34
|
+
run: python scripts/export_openapi.py --check
|
|
35
|
+
|
|
36
|
+
- name: Run tests
|
|
37
|
+
run: pytest -v --tb=short -q -m "not integration"
|
|
38
|
+
|
|
39
|
+
hf-integration:
|
|
40
|
+
name: HuggingFace Integration Tests
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
# Only run on pushes to main (not every PR) to avoid hammering HF API
|
|
43
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
44
|
+
needs: lint-and-test
|
|
45
|
+
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@v4
|
|
48
|
+
|
|
49
|
+
- name: Set up Python 3.12
|
|
50
|
+
uses: actions/setup-python@v5
|
|
51
|
+
with:
|
|
52
|
+
python-version: "3.12"
|
|
53
|
+
cache: pip
|
|
54
|
+
|
|
55
|
+
- name: Install dev dependencies
|
|
56
|
+
run: pip install -e ".[dev]"
|
|
57
|
+
|
|
58
|
+
- name: Run HuggingFace integration tests
|
|
59
|
+
run: pytest -v --tb=short -m integration tests/test_hf_integration.py
|
|
60
|
+
|
|
61
|
+
docker-build:
|
|
62
|
+
name: Docker Build (smoke test)
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
needs: lint-and-test
|
|
65
|
+
|
|
66
|
+
steps:
|
|
67
|
+
- uses: actions/checkout@v4
|
|
68
|
+
|
|
69
|
+
- name: Set up Docker Buildx
|
|
70
|
+
uses: docker/setup-buildx-action@v3
|
|
71
|
+
|
|
72
|
+
- name: Build server image
|
|
73
|
+
uses: docker/build-push-action@v6
|
|
74
|
+
with:
|
|
75
|
+
context: .
|
|
76
|
+
file: docker/Dockerfile.server
|
|
77
|
+
push: false
|
|
78
|
+
build-args: VERSION=0.0.0.dev0
|
|
79
|
+
tags: assgen-server:ci
|
|
80
|
+
cache-from: type=gha
|
|
81
|
+
cache-to: type=gha,mode=max
|
|
82
|
+
|
|
83
|
+
- name: Build client image
|
|
84
|
+
uses: docker/build-push-action@v6
|
|
85
|
+
with:
|
|
86
|
+
context: .
|
|
87
|
+
file: docker/Dockerfile.client
|
|
88
|
+
push: false
|
|
89
|
+
build-args: VERSION=0.0.0.dev0
|
|
90
|
+
tags: assgen-client:ci
|
|
91
|
+
cache-from: type=gha
|
|
92
|
+
cache-to: type=gha,mode=max
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
tags:
|
|
8
|
+
- "v*"
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
pages: write
|
|
14
|
+
id-token: write
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: pages
|
|
18
|
+
cancel-in-progress: false
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
deploy:
|
|
22
|
+
name: Build & Deploy Docs
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
environment:
|
|
25
|
+
name: github-pages
|
|
26
|
+
url: ${{ steps.deploy.outputs.page_url }}
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
|
|
31
|
+
- name: Set up Python 3.12
|
|
32
|
+
uses: actions/setup-python@v5
|
|
33
|
+
with:
|
|
34
|
+
python-version: "3.12"
|
|
35
|
+
cache: pip
|
|
36
|
+
|
|
37
|
+
- name: Install package + docs dependencies
|
|
38
|
+
run: pip install -e ".[docs]"
|
|
39
|
+
|
|
40
|
+
- name: Build docs
|
|
41
|
+
run: mkdocs build --strict --site-dir site
|
|
42
|
+
|
|
43
|
+
- name: Upload Pages artifact
|
|
44
|
+
uses: actions/upload-pages-artifact@v3
|
|
45
|
+
with:
|
|
46
|
+
path: site
|
|
47
|
+
|
|
48
|
+
- name: Deploy to GitHub Pages
|
|
49
|
+
id: deploy
|
|
50
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v[0-9]+.[0-9]+.[0-9]+" # strict semver: v1.2.3
|
|
7
|
+
- "v[0-9]+.[0-9]+.[0-9]+-*" # pre-releases: v1.2.3-rc.1, v1.2.3-beta.1
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
pages: write
|
|
12
|
+
id-token: write
|
|
13
|
+
packages: write # needed to push Docker images to ghcr.io
|
|
14
|
+
|
|
15
|
+
# ---------------------------------------------------------------------------
|
|
16
|
+
# Validate the tag is proper semver before we do any real work.
|
|
17
|
+
# A typo like "v0.1" will abort here rather than produce a broken release.
|
|
18
|
+
# ---------------------------------------------------------------------------
|
|
19
|
+
jobs:
|
|
20
|
+
validate-tag:
|
|
21
|
+
name: Validate semver tag
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Check tag format
|
|
25
|
+
run: |
|
|
26
|
+
TAG="${GITHUB_REF_NAME}"
|
|
27
|
+
if ! echo "$TAG" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
|
|
28
|
+
echo "ERROR: Tag '$TAG' is not valid semver (expected vMAJOR.MINOR.PATCH[-prerelease])"
|
|
29
|
+
exit 1
|
|
30
|
+
fi
|
|
31
|
+
echo "Tag '$TAG' is valid semver ✓"
|
|
32
|
+
|
|
33
|
+
# ---------------------------------------------------------------------------
|
|
34
|
+
# Build wheel + sdist, run tests, build and attach docs
|
|
35
|
+
# ---------------------------------------------------------------------------
|
|
36
|
+
release:
|
|
37
|
+
name: Build & Publish Release
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
needs: validate-tag
|
|
40
|
+
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v4
|
|
43
|
+
with:
|
|
44
|
+
fetch-depth: 0 # needed so hatch-vcs can read all tags
|
|
45
|
+
|
|
46
|
+
- name: Set up Python 3.12
|
|
47
|
+
uses: actions/setup-python@v5
|
|
48
|
+
with:
|
|
49
|
+
python-version: "3.12"
|
|
50
|
+
cache: pip
|
|
51
|
+
|
|
52
|
+
- name: Install dev + build + docs dependencies
|
|
53
|
+
run: pip install -e ".[dev,docs]" hatch
|
|
54
|
+
|
|
55
|
+
- name: Lint with ruff
|
|
56
|
+
run: ruff check src/ tests/
|
|
57
|
+
|
|
58
|
+
- name: Run tests
|
|
59
|
+
run: pytest -v --tb=short -m "not integration"
|
|
60
|
+
|
|
61
|
+
- name: Build distribution packages
|
|
62
|
+
run: hatch build
|
|
63
|
+
|
|
64
|
+
- name: Publish to PyPI
|
|
65
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
66
|
+
with:
|
|
67
|
+
# Uses Trusted Publishing (OIDC) — no API token needed.
|
|
68
|
+
# One-time setup: pypi.org → your project → Publishing → add GitHub publisher:
|
|
69
|
+
# Owner: aallbrig Repo: assgen Workflow: release.yml Environment: (blank)
|
|
70
|
+
skip-existing: true
|
|
71
|
+
|
|
72
|
+
- name: Build docs site
|
|
73
|
+
run: mkdocs build --strict
|
|
74
|
+
|
|
75
|
+
- name: Zip docs
|
|
76
|
+
run: |
|
|
77
|
+
VERSION="${{ github.ref_name }}"
|
|
78
|
+
zip -r "assgen-docs-${VERSION}.zip" site/
|
|
79
|
+
|
|
80
|
+
- name: Upload to GitHub Release
|
|
81
|
+
uses: softprops/action-gh-release@v2
|
|
82
|
+
with:
|
|
83
|
+
files: |
|
|
84
|
+
dist/*
|
|
85
|
+
assgen-docs-*.zip
|
|
86
|
+
generate_release_notes: true
|
|
87
|
+
body: |
|
|
88
|
+
## assgen ${{ github.ref_name }}
|
|
89
|
+
|
|
90
|
+
### Install via pip
|
|
91
|
+
```bash
|
|
92
|
+
pip install assgen==${{ github.ref_name }}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Or use the upgrade command if you already have assgen installed:
|
|
96
|
+
```bash
|
|
97
|
+
assgen upgrade
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Standalone binaries
|
|
101
|
+
Grab the pre-built binary for your platform from the assets below —
|
|
102
|
+
no Python installation required.
|
|
103
|
+
|
|
104
|
+
| Platform | File |
|
|
105
|
+
|---|---|
|
|
106
|
+
| Windows (x64) | `assgen-${{ github.ref_name }}-windows-x64.exe` |
|
|
107
|
+
| Linux (x64) | `assgen-${{ github.ref_name }}-linux-x64` |
|
|
108
|
+
| macOS (x64) | `assgen-${{ github.ref_name }}-macos-x64` |
|
|
109
|
+
|
|
110
|
+
### Install via Homebrew (macOS / Linux)
|
|
111
|
+
```bash
|
|
112
|
+
brew install aallbrig/tap/assgen
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Install via Chocolatey (Windows)
|
|
116
|
+
```powershell
|
|
117
|
+
choco install assgen
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Docker (server)
|
|
121
|
+
```bash
|
|
122
|
+
docker pull ghcr.io/${{ github.repository_owner }}/assgen-server:${{ github.ref_name }}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
See the [README](https://github.com/${{ github.repository }}/blob/main/README.md)
|
|
126
|
+
for full usage documentation. Offline docs are attached as
|
|
127
|
+
`assgen-docs-${{ github.ref_name }}.zip`.
|
|
128
|
+
|
|
129
|
+
# ---------------------------------------------------------------------------
|
|
130
|
+
# Build standalone client binaries with PyInstaller
|
|
131
|
+
# ---------------------------------------------------------------------------
|
|
132
|
+
binaries:
|
|
133
|
+
name: Build binary (${{ matrix.os }})
|
|
134
|
+
runs-on: ${{ matrix.os }}
|
|
135
|
+
needs: validate-tag
|
|
136
|
+
strategy:
|
|
137
|
+
fail-fast: false
|
|
138
|
+
matrix:
|
|
139
|
+
include:
|
|
140
|
+
- os: ubuntu-latest
|
|
141
|
+
artifact_name: assgen
|
|
142
|
+
asset_suffix: linux-x64
|
|
143
|
+
- os: windows-latest
|
|
144
|
+
artifact_name: assgen.exe
|
|
145
|
+
asset_suffix: windows-x64
|
|
146
|
+
- os: macos-latest
|
|
147
|
+
artifact_name: assgen
|
|
148
|
+
asset_suffix: macos-x64
|
|
149
|
+
|
|
150
|
+
steps:
|
|
151
|
+
- uses: actions/checkout@v4
|
|
152
|
+
with:
|
|
153
|
+
fetch-depth: 0
|
|
154
|
+
|
|
155
|
+
- name: Set up Python 3.12
|
|
156
|
+
uses: actions/setup-python@v5
|
|
157
|
+
with:
|
|
158
|
+
python-version: "3.12"
|
|
159
|
+
cache: pip
|
|
160
|
+
|
|
161
|
+
- name: Install package + PyInstaller
|
|
162
|
+
run: pip install -e "." pyinstaller
|
|
163
|
+
|
|
164
|
+
- name: Build standalone binary
|
|
165
|
+
run: pyinstaller pyinstaller/assgen-client.spec
|
|
166
|
+
|
|
167
|
+
- name: Rename artifact with platform suffix
|
|
168
|
+
shell: bash
|
|
169
|
+
run: |
|
|
170
|
+
VERSION="${{ github.ref_name }}"
|
|
171
|
+
mv dist/${{ matrix.artifact_name }} \
|
|
172
|
+
dist/assgen-${VERSION}-${{ matrix.asset_suffix }}${{ matrix.os == 'windows-latest' && '.exe' || '' }}
|
|
173
|
+
|
|
174
|
+
- name: Upload binary to GitHub Release
|
|
175
|
+
uses: softprops/action-gh-release@v2
|
|
176
|
+
with:
|
|
177
|
+
files: dist/assgen-${{ github.ref_name }}-${{ matrix.asset_suffix }}${{ matrix.os == 'windows-latest' && '.exe' || '' }}
|
|
178
|
+
|
|
179
|
+
# ---------------------------------------------------------------------------
|
|
180
|
+
# Build & push Docker images with full semver tags
|
|
181
|
+
# ---------------------------------------------------------------------------
|
|
182
|
+
docker:
|
|
183
|
+
name: Build & Push Docker Images
|
|
184
|
+
runs-on: ubuntu-latest
|
|
185
|
+
needs: release
|
|
186
|
+
|
|
187
|
+
steps:
|
|
188
|
+
- uses: actions/checkout@v4
|
|
189
|
+
with:
|
|
190
|
+
fetch-depth: 0
|
|
191
|
+
|
|
192
|
+
- name: Set up Docker Buildx
|
|
193
|
+
uses: docker/setup-buildx-action@v3
|
|
194
|
+
|
|
195
|
+
- name: Log in to GitHub Container Registry
|
|
196
|
+
uses: docker/login-action@v3
|
|
197
|
+
with:
|
|
198
|
+
registry: ghcr.io
|
|
199
|
+
username: ${{ github.actor }}
|
|
200
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
201
|
+
|
|
202
|
+
- name: Extract version (strip leading v)
|
|
203
|
+
id: ver
|
|
204
|
+
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
|
|
205
|
+
|
|
206
|
+
# docker/metadata-action generates all semver tag variants automatically:
|
|
207
|
+
# v1.2.3 → :1.2.3, :1.2, :1, :latest (stable)
|
|
208
|
+
# v1.2.3-rc.1 → :1.2.3-rc.1 (pre-release, no :latest)
|
|
209
|
+
- name: Generate Docker metadata — server
|
|
210
|
+
id: meta-server
|
|
211
|
+
uses: docker/metadata-action@v5
|
|
212
|
+
with:
|
|
213
|
+
images: ghcr.io/${{ github.repository_owner }}/assgen-server
|
|
214
|
+
tags: |
|
|
215
|
+
type=semver,pattern={{version}}
|
|
216
|
+
type=semver,pattern={{major}}.{{minor}}
|
|
217
|
+
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
|
|
218
|
+
type=raw,value=latest,enable=${{ !contains(github.ref_name, '-') }}
|
|
219
|
+
|
|
220
|
+
- name: Generate Docker metadata — client
|
|
221
|
+
id: meta-client
|
|
222
|
+
uses: docker/metadata-action@v5
|
|
223
|
+
with:
|
|
224
|
+
images: ghcr.io/${{ github.repository_owner }}/assgen-client
|
|
225
|
+
tags: |
|
|
226
|
+
type=semver,pattern={{version}}
|
|
227
|
+
type=semver,pattern={{major}}.{{minor}}
|
|
228
|
+
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
|
|
229
|
+
type=raw,value=latest,enable=${{ !contains(github.ref_name, '-') }}
|
|
230
|
+
|
|
231
|
+
- name: Build and push server image (CPU)
|
|
232
|
+
uses: docker/build-push-action@v6
|
|
233
|
+
with:
|
|
234
|
+
context: .
|
|
235
|
+
file: docker/Dockerfile.server
|
|
236
|
+
push: true
|
|
237
|
+
build-args: VERSION=${{ steps.ver.outputs.version }}
|
|
238
|
+
tags: ${{ steps.meta-server.outputs.tags }}
|
|
239
|
+
labels: ${{ steps.meta-server.outputs.labels }}
|
|
240
|
+
cache-from: type=gha
|
|
241
|
+
cache-to: type=gha,mode=max
|
|
242
|
+
|
|
243
|
+
- name: Build and push client image
|
|
244
|
+
uses: docker/build-push-action@v6
|
|
245
|
+
with:
|
|
246
|
+
context: .
|
|
247
|
+
file: docker/Dockerfile.client
|
|
248
|
+
push: true
|
|
249
|
+
build-args: VERSION=${{ steps.ver.outputs.version }}
|
|
250
|
+
tags: ${{ steps.meta-client.outputs.tags }}
|
|
251
|
+
labels: ${{ steps.meta-client.outputs.labels }}
|
|
252
|
+
cache-from: type=gha
|
|
253
|
+
cache-to: type=gha,mode=max
|
|
254
|
+
|
|
255
|
+
# ---------------------------------------------------------------------------
|
|
256
|
+
# Update Homebrew tap formula with new release binaries
|
|
257
|
+
# ---------------------------------------------------------------------------
|
|
258
|
+
homebrew:
|
|
259
|
+
name: Update Homebrew Tap
|
|
260
|
+
runs-on: ubuntu-latest
|
|
261
|
+
needs: binaries
|
|
262
|
+
if: ${{ !contains(github.ref_name, '-') }} # skip pre-releases
|
|
263
|
+
|
|
264
|
+
steps:
|
|
265
|
+
- name: Extract version (strip leading v)
|
|
266
|
+
id: ver
|
|
267
|
+
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
|
|
268
|
+
|
|
269
|
+
- name: Download release binaries and compute SHA256
|
|
270
|
+
id: sha
|
|
271
|
+
env:
|
|
272
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
273
|
+
run: |
|
|
274
|
+
VERSION="${{ github.ref_name }}"
|
|
275
|
+
|
|
276
|
+
gh release download "$VERSION" \
|
|
277
|
+
--repo "${{ github.repository }}" \
|
|
278
|
+
--pattern "assgen-${VERSION}-macos-x64" \
|
|
279
|
+
--pattern "assgen-${VERSION}-linux-x64" \
|
|
280
|
+
--dir .
|
|
281
|
+
|
|
282
|
+
echo "macos_x64=$(sha256sum "assgen-${VERSION}-macos-x64" | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
|
|
283
|
+
echo "linux_x64=$(sha256sum "assgen-${VERSION}-linux-x64" | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
|
|
284
|
+
|
|
285
|
+
- name: Checkout homebrew-tap
|
|
286
|
+
uses: actions/checkout@v4
|
|
287
|
+
with:
|
|
288
|
+
repository: aallbrig/homebrew-tap
|
|
289
|
+
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
|
290
|
+
path: homebrew-tap
|
|
291
|
+
|
|
292
|
+
- name: Write formula
|
|
293
|
+
run: |
|
|
294
|
+
VERSION="${{ steps.ver.outputs.version }}"
|
|
295
|
+
TAG="${{ github.ref_name }}"
|
|
296
|
+
|
|
297
|
+
cat > homebrew-tap/Formula/assgen.rb <<'RUBY'
|
|
298
|
+
class Assgen < Formula
|
|
299
|
+
desc "AI-driven game asset generation CLI"
|
|
300
|
+
homepage "https://github.com/aallbrig/assgen"
|
|
301
|
+
version "VERSION_PLACEHOLDER"
|
|
302
|
+
license "MIT"
|
|
303
|
+
|
|
304
|
+
on_macos do
|
|
305
|
+
on_intel do
|
|
306
|
+
url "https://github.com/aallbrig/assgen/releases/download/TAG_PLACEHOLDER/assgen-TAG_PLACEHOLDER-macos-x64"
|
|
307
|
+
sha256 "MACOS_X64_SHA_PLACEHOLDER"
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
on_linux do
|
|
312
|
+
on_intel do
|
|
313
|
+
url "https://github.com/aallbrig/assgen/releases/download/TAG_PLACEHOLDER/assgen-TAG_PLACEHOLDER-linux-x64"
|
|
314
|
+
sha256 "LINUX_X64_SHA_PLACEHOLDER"
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
def install
|
|
319
|
+
binary = Dir["assgen-*"].first || "assgen"
|
|
320
|
+
bin.install binary => "assgen"
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
test do
|
|
324
|
+
assert_match version.to_s, shell_output("#{bin}/assgen --version")
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
RUBY
|
|
328
|
+
|
|
329
|
+
# Strip leading whitespace from heredoc (GitHub Actions indentation)
|
|
330
|
+
sed -i 's/^ //' homebrew-tap/Formula/assgen.rb
|
|
331
|
+
|
|
332
|
+
# Replace placeholders
|
|
333
|
+
sed -i "s|VERSION_PLACEHOLDER|${VERSION}|g" homebrew-tap/Formula/assgen.rb
|
|
334
|
+
sed -i "s|TAG_PLACEHOLDER|${TAG}|g" homebrew-tap/Formula/assgen.rb
|
|
335
|
+
sed -i "s|MACOS_X64_SHA_PLACEHOLDER|${{ steps.sha.outputs.macos_x64 }}|g" homebrew-tap/Formula/assgen.rb
|
|
336
|
+
sed -i "s|LINUX_X64_SHA_PLACEHOLDER|${{ steps.sha.outputs.linux_x64 }}|g" homebrew-tap/Formula/assgen.rb
|
|
337
|
+
|
|
338
|
+
- name: Commit and push formula
|
|
339
|
+
working-directory: homebrew-tap
|
|
340
|
+
run: |
|
|
341
|
+
git config user.name "github-actions[bot]"
|
|
342
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
343
|
+
git add Formula/assgen.rb
|
|
344
|
+
git commit -m "assgen ${{ github.ref_name }}"
|
|
345
|
+
git push
|
|
346
|
+
|
|
347
|
+
# ---------------------------------------------------------------------------
|
|
348
|
+
# Publish Chocolatey package for Windows
|
|
349
|
+
# ---------------------------------------------------------------------------
|
|
350
|
+
chocolatey:
|
|
351
|
+
name: Publish Chocolatey Package
|
|
352
|
+
runs-on: windows-latest
|
|
353
|
+
needs: binaries
|
|
354
|
+
if: ${{ !contains(github.ref_name, '-') }} # skip pre-releases
|
|
355
|
+
|
|
356
|
+
steps:
|
|
357
|
+
- uses: actions/checkout@v4
|
|
358
|
+
with:
|
|
359
|
+
sparse-checkout: choco
|
|
360
|
+
|
|
361
|
+
- name: Extract version (strip leading v)
|
|
362
|
+
id: ver
|
|
363
|
+
shell: bash
|
|
364
|
+
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
|
|
365
|
+
|
|
366
|
+
- name: Download Windows binary and compute checksum
|
|
367
|
+
id: sha
|
|
368
|
+
shell: bash
|
|
369
|
+
env:
|
|
370
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
371
|
+
run: |
|
|
372
|
+
VERSION="${{ github.ref_name }}"
|
|
373
|
+
gh release download "$VERSION" \
|
|
374
|
+
--repo "${{ github.repository }}" \
|
|
375
|
+
--pattern "assgen-${VERSION}-windows-x64.exe" \
|
|
376
|
+
--dir .
|
|
377
|
+
echo "win_x64=$(sha256sum "assgen-${VERSION}-windows-x64.exe" | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
|
|
378
|
+
|
|
379
|
+
- name: Stamp nuspec and install script
|
|
380
|
+
shell: bash
|
|
381
|
+
run: |
|
|
382
|
+
VERSION="${{ steps.ver.outputs.version }}"
|
|
383
|
+
TAG="${{ github.ref_name }}"
|
|
384
|
+
SHA="${{ steps.sha.outputs.win_x64 }}"
|
|
385
|
+
|
|
386
|
+
sed -i "s|{{VERSION}}|${VERSION}|g" choco/assgen.nuspec
|
|
387
|
+
sed -i "s|{{TAG}}|${TAG}|g" choco/tools/chocolateyinstall.ps1
|
|
388
|
+
sed -i "s|{{CHECKSUM}}|${SHA}|g" choco/tools/chocolateyinstall.ps1
|
|
389
|
+
|
|
390
|
+
- name: Pack and push
|
|
391
|
+
shell: powershell
|
|
392
|
+
run: |
|
|
393
|
+
choco pack choco/assgen.nuspec --output-directory .
|
|
394
|
+
choco push assgen.${{ steps.ver.outputs.version }}.nupkg `
|
|
395
|
+
--source https://push.chocolatey.org/ `
|
|
396
|
+
--api-key ${{ secrets.CHOCOLATEY_API_KEY }}
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
# ---------------------------------------------------------------------------
|
|
401
|
+
# Sync HuggingFace Spaces on stable releases (not pre-releases)
|
|
402
|
+
# ---------------------------------------------------------------------------
|
|
403
|
+
spaces-sync:
|
|
404
|
+
name: Sync HuggingFace Spaces
|
|
405
|
+
runs-on: ubuntu-latest
|
|
406
|
+
needs: release # wait for PyPI publish to complete first
|
|
407
|
+
if: ${{ !contains(github.ref_name, '-') }} # skip pre-releases
|
|
408
|
+
|
|
409
|
+
steps:
|
|
410
|
+
- uses: actions/checkout@v4
|
|
411
|
+
|
|
412
|
+
- name: Set up Python 3.12
|
|
413
|
+
uses: actions/setup-python@v5
|
|
414
|
+
with:
|
|
415
|
+
python-version: "3.12"
|
|
416
|
+
cache: pip
|
|
417
|
+
|
|
418
|
+
- name: Install HF CLI
|
|
419
|
+
run: pip install "huggingface_hub[cli]>=0.23"
|
|
420
|
+
|
|
421
|
+
- name: Authenticate HF CLI
|
|
422
|
+
env:
|
|
423
|
+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
|
424
|
+
run: hf login --token "$HF_TOKEN"
|
|
425
|
+
|
|
426
|
+
- name: Sync all Spaces
|
|
427
|
+
env:
|
|
428
|
+
VERSION: ${{ github.ref_name }}
|
|
429
|
+
run: python scripts/sync_spaces.py --version "$VERSION"
|
assgen-0.3.0/.gitignore
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.pyo
|
|
5
|
+
*.pyd
|
|
6
|
+
*.so
|
|
7
|
+
*.egg
|
|
8
|
+
*.egg-info/
|
|
9
|
+
dist/
|
|
10
|
+
build/
|
|
11
|
+
.eggs/
|
|
12
|
+
|
|
13
|
+
# Virtual environments
|
|
14
|
+
.venv/
|
|
15
|
+
venv/
|
|
16
|
+
env/
|
|
17
|
+
|
|
18
|
+
# hatch / build
|
|
19
|
+
.hatch/
|
|
20
|
+
*.dist-info/
|
|
21
|
+
|
|
22
|
+
# Version file — generated by hatch-vcs at build/install time
|
|
23
|
+
src/assgen/_version.py
|
|
24
|
+
|
|
25
|
+
# IDE
|
|
26
|
+
.vscode/
|
|
27
|
+
# Ignore all of .idea except run configurations, which are checked in for developer convenience
|
|
28
|
+
.idea/*
|
|
29
|
+
!.idea/runConfigurations/
|
|
30
|
+
.idea/runConfigurations/*
|
|
31
|
+
!.idea/runConfigurations/*.xml
|
|
32
|
+
*.swp
|
|
33
|
+
*.swo
|
|
34
|
+
|
|
35
|
+
# OS
|
|
36
|
+
.DS_Store
|
|
37
|
+
Thumbs.db
|
|
38
|
+
|
|
39
|
+
# Testing
|
|
40
|
+
.pytest_cache/
|
|
41
|
+
.coverage
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
|
|
45
|
+
# Ruff
|
|
46
|
+
.ruff_cache/
|
|
47
|
+
|
|
48
|
+
# Local dev overrides
|
|
49
|
+
*.local.yaml
|
|
50
|
+
*.local.toml
|
|
51
|
+
|
|
52
|
+
# VHS demo segments (intermediate recordings)
|
|
53
|
+
demos/segments/
|
|
54
|
+
|
|
55
|
+
# MkDocs built site
|
|
56
|
+
site/
|
|
57
|
+
heightmap*.png
|