god-code 0.6.1__tar.gz → 1.0.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.
- god_code-1.0.0/.codetape/component-map.json +208 -0
- god_code-1.0.0/.codetape/config.json +18 -0
- god_code-1.0.0/.github/FUNDING.yml +3 -0
- god_code-1.0.0/.github/workflows/docs.yml +41 -0
- {god_code-0.6.1 → god_code-1.0.0}/.gitignore +5 -0
- god_code-1.0.0/.gitleaks.toml +30 -0
- god_code-1.0.0/CHANGELOG.md +131 -0
- god_code-1.0.0/CLAUDE.md +439 -0
- {god_code-0.6.1 → god_code-1.0.0}/PKG-INFO +4 -2
- god_code-1.0.0/PRIVACY.md +113 -0
- god_code-1.0.0/README.md +158 -0
- god_code-1.0.0/SECURITY.md +66 -0
- god_code-1.0.0/docs/cli/ask.md +33 -0
- god_code-1.0.0/docs/cli/chat.md +40 -0
- god_code-1.0.0/docs/empty-project-to-first-verified-change.md +225 -0
- god_code-1.0.0/docs/gameplay-intent-and-enemy-ai-roadmap.md +619 -0
- god_code-1.0.0/docs/getting-started/first-run.md +66 -0
- god_code-1.0.0/docs/getting-started/install.md +45 -0
- god_code-1.0.0/docs/index.md +26 -0
- god_code-1.0.0/docs/mcp/overview.md +47 -0
- god_code-1.0.0/docs/plans/2026-04-04-api-backend-design.md +874 -0
- god_code-1.0.0/docs/plans/2026-04-04-api-backend-impl.md +2090 -0
- god_code-1.0.0/docs/plans/2026-04-04-bullet-hell-sprite-qa-demo-polish-backlog.md +522 -0
- god_code-1.0.0/docs/plans/2026-04-04-demo-ready-upgrade.md +479 -0
- god_code-1.0.0/docs/plans/2026-04-05-dogfooding-inventory.md +317 -0
- god_code-1.0.0/docs/plans/2026-04-05-v08-design.md +453 -0
- god_code-1.0.0/docs/plans/2026-04-05-v08-impl.md +1021 -0
- god_code-1.0.0/docs/plans/2026-04-05-work-status.md +321 -0
- god_code-1.0.0/docs/plans/2026-04-06-auto-flow-impl.md +1102 -0
- god_code-1.0.0/docs/plans/2026-04-06-interactive-ux-redesign.md +314 -0
- god_code-1.0.0/docs/plans/2026-04-07-god-code-prelaunch-security-audit-design.md +184 -0
- god_code-1.0.0/docs/plans/2026-04-07-god-code-prelaunch-security-audit-report.md +242 -0
- god_code-1.0.0/docs/plans/2026-04-07-god-code-prelaunch-security-audit.md +1463 -0
- god_code-1.0.0/docs/plans/2026-04-07-v1.0.0-ux-upgrade-design.md +687 -0
- god_code-1.0.0/docs/providers/byok-and-oauth.md +48 -0
- god_code-1.0.0/docs/tui/menu-and-commands.md +57 -0
- god_code-1.0.0/docs/tui/settings-and-byok.md +61 -0
- god_code-1.0.0/docs/validation/quality-gate.md +32 -0
- god_code-1.0.0/godot_agent/addons/god_code_bridge/god_code_bridge.gd +191 -0
- god_code-1.0.0/godot_agent/addons/god_code_bridge/plugin.cfg +7 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/configs.py +22 -2
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/dispatcher.py +42 -1
- god_code-1.0.0/godot_agent/cli/__init__.py +61 -0
- god_code-1.0.0/godot_agent/cli/__main__.py +6 -0
- god_code-0.6.1/godot_agent/cli.py → god_code-1.0.0/godot_agent/cli/commands.py +856 -555
- god_code-1.0.0/godot_agent/cli/engine_wiring.py +362 -0
- god_code-1.0.0/godot_agent/cli/helpers.py +207 -0
- god_code-1.0.0/godot_agent/cli/menus.py +215 -0
- god_code-1.0.0/godot_agent/entrypoint.py +13 -0
- god_code-1.0.0/godot_agent/godot/audio_scaffolder.py +90 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/project.py +33 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/scene_parser.py +11 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/scene_writer.py +17 -8
- god_code-1.0.0/godot_agent/godot/ui_layout_advisor.py +293 -0
- god_code-1.0.0/godot_agent/godot/variant_codec.py +183 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/adapters/base.py +19 -1
- god_code-1.0.0/godot_agent/llm/adapters/openai.py +129 -0
- god_code-1.0.0/godot_agent/llm/client.py +226 -0
- god_code-1.0.0/godot_agent/llm/redact.py +37 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/streaming.py +69 -6
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/types.py +52 -1
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/mcp_server.py +397 -46
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/assembler.py +60 -2
- god_code-1.0.0/godot_agent/prompts/genre_templates.py +120 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/godot_playbook.py +20 -0
- god_code-1.0.0/godot_agent/prompts/skill_library.py +501 -0
- god_code-1.0.0/godot_agent/prompts/skill_selector.py +203 -0
- god_code-1.0.0/godot_agent/prompts/vision_templates.py +195 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/config.py +31 -3
- god_code-1.0.0/godot_agent/runtime/context_health.py +23 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/context_manager.py +41 -0
- god_code-1.0.0/godot_agent/runtime/design_memory.py +460 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/engine.py +274 -18
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/error_loop.py +144 -5
- god_code-1.0.0/godot_agent/runtime/execution_plan.py +74 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/gameplay_reviewer.py +32 -2
- god_code-1.0.0/godot_agent/runtime/intent_resolver.py +458 -0
- god_code-1.0.0/godot_agent/runtime/live_client.py +216 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/modes.py +29 -5
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/oauth.py +20 -4
- god_code-1.0.0/godot_agent/runtime/playtest_harness.py +1394 -0
- god_code-1.0.0/godot_agent/runtime/polish_rubric.py +255 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/providers.py +6 -0
- god_code-1.0.0/godot_agent/runtime/quality_gate.py +422 -0
- god_code-1.0.0/godot_agent/runtime/reviewer.py +334 -0
- god_code-1.0.0/godot_agent/runtime/runtime_bridge.py +329 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/bullet_hell_pattern_readability.json +11 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/bullet_hell_phase_transition.json +74 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/bullet_hell_wave_progression.json +79 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_boss_transition.json +73 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_combat_feedback.json +10 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_ui_readability.json +10 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_wave_pacing.json +89 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/platformer_enemy_gap_jump.json +63 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/platformer_enemy_patrol_response.json +62 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/topdown_shooter_flank_resolution.json +66 -0
- god_code-1.0.0/godot_agent/runtime/scenario_specs/topdown_shooter_pressure.json +66 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/session.py +47 -1
- god_code-1.0.0/godot_agent/runtime/validation_checks.py +70 -0
- god_code-1.0.0/godot_agent/runtime/visual_regression.py +242 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/hooks.py +3 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/policies.py +2 -1
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/tool_pipeline.py +3 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/testing/scenario_runner.py +14 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/analysis_tools.py +118 -0
- god_code-1.0.0/godot_agent/tools/base.py +146 -0
- god_code-1.0.0/godot_agent/tools/editor_bridge.py +257 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/file_ops.py +11 -3
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/godot_cli.py +111 -24
- god_code-1.0.0/godot_agent/tools/image_gen.py +250 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/memory_tool.py +5 -4
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/registry.py +3 -0
- god_code-1.0.0/godot_agent/tools/runtime_harness.py +585 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/scene_tools.py +3 -2
- god_code-1.0.0/godot_agent/tools/screenshot.py +118 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/shell.py +40 -0
- god_code-1.0.0/godot_agent/tools/sprite_pipeline.py +171 -0
- god_code-1.0.0/godot_agent/tools/sprite_qa.py +204 -0
- god_code-1.0.0/godot_agent/tools/vision_analysis.py +84 -0
- god_code-1.0.0/godot_agent/tools/vision_scoring.py +134 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/web_search.py +16 -6
- god_code-1.0.0/godot_agent/tui/display.py +865 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tui/input_handler.py +78 -4
- god_code-1.0.0/mkdocs.yml +48 -0
- {god_code-0.6.1 → god_code-1.0.0}/pyproject.toml +15 -3
- god_code-1.0.0/scripts/install-hooks.sh +37 -0
- god_code-1.0.0/scripts/vision_model_comparison.py +367 -0
- god_code-1.0.0/tests/agents/test_dispatcher.py +194 -0
- god_code-1.0.0/tests/cli/test_setup_bridge.py +103 -0
- god_code-1.0.0/tests/cli_test_utils.py +80 -0
- god_code-1.0.0/tests/fuzz/test_input_sequences.py +83 -0
- god_code-1.0.0/tests/godot/test_audio_scaffolder.py +31 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_project.py +17 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_scene_parser.py +7 -0
- god_code-1.0.0/tests/godot/test_ui_layout_advisor.py +34 -0
- god_code-1.0.0/tests/godot/test_variant_codec.py +23 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/llm/test_adapters.py +28 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/llm/test_client.py +101 -0
- god_code-1.0.0/tests/llm/test_streaming.py +138 -0
- god_code-1.0.0/tests/prompts/test_genre_templates.py +23 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/prompts/test_prompt_assembler.py +66 -1
- god_code-1.0.0/tests/prompts/test_skill_selector.py +88 -0
- god_code-1.0.0/tests/prompts/test_vision_templates.py +83 -0
- god_code-1.0.0/tests/runtime/test_config.py +135 -0
- god_code-1.0.0/tests/runtime/test_context_health.py +34 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_context_manager.py +71 -0
- god_code-1.0.0/tests/runtime/test_design_memory.py +130 -0
- god_code-1.0.0/tests/runtime/test_engine.py +495 -0
- god_code-1.0.0/tests/runtime/test_error_loop.py +137 -0
- god_code-1.0.0/tests/runtime/test_execution_plan.py +41 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_gameplay_reviewer.py +18 -1
- god_code-1.0.0/tests/runtime/test_intent_resolver.py +159 -0
- god_code-1.0.0/tests/runtime/test_live_client.py +214 -0
- god_code-1.0.0/tests/runtime/test_playtest_harness.py +579 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_quality_gate.py +27 -0
- god_code-1.0.0/tests/runtime/test_reviewer.py +103 -0
- god_code-1.0.0/tests/runtime/test_runtime_bridge.py +99 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_session.py +38 -0
- god_code-1.0.0/tests/runtime/test_validation_checks.py +35 -0
- god_code-1.0.0/tests/runtime/test_visual_regression.py +118 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_hooks.py +19 -0
- god_code-1.0.0/tests/test_auto_flow.py +90 -0
- god_code-1.0.0/tests/test_cli_interactive_flows.py +308 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/test_package_compatibility.py +9 -2
- god_code-1.0.0/tests/tools/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_analysis_tools.py +34 -0
- god_code-1.0.0/tests/tools/test_editor_bridge.py +279 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_godot_cli.py +91 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_memory_tool.py +22 -0
- god_code-1.0.0/tests/tools/test_runtime_harness.py +282 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_scene_tools.py +24 -0
- god_code-1.0.0/tests/tools/test_screenshot_tool.py +99 -0
- god_code-1.0.0/tests/tools/test_sprite_qa.py +141 -0
- god_code-1.0.0/tests/tools/test_vision_analysis.py +145 -0
- god_code-1.0.0/tests/tools/test_vision_scoring.py +265 -0
- god_code-1.0.0/tests/tui/__init__.py +0 -0
- god_code-1.0.0/tests/tui/test_display.py +126 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tui/test_input_handler.py +36 -0
- god_code-1.0.0/tests/tui/test_plan_display.py +28 -0
- god_code-0.6.1/CHANGELOG.md +0 -46
- god_code-0.6.1/CLAUDE.md +0 -206
- god_code-0.6.1/README.md +0 -303
- god_code-0.6.1/godot_agent/llm/adapters/openai.py +0 -32
- god_code-0.6.1/godot_agent/llm/client.py +0 -98
- god_code-0.6.1/godot_agent/prompts/skill_library.py +0 -130
- god_code-0.6.1/godot_agent/prompts/skill_selector.py +0 -80
- god_code-0.6.1/godot_agent/runtime/design_memory.py +0 -140
- god_code-0.6.1/godot_agent/runtime/playtest_harness.py +0 -142
- god_code-0.6.1/godot_agent/runtime/quality_gate.py +0 -316
- god_code-0.6.1/godot_agent/runtime/reviewer.py +0 -228
- god_code-0.6.1/godot_agent/runtime/runtime_bridge.py +0 -74
- god_code-0.6.1/godot_agent/tools/base.py +0 -54
- god_code-0.6.1/godot_agent/tools/editor_bridge.py +0 -79
- god_code-0.6.1/godot_agent/tools/image_gen.py +0 -180
- god_code-0.6.1/godot_agent/tools/screenshot.py +0 -82
- god_code-0.6.1/godot_agent/tui/display.py +0 -467
- god_code-0.6.1/tests/agents/test_dispatcher.py +0 -97
- god_code-0.6.1/tests/prompts/test_skill_selector.py +0 -30
- god_code-0.6.1/tests/runtime/test_config.py +0 -61
- god_code-0.6.1/tests/runtime/test_design_memory.py +0 -48
- god_code-0.6.1/tests/runtime/test_engine.py +0 -211
- god_code-0.6.1/tests/runtime/test_error_loop.py +0 -46
- god_code-0.6.1/tests/runtime/test_playtest_harness.py +0 -28
- god_code-0.6.1/tests/runtime/test_reviewer.py +0 -50
- god_code-0.6.1/tests/runtime/test_runtime_bridge.py +0 -30
- god_code-0.6.1/tests/tools/test_editor_bridge.py +0 -46
- {god_code-0.6.1 → god_code-1.0.0}/.github/workflows/publish.yml +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/AGENTS.md +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/CONTRIBUTING.md +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/LICENSE +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/results.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/collision_planner.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/consistency_checker.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/dependency_graph.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/gdscript_linter.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/impact_analysis.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/pattern_advisor.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/resource_validator.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/tscn_validator.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/adapters/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/adapters/anthropic.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/vision.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/build_discipline.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/image_templates.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/knowledge_selector.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/system.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/py.typed +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/auth.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/events.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/scenario_specs/hud_feedback.json +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/scenario_specs/player_movement.json +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/scenario_specs/scene_transition.json +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/classifier.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/protected_paths.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/testing/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/git.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/list_dir.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/script_tools.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/search.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tui/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/skills/god-code-setup/SKILL.md +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/agents/test_playtest_analyst.py +0 -0
- {god_code-0.6.1/tests/godot → god_code-1.0.0/tests/cli}/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/e2e/test_planner_worker_reviewer_flow.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/e2e/test_policy_enforcement.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/e2e/test_scenario_runner.py +0 -0
- {god_code-0.6.1/tests/llm → god_code-1.0.0/tests/godot}/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_collision_planner.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_consistency.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_dependency_graph.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_impact_analysis.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_linter.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_pattern_advisor.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_resource_validator.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_scene_writer.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_tscn_validator.py +0 -0
- {god_code-0.6.1/tests/prompts → god_code-1.0.0/tests/llm}/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/llm/test_vision.py +0 -0
- {god_code-0.6.1/tests/runtime → god_code-1.0.0/tests/prompts}/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/prompts/test_knowledge_selector.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/prompts/test_system_prompt.py +0 -0
- {god_code-0.6.1/tests/tools → god_code-1.0.0/tests/runtime}/__init__.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_mode_restrictions.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_multi_agent_flow.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_classifier.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_permissions.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_tool_pipeline.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/test_cli_config_flow.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/test_e2e.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/test_runtime_switch_commands.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_file_ops.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_git.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_list_dir.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_registry.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_script_tools.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_search.py +0 -0
- {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_shell.py +0 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
{
|
|
2
|
+
"last_scan": "2026-04-05",
|
|
3
|
+
"components": {
|
|
4
|
+
"cli": {
|
|
5
|
+
"path": "godot_agent/cli/",
|
|
6
|
+
"type": "entrypoint",
|
|
7
|
+
"description": "CLI package (Click) — commands, menus, engine wiring, helpers. Split from monolithic cli.py in v0.8.",
|
|
8
|
+
"last_modified": "2026-04-05",
|
|
9
|
+
"trace_refs": [
|
|
10
|
+
"2026-04-04_00-55_runtime-harness-skills-computer-use.md",
|
|
11
|
+
"2026-04-05_22-50_v08-implementation.md"
|
|
12
|
+
],
|
|
13
|
+
"children": [
|
|
14
|
+
"godot_agent/cli/__init__.py",
|
|
15
|
+
"godot_agent/cli/__main__.py",
|
|
16
|
+
"godot_agent/cli/commands.py",
|
|
17
|
+
"godot_agent/cli/menus.py",
|
|
18
|
+
"godot_agent/cli/engine_wiring.py",
|
|
19
|
+
"godot_agent/cli/helpers.py"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"mcp_server": {
|
|
23
|
+
"path": "godot_agent/mcp_server.py",
|
|
24
|
+
"type": "entrypoint",
|
|
25
|
+
"description": "MCP server for Claude Code integration (40+ tools)",
|
|
26
|
+
"last_modified": "2026-04-04",
|
|
27
|
+
"trace_refs": ["2026-04-04_00-55_runtime-harness-skills-computer-use.md"]
|
|
28
|
+
},
|
|
29
|
+
"tools": {
|
|
30
|
+
"path": "godot_agent/tools/",
|
|
31
|
+
"type": "module",
|
|
32
|
+
"description": "Tool implementations (41 tools: file_ops, search, shell, git, godot_cli, scene_tools, script_tools, vision_analysis, vision_scoring, sprite_qa, etc.)",
|
|
33
|
+
"last_modified": "2026-04-05",
|
|
34
|
+
"trace_refs": [
|
|
35
|
+
"2026-04-04_00-55_runtime-harness-skills-computer-use.md",
|
|
36
|
+
"2026-04-05_22-50_v08-implementation.md"
|
|
37
|
+
],
|
|
38
|
+
"children": [
|
|
39
|
+
"godot_agent/tools/base.py",
|
|
40
|
+
"godot_agent/tools/registry.py",
|
|
41
|
+
"godot_agent/tools/file_ops.py",
|
|
42
|
+
"godot_agent/tools/search.py",
|
|
43
|
+
"godot_agent/tools/shell.py",
|
|
44
|
+
"godot_agent/tools/git.py",
|
|
45
|
+
"godot_agent/tools/list_dir.py",
|
|
46
|
+
"godot_agent/tools/godot_cli.py",
|
|
47
|
+
"godot_agent/tools/scene_tools.py",
|
|
48
|
+
"godot_agent/tools/script_tools.py",
|
|
49
|
+
"godot_agent/tools/analysis_tools.py",
|
|
50
|
+
"godot_agent/tools/editor_bridge.py",
|
|
51
|
+
"godot_agent/tools/memory_tool.py",
|
|
52
|
+
"godot_agent/tools/image_gen.py",
|
|
53
|
+
"godot_agent/tools/screenshot.py",
|
|
54
|
+
"godot_agent/tools/sprite_pipeline.py",
|
|
55
|
+
"godot_agent/tools/sprite_qa.py",
|
|
56
|
+
"godot_agent/tools/runtime_harness.py",
|
|
57
|
+
"godot_agent/tools/web_search.py",
|
|
58
|
+
"godot_agent/tools/vision_analysis.py",
|
|
59
|
+
"godot_agent/tools/vision_scoring.py"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"llm": {
|
|
63
|
+
"path": "godot_agent/llm/",
|
|
64
|
+
"type": "module",
|
|
65
|
+
"description": "LLM client layer with provider adapters (Anthropic, OpenAI) + dual-path backend support + vision encoding",
|
|
66
|
+
"last_modified": "2026-04-05",
|
|
67
|
+
"trace_refs": [
|
|
68
|
+
"2026-04-04_00-55_runtime-harness-skills-computer-use.md",
|
|
69
|
+
"2026-04-05_22-50_v08-implementation.md"
|
|
70
|
+
],
|
|
71
|
+
"children": [
|
|
72
|
+
"godot_agent/llm/client.py",
|
|
73
|
+
"godot_agent/llm/types.py",
|
|
74
|
+
"godot_agent/llm/streaming.py",
|
|
75
|
+
"godot_agent/llm/vision.py",
|
|
76
|
+
"godot_agent/llm/adapters/base.py",
|
|
77
|
+
"godot_agent/llm/adapters/anthropic.py",
|
|
78
|
+
"godot_agent/llm/adapters/openai.py"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"godot": {
|
|
82
|
+
"path": "godot_agent/godot/",
|
|
83
|
+
"type": "module",
|
|
84
|
+
"description": "Godot engine integration (parsers, validators, linter, collision planner)",
|
|
85
|
+
"children": [
|
|
86
|
+
"godot_agent/godot/project.py",
|
|
87
|
+
"godot_agent/godot/scene_parser.py",
|
|
88
|
+
"godot_agent/godot/scene_writer.py",
|
|
89
|
+
"godot_agent/godot/resource_validator.py",
|
|
90
|
+
"godot_agent/godot/tscn_validator.py",
|
|
91
|
+
"godot_agent/godot/gdscript_linter.py",
|
|
92
|
+
"godot_agent/godot/collision_planner.py",
|
|
93
|
+
"godot_agent/godot/consistency_checker.py",
|
|
94
|
+
"godot_agent/godot/dependency_graph.py",
|
|
95
|
+
"godot_agent/godot/pattern_advisor.py",
|
|
96
|
+
"godot_agent/godot/impact_analysis.py"
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
"runtime": {
|
|
100
|
+
"path": "godot_agent/runtime/",
|
|
101
|
+
"type": "module",
|
|
102
|
+
"description": "Agent runtime engine (session, config, modes, quality gates, reviewers, validation suite, visual regression, live bridge, playtest harness)",
|
|
103
|
+
"last_modified": "2026-04-05",
|
|
104
|
+
"trace_refs": [
|
|
105
|
+
"2026-04-04_00-55_runtime-harness-skills-computer-use.md",
|
|
106
|
+
"2026-04-05_22-50_v08-implementation.md"
|
|
107
|
+
],
|
|
108
|
+
"children": [
|
|
109
|
+
"godot_agent/runtime/engine.py",
|
|
110
|
+
"godot_agent/runtime/session.py",
|
|
111
|
+
"godot_agent/runtime/config.py",
|
|
112
|
+
"godot_agent/runtime/modes.py",
|
|
113
|
+
"godot_agent/runtime/providers.py",
|
|
114
|
+
"godot_agent/runtime/events.py",
|
|
115
|
+
"godot_agent/runtime/context_manager.py",
|
|
116
|
+
"godot_agent/runtime/runtime_bridge.py",
|
|
117
|
+
"godot_agent/runtime/error_loop.py",
|
|
118
|
+
"godot_agent/runtime/quality_gate.py",
|
|
119
|
+
"godot_agent/runtime/design_memory.py",
|
|
120
|
+
"godot_agent/runtime/reviewer.py",
|
|
121
|
+
"godot_agent/runtime/gameplay_reviewer.py",
|
|
122
|
+
"godot_agent/runtime/playtest_harness.py",
|
|
123
|
+
"godot_agent/runtime/visual_regression.py",
|
|
124
|
+
"godot_agent/runtime/validation_checks.py",
|
|
125
|
+
"godot_agent/runtime/live_client.py",
|
|
126
|
+
"godot_agent/runtime/intent_resolver.py",
|
|
127
|
+
"godot_agent/runtime/auth.py",
|
|
128
|
+
"godot_agent/runtime/oauth.py"
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
"prompts": {
|
|
132
|
+
"path": "godot_agent/prompts/",
|
|
133
|
+
"type": "module",
|
|
134
|
+
"description": "Prompt assembly, skill library, skill selector, vision templates",
|
|
135
|
+
"last_modified": "2026-04-05",
|
|
136
|
+
"trace_refs": [
|
|
137
|
+
"2026-04-04_00-55_runtime-harness-skills-computer-use.md",
|
|
138
|
+
"2026-04-05_22-50_v08-implementation.md"
|
|
139
|
+
],
|
|
140
|
+
"children": [
|
|
141
|
+
"godot_agent/prompts/system.py",
|
|
142
|
+
"godot_agent/prompts/assembler.py",
|
|
143
|
+
"godot_agent/prompts/knowledge_selector.py",
|
|
144
|
+
"godot_agent/prompts/skill_selector.py",
|
|
145
|
+
"godot_agent/prompts/skill_library.py",
|
|
146
|
+
"godot_agent/prompts/godot_playbook.py",
|
|
147
|
+
"godot_agent/prompts/build_discipline.py",
|
|
148
|
+
"godot_agent/prompts/image_templates.py",
|
|
149
|
+
"godot_agent/prompts/vision_templates.py"
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
"addons": {
|
|
153
|
+
"path": "godot_agent/addons/",
|
|
154
|
+
"type": "module",
|
|
155
|
+
"description": "Godot EditorPlugin addons (GodCodeBridge TCP JSON-RPC server)",
|
|
156
|
+
"last_modified": "2026-04-05",
|
|
157
|
+
"trace_refs": ["2026-04-05_22-50_v08-implementation.md"],
|
|
158
|
+
"children": [
|
|
159
|
+
"godot_agent/addons/god_code_bridge/god_code_bridge.gd",
|
|
160
|
+
"godot_agent/addons/god_code_bridge/plugin.cfg"
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
"security": {
|
|
164
|
+
"path": "godot_agent/security/",
|
|
165
|
+
"type": "module",
|
|
166
|
+
"description": "Security layer (path protection, tool pipeline, policies, classifier)",
|
|
167
|
+
"children": [
|
|
168
|
+
"godot_agent/security/protected_paths.py",
|
|
169
|
+
"godot_agent/security/hooks.py",
|
|
170
|
+
"godot_agent/security/policies.py",
|
|
171
|
+
"godot_agent/security/tool_pipeline.py",
|
|
172
|
+
"godot_agent/security/classifier.py"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
"tui": {
|
|
176
|
+
"path": "godot_agent/tui/",
|
|
177
|
+
"type": "module",
|
|
178
|
+
"description": "Terminal UI (Rich display, input handling, skills panel)",
|
|
179
|
+
"last_modified": "2026-04-04",
|
|
180
|
+
"trace_refs": ["2026-04-04_00-55_runtime-harness-skills-computer-use.md"]
|
|
181
|
+
},
|
|
182
|
+
"agents": {
|
|
183
|
+
"path": "godot_agent/agents/",
|
|
184
|
+
"type": "module",
|
|
185
|
+
"description": "Multi-agent dispatcher and configs"
|
|
186
|
+
},
|
|
187
|
+
"testing": {
|
|
188
|
+
"path": "godot_agent/testing/",
|
|
189
|
+
"type": "module",
|
|
190
|
+
"description": "Scenario runner for automated testing",
|
|
191
|
+
"last_modified": "2026-04-04",
|
|
192
|
+
"trace_refs": ["2026-04-04_00-55_runtime-harness-skills-computer-use.md"]
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"relationships": {
|
|
196
|
+
"cli -> prompts": "skill_selector imports for /skills command",
|
|
197
|
+
"cli -> tools": "engine_wiring registers all tools including vision tools",
|
|
198
|
+
"cli -> runtime": "engine_wiring builds engine, passes ValidationSuite config",
|
|
199
|
+
"runtime -> llm": "engine uses LLMClient dual-path (direct + backend)",
|
|
200
|
+
"runtime -> tools": "engine calls vision tools in RUN_VISUAL_ITERATION phase",
|
|
201
|
+
"runtime -> validation_checks": "quality_gate and reviewer share ValidationSuite cache",
|
|
202
|
+
"runtime -> live_client": "engine calls _try_live_bridge in PREPARE_CONTEXT",
|
|
203
|
+
"llm -> runtime": "adapters use providers.supports_computer_use()",
|
|
204
|
+
"prompts -> tools": "skill_selector narrows tool scope per active skill",
|
|
205
|
+
"addons -> runtime": "GodCodeBridge.gd serves data to LiveRuntimeClient via TCP",
|
|
206
|
+
"tools/vision -> prompts": "vision_analysis and vision_scoring use vision_templates"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project": "god-code",
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"language": "python",
|
|
5
|
+
"framework": "click+mcp+pydantic",
|
|
6
|
+
"component_roots": ["godot_agent"],
|
|
7
|
+
"test_roots": ["tests"],
|
|
8
|
+
"ignore_patterns": [
|
|
9
|
+
"__pycache__",
|
|
10
|
+
"*.pyc",
|
|
11
|
+
".venv",
|
|
12
|
+
"dist",
|
|
13
|
+
"*.egg-info",
|
|
14
|
+
".pytest_cache"
|
|
15
|
+
],
|
|
16
|
+
"trace_format": "markdown",
|
|
17
|
+
"archive_after_days": 30
|
|
18
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Deploy Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
pages: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: pages
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
build:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
- uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.12"
|
|
26
|
+
- run: pip install -e ".[docs]"
|
|
27
|
+
- run: mkdocs build --strict
|
|
28
|
+
- uses: actions/configure-pages@v5
|
|
29
|
+
- uses: actions/upload-pages-artifact@v3
|
|
30
|
+
with:
|
|
31
|
+
path: site
|
|
32
|
+
|
|
33
|
+
deploy:
|
|
34
|
+
needs: build
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
environment:
|
|
37
|
+
name: github-pages
|
|
38
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
39
|
+
steps:
|
|
40
|
+
- id: deployment
|
|
41
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Gitleaks config for god-code
|
|
2
|
+
#
|
|
3
|
+
# Purpose: local pre-commit regression prevention against accidental
|
|
4
|
+
# secret commits. Extends gitleaks default ruleset, plus allowlists
|
|
5
|
+
# for known false positives (docs with example tokens, tests of the
|
|
6
|
+
# secret-masking utility).
|
|
7
|
+
#
|
|
8
|
+
# See https://github.com/gitleaks/gitleaks for config reference.
|
|
9
|
+
|
|
10
|
+
[extend]
|
|
11
|
+
useDefault = true
|
|
12
|
+
|
|
13
|
+
[allowlist]
|
|
14
|
+
description = "god-code global allowlist"
|
|
15
|
+
|
|
16
|
+
paths = [
|
|
17
|
+
# Audit artifacts (local only, gitignored)
|
|
18
|
+
'''\.audit/''',
|
|
19
|
+
|
|
20
|
+
# Design docs may contain example API keys in code blocks
|
|
21
|
+
# (e.g. "backend_api_key=gc_live_testkey123" as documentation).
|
|
22
|
+
# Reviewers must still visually scan any new docs/plans/ additions.
|
|
23
|
+
'''docs/plans/.*\.md''',
|
|
24
|
+
|
|
25
|
+
# Tests for the secret-masking utility. These files exist to verify
|
|
26
|
+
# that secret-shaped strings are properly masked for display, so
|
|
27
|
+
# they intentionally contain fake-but-realistic token literals.
|
|
28
|
+
# If you add NEW files that test masking, extend this list.
|
|
29
|
+
'''tests/test_runtime_switch_commands\.py''',
|
|
30
|
+
]
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to God Code will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [1.0.0] — 2026-04-07
|
|
6
|
+
|
|
7
|
+
**Promoted from 1.0.0rc1 with no code changes** after Starfall workflow dogfood verification. See the `[1.0.0rc1]` section below for the full list of fixes and design rationale.
|
|
8
|
+
|
|
9
|
+
This is the first stable v1.x release of god-code.
|
|
10
|
+
|
|
11
|
+
## [1.0.0rc1] — 2026-04-07
|
|
12
|
+
|
|
13
|
+
**v1.0 is the first release where god-code is comfortable to use day-to-day without needing to know its quirks.** This is a coordinated UX overhaul. No new features, no breaking API changes — every change makes the existing tool feel less broken in everyday use.
|
|
14
|
+
|
|
15
|
+
This release closes 27 of 28 UX issues identified in the v1.0 audit (see `docs/plans/2026-04-07-v1.0.0-ux-upgrade-design.md`). The 28th was already fixed in v0.9.2.
|
|
16
|
+
|
|
17
|
+
### Headline fixes
|
|
18
|
+
|
|
19
|
+
- **Streaming "thinking" indicator** — gpt-5.4 with `reasoning_effort=high` has a 30-60s silent reasoning phase before any token streams. Previously you saw an empty cyan panel and assumed god-code was frozen. Now you see a `thinking…` spinner that animates until the first token arrives. (A1)
|
|
20
|
+
- **`max_tokens` default raised from 16384 → 65536** — long technical reports were silently truncated mid-section because the cap was way below gpt-5.4's 128K output capability. Override with `/set max_tokens 16384` if you prefer the old conservative limit. (B1)
|
|
21
|
+
- **Token count works in backend mode** — `_stream_via_backend` was missing `stream_options.include_usage`, so backend-mode users (anyone with `backend_url` + `gc_live_*`) saw `0 tokens / $0.00` after every turn. Now matches direct-mode behaviour. (B5)
|
|
22
|
+
- **Real Ctrl+C cleanup** — cancelled turns no longer leave their partial messages polluting the next turn's context. New `engine.rollback_current_turn()` drops everything appended since the most recent `submit()` began. (C2)
|
|
23
|
+
- **Tool progress spinner** — long-running tools (validation, sprite generation, screenshot — typically 10-60s) now show an auto-animating spinner via `rich.console.status` instead of going silent between `tool: started` and `tool: ok`. (A2)
|
|
24
|
+
- **Planner agent stops claiming "I'm in PLAN mode"** — the planner sub-agent system prompt was triggering an LLM hallucination where the model would announce "我目前是 PLAN 模式" / "I am in plan mode" in its response, confusing users into thinking the CLI was stuck in plan interaction mode. Prompt rewritten to explicitly disavow that wording and clarify the planner is a sub-agent inside god-code. (F1)
|
|
25
|
+
|
|
26
|
+
### Fixed (full list — 27 issues across 11 commits)
|
|
27
|
+
|
|
28
|
+
- **A1** Streaming thinking spinner (`tui/display.py`)
|
|
29
|
+
- **A2** Tool execution status spinner
|
|
30
|
+
- **A3** Blank line between successive streamed turns
|
|
31
|
+
- **A4** Planner sub-agent output bracketed with `Rule` separators
|
|
32
|
+
- **A5** Autosave success/failure events + activity log entries
|
|
33
|
+
- **B1** `max_tokens` default 16384 → 65536
|
|
34
|
+
- **B2 / G2** `tool_result_truncated` event when tool output is silently capped
|
|
35
|
+
- **B3** API error detail bumped 200 → 500 chars with `[…truncated]` marker
|
|
36
|
+
- **B4** Tool args truncated at 100 chars to prevent terminal overflow
|
|
37
|
+
- **B5** Backend streaming now sends `stream_options.include_usage`
|
|
38
|
+
- **C1** Diff read failures emit `diff_failed` event instead of `except: pass`
|
|
39
|
+
- **C2** `rollback_current_turn()` cleans message state after Ctrl+C
|
|
40
|
+
- **C4** Version check offline state surfaced as dim activity line
|
|
41
|
+
- **C5** `is_known_model_pricing()` helper; usage line shows `~$unknown` for unknown models
|
|
42
|
+
- **C6** `/resume <invalid_id>` now actionable error
|
|
43
|
+
- **D1** `god-code setup` confirmation prompt before overwriting existing config
|
|
44
|
+
- **D2** Loud yellow warning when Godot binary auto-detection fails
|
|
45
|
+
- **D3** Welcome panel reduced to 4 essential fields
|
|
46
|
+
- **D4** Multiline continuation prompt cancel hint
|
|
47
|
+
- **E1** `/help` table reorganized into 6 sections
|
|
48
|
+
- **E2** Activity log slice mismatch (10 vs 8) fixed
|
|
49
|
+
- **E4** Mode embedded in input prompt with mode-specific colour
|
|
50
|
+
- **F1** Planner prompt rewrite — disavows "PLAN mode" wording
|
|
51
|
+
- **F2** Planner prompt enforces structured output format
|
|
52
|
+
- **G3** New events: `session_autosaved`, `session_autosave_failed`, `diff_failed`, `version_check_offline`, `turn_cancelled`
|
|
53
|
+
- **H2** Tab-completion hint added to welcome banner
|
|
54
|
+
|
|
55
|
+
### Test count
|
|
56
|
+
|
|
57
|
+
665 → 681 (+16 regression tests across 5 test files)
|
|
58
|
+
|
|
59
|
+
### Known scope notes
|
|
60
|
+
|
|
61
|
+
- **C2 partial implementation** — `rollback_current_turn()` cleans up message state but the full `asyncio.create_task` cancellation pattern (true task termination of in-flight HTTP streams and subprocess tools) is deferred to v1.0.1. The existing CLI flow tests depend on the simpler synchronous-await pattern. In practice CPython's signal handling unwinds the await stack on Ctrl+C correctly, so the user-visible behaviour is fixed even without true task termination.
|
|
62
|
+
- **A2 layer 2 deferred** — universal spinner (Layer 1) ships in v1.0.0; per-tool `tool_progress` events for finer-grained reporting (Layer 2) deferred since they require per-tool instrumentation.
|
|
63
|
+
- **Subprocess termination on cancel deferred** — if a tool has already spawned a subprocess (Godot validation, sprite generation), cancelling the Python coroutine doesn't kill the subprocess. v1.0.1 will add per-tool subprocess registration + termination.
|
|
64
|
+
|
|
65
|
+
### What changed since v0.6.1 (the last PyPI release before v0.9.2)
|
|
66
|
+
|
|
67
|
+
> **PyPI was stuck at v0.6.1 from early April 2026 until v0.9.2 in this same release cycle.** Anyone who installed god-code via `pipx install god-code` between v0.6.1 and v0.9.2 was on a version that predates everything below. v1.0.0rc1 is the first PyPI release that includes all v0.7 / v0.8 / v0.9 / v1.0 work.
|
|
68
|
+
|
|
69
|
+
- **v0.7** — Demo-ready foundation: genre detection (`runtime/intent_resolver.py`), sprite QA pipeline (`tools/sprite_qa.py`), polish rubric, scenario engine (`testing/scenario_runner.py`)
|
|
70
|
+
- **v0.8** — Vision iteration loop (screenshot → analyze → fix → score), live runtime bridge to Godot 4.4 over TCP 9394, backend dual-path LLM client, platform API key auth (`gc_live_*`), CLI package split, ImageChops perf, ValidationSuite
|
|
71
|
+
- **v0.9** — Pre-launch security audit (shell hardening, session paths, MCP path containment, log redaction), OpenAI strict-mode pydantic compatibility, hatch wheel cleanup
|
|
72
|
+
- **v0.9.1** — `assistant_preview` extraction guard against empty LLM responses (was crashing the planner pass)
|
|
73
|
+
- **v0.9.2** — `AgentDispatcher` propagates streaming callbacks to sub-engines (planner pass now streams to TUI instead of blocking 60-120s)
|
|
74
|
+
- **v1.0.0rc1** — this release; the full 27-fix UX overhaul above
|
|
75
|
+
|
|
76
|
+
## [Unreleased]
|
|
77
|
+
|
|
78
|
+
### Security
|
|
79
|
+
- **run_shell hardened** against credential exfiltration: subprocess environment is now filtered to drop any variable whose name contains KEY/TOKEN/SECRET/PASSWORD/PASSWD/CREDENTIAL/AUTH/PRIVATE/CERT, and `env`, `printenv`, `set`, `export`, and reads of `.config/god-code`, `.codex/auth`, `.aws/credentials`, `.ssh/id_*`, `.ssh/authorized_keys`, `.netrc`, `.npmrc`, `.pypirc` are now blocked at all safety levels.
|
|
80
|
+
- **Session files** (`~/.agent_sessions/*.json`) are now `chmod 0o600` on write so tool outputs captured in conversation history are not world-readable.
|
|
81
|
+
- **Atomic secure writes** for `~/.config/god-code/config.json` and `~/.config/god-code/auth.json`: files are created via `tempfile` + `os.fchmod(0o600)` + `os.replace`, eliminating the TOCTOU window where an earlier `write_text` produced a briefly 0o644 file.
|
|
82
|
+
- **MCP server path containment**: every `file_path` argument to MCP tools is validated against the active project root with `Path.relative_to`, and a `.gd/.tscn/.tres/.cfg/.gdshader/.json/.md/.txt/.import` extension allowlist, preventing a misbehaving MCP client from reading or writing arbitrary files such as `~/.config/god-code/config.json`.
|
|
83
|
+
- **Prefix confusion fix** in `file_ops._validate_path`: `startswith` replaced with `Path.relative_to`, so a project rooted at `/proj/my-game` no longer accidentally permits access to `/proj/my-game-secrets/`.
|
|
84
|
+
- **Log redaction** (`godot_agent/llm/redact.py`): a new `redact_secrets` helper masks Bearer tokens, `sk-*` keys, `gc_live_*` keys, and JWT triples in any error string before it is handed to `log.error`/`log.warning`. Applied to backend, streaming, and computer-use error paths in `llm/client.py` and `llm/streaming.py`.
|
|
85
|
+
|
|
86
|
+
### Added
|
|
87
|
+
- Workspace-style chat TUI with session snapshot, recent activity, and live streaming panels
|
|
88
|
+
- Interaction modes (`apply`, `plan`, `explain`, `review`, `fix`) with mode-aware tool availability
|
|
89
|
+
- Autosaved session metadata with `/sessions`, `/resume`, `/new`, and project-aware restore flow
|
|
90
|
+
- Gameplay intent resolver with persistent profile storage in design memory
|
|
91
|
+
- `/intent` commands and TUI intent panel for confirming genre/combat/enemy direction
|
|
92
|
+
- Genre-aware internal skills: `bullet_hell`, `topdown_shooter`, `platformer_enemy`, `tower_defense`, `stealth_guard`
|
|
93
|
+
- Profile-aware playtest selection and report context
|
|
94
|
+
- MkDocs documentation site skeleton with getting-started, TUI, validation, provider, and MCP guides
|
|
95
|
+
|
|
96
|
+
### Changed
|
|
97
|
+
- Unified `ask` and `chat` rendering pipeline, including tool progress and validation feedback
|
|
98
|
+
- Improved post-tool validation visibility and tool result summaries in interactive sessions
|
|
99
|
+
- Session persistence now preserves assistant tool calls and richer metadata for restore
|
|
100
|
+
- Prompt assembly, skill routing, planner/reviewer/playtest flows, and workspace state now consume shared gameplay intent
|
|
101
|
+
|
|
102
|
+
## [0.1.0] - 2026-04-02
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
- CLI with `ask`, `chat`, `info`, `login`, `logout`, `status` commands
|
|
106
|
+
- 10 tools: read_file, write_file, edit_file, list_dir, grep, glob, git, run_shell, run_godot, screenshot_scene
|
|
107
|
+
- OpenAI-compatible API client with streaming and vision support
|
|
108
|
+
- OAuth login via Codex CLI refresh token
|
|
109
|
+
- Godot project parser (project.godot, autoloads, resolution)
|
|
110
|
+
- .tscn scene parser, writer, and format validator with auto-fix
|
|
111
|
+
- GDScript linter (naming, ordering, type annotations, anti-patterns)
|
|
112
|
+
- Collision layer planner (standard 8-layer scheme)
|
|
113
|
+
- Cross-file consistency checker (collision, signals, resource paths, groups)
|
|
114
|
+
- Project dependency graph builder
|
|
115
|
+
- Design pattern advisor (object pool, component, state machine)
|
|
116
|
+
- Godot Playbook knowledge system (17 sections, context-aware injection)
|
|
117
|
+
- Build discipline rules (incremental build-and-verify)
|
|
118
|
+
- Error detection loop with Godot output parsing and fix suggestions
|
|
119
|
+
- Conversation context compaction for long sessions
|
|
120
|
+
- Path containment security (file ops restricted to project root)
|
|
121
|
+
- Shell command sandboxing (dangerous pattern blocking)
|
|
122
|
+
- API retry with exponential backoff (429 rate limits)
|
|
123
|
+
- Content filter graceful handling (400 errors)
|
|
124
|
+
- Session persistence to JSON
|
|
125
|
+
|
|
126
|
+
### Security
|
|
127
|
+
- File operations restricted to project root directory
|
|
128
|
+
- Shell commands blocked for dangerous patterns (rm -rf /, sudo, etc.)
|
|
129
|
+
- Git argument parsing via shlex.split()
|
|
130
|
+
- OAuth tokens stored with 600 permissions
|
|
131
|
+
- API key/token masked in status output
|