gemcode 0.3.46__tar.gz → 0.3.47__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.
- {gemcode-0.3.46/src/gemcode.egg-info → gemcode-0.3.47}/PKG-INFO +1 -1
- {gemcode-0.3.46 → gemcode-0.3.47}/pyproject.toml +1 -1
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/agent.py +6 -6
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/__init__.py +1 -3
- {gemcode-0.3.46 → gemcode-0.3.47/src/gemcode.egg-info}/PKG-INFO +1 -1
- {gemcode-0.3.46 → gemcode-0.3.47}/LICENSE +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/MANIFEST.in +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/README.md +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/setup.cfg +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/__init__.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/__main__.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/audit.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/autocompact.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/callbacks.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/capability_routing.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/cli.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/compaction.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/computer_use/__init__.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/computer_use/browser_computer.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/config.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/context_budget.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/context_warning.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/credentials.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/hitl_session.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/hooks.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/intent_classifier.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/interactions.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/invoke.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/kairos_daemon.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/limits.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/live_audio_engine.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/logging_config.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/mcp_loader.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/memory/__init__.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/memory/embedding_memory_service.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/memory/file_memory_service.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/modality_tools.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/model_errors.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/model_routing.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/openapi_loader.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/paths.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/permissions.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/plugins/__init__.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/plugins/terminal_hooks_plugin.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/plugins/tool_recovery_plugin.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/pricing.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/prompt_suggestions.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/query/__init__.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/query/config.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/query/deps.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/query/engine.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/query/stop_hooks.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/query/token_budget.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/query/transitions.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/refine.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/repl_commands.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/repl_slash.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/review_agent.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/session_runtime.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/session_store.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/slash_commands.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/thinking.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tool_prompt_manifest.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tool_registry.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/bash.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/browser.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/edit.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/filesystem.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/notes.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/search.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/shell.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/shell_gate.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/subtask.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/think.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/todo.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools/web.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tools_inspector.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/trust.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tui/input_handler.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tui/scrollback.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tui/spinner.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tui/welcome_banner.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/tui/welcome_rich.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/version.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/vertex.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/web/__init__.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/web/claude_sse_adapter.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/web/terminal_repl.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode/workspace_hints.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode.egg-info/SOURCES.txt +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode.egg-info/dependency_links.txt +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode.egg-info/entry_points.txt +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode.egg-info/requires.txt +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/src/gemcode.egg-info/top_level.txt +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_agent_instruction.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_autocompact.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_capability_routing.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_claude_web_adapter_sse.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_cli_init.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_computer_use_permissions.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_context_budget.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_context_warning.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_credentials.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_interactive_permission_ask.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_kairos_scheduler.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_modality_tools.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_model_error_retry.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_model_errors.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_model_routing.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_paths.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_permissions.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_prompt_suggestions.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_repl_commands.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_repl_slash.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_slash_commands.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_thinking_config.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_token_budget.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_tool_context_circulation.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_tools.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_tools_inspector.py +0 -0
- {gemcode-0.3.46 → gemcode-0.3.47}/tests/test_workspace_hints.py +0 -0
|
@@ -470,12 +470,12 @@ You have native deep thinking capability — use it actively:
|
|
|
470
470
|
- For **dev servers**: `bash("npm run dev", background=True, cwd_subdir="frontend")`
|
|
471
471
|
- For **subfolders**: `bash("cargo build --release", cwd_subdir="backend")`
|
|
472
472
|
|
|
473
|
-
-
|
|
474
|
-
- `
|
|
475
|
-
- `
|
|
476
|
-
- `
|
|
477
|
-
- `
|
|
478
|
-
-
|
|
473
|
+
- **Long-running servers / watchers** — use `bash` with `background=True`:
|
|
474
|
+
- `bash("npm run dev", background=True)` — start the dev server in background
|
|
475
|
+
- `bash("python manage.py runserver", background=True)` — Django server
|
|
476
|
+
- `bash("tail -f logs/app.log", background=True)` — background log watcher
|
|
477
|
+
- NEVER call `bash("npm run dev")` without `background=True` — it blocks forever and crashes the turn
|
|
478
|
+
- After starting a background process, confirm the port is ready with `bash("sleep 2 && curl -s http://localhost:3000 -o /dev/null && echo ready")`
|
|
479
479
|
|
|
480
480
|
- **`run_command`** — simple single-executable calls without shell features:
|
|
481
481
|
- `run_command("npm", args=["install", "--legacy-peer-deps"])` — clean npm install
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from gemcode.config import GemCodeConfig
|
|
6
|
-
from gemcode.tools.bash import make_bash_tool
|
|
6
|
+
from gemcode.tools.bash import make_bash_tool
|
|
7
7
|
from gemcode.tools.edit import make_edit_tools
|
|
8
8
|
from gemcode.tools.filesystem import make_filesystem_tools
|
|
9
9
|
from gemcode.tools.search import make_grep_tool
|
|
@@ -35,7 +35,6 @@ def build_function_tools(cfg: GemCodeConfig, *, include_subtask: bool = True) ->
|
|
|
35
35
|
grep_content = make_grep_tool(cfg)
|
|
36
36
|
run_command = make_run_command(cfg)
|
|
37
37
|
bash = make_bash_tool(cfg)
|
|
38
|
-
bash_stream = make_bash_stream_tool(cfg)
|
|
39
38
|
write_file, search_replace = make_edit_tools(cfg)
|
|
40
39
|
todo_write = make_todo_tool(cfg)
|
|
41
40
|
think = make_think_tool()
|
|
@@ -55,7 +54,6 @@ def build_function_tools(cfg: GemCodeConfig, *, include_subtask: bool = True) ->
|
|
|
55
54
|
glob_files,
|
|
56
55
|
grep_content,
|
|
57
56
|
bash_tool,
|
|
58
|
-
bash_stream,
|
|
59
57
|
run_command_tool,
|
|
60
58
|
write_file,
|
|
61
59
|
search_replace,
|
|
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
|
|
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
|