gemcode 0.3.44__tar.gz → 0.3.45__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.44/src/gemcode.egg-info → gemcode-0.3.45}/PKG-INFO +1 -1
  2. {gemcode-0.3.44 → gemcode-0.3.45}/pyproject.toml +1 -1
  3. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tui/scrollback.py +16 -6
  4. {gemcode-0.3.44 → gemcode-0.3.45/src/gemcode.egg-info}/PKG-INFO +1 -1
  5. {gemcode-0.3.44 → gemcode-0.3.45}/LICENSE +0 -0
  6. {gemcode-0.3.44 → gemcode-0.3.45}/MANIFEST.in +0 -0
  7. {gemcode-0.3.44 → gemcode-0.3.45}/README.md +0 -0
  8. {gemcode-0.3.44 → gemcode-0.3.45}/setup.cfg +0 -0
  9. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/__init__.py +0 -0
  10. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/__main__.py +0 -0
  11. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/agent.py +0 -0
  12. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/audit.py +0 -0
  13. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/autocompact.py +0 -0
  14. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/callbacks.py +0 -0
  15. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/capability_routing.py +0 -0
  16. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/cli.py +0 -0
  17. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/compaction.py +0 -0
  18. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/computer_use/__init__.py +0 -0
  19. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/computer_use/browser_computer.py +0 -0
  20. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/config.py +0 -0
  21. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/context_budget.py +0 -0
  22. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/context_warning.py +0 -0
  23. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/credentials.py +0 -0
  24. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/hitl_session.py +0 -0
  25. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/hooks.py +0 -0
  26. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/intent_classifier.py +0 -0
  27. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/interactions.py +0 -0
  28. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/invoke.py +0 -0
  29. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/kairos_daemon.py +0 -0
  30. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/limits.py +0 -0
  31. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/live_audio_engine.py +0 -0
  32. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/logging_config.py +0 -0
  33. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/mcp_loader.py +0 -0
  34. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/memory/__init__.py +0 -0
  35. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/memory/embedding_memory_service.py +0 -0
  36. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/memory/file_memory_service.py +0 -0
  37. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/modality_tools.py +0 -0
  38. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/model_errors.py +0 -0
  39. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/model_routing.py +0 -0
  40. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/openapi_loader.py +0 -0
  41. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/paths.py +0 -0
  42. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/permissions.py +0 -0
  43. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/plugins/__init__.py +0 -0
  44. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/plugins/terminal_hooks_plugin.py +0 -0
  45. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/plugins/tool_recovery_plugin.py +0 -0
  46. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/pricing.py +0 -0
  47. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/prompt_suggestions.py +0 -0
  48. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/query/__init__.py +0 -0
  49. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/query/config.py +0 -0
  50. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/query/deps.py +0 -0
  51. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/query/engine.py +0 -0
  52. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/query/stop_hooks.py +0 -0
  53. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/query/token_budget.py +0 -0
  54. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/query/transitions.py +0 -0
  55. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/refine.py +0 -0
  56. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/repl_commands.py +0 -0
  57. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/repl_slash.py +0 -0
  58. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/review_agent.py +0 -0
  59. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/session_runtime.py +0 -0
  60. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/session_store.py +0 -0
  61. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/slash_commands.py +0 -0
  62. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/thinking.py +0 -0
  63. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tool_prompt_manifest.py +0 -0
  64. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tool_registry.py +0 -0
  65. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/__init__.py +0 -0
  66. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/bash.py +0 -0
  67. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/browser.py +0 -0
  68. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/edit.py +0 -0
  69. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/filesystem.py +0 -0
  70. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/notes.py +0 -0
  71. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/search.py +0 -0
  72. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/shell.py +0 -0
  73. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/shell_gate.py +0 -0
  74. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/subtask.py +0 -0
  75. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/think.py +0 -0
  76. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/todo.py +0 -0
  77. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools/web.py +0 -0
  78. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tools_inspector.py +0 -0
  79. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/trust.py +0 -0
  80. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tui/input_handler.py +0 -0
  81. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tui/spinner.py +0 -0
  82. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tui/welcome_banner.py +0 -0
  83. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/tui/welcome_rich.py +0 -0
  84. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/version.py +0 -0
  85. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/vertex.py +0 -0
  86. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/web/__init__.py +0 -0
  87. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/web/claude_sse_adapter.py +0 -0
  88. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/web/terminal_repl.py +0 -0
  89. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode/workspace_hints.py +0 -0
  90. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode.egg-info/SOURCES.txt +0 -0
  91. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode.egg-info/dependency_links.txt +0 -0
  92. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode.egg-info/entry_points.txt +0 -0
  93. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode.egg-info/requires.txt +0 -0
  94. {gemcode-0.3.44 → gemcode-0.3.45}/src/gemcode.egg-info/top_level.txt +0 -0
  95. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_agent_instruction.py +0 -0
  96. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_autocompact.py +0 -0
  97. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_capability_routing.py +0 -0
  98. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_claude_web_adapter_sse.py +0 -0
  99. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_cli_init.py +0 -0
  100. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_computer_use_permissions.py +0 -0
  101. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_context_budget.py +0 -0
  102. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_context_warning.py +0 -0
  103. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_credentials.py +0 -0
  104. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_interactive_permission_ask.py +0 -0
  105. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_kairos_scheduler.py +0 -0
  106. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_modality_tools.py +0 -0
  107. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_model_error_retry.py +0 -0
  108. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_model_errors.py +0 -0
  109. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_model_routing.py +0 -0
  110. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_paths.py +0 -0
  111. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_permissions.py +0 -0
  112. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_prompt_suggestions.py +0 -0
  113. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_repl_commands.py +0 -0
  114. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_repl_slash.py +0 -0
  115. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_slash_commands.py +0 -0
  116. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_thinking_config.py +0 -0
  117. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_token_budget.py +0 -0
  118. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_tool_context_circulation.py +0 -0
  119. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_tools.py +0 -0
  120. {gemcode-0.3.44 → gemcode-0.3.45}/tests/test_tools_inspector.py +0 -0
  121. {gemcode-0.3.44 → gemcode-0.3.45}/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.44
