tunacode-cli 0.1.84__tar.gz → 0.1.86__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.84 → tunacode_cli-0.1.86}/.claude/JOURNAL.md +8 -0
- tunacode_cli-0.1.86/.claude/debug_history/2026-03-06-command-autocomplete-argument-interference.md +33 -0
- tunacode_cli-0.1.86/.claude/debug_history/2026-03-06-skills-autocomplete-selection-ranking.md +34 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/context-loss-bug.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/continuous-learning.md +8 -0
- tunacode_cli-0.1.86/.claude/delta/2026-03-06-github-release-pypi-skip-existing.md +16 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-06-pypi-release-0.1.84.md +8 -0
- tunacode_cli-0.1.86/.claude/delta/2026-03-06-pypi-release-0.1.85.md +23 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/pydantic_runtime_removal_attempt.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/research/2026-02-01-glob-text-match-research.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/research/2026-02-12-tinyagent-rust-only-migration-map.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/raw.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_01_canonical_messaging_adoption.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_02_session_state_decomposition.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_03_message_parity_harness.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_04_canonical_sanitization.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_05_tool_call_registry_ownership.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_06_react_state_alignment.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_07_todo_state_alignment.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_08_usage_metrics_consolidation.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_09_architecture_enforcement_tests.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_10_legacy_path_decommission.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/publish-release.yml +2 -2
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/CHANGELOG.md +18 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/PKG-INFO +1 -1
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/pyproject.toml +1 -1
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/constants.py +1 -1
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/prompts/system_prompt.md +8 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/loader.py +41 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/models.py +3 -0
- tunacode_cli-0.1.86/src/tunacode/skills/prompting.py +123 -0
- tunacode_cli-0.1.86/src/tunacode/skills/search.py +87 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/selection.py +47 -8
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/skills.py +118 -62
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles/panels.tcss +83 -0
- tunacode_cli-0.1.86/src/tunacode/ui/styles/widgets.tcss +99 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/command_autocomplete.py +7 -3
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/skills_autocomplete.py +30 -13
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_tinyagent_alchemy_usage_contract_live.py +9 -0
- tunacode_cli-0.1.86/tests/unit/core/test_agent_skills_prompt_injection.py +86 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_command_autocomplete.py +2 -1
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/uv.lock +1 -1
- tunacode_cli-0.1.84/.grimp_cache/.gitignore +0 -2
- tunacode_cli-0.1.84/.grimp_cache/CACHEDIR.TAG +0 -3
- tunacode_cli-0.1.84/.grimp_cache/df55eb48808bc85310d608a575b31fcde39b2b61.data.json +0 -1
- tunacode_cli-0.1.84/.grimp_cache/tunacode.meta.json +0 -1
- tunacode_cli-0.1.84/.worktree/.gitignore +0 -1
- tunacode_cli-0.1.84/.worktree/README.md +0 -9
- tunacode_cli-0.1.84/AGENTS.md +0 -136
- tunacode_cli-0.1.84/CLAUDE.md +0 -148
- tunacode_cli-0.1.84/src/tunacode/skills/prompting.py +0 -52
- tunacode_cli-0.1.84/src/tunacode/ui/styles/widgets.tcss +0 -42
- tunacode_cli-0.1.84/tests/integration/core/test_skills_integration.py +0 -191
- tunacode_cli-0.1.84/tests/unit/core/test_session_state_skills.py +0 -28
- tunacode_cli-0.1.84/tests/unit/skills/test_discovery.py +0 -89
- tunacode_cli-0.1.84/tests/unit/skills/test_loader.py +0 -123
- tunacode_cli-0.1.84/tests/unit/skills/test_registry.py +0 -141
- tunacode_cli-0.1.84/tests/unit/ui/test_skill_command.py +0 -112
- tunacode_cli-0.1.84/tests/unit/ui/test_skills_autocomplete.py +0 -113
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-12_missing-cached-tokens.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_abort-hang-investigation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_resume-hang-investigation-updated.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_resume-hang-investigation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_stream-hang-timeout.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-02-01_openai-chat-invalid-response.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-03-06-skills-legacy-loading-and-casefold-precedence.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-03-06-slash-command-exact-match-autocomplete-enter.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/list-dir-tool-execution-error.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-16-panel-width-refactoring.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-17-dangling-tool-calls.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-25_orphaned_retry_prompt_on_dangling_cleanup.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-25_tool-registry-todo-alignment.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-26_boundary-contracts-not-enforced.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-cli-main-compatibility.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-esc-handler-extraction.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-pruning-token-estimation-optimization.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-remove-cli-shim.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-remove-heuristic-token-counting.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-remove-toolbuffer-shim.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-resource-bar-usage-totals.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-sanitize-canonical-cache.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-token-pruning-efficiency-plan.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-tool-name-normalization.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-04-main-agent-refactoring.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-05-tech-debt-scanner-markdown-exclusion.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-05-ui-messaging-layer-facade.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-07_remove-orchestrator-tool-dispatcher.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-compaction-pr378-review-fixes.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-compaction-system-implementation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-status-bar-content-row-regression.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-theme-variable-contract.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-tinyagent-base-url-provider-flex.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-16-context-rail-inspector-styling.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-16-slopgotchi-pet-widget.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-16-update-file-before-after-separator-lane.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-17-thinking-delta-tui-integration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-17-thinking-integration-plan-hardening.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-20-app-lifecycle-class-refactor.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-20-disable-agent-text-streaming-default.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-20-system-prompt-tooling-refresh.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-21_minimax-tool-call-bugs.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-22-enable-mypy-pre-commit-hook.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-22-mypy-type-contract-fixes.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-23_parallel-tool-call-rollout.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-24-remove-dead-tool-renderers.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-03-ruff-import-order-determinism.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-deptry-pydantic-direct-dependency.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-gate0-remove-all-shims.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-request-orchestrator-typed-events.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-session-compaction-model-first-boundaries.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-tiny-agent-os-1-2-7-baseline.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-tool-adapter-typed-agenttoolresult.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-typed-stream-fn-contract.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-05-live-alchemy-usage-contract-test-typed-chutes.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/remove-all-exports-use-direct-imports.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/remove-global-cache-user-config.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/remove-unused-cleanup-session.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/tun-00df-add-tinyagent-dependency.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/tun-1658-phase6-messaging-normalization.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/tun-1ad5-wrap-tools-as-tinyagent-agenttool.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/research/2026-02-23-parallel-tool-calls-rollout-plan.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/patterns/cache-layer-typed-accessors.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/patterns/usage-total-token-source.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/2026-02-11-theme-visual-verification.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/no-cargo-cult-fixes.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/semantically-dead-code.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.coderabbit.yaml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/dependabot.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/pull_request_template.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/dependency-map.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/empty-dir-check.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/lint.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/release.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/tech-debt.yml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.gitignore +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.pre-commit-config.yaml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.test_reports/.gitkeep +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.worktree-meta +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/AUDIT_SMALL_WINS_PLAN.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/LICENSE +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/MANIFEST.in +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/Makefile +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/NOTES.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/README.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/assets/hashline-edit.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/assets/home.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/README.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/architecture/dependencies/DEPENDENCY_LAYERS.dot +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/architecture/dependencies/DEPENDENCY_LAYERS.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/architecture/dependencies/DEPENDENCY_LAYERS.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/boundaries/.gitkeep +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/codebase-map/structure/tree-structure.txt +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/exceptions/.gitkeep +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-home-catpu.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-home.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-lsp.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-response.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/tool-calls.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/tunacode.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/migration/.gitkeep +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/configuration/configuration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/core/core.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/index.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/infrastructure/infrastructure.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/prompts/versioning.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/tools/hashline-subsystem.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/tools/tools.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/types/types.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/ui/commands.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/ui/ui.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/utils/utils.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/quality-gates/.gitkeep +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/runbooks/.gitkeep +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/tests/.gitkeep +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/ui/css-architecture.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/handoff.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/delta/2026-01-28_decoupled-tools.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/execute/2026-01-27_17-52-14_insert-before-stream-fix.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/execute/2026-01-27_18-00-00_insert-before-stream-fix.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/execute/2026-01-27_21-50-00_tickets.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/execute/2026-02-28_16-00-00_prompt_versioning.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/execute/2026-03-05_18-51-12_skills_feature_minimal_map.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/handoffs/tinyagent-baseurl-integration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-26_14-30-00_planning-feature-deletion.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-26_17-11-28_single-md-prompt-migration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-26_17-15-00_research-subagent-deletion.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-27_00-19-58_issue-311-core-types-layer.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-27_17-41-42_insert-before-stream-fix.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-27_17-59-28_issue-313-core-utils-layer-violation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-27_21-30-00_issue-314-lateral-coupling.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-27_21-45-00_delete-indexing-system.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-27_chat-container-refactor.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-28_pydantic-ai-adapter-layer.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-01_complexity-refactoring.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-02_13-29-36_esc-logic-module-extraction.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-02_16-46-20_pydantic-usage-token-counting.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-02_sanitize-loop-canonicalization-bottleneck.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-02_token-pruning-efficiency-plan.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-05_issue-358_tool-dispatcher-complexity.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-11_04-15-37_compaction-system.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-11_theme-architecture-handoff.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-17_thinking-content-integration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-19_api-key-ux-improvement.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-28_15-45-00_prompt_versioning.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-03-05_18-44-49_skills_feature_minimal_map.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/dream-mockup-slim-panels.webp +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/nextstep-theme.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/nextstep-theme.svg +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/tunacode-theme.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/tunacode-theme.svg +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-home.svg +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-lsp.svg +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-nextstep-home.svg +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-response.svg +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/reserch.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/.claude/settings.local.json +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-26_16-41-59_research-subagent-deletion.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-26_17-08-03_single-md-prompt-migration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-26_17-22-59_local-mode-removal-research.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-26_17-34-12_permission-system-removal-map.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-26_18-26-16_yolo-system-removal-verification.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-26_planning-feature-deletion.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_00-10-38_issue-311-core-types-layer-violation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_11-53-37_issue-313-core-utils-layer-violation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_13-11-55_issue-314-lateral-coupling-tools-indexing-lsp.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_16-11-11_streaming_and_panels.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_17-28-01_lsp-panel-integration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_17-45-00_chatcontainer_refactor.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_alchemy-rs-migration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_insert-before-stream-investigation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_streaming-abort-context-loss.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-28_00-25-00_api-error-logging-gaps.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-28_01-15-00_file-autocomplete-fuzzy-matching.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-28_11-33-05_utils-cross-layer-imports.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-28_11-38-38_tools-cross-layer-imports.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-28_recent-changes-summary.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-01-token-counting-logic.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-01_19-43-34_prompt-engineer-remnants.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-01_complexity-hotspots.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-02_12-56-40_esc-key-flow.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-02_20-47-34_agent_bottlenecks.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-02_sanitize_loop_canonicalization_bottleneck.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-02_token_estimation_overhead.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-04_15-20-48_core_directory_analysis.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-05_tool_dispatcher_complexity_358.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-07_18-06-58_compaction-system.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-07_19-30-00_agent-response-highlighting.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-07_tinyagent-v2.5-migration-map.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-09_11-28-57_dev_install_tinyagent_setup.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-09_11-31-28_agent_panel_throughput.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-09_11-33-09_pydantic-ai_to_tinyagent_migration_and_recent_changes.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-09_13-54-38_compression_compaction_cleanup_verification.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-10_21-29-05_compaction-system-mapping.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-11_00-00-00_tinyagent_streaming_reimplementation.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-12_issue-382_manual-compact-boundary-map.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-16_diff_rendering_pipeline.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-17_thinking-content-integration.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-19_api-key-ux-improvement.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-22_04-30-00_compact_ux_issues.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-22_compact-command-ux-mapping.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-28_15-17-48_system_prompt_architecture.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-03-05_skills_feature_minimal_map.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/bottleneck-analysis.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/esc-key-flow-diagram.html +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/pytest.ini +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/reports/SMALL_WINS_AUDIT.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/reports/discover-benchmark-case-study.html +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/reports/tunacode-site-reference.png +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check-file-length.sh +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check-naming-conventions.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check-unused-constants.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check_agents_freshness.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check_unused_modules.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/dev-setup.sh +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/download_ripgrep.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/generate-release-notes.sh +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/generate_structure_tree.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/grimp_layers_report.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/install_linux.sh +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/playwright_cache.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/preview_tool_panels.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/run-dead-imports.sh +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/run_gates.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/startup_timer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/todo_baseline.json +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/todo_scanner.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/ui_import_timer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/uninstall.sh +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/update_models_registry.sh +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/utils/vulture_whitelist.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/defaults.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/feature_flags.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/ignore_patterns.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/limits.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/models.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/models_registry.json +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/paths.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/pricing.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/settings.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/user_config.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/agent_config.py +1 -1
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/helpers.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/main.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/resume/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/resume/sanitize.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/resume/sanitize_debug.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/controller.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/prompts.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/summarizer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/types.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/debug/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/debug/usage_trace.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/handlers.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/levels.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/manager.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/records.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/session/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/session/state.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/agent_state.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/state.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/state_structures.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/tool_registry.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/configuration.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/constants.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/file_filter.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/formatting.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/lsp_status.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/messaging.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/shared_types.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/system_paths.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/user_configuration.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/exceptions.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/agents.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/limits_settings.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/models_registry.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/prompt_version_cache.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/skills.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/tunacode_context.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/manager.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/metadata.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/strategies.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/file_filter.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/prompts/version_display.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/prompts/versioning.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/py.typed +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/discovery.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/registry.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/test_dead_code/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/test_dead_code/never_imported.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/bash.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/ignore_manager_cache.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/ripgrep_cache.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/xml_prompts_cache.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/decorators.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/discover.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/hashline.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/hashline_edit.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/ignore.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/ignore_manager.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/line_cache.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/client.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/diagnostics.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/servers.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/discover_prompt.xml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/hashline_edit_prompt.xml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/web_fetch_prompt.xml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/read_file.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/discover_pipeline.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/discover_terms.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/discover_types.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/formatting.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/ripgrep.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/web_fetch.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/write_file.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/xml_helper.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/base.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/callbacks.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/canonical.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/dataclasses.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/PLAN.md +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/app.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/assets/logo.ansi +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/clipboard.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/base.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/cancel.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/clear.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/compact.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/debug.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/exit.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/help.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/model.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/resume.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/theme.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/thoughts.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/update.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/context_panel.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/esc/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/esc/handler.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/esc/types.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/headless/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/headless/output.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/lifecycle.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/logo_assets.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/main.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/model_display.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/agent_response.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/errors.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/panel_widths.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/panels.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/search.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/thinking.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/base.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/bash.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/diagnostics.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/discover.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/hashline_edit.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/read_file.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/syntax_utils.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/web_fetch.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/write_file.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/repl_support.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/api_key_entry.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/model_picker.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/session_picker.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/setup.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/theme_picker.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/update_confirm.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/shell_runner.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/slopgotchi/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/slopgotchi/panel.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles/layout.tcss +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles/modals.tcss +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/thinking_state.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/welcome.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/chat.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/editor.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/file_autocomplete.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/messages.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/resource_bar.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/status_bar.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/messaging/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/messaging/adapter.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/messaging/token_counter.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/system/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/system/gitignore.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_import_order.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_imports_in_init.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_init_bloat.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_layer_dependencies.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/benchmarks/bench_discover.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/conftest.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_minimax_execution_path.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_mtime_caches_end_to_end.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_tinyagent_tool_execution_contract.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/tools/test_shell_runner.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/tools/test_tool_conformance.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/tools/test_web_fetch.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_cli_default_command.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_headless_cli.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_repl_support.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_startup.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_tmux_tools.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/test_compaction.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/test_dependency_layers.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/__init__.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_hashline.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_hashline_edit.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_ignore.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_line_cache.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_default_config_minimax_keys.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_default_config_stream_agent_text.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_models_registry_minimax_contract.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_provider_api_key_env_fallback.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_agent_cache_abort.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_compaction_controller_outcomes.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_compaction_summarizer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_context_overflow_detection.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_exceptions.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_logging.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_openrouter_usage_metrics.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_provider_error_surfacing.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_request_orchestrator_parallel_tools.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_session_state_defaults.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_session_usage_schema.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_thinking_stream_routing.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_tinyagent_openrouter_model_config.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_tool_concurrency_limit.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_usage_trace_debug.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/infrastructure/test_cache_infrastructure.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/infrastructure/test_migrated_lru_cache_replacements.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/infrastructure/test_typed_cache_accessors.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/prompts/test_versioning.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/test_sanitize_canonicalization.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_bash.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_discover.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_tinyagent_tool_adapter.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_tool_decorators.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/types/test_adapter.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/types/test_canonical.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/types/test_tool_registry.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_agent_response.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_api_key_entry.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_app_latest_response_text.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_base_renderer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_base_tool_renderer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_chat_container.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_command_contracts.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_context_panel_toggle.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_diagnostics_renderer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_error_renderer_authentication.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_hashline_edit_renderer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_model_display.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_resource_bar_usage_cost.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_status_bar_layout.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_stream_agent_text_setting.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_supported_themes.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_theme_variable_contract.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_thinking_renderer.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_tool_panel_css_flow.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/utils/test_shell_command_escape.py +0 -0
- {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/utils/test_token_counter.py +0 -0
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Claude Journal"
|
|
3
|
+
type: metadata
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: 4a225704-c3d4-4afb-9a94-17247607864e
|
|
7
|
+
---
|
|
8
|
+
|
|
1
9
|
# Claude Journal
|
|
2
10
|
|
|
3
11
|
## 2026-01-21: pydantic-ai System Prompt Stripping Fix (Branch: resume-qa)
|
tunacode_cli-0.1.86/.claude/debug_history/2026-03-06-command-autocomplete-argument-interference.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Slash-command autocomplete intercepted `/skills` argument navigation
|
|
3
|
+
link: command-autocomplete-argument-interference
|
|
4
|
+
type: bugfix
|
|
5
|
+
path: src/tunacode/ui/widgets/command_autocomplete.py
|
|
6
|
+
tags:
|
|
7
|
+
- ui
|
|
8
|
+
- autocomplete
|
|
9
|
+
- commands
|
|
10
|
+
- skills
|
|
11
|
+
created_at: 2026-03-06T22:35:00-06:00
|
|
12
|
+
updated_at: 2026-03-06T22:35:00-06:00
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Summary
|
|
16
|
+
|
|
17
|
+
Fixed the root cause of broken `/skills` navigation: the generic slash-command autocomplete was still building candidates while the user was editing command arguments, so arrow and Enter keys could be consumed by the wrong dropdown.
|
|
18
|
+
|
|
19
|
+
## Trigger
|
|
20
|
+
|
|
21
|
+
Typing `/skills ...` correctly opened the skills dropdown, but pressing Down caused the hidden slash-command autocomplete to activate and move its own highlight. Enter could then complete `/cancel`, `/compact`, or another slash command instead of the highlighted skill.
|
|
22
|
+
|
|
23
|
+
## Changes
|
|
24
|
+
|
|
25
|
+
- Tightened `CommandAutoComplete.get_candidates()` to return candidates only while the user is editing the command-name region before the first space.
|
|
26
|
+
- Reused the same command-name parser already used by visibility logic.
|
|
27
|
+
- Added focused tests proving command autocomplete is inactive during `/skills` argument editing.
|
|
28
|
+
- Added an end-to-end headless UI test proving `/skills ` + Down + Enter selects the highlighted skill, not a slash command.
|
|
29
|
+
|
|
30
|
+
## Tests
|
|
31
|
+
|
|
32
|
+
- `uv run pytest tests/unit/ui/test_command_autocomplete.py tests/unit/ui/test_skills_autocomplete.py -q`
|
|
33
|
+
- `uv run ruff check src/tunacode/ui/widgets/command_autocomplete.py tests/unit/ui/test_command_autocomplete.py tests/unit/ui/test_skills_autocomplete.py`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Skills autocomplete selected the wrong skill for short prefixes
|
|
3
|
+
link: skills-autocomplete-selection-ranking
|
|
4
|
+
type: bugfix
|
|
5
|
+
path: src/tunacode/ui/widgets/skills_autocomplete.py
|
|
6
|
+
tags:
|
|
7
|
+
- skills
|
|
8
|
+
- ui
|
|
9
|
+
- autocomplete
|
|
10
|
+
- ranking
|
|
11
|
+
created_at: 2026-03-06T22:15:00-06:00
|
|
12
|
+
updated_at: 2026-03-06T22:15:00-06:00
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Summary
|
|
16
|
+
|
|
17
|
+
Fixed `/skills` autocomplete so short prefixes now prefer the best semantic skill match instead of an arbitrary fuzzy-match winner.
|
|
18
|
+
|
|
19
|
+
## Trigger
|
|
20
|
+
|
|
21
|
+
Typing `/skills de` and pressing Enter selected `dead-code-detector` ahead of `demo`, even though `demo` was the more specific prefix match the user intended.
|
|
22
|
+
|
|
23
|
+
## Changes
|
|
24
|
+
|
|
25
|
+
- Added `src/tunacode/skills/search.py` with deterministic skill-match ordering.
|
|
26
|
+
- Ranked exact name matches before prefix matches, prefix matches before substring matches, and description matches last.
|
|
27
|
+
- Broke prefix ties by shorter skill name first so concise exact-prefix skills win.
|
|
28
|
+
- Updated `SkillsAutoComplete` to preserve the candidate order it computes instead of letting fuzzy scoring reshuffle the dropdown.
|
|
29
|
+
- Updated `/skills` catalog filtering to use the same ordering logic as autocomplete.
|
|
30
|
+
|
|
31
|
+
## Tests
|
|
32
|
+
|
|
33
|
+
- Added unit coverage for skill ranking behavior.
|
|
34
|
+
- Added a headless TUI test proving `/skills de` + Enter selects `demo`, then Enter loads it.
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Continuous Learning Log"
|
|
3
|
+
type: debug
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: c21d2cfb-ed4a-4e47-a355-d05f4220c73f
|
|
7
|
+
---
|
|
8
|
+
|
|
1
9
|
# Continuous Learning Log
|
|
2
10
|
|
|
3
11
|
Bugs, smells, issues dumped here as encountered. Raw is fine. A skill will organize this into proper kb entries later.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "GitHub release publish workflow: skip existing PyPI artifacts"
|
|
3
|
+
type: delta
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: ba502a45-cae9-4026-8c3c-a4167ad8213b
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# GitHub release publish workflow: skip existing PyPI artifacts
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
- Updated `.github/workflows/publish-release.yml` to use `twine upload --skip-existing`.
|
|
13
|
+
- This allows a GitHub Release to be published after a manual PyPI upload without failing on duplicate distributions.
|
|
14
|
+
|
|
15
|
+
## Reasoning
|
|
16
|
+
`v0.1.84` was already uploaded to PyPI manually. Publishing the matching GitHub Release triggers the PyPI workflow, so the workflow must tolerate already-published artifacts.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "PyPI release 0.1.85"
|
|
3
|
+
type: delta
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: 0041fe28-4575-41b9-844a-25490259d330
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# PyPI release 0.1.85
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
- Bumped the packaged TunaCode version from `0.1.84` to `0.1.85`.
|
|
13
|
+
- Synced release metadata in `pyproject.toml`, `src/tunacode/constants.py`, and `uv.lock`.
|
|
14
|
+
- Added a changelog entry for the `/skills` autocomplete ranking fix and the slash-command argument isolation fix.
|
|
15
|
+
|
|
16
|
+
## Files
|
|
17
|
+
- `pyproject.toml`
|
|
18
|
+
- `src/tunacode/constants.py`
|
|
19
|
+
- `uv.lock`
|
|
20
|
+
- `CHANGELOG.md`
|
|
21
|
+
|
|
22
|
+
## Reasoning
|
|
23
|
+
A new patch release was needed because `master` contains user-facing fixes for `/skills` selection and navigation after `v0.1.84`, while the current PyPI package still published the broken behavior.
|
{tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/pydantic_runtime_removal_attempt.md
RENAMED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Pydantic Runtime Removal Attempt (PR #334, closed)"
|
|
3
|
+
type: metadata
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: a9f2df2c-54b1-49a6-878b-2c42f4c145be
|
|
7
|
+
---
|
|
8
|
+
|
|
1
9
|
# Pydantic Runtime Removal Attempt (PR #334, closed)
|
|
2
10
|
|
|
3
11
|
Date: 2026-01-31
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Research – Glob filesystem search_sync and block_anchor_replacer"
|
|
3
|
+
type: metadata
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: 6122c5dd-c84e-4897-9265-ecb66b3d28e5
|
|
7
|
+
---
|
|
8
|
+
|
|
1
9
|
# Research – Glob filesystem search_sync and block_anchor_replacer
|
|
2
10
|
**Date:** 2026-02-01
|
|
3
11
|
**Phase:** Research
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Research – TunaCode tinyagent Rust-only stream mapping"
|
|
3
|
+
type: metadata
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: 421d2204-3f76-4437-95f8-f815a89c692e
|
|
7
|
+
---
|
|
8
|
+
|
|
1
9
|
# Research – TunaCode tinyagent Rust-only stream mapping
|
|
2
10
|
**Date:** 2026-02-12
|
|
3
11
|
**Phase:** Research
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Raw"
|
|
3
|
+
type: qa
|
|
4
|
+
created_at: 2026-03-06T05:18:58Z
|
|
5
|
+
updated_at: 2026-03-06T05:18:58Z
|
|
6
|
+
uuid: c92b78e9-9d66-47a3-8c86-d5661a82e0c2
|
|
7
|
+
---
|
|
8
|
+
|
|
1
9
|
[2026-01-15] [bug] message history missed tool-return when request ended early; fix by persisting agent_run.all_messages and keeping system notices out of history.
|
|
2
10
|
[2026-01-16] [bug] tool panels rendered to the RichLog content region width; fix by setting explicit panel frame width from max_line_width plus TOOL_PANEL_HORIZONTAL_INSET.
|
|
3
11
|
[2026-01-21] [bug] dangling tool calls could persist mid-history and stall the API; fix by scanning all messages for unmatched tool calls and removing them.
|
|
@@ -66,8 +66,8 @@ jobs:
|
|
|
66
66
|
run: python -m build
|
|
67
67
|
|
|
68
68
|
# Preferred: API token secret
|
|
69
|
-
- name: Publish to PyPI (API token)
|
|
69
|
+
- name: Publish to PyPI (API token, skip existing)
|
|
70
70
|
env:
|
|
71
71
|
TWINE_USERNAME: __token__
|
|
72
72
|
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
73
|
-
run: python -m twine upload dist/*
|
|
73
|
+
run: python -m twine upload --skip-existing dist/*
|
|
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.86] - 2026-03-06
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Introduced prompt context injection for actively loaded skills so selected skill guidance is surfaced to the agent runtime.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Refined skills UI styling and load behavior to improve local/global skill discovery ergonomics.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Resolved selected-skill path handling to use discovered absolute paths reliably across local and global skill locations.
|
|
20
|
+
- Included absolute skill paths in prompt context to prevent path-resolution drift when rendering skill metadata.
|
|
21
|
+
|
|
22
|
+
## [0.1.85] - 2026-03-06
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Made `/skills` autocomplete prefer the most relevant skill match instead of fuzzy-reordering short prefixes.
|
|
26
|
+
- Isolated slash-command autocomplete to command names so `/skills` navigation and Enter selection no longer get hijacked by hidden command suggestions.
|
|
27
|
+
|
|
10
28
|
## [0.1.84] - 2026-03-06
|
|
11
29
|
|
|
12
30
|
### Fixed
|
|
@@ -61,6 +61,14 @@ You MUST reuse paths exactly as returned by discover.
|
|
|
61
61
|
- When asked to teach, teach first, then test.
|
|
62
62
|
- If a tool call is rejected, acknowledge, adjust approach, and do not retry the same call.
|
|
63
63
|
- If a response is truncated, continue to completion.
|
|
64
|
+
|
|
65
|
+
###Loaded Skills###
|
|
66
|
+
- If the prompt includes a `# Selected Skills` section, those skills were explicitly loaded by the user and are ACTIVE for the current session.
|
|
67
|
+
- Active loaded skills are operating instructions, not optional background reading.
|
|
68
|
+
- Before searching the repo for guidance, inspect the loaded skill material and the absolute skill paths provided in that section.
|
|
69
|
+
- If a loaded skill applies to the task, you MUST use it even if the user does not repeat the skill name.
|
|
70
|
+
- When a loaded skill affects your plan or answer, explicitly state that the skill is loaded and being used.
|
|
71
|
+
- Skill files may live outside the current working directory; use the absolute skill paths provided in prompt context.
|
|
64
72
|
</instructions>
|
|
65
73
|
|
|
66
74
|
<examples>
|
|
@@ -39,6 +39,18 @@ PATH_SUFFIXES = {
|
|
|
39
39
|
}
|
|
40
40
|
URL_PREFIXES = ("http://", "https://")
|
|
41
41
|
DISALLOWED_REFERENCE_PREFIXES = ("#", "/", "~")
|
|
42
|
+
EXCLUDED_RELATED_PATH_PARTS = {
|
|
43
|
+
".git",
|
|
44
|
+
".mypy_cache",
|
|
45
|
+
".pytest_cache",
|
|
46
|
+
".ruff_cache",
|
|
47
|
+
".venv",
|
|
48
|
+
"__pycache__",
|
|
49
|
+
"node_modules",
|
|
50
|
+
"venv",
|
|
51
|
+
}
|
|
52
|
+
EXCLUDED_RELATED_FILE_NAMES = {".DS_Store"}
|
|
53
|
+
EXCLUDED_RELATED_FILE_SUFFIXES = {".pyc"}
|
|
42
54
|
|
|
43
55
|
|
|
44
56
|
class SkillLoadError(RuntimeError):
|
|
@@ -101,6 +113,18 @@ def load_skill(discovered_skill: DiscoveredSkillPath) -> LoadedSkill:
|
|
|
101
113
|
)
|
|
102
114
|
|
|
103
115
|
|
|
116
|
+
def list_skill_related_paths(skill_dir: Path, *, skill_path: Path) -> tuple[Path, ...]:
|
|
117
|
+
"""Return deterministic absolute paths for non-SKILL files under a skill directory."""
|
|
118
|
+
|
|
119
|
+
resolved_skill_path = skill_path.resolve()
|
|
120
|
+
related_paths = [
|
|
121
|
+
path.resolve()
|
|
122
|
+
for path in skill_dir.rglob("*")
|
|
123
|
+
if _should_include_related_path(path, resolved_skill_path)
|
|
124
|
+
]
|
|
125
|
+
return tuple(sorted(set(related_paths), key=lambda path: str(path).casefold()))
|
|
126
|
+
|
|
127
|
+
|
|
104
128
|
def _load_parsed_skill_document(discovered_skill: DiscoveredSkillPath) -> _ParsedSkillDocument:
|
|
105
129
|
raw_content = _read_skill_file(discovered_skill.skill_path)
|
|
106
130
|
if _starts_with_frontmatter(raw_content):
|
|
@@ -296,6 +320,23 @@ def _find_recursive_reference_matches(skill_dir: Path, file_name: str) -> list[P
|
|
|
296
320
|
return sorted(set(matching_paths))
|
|
297
321
|
|
|
298
322
|
|
|
323
|
+
def _should_include_related_path(path: Path, skill_path: Path) -> bool:
|
|
324
|
+
if not path.is_file():
|
|
325
|
+
return False
|
|
326
|
+
|
|
327
|
+
resolved_path = path.resolve()
|
|
328
|
+
if resolved_path == skill_path:
|
|
329
|
+
return False
|
|
330
|
+
|
|
331
|
+
if resolved_path.name in EXCLUDED_RELATED_FILE_NAMES:
|
|
332
|
+
return False
|
|
333
|
+
|
|
334
|
+
if resolved_path.suffix.lower() in EXCLUDED_RELATED_FILE_SUFFIXES:
|
|
335
|
+
return False
|
|
336
|
+
|
|
337
|
+
return not any(part in EXCLUDED_RELATED_PATH_PARTS for part in resolved_path.parts)
|
|
338
|
+
|
|
339
|
+
|
|
299
340
|
def _iter_reference_candidates(content: str) -> list[str]:
|
|
300
341
|
candidates: list[str] = []
|
|
301
342
|
for match in MARKDOWN_LINK_PATTERN.finditer(content):
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import hashlib
|
|
4
|
+
from collections.abc import Iterable
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from tunacode.skills.models import SelectedSkill, SkillSummary
|
|
8
|
+
|
|
9
|
+
AVAILABLE_SKILLS_SECTION_TITLE = "# Available Skills"
|
|
10
|
+
SELECTED_SKILLS_SECTION_TITLE = "# Selected Skills"
|
|
11
|
+
|
|
12
|
+
SELECTED_SKILLS_INSTRUCTION = """\
|
|
13
|
+
The user explicitly loaded the following skills via /skills, and they are ACTIVE for this session.
|
|
14
|
+
These loaded skills are not optional reference material; they are active operating instructions.
|
|
15
|
+
Before doing work, determine whether one or more loaded skills apply to the user's request.
|
|
16
|
+
If a loaded skill applies, you MUST follow it,
|
|
17
|
+
even if the user does not repeat its name in the latest message.
|
|
18
|
+
When a loaded skill is relevant,
|
|
19
|
+
prefer its workflow and guidance over generic default behavior.
|
|
20
|
+
Before searching the repository for help,
|
|
21
|
+
check the loaded skill paths below and use them directly when they are relevant.
|
|
22
|
+
You MUST read each loaded skill's full SKILL.md content
|
|
23
|
+
and use the exact absolute skill paths below as authoritative.
|
|
24
|
+
These skill files may live outside the current project working directory.
|
|
25
|
+
Do not assume searching only the repo root will find them.
|
|
26
|
+
When a loaded skill materially affects your answer or plan,
|
|
27
|
+
explicitly say that the skill is loaded and being used.
|
|
28
|
+
Do not ignore a loaded skill that matches the task."""
|
|
29
|
+
|
|
30
|
+
SKILL_STATUS_LABEL = "Skill status"
|
|
31
|
+
SKILL_DIRECTORY_LABEL = "Skill directory (absolute)"
|
|
32
|
+
SKILL_FILE_LABEL = "Skill definition file (absolute)"
|
|
33
|
+
SKILL_REFERENCED_FILES_LABEL = "Files explicitly referenced by SKILL.md"
|
|
34
|
+
SKILL_RELATED_FILES_LABEL = "Other files available in the skill directory"
|
|
35
|
+
SKILL_CONTENT_LABEL = "Full SKILL.md content"
|
|
36
|
+
EMPTY_PATH_LIST_LABEL = "(none)"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def render_available_skills_block(skill_summaries: list[SkillSummary]) -> str:
|
|
40
|
+
lines = ["", "", AVAILABLE_SKILLS_SECTION_TITLE]
|
|
41
|
+
if not skill_summaries:
|
|
42
|
+
lines.append("(none)")
|
|
43
|
+
return "\n".join(lines)
|
|
44
|
+
|
|
45
|
+
for skill_summary in skill_summaries:
|
|
46
|
+
lines.append(f"- {skill_summary.name}: {skill_summary.description}")
|
|
47
|
+
return "\n".join(lines)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def render_selected_skills_block(selected_skills: list[SelectedSkill]) -> str:
|
|
51
|
+
if not selected_skills:
|
|
52
|
+
return ""
|
|
53
|
+
|
|
54
|
+
lines = ["", "", SELECTED_SKILLS_SECTION_TITLE]
|
|
55
|
+
lines.append(SELECTED_SKILLS_INSTRUCTION)
|
|
56
|
+
lines.append("")
|
|
57
|
+
for selected_skill in selected_skills:
|
|
58
|
+
_append_selected_skill_block(lines, selected_skill)
|
|
59
|
+
return "\n".join(lines)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _append_selected_skill_block(lines: list[str], selected_skill: SelectedSkill) -> None:
|
|
63
|
+
lines.append(f"## {selected_skill.name} ({selected_skill.source.value})")
|
|
64
|
+
lines.append(f"{SKILL_STATUS_LABEL}: ACTIVE - explicitly loaded by the user via /skills")
|
|
65
|
+
lines.append(f"{SKILL_DIRECTORY_LABEL}: {selected_skill.skill_dir}")
|
|
66
|
+
lines.append(f"{SKILL_FILE_LABEL}: {selected_skill.skill_path}")
|
|
67
|
+
lines.append(
|
|
68
|
+
"This skill is active right now. "
|
|
69
|
+
"Use these absolute paths directly when you need skill files."
|
|
70
|
+
)
|
|
71
|
+
lines.append(f"{SKILL_REFERENCED_FILES_LABEL}:")
|
|
72
|
+
_append_path_list(lines, selected_skill.referenced_paths)
|
|
73
|
+
|
|
74
|
+
additional_related_paths = [
|
|
75
|
+
path for path in selected_skill.related_paths if path not in selected_skill.referenced_paths
|
|
76
|
+
]
|
|
77
|
+
lines.append(f"{SKILL_RELATED_FILES_LABEL}:")
|
|
78
|
+
_append_path_list(lines, additional_related_paths)
|
|
79
|
+
|
|
80
|
+
lines.append("")
|
|
81
|
+
lines.append(f"{SKILL_CONTENT_LABEL}:")
|
|
82
|
+
lines.append(selected_skill.content)
|
|
83
|
+
lines.append("")
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _append_path_list(lines: list[str], paths: Iterable[Path]) -> None:
|
|
87
|
+
materialized_paths = list(paths)
|
|
88
|
+
if not materialized_paths:
|
|
89
|
+
lines.append(f"- {EMPTY_PATH_LIST_LABEL}")
|
|
90
|
+
return
|
|
91
|
+
|
|
92
|
+
for path in materialized_paths:
|
|
93
|
+
lines.append(f"- {path}")
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def compute_skills_prompt_fingerprint(
|
|
97
|
+
skill_summaries: list[SkillSummary],
|
|
98
|
+
selected_skills: list[SelectedSkill],
|
|
99
|
+
) -> str:
|
|
100
|
+
fingerprint_parts: list[str] = []
|
|
101
|
+
|
|
102
|
+
for skill_summary in skill_summaries:
|
|
103
|
+
fingerprint_parts.append(
|
|
104
|
+
f"summary:{skill_summary.name}:{skill_summary.description}:{skill_summary.source.value}"
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
for selected_skill in selected_skills:
|
|
108
|
+
content_hash = hashlib.sha256(selected_skill.content.encode("utf-8")).hexdigest()
|
|
109
|
+
referenced_paths_hash = _hash_paths(selected_skill.referenced_paths)
|
|
110
|
+
related_paths_hash = _hash_paths(selected_skill.related_paths)
|
|
111
|
+
fingerprint_parts.append(
|
|
112
|
+
"selected:"
|
|
113
|
+
f"{selected_skill.name}:{selected_skill.source.value}:{selected_skill.skill_dir}:"
|
|
114
|
+
f"{selected_skill.skill_path}:{content_hash}:{referenced_paths_hash}:{related_paths_hash}"
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
fingerprint_input = "|".join(fingerprint_parts)
|
|
118
|
+
return hashlib.sha256(fingerprint_input.encode("utf-8")).hexdigest()
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _hash_paths(paths: Iterable[Path]) -> str:
|
|
122
|
+
joined_paths = "|".join(str(path) for path in paths)
|
|
123
|
+
return hashlib.sha256(joined_paths.encode("utf-8")).hexdigest()
|