gemcode 0.3.20__tar.gz → 0.3.21__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.20/src/gemcode.egg-info → gemcode-0.3.21}/PKG-INFO +1 -1
- {gemcode-0.3.20 → gemcode-0.3.21}/pyproject.toml +1 -1
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tui/scrollback.py +29 -22
- {gemcode-0.3.20 → gemcode-0.3.21/src/gemcode.egg-info}/PKG-INFO +1 -1
- {gemcode-0.3.20 → gemcode-0.3.21}/LICENSE +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/MANIFEST.in +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/README.md +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/setup.cfg +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/__init__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/__main__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/agent.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/audit.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/autocompact.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/callbacks.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/capability_routing.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/cli.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/compaction.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/computer_use/__init__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/computer_use/browser_computer.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/config.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/context_budget.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/context_warning.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/credentials.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/hitl_session.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/interactions.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/invoke.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/kairos_daemon.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/limits.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/live_audio_engine.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/logging_config.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/mcp_loader.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/memory/__init__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/memory/embedding_memory_service.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/memory/file_memory_service.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/modality_tools.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/model_errors.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/model_routing.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/paths.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/permissions.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/plugins/__init__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/plugins/terminal_hooks_plugin.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/plugins/tool_recovery_plugin.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/prompt_suggestions.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/query/__init__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/query/config.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/query/deps.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/query/engine.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/query/stop_hooks.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/query/token_budget.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/query/transitions.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/repl_commands.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/repl_slash.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/session_runtime.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/slash_commands.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/thinking.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tool_prompt_manifest.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tool_registry.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/__init__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/bash.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/edit.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/filesystem.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/search.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/shell.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/shell_gate.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/subtask.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/think.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/todo.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools/web.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tools_inspector.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/trust.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tui/input_handler.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tui/spinner.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tui/welcome_banner.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/tui/welcome_rich.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/version.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/vertex.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/web/__init__.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/web/claude_sse_adapter.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/web/terminal_repl.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode/workspace_hints.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode.egg-info/SOURCES.txt +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode.egg-info/dependency_links.txt +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode.egg-info/entry_points.txt +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode.egg-info/requires.txt +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/src/gemcode.egg-info/top_level.txt +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_agent_instruction.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_autocompact.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_capability_routing.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_claude_web_adapter_sse.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_cli_init.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_computer_use_permissions.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_context_budget.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_context_warning.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_credentials.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_interactive_permission_ask.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_kairos_scheduler.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_modality_tools.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_model_error_retry.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_model_errors.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_model_routing.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_paths.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_permissions.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_prompt_suggestions.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_repl_commands.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_repl_slash.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_slash_commands.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_thinking_config.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_token_budget.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_tool_context_circulation.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_tools.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_tools_inspector.py +0 -0
- {gemcode-0.3.20 → gemcode-0.3.21}/tests/test_workspace_hints.py +0 -0
|
@@ -9,6 +9,8 @@ from dataclasses import dataclass
|
|
|
9
9
|
from google.adk.agents.run_config import RunConfig
|
|
10
10
|
from google.genai import types
|
|
11
11
|
from rich.console import Console
|
|
12
|
+
from rich.markdown import Markdown as _RichMarkdown
|
|
13
|
+
from rich.padding import Padding as _RichPadding
|
|
12
14
|
|
|
13
15
|
from gemcode.capability_routing import apply_capability_routing
|
|
14
16
|
from gemcode.config import load_cli_environment
|
|
@@ -492,28 +494,33 @@ async def run_gemcode_scrollback_tui(
|
|
|
492
494
|
|
|
493
495
|
confirmation_fcs = _get_confirmation_fcs(events)
|
|
494
496
|
if not confirmation_fcs:
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
497
|
+
thought_text = "".join(buffered_thought).strip()
|
|
498
|
+
final_text = "".join(buffered_final).strip()
|
|
499
|
+
|
|
500
|
+
# ── Thinking indicator (collapsed, never full dump) ───────────────
|
|
501
|
+
# Show only a brief one-line excerpt so the user knows thinking
|
|
502
|
+
# happened without drowning in the raw internal monologue.
|
|
503
|
+
if thought_text and not (
|
|
504
|
+
buffered_final and _normalize_ws(thought_text) == _normalize_ws(final_text)
|
|
505
|
+
):
|
|
506
|
+
excerpt = thought_text.replace("\n", " ").strip()
|
|
507
|
+
if len(excerpt) > 100:
|
|
508
|
+
excerpt = excerpt[:97] + "\u2026"
|
|
509
|
+
print(
|
|
510
|
+
f" \u23bf {ansi.dim}\u2234 Thinking{ansi.reset}"
|
|
511
|
+
f"{ansi.dim} {excerpt}{ansi.reset}"
|
|
512
|
+
)
|
|
513
|
+
print("")
|
|
514
|
+
|
|
515
|
+
# ── Response — rendered as Rich Markdown ──────────────────────────
|
|
516
|
+
# Pipes the text through Rich's Markdown renderer so **bold**,
|
|
517
|
+
# *italic*, `code`, bullet lists and fenced code blocks all display
|
|
518
|
+
# correctly instead of showing raw asterisks and backticks.
|
|
519
|
+
if final_text:
|
|
520
|
+
print(f" \u23bf {ansi.bold}GemCode{ansi.reset}:")
|
|
521
|
+
console.print(
|
|
522
|
+
_RichPadding(_RichMarkdown(final_text), (0, 0, 0, 4)),
|
|
523
|
+
)
|
|
517
524
|
break
|
|
518
525
|
|
|
519
526
|
interactive_enabled = bool(getattr(cfg, "interactive_permission_ask", False))
|
|
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
|