tunacode-cli 0.1.74__tar.gz → 0.1.75__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.
- tunacode_cli-0.1.75/.claude/delta/2026-02-22-enable-mypy-pre-commit-hook.md +34 -0
- tunacode_cli-0.1.75/.claude/delta/2026-02-22-mypy-type-contract-fixes.md +47 -0
- tunacode_cli-0.1.75/.claude/delta/2026-02-23_parallel-tool-call-rollout.md +34 -0
- tunacode_cli-0.1.75/.claude/metadata/research/2026-02-23-parallel-tool-calls-rollout-plan.md +117 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.pre-commit-config.yaml +2 -2
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/CHANGELOG.md +17 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/PKG-INFO +13 -4
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/README.md +11 -2
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/core/core.md +26 -1
- tunacode_cli-0.1.75/docs/modules/tools/hashline-subsystem.md +329 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/tools/tools.md +25 -4
- tunacode_cli-0.1.75/memory-bank/research/2026-02-22_04-30-00_compact_ux_issues.md +132 -0
- tunacode_cli-0.1.75/memory-bank/research/2026-02-22_compact-command-ux-mapping.md +140 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/pyproject.toml +2 -2
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/pytest.ini +1 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/check-file-length.sh +2 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/settings.py +1 -1
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/user_config.py +1 -1
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/constants.py +2 -2
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/agent_components/agent_config.py +54 -6
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/main.py +161 -7
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/compaction/types.py +10 -10
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/prompts/system_prompt.md +13 -12
- tunacode_cli-0.1.75/src/tunacode/tools/discover.py +77 -0
- tunacode_cli-0.1.75/src/tunacode/tools/hashline.py +106 -0
- tunacode_cli-0.1.75/src/tunacode/tools/hashline_edit.py +292 -0
- tunacode_cli-0.1.75/src/tunacode/tools/line_cache.py +141 -0
- tunacode_cli-0.1.75/src/tunacode/tools/prompts/hashline_edit_prompt.xml +16 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/prompts/read_file_prompt.xml +2 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/read_file.py +55 -20
- tunacode_cli-0.1.75/src/tunacode/tools/utils/discover_pipeline.py +447 -0
- tunacode_cli-0.1.75/src/tunacode/tools/utils/discover_terms.py +213 -0
- tunacode_cli-0.1.75/src/tunacode/tools/utils/discover_types.py +91 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/web_fetch.py +2 -1
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/write_file.py +1 -1
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/app.py +6 -5
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/compact.py +39 -9
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/debug.py +4 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/context_panel.py +17 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/panels.py +76 -11
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/__init__.py +2 -2
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/diagnostics.py +1 -1
- tunacode_cli-0.1.74/src/tunacode/ui/renderers/tools/update_file.py → tunacode_cli-0.1.75/src/tunacode/ui/renderers/tools/hashline_edit.py +17 -17
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/read_file.py +50 -11
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/repl_support.py +3 -1
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/shell_runner.py +5 -3
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/styles/panels.tcss +17 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/editor.py +17 -2
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/status_bar.py +51 -2
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/integration/tools/test_tool_conformance.py +1 -1
- tunacode_cli-0.1.75/tests/system/cli/test_repl_support.py +95 -0
- tunacode_cli-0.1.75/tests/system/cli/test_tmux_tools.py +251 -0
- tunacode_cli-0.1.75/tests/tools/__init__.py +0 -0
- tunacode_cli-0.1.75/tests/tools/test_hashline.py +141 -0
- tunacode_cli-0.1.75/tests/tools/test_hashline_edit.py +296 -0
- tunacode_cli-0.1.75/tests/tools/test_line_cache.py +192 -0
- tunacode_cli-0.1.75/tests/unit/core/test_request_orchestrator_parallel_tools.py +185 -0
- tunacode_cli-0.1.75/tests/unit/core/test_tool_concurrency_limit.py +66 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/tools/test_discover.py +19 -9
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_base_renderer.py +3 -3
- tunacode_cli-0.1.74/tests/unit/ui/test_update_file_renderer.py → tunacode_cli-0.1.75/tests/unit/ui/test_hashline_edit_renderer.py +4 -4
- tunacode_cli-0.1.75/tests/unit/ui/test_status_bar_layout.py +45 -0
- tunacode_cli-0.1.75/tests/unit/ui/test_tool_panel_css_flow.py +160 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/uv.lock +7 -4
- tunacode_cli-0.1.74/src/tunacode/tools/discover.py +0 -574
- tunacode_cli-0.1.74/src/tunacode/tools/prompts/update_file_prompt.xml +0 -9
- tunacode_cli-0.1.74/src/tunacode/tools/update_file.py +0 -67
- tunacode_cli-0.1.74/src/tunacode/tools/utils/text_match.py +0 -424
- tunacode_cli-0.1.74/tests/system/cli/test_repl_support.py +0 -27
- tunacode_cli-0.1.74/tests/unit/core/test_text_match.py +0 -112
- tunacode_cli-0.1.74/tests/unit/ui/test_context_panel_summary.py +0 -176
- tunacode_cli-0.1.74/tests/unit/ui/test_status_bar_layout.py +0 -17
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/JOURNAL.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/2026-01-12_missing-cached-tokens.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/2026-01-21_abort-hang-investigation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/2026-01-21_resume-hang-investigation-updated.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/2026-01-21_resume-hang-investigation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/2026-01-21_stream-hang-timeout.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/2026-02-01_openai-chat-invalid-response.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/context-loss-bug.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/continuous-learning.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/debug_history/list-dir-tool-execution-error.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-01-16-panel-width-refactoring.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-01-17-dangling-tool-calls.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-01-25_orphaned_retry_prompt_on_dangling_cleanup.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-01-25_tool-registry-todo-alignment.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-01-26_boundary-contracts-not-enforced.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-cli-main-compatibility.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-esc-handler-extraction.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-pruning-token-estimation-optimization.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-remove-cli-shim.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-remove-heuristic-token-counting.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-remove-toolbuffer-shim.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-resource-bar-usage-totals.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-sanitize-canonical-cache.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-token-pruning-efficiency-plan.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-02-tool-name-normalization.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-04-main-agent-refactoring.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-05-tech-debt-scanner-markdown-exclusion.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-05-ui-messaging-layer-facade.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-07_remove-orchestrator-tool-dispatcher.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-11-compaction-pr378-review-fixes.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-11-compaction-system-implementation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-11-status-bar-content-row-regression.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-11-theme-variable-contract.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-11-tinyagent-base-url-provider-flex.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-16-context-rail-inspector-styling.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-16-slopgotchi-pet-widget.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-16-update-file-before-after-separator-lane.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-17-thinking-delta-tui-integration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-17-thinking-integration-plan-hardening.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-20-app-lifecycle-class-refactor.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-20-disable-agent-text-streaming-default.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-20-system-prompt-tooling-refresh.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/2026-02-21_minimax-tool-call-bugs.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/remove-all-exports-use-direct-imports.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/remove-global-cache-user-config.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/remove-unused-cleanup-session.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/tun-00df-add-tinyagent-dependency.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/tun-1658-phase6-messaging-normalization.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/delta/tun-1ad5-wrap-tools-as-tinyagent-agenttool.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/metadata/pydantic_runtime_removal_attempt.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/metadata/research/2026-02-01-glob-text-match-research.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/metadata/research/2026-02-12-tinyagent-rust-only-migration-map.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/patterns/cache-layer-typed-accessors.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/patterns/usage-total-token-source.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/qa/2026-02-11-theme-visual-verification.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/qa/no-cargo-cult-fixes.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/qa/raw.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/qa/semantically-dead-code.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_01_canonical_messaging_adoption.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_02_session_state_decomposition.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_03_message_parity_harness.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_04_canonical_sanitization.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_05_tool_call_registry_ownership.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_06_react_state_alignment.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_07_todo_state_alignment.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_08_usage_metrics_consolidation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_09_architecture_enforcement_tests.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.claude/task/task_10_legacy_path_decommission.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.coderabbit.yaml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/dependabot.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/pull_request_template.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/workflows/dependency-map.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/workflows/empty-dir-check.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/workflows/lint.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/workflows/publish-release.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/workflows/release.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.github/workflows/tech-debt.yml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.gitignore +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.test_reports/.gitkeep +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/.worktree-meta +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/AGENTS.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/AUDIT_SMALL_WINS_PLAN.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/CLAUDE.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/LICENSE +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/MANIFEST.in +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/Makefile +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/NOTES.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/assets/tunacode.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/assets/tunacode_example.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/README.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/architecture/dependencies/DEPENDENCY_LAYERS.dot +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/architecture/dependencies/DEPENDENCY_LAYERS.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/architecture/dependencies/DEPENDENCY_LAYERS.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/boundaries/.gitkeep +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/codebase-map/structure/tree-structure.txt +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/exceptions/.gitkeep +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/images/dream-ui/tunacode-cli-home-catpu.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/images/dream-ui/tunacode-cli-home.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/images/dream-ui/tunacode-cli-lsp.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/images/dream-ui/tunacode-cli-response.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/images/tool-calls.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/images/tunacode.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/migration/.gitkeep +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/configuration/configuration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/index.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/infrastructure/infrastructure.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/types/types.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/ui/commands.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/ui/ui.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/modules/utils/utils.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/quality-gates/.gitkeep +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/runbooks/.gitkeep +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/tests/.gitkeep +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/docs/ui/css-architecture.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/handoff.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/delta/2026-01-28_decoupled-tools.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/execute/2026-01-27_17-52-14_insert-before-stream-fix.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/execute/2026-01-27_18-00-00_insert-before-stream-fix.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/execute/2026-01-27_21-50-00_tickets.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/handoffs/tinyagent-baseurl-integration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-26_14-30-00_planning-feature-deletion.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-26_17-11-28_single-md-prompt-migration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-26_17-15-00_research-subagent-deletion.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-27_00-19-58_issue-311-core-types-layer.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-27_17-41-42_insert-before-stream-fix.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-27_17-59-28_issue-313-core-utils-layer-violation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-27_21-30-00_issue-314-lateral-coupling.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-27_21-45-00_delete-indexing-system.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-27_chat-container-refactor.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-01-28_pydantic-ai-adapter-layer.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-01_complexity-refactoring.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-02_13-29-36_esc-logic-module-extraction.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-02_16-46-20_pydantic-usage-token-counting.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-02_sanitize-loop-canonicalization-bottleneck.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-02_token-pruning-efficiency-plan.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-05_issue-358_tool-dispatcher-complexity.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-11_04-15-37_compaction-system.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-11_theme-architecture-handoff.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-17_thinking-content-integration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/2026-02-19_api-key-ux-improvement.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/dream-mockup-slim-panels.webp +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/nextstep-theme.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/nextstep-theme.svg +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/tunacode-theme.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/tunacode-theme.svg +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/verification-home.svg +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/verification-lsp.svg +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/verification-nextstep-home.svg +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/assets/verification/verification-response.svg +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/plan/reserch.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/.claude/settings.local.json +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-26_16-41-59_research-subagent-deletion.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-26_17-08-03_single-md-prompt-migration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-26_17-22-59_local-mode-removal-research.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-26_17-34-12_permission-system-removal-map.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-26_18-26-16_yolo-system-removal-verification.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-26_planning-feature-deletion.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_00-10-38_issue-311-core-types-layer-violation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_11-53-37_issue-313-core-utils-layer-violation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_13-11-55_issue-314-lateral-coupling-tools-indexing-lsp.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_16-11-11_streaming_and_panels.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_17-28-01_lsp-panel-integration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_17-45-00_chatcontainer_refactor.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_alchemy-rs-migration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_insert-before-stream-investigation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-27_streaming-abort-context-loss.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-28_00-25-00_api-error-logging-gaps.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-28_01-15-00_file-autocomplete-fuzzy-matching.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-28_11-33-05_utils-cross-layer-imports.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-28_11-38-38_tools-cross-layer-imports.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-01-28_recent-changes-summary.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-01-token-counting-logic.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-01_19-43-34_prompt-engineer-remnants.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-01_complexity-hotspots.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-02_12-56-40_esc-key-flow.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-02_20-47-34_agent_bottlenecks.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-02_sanitize_loop_canonicalization_bottleneck.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-02_token_estimation_overhead.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-04_15-20-48_core_directory_analysis.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-05_tool_dispatcher_complexity_358.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-07_18-06-58_compaction-system.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-07_19-30-00_agent-response-highlighting.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-07_tinyagent-v2.5-migration-map.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-09_11-28-57_dev_install_tinyagent_setup.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-09_11-31-28_agent_panel_throughput.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-09_11-33-09_pydantic-ai_to_tinyagent_migration_and_recent_changes.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-09_13-54-38_compression_compaction_cleanup_verification.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-10_21-29-05_compaction-system-mapping.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-11_00-00-00_tinyagent_streaming_reimplementation.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-12_issue-382_manual-compact-boundary-map.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-16_diff_rendering_pipeline.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-17_thinking-content-integration.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/2026-02-19_api-key-ux-improvement.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/bottleneck-analysis.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/memory-bank/research/esc-key-flow-diagram.html +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/plan.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/reports/SMALL_WINS_AUDIT.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/reports/discover-benchmark-case-study.html +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/reports/tunacode-site-reference.png +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/check-naming-conventions.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/check-unused-constants.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/check_agents_freshness.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/check_unused_modules.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/dev-setup.sh +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/download_ripgrep.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/generate-release-notes.sh +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/generate_structure_tree.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/grimp_layers_report.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/install_linux.sh +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/playwright_cache.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/preview_tool_panels.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/run-dead-imports.sh +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/startup_timer.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/todo_baseline.json +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/todo_scanner.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/ui_import_timer.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/uninstall.sh +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/update_models_registry.sh +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/scripts/utils/vulture_whitelist.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/defaults.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/feature_flags.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/ignore_patterns.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/limits.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/models.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/models_registry.json +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/paths.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/configuration/pricing.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/helpers.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/resume/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/resume/sanitize.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/agents/resume/sanitize_debug.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/compaction/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/compaction/controller.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/compaction/prompts.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/compaction/summarizer.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/debug/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/debug/usage_trace.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/logging/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/logging/handlers.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/logging/levels.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/logging/manager.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/logging/records.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/session/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/session/state.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/types/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/types/agent_state.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/types/state.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/types/state_structures.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/types/tool_registry.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/configuration.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/constants.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/file_filter.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/formatting.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/lsp_status.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/messaging.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/shared_types.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/system_paths.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/core/ui_api/user_configuration.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/exceptions.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/caches/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/caches/agents.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/caches/limits_settings.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/caches/models_registry.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/caches/tunacode_context.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/manager.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/metadata.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/cache/strategies.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/infrastructure/file_filter.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/py.typed +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/test_dead_code/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/test_dead_code/never_imported.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/bash.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/cache_accessors/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/cache_accessors/ignore_manager_cache.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/cache_accessors/ripgrep_cache.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/cache_accessors/xml_prompts_cache.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/decorators.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/ignore.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/ignore_manager.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/lsp/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/lsp/client.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/lsp/diagnostics.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/lsp/servers.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/prompts/discover_prompt.xml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/prompts/web_fetch_prompt.xml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/utils/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/utils/formatting.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/utils/ripgrep.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/tools/xml_helper.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/types/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/types/base.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/types/callbacks.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/types/canonical.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/types/dataclasses.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/PLAN.md +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/assets/logo.ansi +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/clipboard.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/base.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/cancel.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/clear.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/exit.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/help.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/model.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/resume.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/theme.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/thoughts.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/commands/update.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/esc/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/esc/handler.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/esc/types.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/headless/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/headless/output.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/lifecycle.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/logo_assets.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/main.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/model_display.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/agent_response.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/errors.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/panel_widths.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/search.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/thinking.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/base.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/bash.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/discover.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/glob.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/grep.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/list_dir.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/syntax_utils.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/web_fetch.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/renderers/tools/write_file.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/screens/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/screens/api_key_entry.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/screens/model_picker.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/screens/session_picker.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/screens/setup.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/screens/theme_picker.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/screens/update_confirm.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/slopgotchi/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/slopgotchi/panel.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/styles/layout.tcss +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/styles/modals.tcss +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/styles/widgets.tcss +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/styles.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/thinking_state.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/welcome.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/chat.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/command_autocomplete.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/file_autocomplete.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/messages.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/ui/widgets/resource_bar.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/utils/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/utils/messaging/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/utils/messaging/adapter.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/utils/messaging/token_counter.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/utils/system/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/src/tunacode/utils/system/gitignore.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/architecture/__init__.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/architecture/test_import_order.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/architecture/test_imports_in_init.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/architecture/test_init_bloat.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/architecture/test_layer_dependencies.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/benchmarks/bench_discover.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/conftest.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/integration/core/test_minimax_execution_path.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/integration/core/test_mtime_caches_end_to_end.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/integration/core/test_tinyagent_alchemy_usage_contract_live.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/integration/tools/test_shell_runner.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/integration/tools/test_web_fetch.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/system/cli/test_cli_default_command.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/system/cli/test_headless_cli.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/system/cli/test_startup.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/test_compaction.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/test_dependency_layers.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/tools/test_ignore.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/configuration/test_default_config_minimax_keys.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/configuration/test_default_config_stream_agent_text.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/configuration/test_models_registry_minimax_contract.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/configuration/test_provider_api_key_env_fallback.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_agent_cache_abort.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_compaction_controller_outcomes.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_compaction_summarizer.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_context_overflow_detection.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_exceptions.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_logging.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_openrouter_usage_metrics.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_provider_error_surfacing.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_session_state_defaults.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_session_usage_schema.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_thinking_stream_routing.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_tinyagent_openrouter_model_config.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/core/test_usage_trace_debug.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/infrastructure/test_cache_infrastructure.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/infrastructure/test_migrated_lru_cache_replacements.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/infrastructure/test_typed_cache_accessors.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/test_sanitize_canonicalization.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/tools/test_tinyagent_tool_adapter.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/tools/test_tool_decorators.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/types/test_adapter.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/types/test_canonical.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/types/test_tool_registry.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_agent_response.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_api_key_entry.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_app_latest_response_text.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_base_tool_renderer.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_chat_container.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_command_contracts.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_context_panel_toggle.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_diagnostics_renderer.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_error_renderer_authentication.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_model_display.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_resource_bar_usage_cost.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_stream_agent_text_setting.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_supported_themes.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_theme_variable_contract.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/ui/test_thinking_renderer.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/utils/test_shell_command_escape.py +0 -0
- {tunacode_cli-0.1.74 → tunacode_cli-0.1.75}/tests/unit/utils/test_token_counter.py +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Enable mypy at pre-commit stage (keep pre-push enforcement)
|
|
3
|
+
type: delta
|
|
4
|
+
link: enable-mypy-pre-commit-hook
|
|
5
|
+
path: .pre-commit-config.yaml
|
|
6
|
+
depth: 0
|
|
7
|
+
seams: [S]
|
|
8
|
+
ontological_relations:
|
|
9
|
+
- affects: [[tooling]]
|
|
10
|
+
- affects: [[typing-contracts]]
|
|
11
|
+
- affects: [[developer-workflow]]
|
|
12
|
+
tags:
|
|
13
|
+
- mypy
|
|
14
|
+
- pre-commit
|
|
15
|
+
- quality-gate
|
|
16
|
+
created_at: 2026-02-22T15:17:04-06:00
|
|
17
|
+
updated_at: 2026-02-22T15:17:04-06:00
|
|
18
|
+
uuid: 6a5c9232-30f7-4aa9-bf94-ecb0197d6263
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Enable mypy at pre-commit stage (keep pre-push enforcement)
|
|
22
|
+
|
|
23
|
+
## Summary
|
|
24
|
+
|
|
25
|
+
Updated `.pre-commit-config.yaml` so the `mypy` hook runs during both:
|
|
26
|
+
|
|
27
|
+
- `pre-commit`
|
|
28
|
+
- `pre-push`
|
|
29
|
+
|
|
30
|
+
This catches type errors earlier at commit time while retaining the existing push-time gate.
|
|
31
|
+
|
|
32
|
+
## Verification
|
|
33
|
+
|
|
34
|
+
- `uv run pre-commit run mypy --files src/tunacode/ui/widgets/editor.py` ✅
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Resolve four mypy contract violations with source-level typing fixes
|
|
3
|
+
type: delta
|
|
4
|
+
link: mypy-type-contract-fixes
|
|
5
|
+
path: src/tunacode
|
|
6
|
+
depth: 1
|
|
7
|
+
seams: [S, M]
|
|
8
|
+
ontological_relations:
|
|
9
|
+
- affects: [[ui]]
|
|
10
|
+
- affects: [[core]]
|
|
11
|
+
- affects: [[tools]]
|
|
12
|
+
- affects: [[typing-contracts]]
|
|
13
|
+
tags:
|
|
14
|
+
- mypy
|
|
15
|
+
- typing
|
|
16
|
+
- literals
|
|
17
|
+
- rich
|
|
18
|
+
- error-handling
|
|
19
|
+
created_at: 2026-02-22T15:12:48-06:00
|
|
20
|
+
updated_at: 2026-02-22T15:12:48-06:00
|
|
21
|
+
uuid: febc9ce8-4061-4ee8-b2a1-770f0997a7ca
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Resolve four mypy contract violations with source-level typing fixes
|
|
25
|
+
|
|
26
|
+
## Summary
|
|
27
|
+
|
|
28
|
+
Fixed the reported mypy errors by tightening type contracts at their source:
|
|
29
|
+
|
|
30
|
+
1. `editor.py`: added explicit Rich style narrowing so `Text.stylize()` always receives `StyleType`.
|
|
31
|
+
2. `web_fetch.py`: marked `_handle_http_error()` as `NoReturn` because it always raises.
|
|
32
|
+
3. `compaction/types.py`: made compaction status constants literal-typed (`Final[Literal[...]]`) and defined `CompactionStatus` as a type alias.
|
|
33
|
+
4. `shell_runner.py`: unpacked `render_bash()` tool render tuple and returned only the renderable content as required by `RenderableType`.
|
|
34
|
+
|
|
35
|
+
No shims, no fallback branches, and no cast-based suppression were introduced.
|
|
36
|
+
|
|
37
|
+
## Files changed
|
|
38
|
+
|
|
39
|
+
- `src/tunacode/ui/widgets/editor.py`
|
|
40
|
+
- `src/tunacode/tools/web_fetch.py`
|
|
41
|
+
- `src/tunacode/core/compaction/types.py`
|
|
42
|
+
- `src/tunacode/ui/shell_runner.py`
|
|
43
|
+
|
|
44
|
+
## Verification
|
|
45
|
+
|
|
46
|
+
- `uv run mypy src/tunacode/ui/widgets/editor.py src/tunacode/tools/web_fetch.py src/tunacode/core/compaction/controller.py src/tunacode/ui/shell_runner.py src/tunacode/core/compaction/types.py` ✅
|
|
47
|
+
- `uv run ruff check src/tunacode/ui/widgets/editor.py src/tunacode/tools/web_fetch.py src/tunacode/core/compaction/types.py src/tunacode/ui/shell_runner.py` ✅
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: delta
|
|
3
|
+
date: 2026-02-23
|
|
4
|
+
status: done
|
|
5
|
+
tags: [tinyagent, parallel-tool-calls, concurrency-cap, tui]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Parallel Tool-call Rollout via tiny-agent-os 1.2.5
|
|
9
|
+
|
|
10
|
+
## Scope completed
|
|
11
|
+
|
|
12
|
+
- `tun-d506` — bumped `tiny-agent-os` to `>=1.2.5` and refreshed `uv.lock`.
|
|
13
|
+
- `tun-q44p` — enforced a hard cap of 3 concurrent tool executions by wrapping all runtime `AgentTool.execute` handlers with a shared semaphore in `agent_config.py`.
|
|
14
|
+
- `tun-5nny` — hardened `RequestOrchestrator` tool lifecycle handling:
|
|
15
|
+
- strict `tool_execution_start` args normalization (`dict` or JSON object string only)
|
|
16
|
+
- fail-loud `TypeError` on malformed payloads
|
|
17
|
+
- explicit duration semantics for parallel batches (suppress per-tool duration when batch execution is detected)
|
|
18
|
+
- `tun-6qpn` — updated TUI status behavior for parallel starts/completions:
|
|
19
|
+
- status bar tracks multiple in-flight tools coherently
|
|
20
|
+
- callbacks now emit completion before last-action updates
|
|
21
|
+
- shell status path aligned with the same completion semantics
|
|
22
|
+
|
|
23
|
+
## Repo truth updates
|
|
24
|
+
|
|
25
|
+
- README migration note now reflects parallel batches with max 3 in-flight calls.
|
|
26
|
+
- Changelog `Unreleased` section documents dependency cutover, runtime cap, orchestrator hardening, and UI behavior update.
|
|
27
|
+
|
|
28
|
+
## Validation
|
|
29
|
+
|
|
30
|
+
- `uv run ruff check --fix .`
|
|
31
|
+
- `uv run ruff check .`
|
|
32
|
+
- `uv run pytest tests/unit/core/test_tool_concurrency_limit.py tests/unit/core/test_request_orchestrator_parallel_tools.py tests/unit/ui/test_status_bar_layout.py tests/system/cli/test_repl_support.py tests/unit/ui/test_tool_panel_css_flow.py`
|
|
33
|
+
- `uv run pytest`
|
|
34
|
+
- `uv run python -c "import importlib.metadata as m; print(m.version('tiny-agent-os'))"` -> `1.2.5`
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Parallel tool-call rollout plan for TunaCode
|
|
3
|
+
type: metadata
|
|
4
|
+
link: parallel-tool-calls-rollout-plan
|
|
5
|
+
path: .claude/metadata/research/2026-02-23-parallel-tool-calls-rollout-plan.md
|
|
6
|
+
depth: 2
|
|
7
|
+
seams: [A]
|
|
8
|
+
ontological_relations:
|
|
9
|
+
- affects: [[core-agents]]
|
|
10
|
+
- affects: [[ui]]
|
|
11
|
+
- affects: [[tools]]
|
|
12
|
+
- relates_to: [[tinyagent]]
|
|
13
|
+
tags:
|
|
14
|
+
- tinyagent
|
|
15
|
+
- parallel-tool-calls
|
|
16
|
+
- rollout-plan
|
|
17
|
+
- tui
|
|
18
|
+
created_at: 2026-02-23T14:54:29-06:00
|
|
19
|
+
updated_at: 2026-02-23T14:54:29-06:00
|
|
20
|
+
uuid: ac4317c5-b747-4efe-bd6f-039f4bdc3833
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Parallel tool-call rollout plan for TunaCode
|
|
24
|
+
|
|
25
|
+
## Objective
|
|
26
|
+
|
|
27
|
+
Adopt tinyagent parallel tool-call execution in TunaCode with no compatibility shim, while preserving correctness, UI clarity, and fail-loud behavior.
|
|
28
|
+
|
|
29
|
+
## Code-state snapshot (from current repo)
|
|
30
|
+
|
|
31
|
+
- Dependency floor is still `tiny-agent-os>=1.2.4` (`pyproject.toml:31`).
|
|
32
|
+
- Lockfile currently resolves `tiny-agent-os` to `1.2.4` (`uv.lock` package stanza).
|
|
33
|
+
- README still states sequential execution (`README.md:40`).
|
|
34
|
+
- TunaCode runtime already consumes tinyagent tool lifecycle events:
|
|
35
|
+
- `tool_execution_start` handler (`src/tunacode/core/agents/main.py:396`)
|
|
36
|
+
- `tool_execution_end` handler (`src/tunacode/core/agents/main.py:417`)
|
|
37
|
+
- UI callbacks are start/end based and status-bar driven:
|
|
38
|
+
- `build_tool_start_callback()` (`src/tunacode/ui/repl_support.py:220`)
|
|
39
|
+
- `build_tool_result_callback()` (`src/tunacode/ui/repl_support.py:189`)
|
|
40
|
+
- status methods (`src/tunacode/ui/widgets/status_bar.py:52`, `:55`)
|
|
41
|
+
- Vendored tinyagent code is already on 1.2.5 semantics:
|
|
42
|
+
- parallel gather in `execute_tool_calls()` (`tinyAgent/tinyagent/agent_tool_execution.py:186`)
|
|
43
|
+
- all starts emitted before ends (`tinyAgent/tests/test_parallel_tool_execution.py`)
|
|
44
|
+
- post-batch steering semantics documented in `tinyAgent/CHANGELOG.md`.
|
|
45
|
+
|
|
46
|
+
## Implementation plan
|
|
47
|
+
|
|
48
|
+
### Phase 1 — Dependency cutover (no shim)
|
|
49
|
+
|
|
50
|
+
1. Bump TunaCode dependency floor to `tiny-agent-os>=1.2.5`.
|
|
51
|
+
2. Refresh lockfile with `uv lock` so resolved version is >=1.2.5.
|
|
52
|
+
3. Verify runtime import path remains unchanged (TunaCode already uses tinyagent public API).
|
|
53
|
+
|
|
54
|
+
**Acceptance**
|
|
55
|
+
- `pyproject.toml` and `uv.lock` both reflect 1.2.5-compatible resolution.
|
|
56
|
+
- `uv run python -c "import importlib.metadata as m; print(m.version('tiny-agent-os'))"` prints >=1.2.5 in project env.
|
|
57
|
+
|
|
58
|
+
### Phase 2 — Runtime hardening for parallel batches
|
|
59
|
+
|
|
60
|
+
1. **Normalize tool args at event ingress** in `RequestOrchestrator` start-handler.
|
|
61
|
+
- Replace cast-only behavior with explicit type checks.
|
|
62
|
+
- If args are invalid (non-dict JSON object), fail loud with a clear error.
|
|
63
|
+
2. **Validate duration semantics** under batch completion ordering.
|
|
64
|
+
- Current per-tool duration is measured start→end event in TunaCode.
|
|
65
|
+
- In parallel mode, all end events are emitted after gather completion, so durations may converge to batch latency.
|
|
66
|
+
- Decide one policy and apply consistently:
|
|
67
|
+
- either keep current metric but label it as batch-relative,
|
|
68
|
+
- or suppress per-tool duration when multiple tools are active in a batch.
|
|
69
|
+
3. Keep steering logic aligned to tinyagent contract (post-batch application).
|
|
70
|
+
|
|
71
|
+
**Acceptance**
|
|
72
|
+
- No callback crashes from malformed `args` payloads.
|
|
73
|
+
- Tool duration presentation is intentional and documented in code comments/tests.
|
|
74
|
+
|
|
75
|
+
### Phase 3 — UI behavior alignment for concurrent starts
|
|
76
|
+
|
|
77
|
+
1. Verify status bar behavior when multiple start events arrive before end events.
|
|
78
|
+
2. Keep existing minimal behavior (`running: <tool>`, then `last: <tool>`) for first cut, or upgrade to explicit concurrent state (count/list) in same PR if low risk.
|
|
79
|
+
3. Ensure tool panels remain classed correctly (`running/completed/failed`) through `tool_panel_smart()`.
|
|
80
|
+
|
|
81
|
+
**Acceptance**
|
|
82
|
+
- No UI regressions in tool panel rendering.
|
|
83
|
+
- Status bar stays coherent during multi-tool turns.
|
|
84
|
+
|
|
85
|
+
### Phase 4 — Tests and gates
|
|
86
|
+
|
|
87
|
+
Add focused tests around TunaCode event handling (not tinyagent internals):
|
|
88
|
+
|
|
89
|
+
1. `RequestOrchestrator` handles parallel-style order:
|
|
90
|
+
- start(A), start(B), end(A), end(B)
|
|
91
|
+
- registry and callbacks remain correct per tool.
|
|
92
|
+
2. `RequestOrchestrator` arg-normalization path:
|
|
93
|
+
- invalid args payload triggers deterministic failure.
|
|
94
|
+
3. Optional UI test for status bar transitions under batched starts.
|
|
95
|
+
|
|
96
|
+
Run gates:
|
|
97
|
+
- `uv run pytest`
|
|
98
|
+
- `uv run ruff check --fix .`
|
|
99
|
+
- `uv run ruff .`
|
|
100
|
+
|
|
101
|
+
### Phase 5 — Repo truth updates
|
|
102
|
+
|
|
103
|
+
1. Update README statement that still claims sequential-only tool execution.
|
|
104
|
+
2. Add changelog entry describing the cutover and any intentional UI semantics.
|
|
105
|
+
|
|
106
|
+
## Risks to actively watch
|
|
107
|
+
|
|
108
|
+
1. **Concurrent mutating tools** (e.g., two file writes/edits in one assistant turn) can create race-like behavior in shared file/cache state.
|
|
109
|
+
2. **Metric trust** if per-tool durations look precise but are batch-relative.
|
|
110
|
+
3. **User visibility** during concurrent tool starts if status bar only shows one tool name.
|
|
111
|
+
|
|
112
|
+
## Suggested rollout order
|
|
113
|
+
|
|
114
|
+
1. Dependency bump + lockfile
|
|
115
|
+
2. Runtime hardening + tests
|
|
116
|
+
3. UI polish (if needed)
|
|
117
|
+
4. README/changelog updates
|
|
@@ -48,7 +48,7 @@ repos:
|
|
|
48
48
|
- id: ruff-format # Re-enabled - ruff handles linting, ruff-format handles formatting
|
|
49
49
|
exclude: models_registry\.json$
|
|
50
50
|
|
|
51
|
-
# Type checking with mypy (runs on
|
|
51
|
+
# Type checking with mypy (runs on commit and push)
|
|
52
52
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
53
53
|
rev: v1.14.1
|
|
54
54
|
hooks:
|
|
@@ -59,7 +59,7 @@ repos:
|
|
|
59
59
|
- 'types-requests'
|
|
60
60
|
args: ['--ignore-missing-imports', '--no-strict-optional']
|
|
61
61
|
exclude: '(conftest\.py|src/tunacode/core/agents/|^tests/|^scripts/)'
|
|
62
|
-
stages: [pre-push]
|
|
62
|
+
stages: [pre-commit, pre-push]
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
# Local hooks for project-specific checks
|
|
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.75] - 2026-02-23
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Tool panel CSS flow with status-based classes (running/completed/failed)
|
|
14
|
+
- Compaction awareness indicator in context panel
|
|
15
|
+
- CSS tint styling for file tool states (read/update)
|
|
16
|
+
- Parallel tool lifecycle coverage: capped-concurrency execution test, RequestOrchestrator parallel batch tests, and status-bar callback sequencing tests
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Enhanced `/compact` command with error handling and user feedback
|
|
20
|
+
- Updated read_file renderer to support new hashline format (1:ab|content)
|
|
21
|
+
- Improved tool panel rendering with semantic CSS classes
|
|
22
|
+
- Bumped `tiny-agent-os` dependency to `>=1.2.5` and refreshed lockfile resolution
|
|
23
|
+
- Enforced max 3 in-flight tool executions via shared tool semaphore wrapping
|
|
24
|
+
- Hardened RequestOrchestrator tool-start arg normalization and made batch-mode duration reporting explicit (suppressed for multi-tool batches)
|
|
25
|
+
- Updated status bar running-state behavior to stay coherent while multiple tools are active
|
|
26
|
+
|
|
10
27
|
## [0.1.74] - 2026-02-21
|
|
11
28
|
|
|
12
29
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tunacode-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.75
|
|
4
4
|
Summary: Your agentic CLI developer.
|
|
5
5
|
Project-URL: Homepage, https://tunacode.xyz/
|
|
6
6
|
Project-URL: Repository, https://github.com/alchemiststudiosDOTai/tunacode
|
|
@@ -31,7 +31,7 @@ Requires-Dist: rich<15.0.0,>=14.2.0
|
|
|
31
31
|
Requires-Dist: ruff>=0.14.0
|
|
32
32
|
Requires-Dist: textual-autocomplete>=4.0.6
|
|
33
33
|
Requires-Dist: textual<5.0.0,>=4.0.0
|
|
34
|
-
Requires-Dist: tiny-agent-os>=1.2.
|
|
34
|
+
Requires-Dist: tiny-agent-os>=1.2.5
|
|
35
35
|
Requires-Dist: typer>=0.15.0
|
|
36
36
|
Provides-Extra: dev
|
|
37
37
|
Requires-Dist: autoflake>=2.0.0; extra == 'dev'
|
|
@@ -97,7 +97,7 @@ A terminal-based AI coding agent with a NeXTSTEP-inspired interface.
|
|
|
97
97
|
**Recent Breaking Changes:**
|
|
98
98
|
|
|
99
99
|
- Session persistence format changed - existing sessions may not load correctly
|
|
100
|
-
- Tool execution
|
|
100
|
+
- Tool execution runs in parallel batches with a strict cap of 3 in-flight tool calls
|
|
101
101
|
- The `docs/` directory has been restructured
|
|
102
102
|
|
|
103
103
|
For full details, see the [CHANGELOG](CHANGELOG.md).
|
|
@@ -182,7 +182,7 @@ Slash commands are command objects in `tunacode.ui.commands`; each one is a `Com
|
|
|
182
182
|
| `/help` | Show available commands |
|
|
183
183
|
| `/clear` | Clear transient agent state while preserving message history. |
|
|
184
184
|
| `/compact` | Force context compaction |
|
|
185
|
-
| `/debug` | Toggle debug logging to screen |
|
|
185
|
+
| `/debug` | Toggle debug logging to screen (includes parallel tool-call lifecycle lines) |
|
|
186
186
|
| `/model` | Open model picker or switch model |
|
|
187
187
|
| `/theme` | Open theme picker or switch theme |
|
|
188
188
|
| `/resume` | List, load, or delete persisted sessions. |
|
|
@@ -191,6 +191,15 @@ Slash commands are command objects in `tunacode.ui.commands`; each one is a `Com
|
|
|
191
191
|
| `/exit` | Exit TunaCode |
|
|
192
192
|
| `exit` | Legacy alias for exit |
|
|
193
193
|
|
|
194
|
+
### Confirm Parallel Tool Calls
|
|
195
|
+
|
|
196
|
+
Run `/debug` to enable lifecycle logs. During agent execution, parallel batches are reported with lines prefixed by:
|
|
197
|
+
|
|
198
|
+
- `[LIFECYCLE] Parallel tool calls active: ...`
|
|
199
|
+
- `[LIFECYCLE] Parallel tool calls update: ...`
|
|
200
|
+
- `[LIFECYCLE] Parallel tool calls complete`
|
|
201
|
+
|
|
202
|
+
If no `Parallel tool calls` lifecycle lines appear, that request did not execute a parallel tool batch.
|
|
194
203
|
## Tools
|
|
195
204
|
|
|
196
205
|
<img src="docs/images/tool-calls.png" alt="Tool calls in tunacode" width="600"/>
|
|
@@ -37,7 +37,7 @@ A terminal-based AI coding agent with a NeXTSTEP-inspired interface.
|
|
|
37
37
|
**Recent Breaking Changes:**
|
|
38
38
|
|
|
39
39
|
- Session persistence format changed - existing sessions may not load correctly
|
|
40
|
-
- Tool execution
|
|
40
|
+
- Tool execution runs in parallel batches with a strict cap of 3 in-flight tool calls
|
|
41
41
|
- The `docs/` directory has been restructured
|
|
42
42
|
|
|
43
43
|
For full details, see the [CHANGELOG](CHANGELOG.md).
|
|
@@ -122,7 +122,7 @@ Slash commands are command objects in `tunacode.ui.commands`; each one is a `Com
|
|
|
122
122
|
| `/help` | Show available commands |
|
|
123
123
|
| `/clear` | Clear transient agent state while preserving message history. |
|
|
124
124
|
| `/compact` | Force context compaction |
|
|
125
|
-
| `/debug` | Toggle debug logging to screen |
|
|
125
|
+
| `/debug` | Toggle debug logging to screen (includes parallel tool-call lifecycle lines) |
|
|
126
126
|
| `/model` | Open model picker or switch model |
|
|
127
127
|
| `/theme` | Open theme picker or switch theme |
|
|
128
128
|
| `/resume` | List, load, or delete persisted sessions. |
|
|
@@ -131,6 +131,15 @@ Slash commands are command objects in `tunacode.ui.commands`; each one is a `Com
|
|
|
131
131
|
| `/exit` | Exit TunaCode |
|
|
132
132
|
| `exit` | Legacy alias for exit |
|
|
133
133
|
|
|
134
|
+
### Confirm Parallel Tool Calls
|
|
135
|
+
|
|
136
|
+
Run `/debug` to enable lifecycle logs. During agent execution, parallel batches are reported with lines prefixed by:
|
|
137
|
+
|
|
138
|
+
- `[LIFECYCLE] Parallel tool calls active: ...`
|
|
139
|
+
- `[LIFECYCLE] Parallel tool calls update: ...`
|
|
140
|
+
- `[LIFECYCLE] Parallel tool calls complete`
|
|
141
|
+
|
|
142
|
+
If no `Parallel tool calls` lifecycle lines appear, that request did not execute a parallel tool batch.
|
|
134
143
|
## Tools
|
|
135
144
|
|
|
136
145
|
<img src="docs/images/tool-calls.png" alt="Tool calls in tunacode" width="600"/>
|
|
@@ -22,7 +22,7 @@ The engine. Takes a user message, routes it through a tinyagent `Agent`, handles
|
|
|
22
22
|
|------|---------|
|
|
23
23
|
| `main.py` | `RequestOrchestrator` -- the main request lifecycle. `process_request()` is the public entry point. Handles: history coercion, pre-request compaction, streaming event dispatch, abort cleanup, empty-response intervention, context-overflow retry. |
|
|
24
24
|
| `agent_components/__init__.py` | Re-exports from sub-modules. |
|
|
25
|
-
| `agent_components/agent_config.py` | `get_or_create_agent()` -- builds or retrieves a cached tinyagent `Agent`. Configures: system prompt, tools, model, stream function, API key resolver, compaction transform. `invalidate_agent_cache()` clears both module and session caches after abort/timeout. |
|
|
25
|
+
| `agent_components/agent_config.py` | `get_or_create_agent()` -- builds or retrieves a cached tinyagent `Agent`. Configures: system prompt, tools, model, stream function, API key resolver, compaction transform. `invalidate_agent_cache()` clears both module and session caches after abort/timeout. `_build_tools()` constructs the tool list (bash, discover, read_file, hashline_edit, web_fetch, write_file). Validation functions: `_coerce_request_delay()`, `_coerce_global_request_timeout()`, `_compute_agent_version()`. |
|
|
26
26
|
| `agent_components/agent_helpers.py` | Human-readable tool descriptions for UI panels. `create_empty_response_message()` builds the intervention prompt when the model returns nothing. |
|
|
27
27
|
| `agent_components/state_transition.py` | `AgentStateMachine` -- thread-safe FSM with states: `USER_INPUT -> ASSISTANT -> TOOL_EXECUTION -> RESPONSE`. `AGENT_TRANSITION_RULES` defines valid edges. |
|
|
28
28
|
| `resume/sanitize.py` | Cleans persisted session messages for safe resume (removes dangling tool calls, fixes structural violations). |
|
|
@@ -131,6 +131,29 @@ CompactionController.check_and_compact(messages, max_tokens)
|
|
|
131
131
|
|
|
132
132
|
`StateManager.load_session()` deserializes and separates thought entries from message history.
|
|
133
133
|
|
|
134
|
+
### System Prompt
|
|
135
|
+
|
|
136
|
+
The system prompt defines TunaCode's identity and operational rules for the tinyagent framework.
|
|
137
|
+
|
|
138
|
+
**Location:** `src/tunacode/prompts/system_prompt.md`
|
|
139
|
+
|
|
140
|
+
**Loading mechanism:** `load_system_prompt()` in `agent_config.py` reads the markdown file at runtime and appends dynamic context from `load_tunacode_context()`.
|
|
141
|
+
|
|
142
|
+
**Dynamic context:** `load_tunacode_context()` loads the user's `AGENTS.md` guide file (cached) and injects it into the prompt under the `<user_context>` section.
|
|
143
|
+
|
|
144
|
+
**Tool philosophy:** Tools are described by purpose and intent, not by function signature. The tinyagent framework provides JSON schemas separately. This keeps the prompt focused on *when* and *why* to use each tool:
|
|
145
|
+
|
|
146
|
+
| Tool | Purpose Description |
|
|
147
|
+
|------|---------------------|
|
|
148
|
+
| `discover` | Natural-language code search and repository exploration |
|
|
149
|
+
| `read_file` | Read file contents with content-hash tagged lines |
|
|
150
|
+
| `hashline_edit` | Edit existing file using hash-validated line references |
|
|
151
|
+
| `write_file` | Create a new file (fails if exists; read first, then hashline_edit) |
|
|
152
|
+
| `bash` | Execute shell commands for tests, linting, git, builds |
|
|
153
|
+
| `web_fetch` | Fetch public web content as readable text |
|
|
154
|
+
|
|
155
|
+
**Agent version hashing:** `_compute_agent_version()` generates a cache key from configuration that affects agent behavior: `max_retries`, `tool_strict_validation`, `request_delay`, `global_request_timeout`, `max_tokens`.
|
|
156
|
+
|
|
134
157
|
## Why
|
|
135
158
|
|
|
136
159
|
The `RequestOrchestrator` class exists to keep the streaming event loop testable and the callback wiring explicit. Each event type has its own handler method -- no giant switch statement.
|
|
@@ -138,3 +161,5 @@ The `RequestOrchestrator` class exists to keep the streaming event loop testable
|
|
|
138
161
|
Compaction is request-scoped (one compaction per request at most) to avoid compacting the same history repeatedly when the model makes multiple turns.
|
|
139
162
|
|
|
140
163
|
The `StateManagerProtocol` breaks the circular dependency between session state and agent creation -- agents need state, state stores agents.
|
|
164
|
+
|
|
165
|
+
tinyagent provides the agent framework (migrated from pydantic-ai), handling the underlying event streaming, tool schema generation, and message protocol conversion.
|