god-code 0.2.0__tar.gz → 0.2.1__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-0.2.0 → god_code-0.2.1}/PKG-INFO +1 -1
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/cli.py +13 -4
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/prompts/system.py +5 -2
- {god_code-0.2.0 → god_code-0.2.1}/pyproject.toml +1 -1
- {god_code-0.2.0 → god_code-0.2.1}/.github/workflows/publish.yml +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/.gitignore +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/CHANGELOG.md +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/CLAUDE.md +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/CONTRIBUTING.md +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/LICENSE +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/README.md +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/collision_planner.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/consistency_checker.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/dependency_graph.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/gdscript_linter.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/pattern_advisor.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/project.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/resource_validator.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/scene_parser.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/scene_writer.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/godot/tscn_validator.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/llm/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/llm/client.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/llm/streaming.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/llm/vision.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/prompts/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/prompts/build_discipline.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/prompts/godot_playbook.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/prompts/knowledge_selector.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/py.typed +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/auth.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/config.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/context_manager.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/engine.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/error_loop.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/oauth.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/runtime/session.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/base.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/file_ops.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/git.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/godot_cli.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/list_dir.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/registry.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/screenshot.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/search.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/godot_agent/tools/shell.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_collision_planner.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_consistency.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_dependency_graph.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_linter.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_pattern_advisor.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_project.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_resource_validator.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_scene_parser.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_scene_writer.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/godot/test_tscn_validator.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/llm/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/llm/test_client.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/llm/test_vision.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/prompts/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/prompts/test_knowledge_selector.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/prompts/test_system_prompt.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/runtime/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/runtime/test_config.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/runtime/test_context_manager.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/runtime/test_engine.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/runtime/test_error_loop.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/test_e2e.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/__init__.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/test_file_ops.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/test_git.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/test_godot_cli.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/test_list_dir.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/test_registry.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/test_search.py +0 -0
- {god_code-0.2.0 → god_code-0.2.1}/tests/tools/test_shell.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: god-code
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: AI coding agent specialized for Godot game development
|
|
5
5
|
Project-URL: Homepage, https://github.com/chuisiufai/god-code
|
|
6
6
|
Project-URL: Repository, https://github.com/chuisiufai/god-code
|
|
@@ -75,7 +75,7 @@ def build_engine(config: AgentConfig, project_root: Path) -> ConversationEngine:
|
|
|
75
75
|
)
|
|
76
76
|
client = LLMClient(llm_config)
|
|
77
77
|
registry = build_registry()
|
|
78
|
-
system_prompt = build_system_prompt(project_root)
|
|
78
|
+
system_prompt = build_system_prompt(project_root, godot_path=config.godot_path)
|
|
79
79
|
return ConversationEngine(
|
|
80
80
|
client=client,
|
|
81
81
|
registry=registry,
|
|
@@ -195,7 +195,7 @@ def _run_setup_wizard() -> None:
|
|
|
195
195
|
click.echo()
|
|
196
196
|
|
|
197
197
|
|
|
198
|
-
_VERSION = "0.2.
|
|
198
|
+
_VERSION = "0.2.1"
|
|
199
199
|
|
|
200
200
|
|
|
201
201
|
def _check_update() -> None:
|
|
@@ -409,8 +409,17 @@ def chat(project: str = ".", config: str | None = None):
|
|
|
409
409
|
console.print(Panel(st, title="Status", border_style="blue"))
|
|
410
410
|
continue
|
|
411
411
|
|
|
412
|
-
|
|
413
|
-
|
|
412
|
+
# Support both /cd and cd
|
|
413
|
+
cd_input = user_input.strip()
|
|
414
|
+
if cd_input.startswith("/cd "):
|
|
415
|
+
cd_input = cd_input[4:]
|
|
416
|
+
elif cd_input.startswith("cd "):
|
|
417
|
+
cd_input = cd_input[3:]
|
|
418
|
+
else:
|
|
419
|
+
cd_input = None
|
|
420
|
+
|
|
421
|
+
if cd_input is not None:
|
|
422
|
+
new_path = Path(cd_input).expanduser().resolve()
|
|
414
423
|
if not new_path.exists():
|
|
415
424
|
console.print(f"[red] Path not found: {new_path}[/]")
|
|
416
425
|
continue
|
|
@@ -13,6 +13,7 @@ def build_system_prompt(
|
|
|
13
13
|
project_root: Path,
|
|
14
14
|
user_hint: str = "",
|
|
15
15
|
file_paths: list[str] | None = None,
|
|
16
|
+
godot_path: str = "godot",
|
|
16
17
|
) -> str:
|
|
17
18
|
sections = [_core_identity()]
|
|
18
19
|
|
|
@@ -28,7 +29,7 @@ def build_system_prompt(
|
|
|
28
29
|
project_file = project_root / "project.godot"
|
|
29
30
|
if project_file.exists():
|
|
30
31
|
proj = parse_project_godot(project_file)
|
|
31
|
-
sections.append(_project_context(proj, project_root))
|
|
32
|
+
sections.append(_project_context(proj, project_root, godot_path))
|
|
32
33
|
else:
|
|
33
34
|
sections.append("## Project Context\n\nNo project.godot found in working directory.")
|
|
34
35
|
|
|
@@ -52,11 +53,13 @@ You have tools to read/write files, search code, run GUT tests, take screenshots
|
|
|
52
53
|
5. **_physics_process for movement** — NEVER use _process for physics/collision logic"""
|
|
53
54
|
|
|
54
55
|
|
|
55
|
-
def _project_context(proj, project_root: Path | None = None) -> str:
|
|
56
|
+
def _project_context(proj, project_root: Path | None = None, godot_path: str = "godot") -> str:
|
|
56
57
|
lines = ["## Project Context", ""]
|
|
57
58
|
if project_root:
|
|
58
59
|
lines.append(f"- **Project Root**: `{project_root}`")
|
|
59
60
|
lines.append(f" Use this absolute path for ALL tool calls (read_file, glob, grep, etc.)")
|
|
61
|
+
lines.append(f"- **Godot Path**: `{godot_path}`")
|
|
62
|
+
lines.append(f" Use this path for run_godot tool's godot_path parameter.")
|
|
60
63
|
lines.append(f"- **Project**: {proj.name}")
|
|
61
64
|
if proj.version:
|
|
62
65
|
lines.append(f"- **Version**: {proj.version}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|