gemcode 0.3.58__tar.gz → 0.3.59__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 (121) hide show
  1. {gemcode-0.3.58/src/gemcode.egg-info → gemcode-0.3.59}/PKG-INFO +1 -1
  2. {gemcode-0.3.58 → gemcode-0.3.59}/pyproject.toml +1 -1
  3. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/capability_routing.py +8 -15
  4. {gemcode-0.3.58 → gemcode-0.3.59/src/gemcode.egg-info}/PKG-INFO +1 -1
  5. {gemcode-0.3.58 → gemcode-0.3.59}/LICENSE +0 -0
  6. {gemcode-0.3.58 → gemcode-0.3.59}/MANIFEST.in +0 -0
  7. {gemcode-0.3.58 → gemcode-0.3.59}/README.md +0 -0
  8. {gemcode-0.3.58 → gemcode-0.3.59}/setup.cfg +0 -0
  9. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/__init__.py +0 -0
  10. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/__main__.py +0 -0
  11. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/agent.py +0 -0
  12. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/audit.py +0 -0
  13. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/autocompact.py +0 -0
  14. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/callbacks.py +0 -0
  15. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/cli.py +0 -0
  16. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/compaction.py +0 -0
  17. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/computer_use/__init__.py +0 -0
  18. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/computer_use/browser_computer.py +0 -0
  19. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/config.py +0 -0
  20. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/context_budget.py +0 -0
  21. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/context_warning.py +0 -0
  22. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/credentials.py +0 -0
  23. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/hitl_session.py +0 -0
  24. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/hooks.py +0 -0
  25. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/intent_classifier.py +0 -0
  26. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/interactions.py +0 -0
  27. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/invoke.py +0 -0
  28. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/kairos_daemon.py +0 -0
  29. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/limits.py +0 -0
  30. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/live_audio_engine.py +0 -0
  31. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/logging_config.py +0 -0
  32. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/mcp_loader.py +0 -0
  33. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/memory/__init__.py +0 -0
  34. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/memory/embedding_memory_service.py +0 -0
  35. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/memory/file_memory_service.py +0 -0
  36. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/modality_tools.py +0 -0
  37. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/model_errors.py +0 -0
  38. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/model_routing.py +0 -0
  39. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/openapi_loader.py +0 -0
  40. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/paths.py +0 -0
  41. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/permissions.py +0 -0
  42. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/plugins/__init__.py +0 -0
  43. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/plugins/terminal_hooks_plugin.py +0 -0
  44. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/plugins/tool_recovery_plugin.py +0 -0
  45. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/pricing.py +0 -0
  46. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/prompt_suggestions.py +0 -0
  47. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/query/__init__.py +0 -0
  48. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/query/config.py +0 -0
  49. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/query/deps.py +0 -0
  50. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/query/engine.py +0 -0
  51. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/query/stop_hooks.py +0 -0
  52. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/query/token_budget.py +0 -0
  53. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/query/transitions.py +0 -0
  54. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/refine.py +0 -0
  55. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/repl_commands.py +0 -0
  56. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/repl_slash.py +0 -0
  57. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/review_agent.py +0 -0
  58. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/session_runtime.py +0 -0
  59. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/session_store.py +0 -0
  60. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/slash_commands.py +0 -0
  61. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/thinking.py +0 -0
  62. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tool_prompt_manifest.py +0 -0
  63. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tool_registry.py +0 -0
  64. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/__init__.py +0 -0
  65. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/bash.py +0 -0
  66. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/browser.py +0 -0
  67. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/edit.py +0 -0
  68. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/filesystem.py +0 -0
  69. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/notes.py +0 -0
  70. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/search.py +0 -0
  71. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/shell.py +0 -0
  72. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/shell_gate.py +0 -0
  73. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/subtask.py +0 -0
  74. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/think.py +0 -0
  75. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/todo.py +0 -0
  76. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools/web.py +0 -0
  77. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tools_inspector.py +0 -0
  78. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/trust.py +0 -0
  79. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tui/input_handler.py +0 -0
  80. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tui/scrollback.py +0 -0
  81. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tui/spinner.py +0 -0
  82. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tui/welcome_banner.py +0 -0
  83. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/tui/welcome_rich.py +0 -0
  84. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/version.py +0 -0
  85. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/vertex.py +0 -0
  86. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/web/__init__.py +0 -0
  87. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/web/claude_sse_adapter.py +0 -0
  88. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/web/terminal_repl.py +0 -0
  89. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode/workspace_hints.py +0 -0
  90. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode.egg-info/SOURCES.txt +0 -0
  91. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode.egg-info/dependency_links.txt +0 -0
  92. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode.egg-info/entry_points.txt +0 -0
  93. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode.egg-info/requires.txt +0 -0
  94. {gemcode-0.3.58 → gemcode-0.3.59}/src/gemcode.egg-info/top_level.txt +0 -0
  95. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_agent_instruction.py +0 -0
  96. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_autocompact.py +0 -0
  97. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_capability_routing.py +0 -0
  98. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_claude_web_adapter_sse.py +0 -0
  99. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_cli_init.py +0 -0
  100. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_computer_use_permissions.py +0 -0
  101. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_context_budget.py +0 -0
  102. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_context_warning.py +0 -0
  103. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_credentials.py +0 -0
  104. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_interactive_permission_ask.py +0 -0
  105. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_kairos_scheduler.py +0 -0
  106. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_modality_tools.py +0 -0
  107. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_model_error_retry.py +0 -0
  108. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_model_errors.py +0 -0
  109. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_model_routing.py +0 -0
  110. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_paths.py +0 -0
  111. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_permissions.py +0 -0
  112. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_prompt_suggestions.py +0 -0
  113. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_repl_commands.py +0 -0
  114. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_repl_slash.py +0 -0
  115. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_slash_commands.py +0 -0
  116. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_thinking_config.py +0 -0
  117. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_token_budget.py +0 -0
  118. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_tool_context_circulation.py +0 -0
  119. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_tools.py +0 -0
  120. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_tools_inspector.py +0 -0
  121. {gemcode-0.3.58 → gemcode-0.3.59}/tests/test_workspace_hints.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gemcode
