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.
Files changed (286) hide show
  1. god_code-1.0.0/.codetape/component-map.json +208 -0
  2. god_code-1.0.0/.codetape/config.json +18 -0
  3. god_code-1.0.0/.github/FUNDING.yml +3 -0
  4. god_code-1.0.0/.github/workflows/docs.yml +41 -0
  5. {god_code-0.6.1 → god_code-1.0.0}/.gitignore +5 -0
  6. god_code-1.0.0/.gitleaks.toml +30 -0
  7. god_code-1.0.0/CHANGELOG.md +131 -0
  8. god_code-1.0.0/CLAUDE.md +439 -0
  9. {god_code-0.6.1 → god_code-1.0.0}/PKG-INFO +4 -2
  10. god_code-1.0.0/PRIVACY.md +113 -0
  11. god_code-1.0.0/README.md +158 -0
  12. god_code-1.0.0/SECURITY.md +66 -0
  13. god_code-1.0.0/docs/cli/ask.md +33 -0
  14. god_code-1.0.0/docs/cli/chat.md +40 -0
  15. god_code-1.0.0/docs/empty-project-to-first-verified-change.md +225 -0
  16. god_code-1.0.0/docs/gameplay-intent-and-enemy-ai-roadmap.md +619 -0
  17. god_code-1.0.0/docs/getting-started/first-run.md +66 -0
  18. god_code-1.0.0/docs/getting-started/install.md +45 -0
  19. god_code-1.0.0/docs/index.md +26 -0
  20. god_code-1.0.0/docs/mcp/overview.md +47 -0
  21. god_code-1.0.0/docs/plans/2026-04-04-api-backend-design.md +874 -0
  22. god_code-1.0.0/docs/plans/2026-04-04-api-backend-impl.md +2090 -0
  23. god_code-1.0.0/docs/plans/2026-04-04-bullet-hell-sprite-qa-demo-polish-backlog.md +522 -0
  24. god_code-1.0.0/docs/plans/2026-04-04-demo-ready-upgrade.md +479 -0
  25. god_code-1.0.0/docs/plans/2026-04-05-dogfooding-inventory.md +317 -0
  26. god_code-1.0.0/docs/plans/2026-04-05-v08-design.md +453 -0
  27. god_code-1.0.0/docs/plans/2026-04-05-v08-impl.md +1021 -0
  28. god_code-1.0.0/docs/plans/2026-04-05-work-status.md +321 -0
  29. god_code-1.0.0/docs/plans/2026-04-06-auto-flow-impl.md +1102 -0
  30. god_code-1.0.0/docs/plans/2026-04-06-interactive-ux-redesign.md +314 -0
  31. god_code-1.0.0/docs/plans/2026-04-07-god-code-prelaunch-security-audit-design.md +184 -0
  32. god_code-1.0.0/docs/plans/2026-04-07-god-code-prelaunch-security-audit-report.md +242 -0
  33. god_code-1.0.0/docs/plans/2026-04-07-god-code-prelaunch-security-audit.md +1463 -0
  34. god_code-1.0.0/docs/plans/2026-04-07-v1.0.0-ux-upgrade-design.md +687 -0
  35. god_code-1.0.0/docs/providers/byok-and-oauth.md +48 -0
  36. god_code-1.0.0/docs/tui/menu-and-commands.md +57 -0
  37. god_code-1.0.0/docs/tui/settings-and-byok.md +61 -0
  38. god_code-1.0.0/docs/validation/quality-gate.md +32 -0
  39. god_code-1.0.0/godot_agent/addons/god_code_bridge/god_code_bridge.gd +191 -0
  40. god_code-1.0.0/godot_agent/addons/god_code_bridge/plugin.cfg +7 -0
  41. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/configs.py +22 -2
  42. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/dispatcher.py +42 -1
  43. god_code-1.0.0/godot_agent/cli/__init__.py +61 -0
  44. god_code-1.0.0/godot_agent/cli/__main__.py +6 -0
  45. god_code-0.6.1/godot_agent/cli.py → god_code-1.0.0/godot_agent/cli/commands.py +856 -555
  46. god_code-1.0.0/godot_agent/cli/engine_wiring.py +362 -0
  47. god_code-1.0.0/godot_agent/cli/helpers.py +207 -0
  48. god_code-1.0.0/godot_agent/cli/menus.py +215 -0
  49. god_code-1.0.0/godot_agent/entrypoint.py +13 -0
  50. god_code-1.0.0/godot_agent/godot/audio_scaffolder.py +90 -0
  51. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/project.py +33 -0
  52. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/scene_parser.py +11 -0
  53. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/scene_writer.py +17 -8
  54. god_code-1.0.0/godot_agent/godot/ui_layout_advisor.py +293 -0
  55. god_code-1.0.0/godot_agent/godot/variant_codec.py +183 -0
  56. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/adapters/base.py +19 -1
  57. god_code-1.0.0/godot_agent/llm/adapters/openai.py +129 -0
  58. god_code-1.0.0/godot_agent/llm/client.py +226 -0
  59. god_code-1.0.0/godot_agent/llm/redact.py +37 -0
  60. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/streaming.py +69 -6
  61. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/types.py +52 -1
  62. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/mcp_server.py +397 -46
  63. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/assembler.py +60 -2
  64. god_code-1.0.0/godot_agent/prompts/genre_templates.py +120 -0
  65. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/godot_playbook.py +20 -0
  66. god_code-1.0.0/godot_agent/prompts/skill_library.py +501 -0
  67. god_code-1.0.0/godot_agent/prompts/skill_selector.py +203 -0
  68. god_code-1.0.0/godot_agent/prompts/vision_templates.py +195 -0
  69. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/config.py +31 -3
  70. god_code-1.0.0/godot_agent/runtime/context_health.py +23 -0
  71. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/context_manager.py +41 -0
  72. god_code-1.0.0/godot_agent/runtime/design_memory.py +460 -0
  73. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/engine.py +274 -18
  74. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/error_loop.py +144 -5
  75. god_code-1.0.0/godot_agent/runtime/execution_plan.py +74 -0
  76. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/gameplay_reviewer.py +32 -2
  77. god_code-1.0.0/godot_agent/runtime/intent_resolver.py +458 -0
  78. god_code-1.0.0/godot_agent/runtime/live_client.py +216 -0
  79. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/modes.py +29 -5
  80. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/oauth.py +20 -4
  81. god_code-1.0.0/godot_agent/runtime/playtest_harness.py +1394 -0
  82. god_code-1.0.0/godot_agent/runtime/polish_rubric.py +255 -0
  83. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/providers.py +6 -0
  84. god_code-1.0.0/godot_agent/runtime/quality_gate.py +422 -0
  85. god_code-1.0.0/godot_agent/runtime/reviewer.py +334 -0
  86. god_code-1.0.0/godot_agent/runtime/runtime_bridge.py +329 -0
  87. god_code-1.0.0/godot_agent/runtime/scenario_specs/bullet_hell_pattern_readability.json +11 -0
  88. god_code-1.0.0/godot_agent/runtime/scenario_specs/bullet_hell_phase_transition.json +74 -0
  89. god_code-1.0.0/godot_agent/runtime/scenario_specs/bullet_hell_wave_progression.json +79 -0
  90. god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_boss_transition.json +73 -0
  91. god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_combat_feedback.json +10 -0
  92. god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_ui_readability.json +10 -0
  93. god_code-1.0.0/godot_agent/runtime/scenario_specs/demo_wave_pacing.json +89 -0
  94. god_code-1.0.0/godot_agent/runtime/scenario_specs/platformer_enemy_gap_jump.json +63 -0
  95. god_code-1.0.0/godot_agent/runtime/scenario_specs/platformer_enemy_patrol_response.json +62 -0
  96. god_code-1.0.0/godot_agent/runtime/scenario_specs/topdown_shooter_flank_resolution.json +66 -0
  97. god_code-1.0.0/godot_agent/runtime/scenario_specs/topdown_shooter_pressure.json +66 -0
  98. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/session.py +47 -1
  99. god_code-1.0.0/godot_agent/runtime/validation_checks.py +70 -0
  100. god_code-1.0.0/godot_agent/runtime/visual_regression.py +242 -0
  101. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/hooks.py +3 -0
  102. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/policies.py +2 -1
  103. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/tool_pipeline.py +3 -0
  104. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/testing/scenario_runner.py +14 -0
  105. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/analysis_tools.py +118 -0
  106. god_code-1.0.0/godot_agent/tools/base.py +146 -0
  107. god_code-1.0.0/godot_agent/tools/editor_bridge.py +257 -0
  108. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/file_ops.py +11 -3
  109. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/godot_cli.py +111 -24
  110. god_code-1.0.0/godot_agent/tools/image_gen.py +250 -0
  111. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/memory_tool.py +5 -4
  112. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/registry.py +3 -0
  113. god_code-1.0.0/godot_agent/tools/runtime_harness.py +585 -0
  114. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/scene_tools.py +3 -2
  115. god_code-1.0.0/godot_agent/tools/screenshot.py +118 -0
  116. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/shell.py +40 -0
  117. god_code-1.0.0/godot_agent/tools/sprite_pipeline.py +171 -0
  118. god_code-1.0.0/godot_agent/tools/sprite_qa.py +204 -0
  119. god_code-1.0.0/godot_agent/tools/vision_analysis.py +84 -0
  120. god_code-1.0.0/godot_agent/tools/vision_scoring.py +134 -0
  121. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/web_search.py +16 -6
  122. god_code-1.0.0/godot_agent/tui/display.py +865 -0
  123. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tui/input_handler.py +78 -4
  124. god_code-1.0.0/mkdocs.yml +48 -0
  125. {god_code-0.6.1 → god_code-1.0.0}/pyproject.toml +15 -3
  126. god_code-1.0.0/scripts/install-hooks.sh +37 -0
  127. god_code-1.0.0/scripts/vision_model_comparison.py +367 -0
  128. god_code-1.0.0/tests/agents/test_dispatcher.py +194 -0
  129. god_code-1.0.0/tests/cli/test_setup_bridge.py +103 -0
  130. god_code-1.0.0/tests/cli_test_utils.py +80 -0
  131. god_code-1.0.0/tests/fuzz/test_input_sequences.py +83 -0
  132. god_code-1.0.0/tests/godot/test_audio_scaffolder.py +31 -0
  133. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_project.py +17 -0
  134. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_scene_parser.py +7 -0
  135. god_code-1.0.0/tests/godot/test_ui_layout_advisor.py +34 -0
  136. god_code-1.0.0/tests/godot/test_variant_codec.py +23 -0
  137. {god_code-0.6.1 → god_code-1.0.0}/tests/llm/test_adapters.py +28 -0
  138. {god_code-0.6.1 → god_code-1.0.0}/tests/llm/test_client.py +101 -0
  139. god_code-1.0.0/tests/llm/test_streaming.py +138 -0
  140. god_code-1.0.0/tests/prompts/test_genre_templates.py +23 -0
  141. {god_code-0.6.1 → god_code-1.0.0}/tests/prompts/test_prompt_assembler.py +66 -1
  142. god_code-1.0.0/tests/prompts/test_skill_selector.py +88 -0
  143. god_code-1.0.0/tests/prompts/test_vision_templates.py +83 -0
  144. god_code-1.0.0/tests/runtime/test_config.py +135 -0
  145. god_code-1.0.0/tests/runtime/test_context_health.py +34 -0
  146. {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_context_manager.py +71 -0
  147. god_code-1.0.0/tests/runtime/test_design_memory.py +130 -0
  148. god_code-1.0.0/tests/runtime/test_engine.py +495 -0
  149. god_code-1.0.0/tests/runtime/test_error_loop.py +137 -0
  150. god_code-1.0.0/tests/runtime/test_execution_plan.py +41 -0
  151. {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_gameplay_reviewer.py +18 -1
  152. god_code-1.0.0/tests/runtime/test_intent_resolver.py +159 -0
  153. god_code-1.0.0/tests/runtime/test_live_client.py +214 -0
  154. god_code-1.0.0/tests/runtime/test_playtest_harness.py +579 -0
  155. {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_quality_gate.py +27 -0
  156. god_code-1.0.0/tests/runtime/test_reviewer.py +103 -0
  157. god_code-1.0.0/tests/runtime/test_runtime_bridge.py +99 -0
  158. {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_session.py +38 -0
  159. god_code-1.0.0/tests/runtime/test_validation_checks.py +35 -0
  160. god_code-1.0.0/tests/runtime/test_visual_regression.py +118 -0
  161. {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_hooks.py +19 -0
  162. god_code-1.0.0/tests/test_auto_flow.py +90 -0
  163. god_code-1.0.0/tests/test_cli_interactive_flows.py +308 -0
  164. {god_code-0.6.1 → god_code-1.0.0}/tests/test_package_compatibility.py +9 -2
  165. god_code-1.0.0/tests/tools/__init__.py +0 -0
  166. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_analysis_tools.py +34 -0
  167. god_code-1.0.0/tests/tools/test_editor_bridge.py +279 -0
  168. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_godot_cli.py +91 -0
  169. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_memory_tool.py +22 -0
  170. god_code-1.0.0/tests/tools/test_runtime_harness.py +282 -0
  171. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_scene_tools.py +24 -0
  172. god_code-1.0.0/tests/tools/test_screenshot_tool.py +99 -0
  173. god_code-1.0.0/tests/tools/test_sprite_qa.py +141 -0
  174. god_code-1.0.0/tests/tools/test_vision_analysis.py +145 -0
  175. god_code-1.0.0/tests/tools/test_vision_scoring.py +265 -0
  176. god_code-1.0.0/tests/tui/__init__.py +0 -0
  177. god_code-1.0.0/tests/tui/test_display.py +126 -0
  178. {god_code-0.6.1 → god_code-1.0.0}/tests/tui/test_input_handler.py +36 -0
  179. god_code-1.0.0/tests/tui/test_plan_display.py +28 -0
  180. god_code-0.6.1/CHANGELOG.md +0 -46
  181. god_code-0.6.1/CLAUDE.md +0 -206
  182. god_code-0.6.1/README.md +0 -303
  183. god_code-0.6.1/godot_agent/llm/adapters/openai.py +0 -32
  184. god_code-0.6.1/godot_agent/llm/client.py +0 -98
  185. god_code-0.6.1/godot_agent/prompts/skill_library.py +0 -130
  186. god_code-0.6.1/godot_agent/prompts/skill_selector.py +0 -80
  187. god_code-0.6.1/godot_agent/runtime/design_memory.py +0 -140
  188. god_code-0.6.1/godot_agent/runtime/playtest_harness.py +0 -142
  189. god_code-0.6.1/godot_agent/runtime/quality_gate.py +0 -316
  190. god_code-0.6.1/godot_agent/runtime/reviewer.py +0 -228
  191. god_code-0.6.1/godot_agent/runtime/runtime_bridge.py +0 -74
  192. god_code-0.6.1/godot_agent/tools/base.py +0 -54
  193. god_code-0.6.1/godot_agent/tools/editor_bridge.py +0 -79
  194. god_code-0.6.1/godot_agent/tools/image_gen.py +0 -180
  195. god_code-0.6.1/godot_agent/tools/screenshot.py +0 -82
  196. god_code-0.6.1/godot_agent/tui/display.py +0 -467
  197. god_code-0.6.1/tests/agents/test_dispatcher.py +0 -97
  198. god_code-0.6.1/tests/prompts/test_skill_selector.py +0 -30
  199. god_code-0.6.1/tests/runtime/test_config.py +0 -61
  200. god_code-0.6.1/tests/runtime/test_design_memory.py +0 -48
  201. god_code-0.6.1/tests/runtime/test_engine.py +0 -211
  202. god_code-0.6.1/tests/runtime/test_error_loop.py +0 -46
  203. god_code-0.6.1/tests/runtime/test_playtest_harness.py +0 -28
  204. god_code-0.6.1/tests/runtime/test_reviewer.py +0 -50
  205. god_code-0.6.1/tests/runtime/test_runtime_bridge.py +0 -30
  206. god_code-0.6.1/tests/tools/test_editor_bridge.py +0 -46
  207. {god_code-0.6.1 → god_code-1.0.0}/.github/workflows/publish.yml +0 -0
  208. {god_code-0.6.1 → god_code-1.0.0}/AGENTS.md +0 -0
  209. {god_code-0.6.1 → god_code-1.0.0}/CONTRIBUTING.md +0 -0
  210. {god_code-0.6.1 → god_code-1.0.0}/LICENSE +0 -0
  211. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/__init__.py +0 -0
  212. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/__init__.py +0 -0
  213. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/agents/results.py +0 -0
  214. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/__init__.py +0 -0
  215. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/collision_planner.py +0 -0
  216. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/consistency_checker.py +0 -0
  217. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/dependency_graph.py +0 -0
  218. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/gdscript_linter.py +0 -0
  219. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/impact_analysis.py +0 -0
  220. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/pattern_advisor.py +0 -0
  221. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/resource_validator.py +0 -0
  222. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/godot/tscn_validator.py +0 -0
  223. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/__init__.py +0 -0
  224. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/adapters/__init__.py +0 -0
  225. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/adapters/anthropic.py +0 -0
  226. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/llm/vision.py +0 -0
  227. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/__init__.py +0 -0
  228. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/build_discipline.py +0 -0
  229. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/image_templates.py +0 -0
  230. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/knowledge_selector.py +0 -0
  231. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/prompts/system.py +0 -0
  232. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/py.typed +0 -0
  233. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/__init__.py +0 -0
  234. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/auth.py +0 -0
  235. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/events.py +0 -0
  236. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/scenario_specs/hud_feedback.json +0 -0
  237. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/scenario_specs/player_movement.json +0 -0
  238. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/runtime/scenario_specs/scene_transition.json +0 -0
  239. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/__init__.py +0 -0
  240. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/classifier.py +0 -0
  241. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/security/protected_paths.py +0 -0
  242. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/testing/__init__.py +0 -0
  243. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/__init__.py +0 -0
  244. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/git.py +0 -0
  245. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/list_dir.py +0 -0
  246. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/script_tools.py +0 -0
  247. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tools/search.py +0 -0
  248. {god_code-0.6.1 → god_code-1.0.0}/godot_agent/tui/__init__.py +0 -0
  249. {god_code-0.6.1 → god_code-1.0.0}/skills/god-code-setup/SKILL.md +0 -0
  250. {god_code-0.6.1 → god_code-1.0.0}/tests/__init__.py +0 -0
  251. {god_code-0.6.1 → god_code-1.0.0}/tests/agents/test_playtest_analyst.py +0 -0
  252. {god_code-0.6.1/tests/godot → god_code-1.0.0/tests/cli}/__init__.py +0 -0
  253. {god_code-0.6.1 → god_code-1.0.0}/tests/e2e/test_planner_worker_reviewer_flow.py +0 -0
  254. {god_code-0.6.1 → god_code-1.0.0}/tests/e2e/test_policy_enforcement.py +0 -0
  255. {god_code-0.6.1 → god_code-1.0.0}/tests/e2e/test_scenario_runner.py +0 -0
  256. {god_code-0.6.1/tests/llm → god_code-1.0.0/tests/godot}/__init__.py +0 -0
  257. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_collision_planner.py +0 -0
  258. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_consistency.py +0 -0
  259. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_dependency_graph.py +0 -0
  260. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_impact_analysis.py +0 -0
  261. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_linter.py +0 -0
  262. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_pattern_advisor.py +0 -0
  263. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_resource_validator.py +0 -0
  264. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_scene_writer.py +0 -0
  265. {god_code-0.6.1 → god_code-1.0.0}/tests/godot/test_tscn_validator.py +0 -0
  266. {god_code-0.6.1/tests/prompts → god_code-1.0.0/tests/llm}/__init__.py +0 -0
  267. {god_code-0.6.1 → god_code-1.0.0}/tests/llm/test_vision.py +0 -0
  268. {god_code-0.6.1/tests/runtime → god_code-1.0.0/tests/prompts}/__init__.py +0 -0
  269. {god_code-0.6.1 → god_code-1.0.0}/tests/prompts/test_knowledge_selector.py +0 -0
  270. {god_code-0.6.1 → god_code-1.0.0}/tests/prompts/test_system_prompt.py +0 -0
  271. {god_code-0.6.1/tests/tools → god_code-1.0.0/tests/runtime}/__init__.py +0 -0
  272. {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_mode_restrictions.py +0 -0
  273. {god_code-0.6.1 → god_code-1.0.0}/tests/runtime/test_multi_agent_flow.py +0 -0
  274. {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_classifier.py +0 -0
  275. {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_permissions.py +0 -0
  276. {god_code-0.6.1 → god_code-1.0.0}/tests/security/test_tool_pipeline.py +0 -0
  277. {god_code-0.6.1 → god_code-1.0.0}/tests/test_cli_config_flow.py +0 -0
  278. {god_code-0.6.1 → god_code-1.0.0}/tests/test_e2e.py +0 -0
  279. {god_code-0.6.1 → god_code-1.0.0}/tests/test_runtime_switch_commands.py +0 -0
  280. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_file_ops.py +0 -0
  281. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_git.py +0 -0
  282. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_list_dir.py +0 -0
  283. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_registry.py +0 -0
  284. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_script_tools.py +0 -0
  285. {god_code-0.6.1 → god_code-1.0.0}/tests/tools/test_search.py +0 -0
  286. {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,3 @@
1
+ github: 888wing
2
+ custom:
3
+ - https://buymeacoffee.com/nano122090n
@@ -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
@@ -10,3 +10,8 @@ auth.json
10
10
  *.pem
11
11
  .idea/
12
12
  .vscode/
13
+ .codetape/traces/
14
+ .codetape/drift.json
15
+ site/
16
+ .audit/
17
+ .worktrees/
@@ -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