3
+ Version: 0.3.45
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.44"
7
+ version = "0.3.45"
8
8
  description = "Local-first coding agent on Google Gemini + ADK"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -573,12 +573,14 @@ async def run_gemcode_scrollback_tui(
573
573
  INTENT_GREETING,
574
574
  INTENT_DESCRIPTIONS,
575
575
  )
576
- _intent, _intent_src = await classify_intent_with_source(prompt)
577
- if show_intentifying_line(_intent_src):
578
- print(
579
- f" \u23bf {ansi.dim}\u2234 Intentifying\u2026{ansi.reset}"
580
- )
581
- print("")
576
+ # Show as a transient spinner status (do not print a permanent line).
577
+ _start_anim("Intentifying\u2026")
578
+ try:
579
+ _intent, _intent_src = await classify_intent_with_source(prompt)
580
+ finally:
581
+ _stop_anim()
582
+ # If disabled, show nothing; otherwise the spinner already conveyed it.
583
+ _ = show_intentifying_line(_intent_src)
582
584
 
583
585
  if _intent == INTENT_GREETING:
584
586
  _start_anim("Replying\u2026")
@@ -726,6 +728,14 @@ async def run_gemcode_scrollback_tui(
726
728
  final_text = thought_text
727
729
  thought_text = ""
728
730
 
731
+ # If the model produced no visible text at all, show an explicit hint
732
+ # instead of returning to the prompt silently.
733
+ if not final_text and not thought_text and not assistant_wrote_text:
734
+ await typewrite(
735
+ f"{ansi.dim}(No text response received. Try 'continue' to retry the last request.){ansi.reset}"
736
+ )
737
+ print("")
738
+
729
739
  # ── Thinking display (collapsed by default, verbose with /thinking verbose)
730
740
  if thought_text and not (
731
741
  buffered_final and _normalize_ws(thought_text) == _normalize_ws(final_text)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gemcode
3
- Version: 0.3.44
3
+ Version: 0.3.45
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