3
- Version: 0.3.58
3
+ Version: 0.3.59
4
4
  Summary: Local-first coding agent on Google Gemini + ADK
5
5
  Author: GemCode Contributors
6
6
  License: Apache License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gemcode"
7
- version = "0.3.58"
7
+ version = "0.3.59"
8
8
  description = "Local-first coding agent on Google Gemini + ADK"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -8,6 +8,9 @@ outer/inner loops intact.
8
8
  It is intentionally conservative:
9
9
  - It only enables capabilities (turns them on), it does not disable
10
10
  explicitly requested capabilities.
11
+ - Computer-use is NEVER auto-enabled from prompt heuristics. It requires
12
+ an explicit user action (/computer on or capability_mode=computer) because
13
+ it switches the model, launches a browser, and blocks file-system tools.
11
14
  - Computer-use model selection is enforced at model-routing precedence, and
12
15
  tool execution remains permission-gated via `callbacks.py`.
13
16
  """
@@ -44,19 +47,6 @@ _EMBEDDINGS_TRIGGERS = [
44
47
  "relevant docs",
45
48
  ]
46
49
 
47
- _COMPUTER_TRIGGERS = [
48
- "click",
49
- "button",
50
- "double click",
51
- "type into",
52
- "navigate",
53
- "browser",
54
- "open website",
55
- "scroll",
56
- "ui automation",
57
- "open tab",
58
- ]
59
-
60
50
  _AUDIO_TRIGGERS = [
61
51
  "audio",
62
52
  "voice",
@@ -125,13 +115,16 @@ def apply_capability_routing(
125
115
  return
126
116
 
127
117
  # Auto mode: prompt heuristics.
118
+ # NOTE: computer-use is deliberately NOT auto-triggered here.
119
+ # It must be enabled explicitly via /computer on or capability_mode=computer.
120
+ # Auto-enabling it causes the model to switch to the computer-use preview
121
+ # for any prompt containing words like "navigate"/"scroll"/"browser",
122
+ # which blocks normal file and code tools for completely unrelated tasks.
128
123
  if mode == "auto":
129
124
  if _contains_any(p_norm, _RESEARCH_TRIGGERS):
130
125
  enable_research()
131
126
  if _contains_any(p_norm, _EMBEDDINGS_TRIGGERS):
132
127
  enable_embeddings()
133
- if _contains_any(p_norm, _COMPUTER_TRIGGERS):
134
- enable_computer()
135
128
  if _contains_any(p_norm, _AUDIO_TRIGGERS):
136
129
  enable_audio()
137
130
  return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gemcode
3
- Version: 0.3.58
3
+ Version: 0.3.59
4
4
  Summary: Local-first coding agent on Google Gemini + ADK
5
5
  Author: GemCode Contributors
6
6
  License: Apache License
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