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.
Files changed (558) hide show
  1. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/JOURNAL.md +8 -0
  2. tunacode_cli-0.1.86/.claude/debug_history/2026-03-06-command-autocomplete-argument-interference.md +33 -0
  3. tunacode_cli-0.1.86/.claude/debug_history/2026-03-06-skills-autocomplete-selection-ranking.md +34 -0
  4. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/context-loss-bug.md +8 -0
  5. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/continuous-learning.md +8 -0
  6. tunacode_cli-0.1.86/.claude/delta/2026-03-06-github-release-pypi-skip-existing.md +16 -0
  7. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-06-pypi-release-0.1.84.md +8 -0
  8. tunacode_cli-0.1.86/.claude/delta/2026-03-06-pypi-release-0.1.85.md +23 -0
  9. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/pydantic_runtime_removal_attempt.md +8 -0
  10. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/research/2026-02-01-glob-text-match-research.md +8 -0
  11. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/research/2026-02-12-tinyagent-rust-only-migration-map.md +8 -0
  12. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/raw.md +8 -0
  13. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_01_canonical_messaging_adoption.md +8 -0
  14. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_02_session_state_decomposition.md +8 -0
  15. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_03_message_parity_harness.md +8 -0
  16. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_04_canonical_sanitization.md +8 -0
  17. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_05_tool_call_registry_ownership.md +8 -0
  18. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_06_react_state_alignment.md +8 -0
  19. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_07_todo_state_alignment.md +8 -0
  20. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_08_usage_metrics_consolidation.md +8 -0
  21. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_09_architecture_enforcement_tests.md +8 -0
  22. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/task/task_10_legacy_path_decommission.md +8 -0
  23. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/publish-release.yml +2 -2
  24. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/CHANGELOG.md +18 -0
  25. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/PKG-INFO +1 -1
  26. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/pyproject.toml +1 -1
  27. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/constants.py +1 -1
  28. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/prompts/system_prompt.md +8 -0
  29. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/loader.py +41 -0
  30. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/models.py +3 -0
  31. tunacode_cli-0.1.86/src/tunacode/skills/prompting.py +123 -0
  32. tunacode_cli-0.1.86/src/tunacode/skills/search.py +87 -0
  33. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/selection.py +47 -8
  34. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/skills.py +118 -62
  35. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles/panels.tcss +83 -0
  36. tunacode_cli-0.1.86/src/tunacode/ui/styles/widgets.tcss +99 -0
  37. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/command_autocomplete.py +7 -3
  38. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/skills_autocomplete.py +30 -13
  39. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_tinyagent_alchemy_usage_contract_live.py +9 -0
  40. tunacode_cli-0.1.86/tests/unit/core/test_agent_skills_prompt_injection.py +86 -0
  41. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_command_autocomplete.py +2 -1
  42. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/uv.lock +1 -1
  43. tunacode_cli-0.1.84/.grimp_cache/.gitignore +0 -2
  44. tunacode_cli-0.1.84/.grimp_cache/CACHEDIR.TAG +0 -3
  45. tunacode_cli-0.1.84/.grimp_cache/df55eb48808bc85310d608a575b31fcde39b2b61.data.json +0 -1
  46. tunacode_cli-0.1.84/.grimp_cache/tunacode.meta.json +0 -1
  47. tunacode_cli-0.1.84/.worktree/.gitignore +0 -1
  48. tunacode_cli-0.1.84/.worktree/README.md +0 -9
  49. tunacode_cli-0.1.84/AGENTS.md +0 -136
  50. tunacode_cli-0.1.84/CLAUDE.md +0 -148
  51. tunacode_cli-0.1.84/src/tunacode/skills/prompting.py +0 -52
  52. tunacode_cli-0.1.84/src/tunacode/ui/styles/widgets.tcss +0 -42
  53. tunacode_cli-0.1.84/tests/integration/core/test_skills_integration.py +0 -191
  54. tunacode_cli-0.1.84/tests/unit/core/test_session_state_skills.py +0 -28
  55. tunacode_cli-0.1.84/tests/unit/skills/test_discovery.py +0 -89
  56. tunacode_cli-0.1.84/tests/unit/skills/test_loader.py +0 -123
  57. tunacode_cli-0.1.84/tests/unit/skills/test_registry.py +0 -141
  58. tunacode_cli-0.1.84/tests/unit/ui/test_skill_command.py +0 -112
  59. tunacode_cli-0.1.84/tests/unit/ui/test_skills_autocomplete.py +0 -113
  60. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-12_missing-cached-tokens.md +0 -0
  61. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_abort-hang-investigation.md +0 -0
  62. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_resume-hang-investigation-updated.md +0 -0
  63. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_resume-hang-investigation.md +0 -0
  64. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-01-21_stream-hang-timeout.md +0 -0
  65. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/2026-02-01_openai-chat-invalid-response.md +0 -0
  66. {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
  67. {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
  68. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/debug_history/list-dir-tool-execution-error.md +0 -0
  69. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-16-panel-width-refactoring.md +0 -0
  70. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-17-dangling-tool-calls.md +0 -0
  71. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-25_orphaned_retry_prompt_on_dangling_cleanup.md +0 -0
  72. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-25_tool-registry-todo-alignment.md +0 -0
  73. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-01-26_boundary-contracts-not-enforced.md +0 -0
  74. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-cli-main-compatibility.md +0 -0
  75. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-esc-handler-extraction.md +0 -0
  76. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-pruning-token-estimation-optimization.md +0 -0
  77. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-remove-cli-shim.md +0 -0
  78. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-remove-heuristic-token-counting.md +0 -0
  79. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-remove-toolbuffer-shim.md +0 -0
  80. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-resource-bar-usage-totals.md +0 -0
  81. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-sanitize-canonical-cache.md +0 -0
  82. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-token-pruning-efficiency-plan.md +0 -0
  83. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-02-tool-name-normalization.md +0 -0
  84. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-04-main-agent-refactoring.md +0 -0
  85. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-05-tech-debt-scanner-markdown-exclusion.md +0 -0
  86. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-05-ui-messaging-layer-facade.md +0 -0
  87. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-07_remove-orchestrator-tool-dispatcher.md +0 -0
  88. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-compaction-pr378-review-fixes.md +0 -0
  89. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-compaction-system-implementation.md +0 -0
  90. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-status-bar-content-row-regression.md +0 -0
  91. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-theme-variable-contract.md +0 -0
  92. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-11-tinyagent-base-url-provider-flex.md +0 -0
  93. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-16-context-rail-inspector-styling.md +0 -0
  94. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-16-slopgotchi-pet-widget.md +0 -0
  95. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-16-update-file-before-after-separator-lane.md +0 -0
  96. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-17-thinking-delta-tui-integration.md +0 -0
  97. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-17-thinking-integration-plan-hardening.md +0 -0
  98. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-20-app-lifecycle-class-refactor.md +0 -0
  99. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-20-disable-agent-text-streaming-default.md +0 -0
  100. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-20-system-prompt-tooling-refresh.md +0 -0
  101. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-21_minimax-tool-call-bugs.md +0 -0
  102. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-22-enable-mypy-pre-commit-hook.md +0 -0
  103. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-22-mypy-type-contract-fixes.md +0 -0
  104. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-23_parallel-tool-call-rollout.md +0 -0
  105. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-02-24-remove-dead-tool-renderers.md +0 -0
  106. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-03-ruff-import-order-determinism.md +0 -0
  107. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-deptry-pydantic-direct-dependency.md +0 -0
  108. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-gate0-remove-all-shims.md +0 -0
  109. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-request-orchestrator-typed-events.md +0 -0
  110. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-session-compaction-model-first-boundaries.md +0 -0
  111. {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
  112. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-tool-adapter-typed-agenttoolresult.md +0 -0
  113. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/2026-03-04-typed-stream-fn-contract.md +0 -0
  114. {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
  115. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/remove-all-exports-use-direct-imports.md +0 -0
  116. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/remove-global-cache-user-config.md +0 -0
  117. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/remove-unused-cleanup-session.md +0 -0
  118. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/tun-00df-add-tinyagent-dependency.md +0 -0
  119. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/tun-1658-phase6-messaging-normalization.md +0 -0
  120. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/delta/tun-1ad5-wrap-tools-as-tinyagent-agenttool.md +0 -0
  121. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/metadata/research/2026-02-23-parallel-tool-calls-rollout-plan.md +0 -0
  122. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/patterns/cache-layer-typed-accessors.md +0 -0
  123. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/patterns/usage-total-token-source.md +0 -0
  124. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/2026-02-11-theme-visual-verification.md +0 -0
  125. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/no-cargo-cult-fixes.md +0 -0
  126. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.claude/qa/semantically-dead-code.md +0 -0
  127. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.coderabbit.yaml +0 -0
  128. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  129. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  130. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  131. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  132. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/dependabot.yml +0 -0
  133. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/pull_request_template.md +0 -0
  134. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/dependency-map.yml +0 -0
  135. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/empty-dir-check.yml +0 -0
  136. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/lint.yml +0 -0
  137. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/release.yml +0 -0
  138. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.github/workflows/tech-debt.yml +0 -0
  139. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.gitignore +0 -0
  140. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.pre-commit-config.yaml +0 -0
  141. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.test_reports/.gitkeep +0 -0
  142. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/.worktree-meta +0 -0
  143. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/AUDIT_SMALL_WINS_PLAN.md +0 -0
  144. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/LICENSE +0 -0
  145. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/MANIFEST.in +0 -0
  146. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/Makefile +0 -0
  147. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/NOTES.md +0 -0
  148. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/README.md +0 -0
  149. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/assets/hashline-edit.png +0 -0
  150. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/assets/home.png +0 -0
  151. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/README.md +0 -0
  152. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/architecture/dependencies/DEPENDENCY_LAYERS.dot +0 -0
  153. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/architecture/dependencies/DEPENDENCY_LAYERS.md +0 -0
  154. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/architecture/dependencies/DEPENDENCY_LAYERS.png +0 -0
  155. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/boundaries/.gitkeep +0 -0
  156. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/codebase-map/structure/tree-structure.txt +0 -0
  157. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/exceptions/.gitkeep +0 -0
  158. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-home-catpu.png +0 -0
  159. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-home.png +0 -0
  160. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-lsp.png +0 -0
  161. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/dream-ui/tunacode-cli-response.png +0 -0
  162. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/tool-calls.png +0 -0
  163. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/images/tunacode.png +0 -0
  164. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/migration/.gitkeep +0 -0
  165. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/configuration/configuration.md +0 -0
  166. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/core/core.md +0 -0
  167. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/index.md +0 -0
  168. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/infrastructure/infrastructure.md +0 -0
  169. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/prompts/versioning.md +0 -0
  170. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/tools/hashline-subsystem.md +0 -0
  171. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/tools/tools.md +0 -0
  172. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/types/types.md +0 -0
  173. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/ui/commands.md +0 -0
  174. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/ui/ui.md +0 -0
  175. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/modules/utils/utils.md +0 -0
  176. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/quality-gates/.gitkeep +0 -0
  177. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/runbooks/.gitkeep +0 -0
  178. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/tests/.gitkeep +0 -0
  179. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/docs/ui/css-architecture.md +0 -0
  180. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/handoff.md +0 -0
  181. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/delta/2026-01-28_decoupled-tools.md +0 -0
  182. {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
  183. {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
  184. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/execute/2026-01-27_21-50-00_tickets.md +0 -0
  185. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/execute/2026-02-28_16-00-00_prompt_versioning.md +0 -0
  186. {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
  187. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/handoffs/tinyagent-baseurl-integration.md +0 -0
  188. {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
  189. {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
  190. {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
  191. {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
  192. {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
  193. {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
  194. {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
  195. {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
  196. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-27_chat-container-refactor.md +0 -0
  197. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-01-28_pydantic-ai-adapter-layer.md +0 -0
  198. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-01_complexity-refactoring.md +0 -0
  199. {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
  200. {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
  201. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-02_sanitize-loop-canonicalization-bottleneck.md +0 -0
  202. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-02_token-pruning-efficiency-plan.md +0 -0
  203. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-05_issue-358_tool-dispatcher-complexity.md +0 -0
  204. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-11_04-15-37_compaction-system.md +0 -0
  205. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-11_theme-architecture-handoff.md +0 -0
  206. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-17_thinking-content-integration.md +0 -0
  207. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-19_api-key-ux-improvement.md +0 -0
  208. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/2026-02-28_15-45-00_prompt_versioning.md +0 -0
  209. {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
  210. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/dream-mockup-slim-panels.webp +0 -0
  211. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/nextstep-theme.png +0 -0
  212. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/nextstep-theme.svg +0 -0
  213. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/tunacode-theme.png +0 -0
  214. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/tunacode-theme.svg +0 -0
  215. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-home.svg +0 -0
  216. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-lsp.svg +0 -0
  217. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-nextstep-home.svg +0 -0
  218. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/assets/verification/verification-response.svg +0 -0
  219. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/plan/reserch.md +0 -0
  220. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/.claude/settings.local.json +0 -0
  221. {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
  222. {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
  223. {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
  224. {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
  225. {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
  226. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-26_planning-feature-deletion.md +0 -0
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_17-45-00_chatcontainer_refactor.md +0 -0
  233. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_alchemy-rs-migration.md +0 -0
  234. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_insert-before-stream-investigation.md +0 -0
  235. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-27_streaming-abort-context-loss.md +0 -0
  236. {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
  237. {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
  238. {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
  239. {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
  240. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-01-28_recent-changes-summary.md +0 -0
  241. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-01-token-counting-logic.md +0 -0
  242. {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
  243. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-01_complexity-hotspots.md +0 -0
  244. {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
  245. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-02_20-47-34_agent_bottlenecks.md +0 -0
  246. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-02_sanitize_loop_canonicalization_bottleneck.md +0 -0
  247. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-02_token_estimation_overhead.md +0 -0
  248. {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
  249. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-05_tool_dispatcher_complexity_358.md +0 -0
  250. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-07_18-06-58_compaction-system.md +0 -0
  251. {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
  252. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-07_tinyagent-v2.5-migration-map.md +0 -0
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-16_diff_rendering_pipeline.md +0 -0
  261. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-17_thinking-content-integration.md +0 -0
  262. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-19_api-key-ux-improvement.md +0 -0
  263. {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
  264. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-02-22_compact-command-ux-mapping.md +0 -0
  265. {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
  266. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/2026-03-05_skills_feature_minimal_map.md +0 -0
  267. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/bottleneck-analysis.md +0 -0
  268. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/memory-bank/research/esc-key-flow-diagram.html +0 -0
  269. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/pytest.ini +0 -0
  270. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/reports/SMALL_WINS_AUDIT.md +0 -0
  271. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/reports/discover-benchmark-case-study.html +0 -0
  272. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/reports/tunacode-site-reference.png +0 -0
  273. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check-file-length.sh +0 -0
  274. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check-naming-conventions.py +0 -0
  275. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check-unused-constants.py +0 -0
  276. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check_agents_freshness.py +0 -0
  277. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/check_unused_modules.py +0 -0
  278. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/dev-setup.sh +0 -0
  279. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/download_ripgrep.py +0 -0
  280. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/generate-release-notes.sh +0 -0
  281. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/generate_structure_tree.py +0 -0
  282. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/grimp_layers_report.py +0 -0
  283. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/install_linux.sh +0 -0
  284. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/playwright_cache.py +0 -0
  285. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/preview_tool_panels.py +0 -0
  286. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/run-dead-imports.sh +0 -0
  287. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/run_gates.py +0 -0
  288. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/startup_timer.py +0 -0
  289. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/todo_baseline.json +0 -0
  290. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/todo_scanner.py +0 -0
  291. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/ui_import_timer.py +0 -0
  292. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/uninstall.sh +0 -0
  293. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/update_models_registry.sh +0 -0
  294. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/scripts/utils/vulture_whitelist.py +0 -0
  295. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/__init__.py +0 -0
  296. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/__init__.py +0 -0
  297. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/defaults.py +0 -0
  298. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/feature_flags.py +0 -0
  299. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/ignore_patterns.py +0 -0
  300. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/limits.py +0 -0
  301. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/models.py +0 -0
  302. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/models_registry.json +0 -0
  303. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/paths.py +0 -0
  304. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/pricing.py +0 -0
  305. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/settings.py +0 -0
  306. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/configuration/user_config.py +0 -0
  307. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/__init__.py +0 -0
  308. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/__init__.py +0 -0
  309. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/__init__.py +0 -0
  310. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/agent_config.py +1 -1
  311. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/agent_helpers.py +0 -0
  312. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/agent_components/state_transition.py +0 -0
  313. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/helpers.py +0 -0
  314. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/main.py +0 -0
  315. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/resume/__init__.py +0 -0
  316. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/resume/sanitize.py +0 -0
  317. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/agents/resume/sanitize_debug.py +0 -0
  318. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/__init__.py +0 -0
  319. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/controller.py +0 -0
  320. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/prompts.py +0 -0
  321. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/summarizer.py +0 -0
  322. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/compaction/types.py +0 -0
  323. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/debug/__init__.py +0 -0
  324. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/debug/usage_trace.py +0 -0
  325. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/__init__.py +0 -0
  326. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/handlers.py +0 -0
  327. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/levels.py +0 -0
  328. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/manager.py +0 -0
  329. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/logging/records.py +0 -0
  330. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/session/__init__.py +0 -0
  331. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/session/state.py +0 -0
  332. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/__init__.py +0 -0
  333. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/agent_state.py +0 -0
  334. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/state.py +0 -0
  335. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/state_structures.py +0 -0
  336. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/types/tool_registry.py +0 -0
  337. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/__init__.py +0 -0
  338. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/configuration.py +0 -0
  339. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/constants.py +0 -0
  340. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/file_filter.py +0 -0
  341. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/formatting.py +0 -0
  342. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/lsp_status.py +0 -0
  343. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/messaging.py +0 -0
  344. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/shared_types.py +0 -0
  345. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/system_paths.py +0 -0
  346. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/core/ui_api/user_configuration.py +0 -0
  347. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/exceptions.py +0 -0
  348. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/__init__.py +0 -0
  349. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/__init__.py +0 -0
  350. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/__init__.py +0 -0
  351. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/agents.py +0 -0
  352. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/limits_settings.py +0 -0
  353. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/models_registry.py +0 -0
  354. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/prompt_version_cache.py +0 -0
  355. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/skills.py +0 -0
  356. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/caches/tunacode_context.py +0 -0
  357. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/manager.py +0 -0
  358. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/metadata.py +0 -0
  359. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/cache/strategies.py +0 -0
  360. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/infrastructure/file_filter.py +0 -0
  361. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/prompts/version_display.py +0 -0
  362. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/prompts/versioning.py +0 -0
  363. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/py.typed +0 -0
  364. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/__init__.py +0 -0
  365. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/discovery.py +0 -0
  366. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/skills/registry.py +0 -0
  367. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/test_dead_code/__init__.py +0 -0
  368. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/test_dead_code/never_imported.py +0 -0
  369. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/__init__.py +0 -0
  370. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/bash.py +0 -0
  371. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/__init__.py +0 -0
  372. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/ignore_manager_cache.py +0 -0
  373. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/ripgrep_cache.py +0 -0
  374. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/cache_accessors/xml_prompts_cache.py +0 -0
  375. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/decorators.py +0 -0
  376. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/discover.py +0 -0
  377. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/hashline.py +0 -0
  378. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/hashline_edit.py +0 -0
  379. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/ignore.py +0 -0
  380. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/ignore_manager.py +0 -0
  381. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/line_cache.py +0 -0
  382. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/__init__.py +0 -0
  383. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/client.py +0 -0
  384. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/diagnostics.py +0 -0
  385. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/lsp/servers.py +0 -0
  386. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/bash_prompt.xml +0 -0
  387. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/discover_prompt.xml +0 -0
  388. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/hashline_edit_prompt.xml +0 -0
  389. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/read_file_prompt.xml +0 -0
  390. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/web_fetch_prompt.xml +0 -0
  391. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/prompts/write_file_prompt.xml +0 -0
  392. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/read_file.py +0 -0
  393. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/__init__.py +0 -0
  394. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/discover_pipeline.py +0 -0
  395. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/discover_terms.py +0 -0
  396. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/discover_types.py +0 -0
  397. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/formatting.py +0 -0
  398. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/utils/ripgrep.py +0 -0
  399. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/web_fetch.py +0 -0
  400. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/write_file.py +0 -0
  401. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/tools/xml_helper.py +0 -0
  402. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/__init__.py +0 -0
  403. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/base.py +0 -0
  404. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/callbacks.py +0 -0
  405. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/canonical.py +0 -0
  406. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/types/dataclasses.py +0 -0
  407. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/PLAN.md +0 -0
  408. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/__init__.py +0 -0
  409. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/app.py +0 -0
  410. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/assets/logo.ansi +0 -0
  411. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/clipboard.py +0 -0
  412. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/__init__.py +0 -0
  413. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/base.py +0 -0
  414. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/cancel.py +0 -0
  415. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/clear.py +0 -0
  416. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/compact.py +0 -0
  417. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/debug.py +0 -0
  418. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/exit.py +0 -0
  419. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/help.py +0 -0
  420. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/model.py +0 -0
  421. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/resume.py +0 -0
  422. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/theme.py +0 -0
  423. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/thoughts.py +0 -0
  424. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/commands/update.py +0 -0
  425. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/context_panel.py +0 -0
  426. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/esc/__init__.py +0 -0
  427. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/esc/handler.py +0 -0
  428. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/esc/types.py +0 -0
  429. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/headless/__init__.py +0 -0
  430. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/headless/output.py +0 -0
  431. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/lifecycle.py +0 -0
  432. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/logo_assets.py +0 -0
  433. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/main.py +0 -0
  434. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/model_display.py +0 -0
  435. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/__init__.py +0 -0
  436. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/agent_response.py +0 -0
  437. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/errors.py +0 -0
  438. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/panel_widths.py +0 -0
  439. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/panels.py +0 -0
  440. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/search.py +0 -0
  441. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/thinking.py +0 -0
  442. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/__init__.py +0 -0
  443. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/base.py +0 -0
  444. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/bash.py +0 -0
  445. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/diagnostics.py +0 -0
  446. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/discover.py +0 -0
  447. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/hashline_edit.py +0 -0
  448. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/read_file.py +0 -0
  449. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/syntax_utils.py +0 -0
  450. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/web_fetch.py +0 -0
  451. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/renderers/tools/write_file.py +0 -0
  452. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/repl_support.py +0 -0
  453. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/__init__.py +0 -0
  454. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/api_key_entry.py +0 -0
  455. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/model_picker.py +0 -0
  456. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/session_picker.py +0 -0
  457. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/setup.py +0 -0
  458. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/theme_picker.py +0 -0
  459. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/screens/update_confirm.py +0 -0
  460. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/shell_runner.py +0 -0
  461. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/slopgotchi/__init__.py +0 -0
  462. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/slopgotchi/panel.py +0 -0
  463. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles/layout.tcss +0 -0
  464. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles/modals.tcss +0 -0
  465. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/styles.py +0 -0
  466. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/thinking_state.py +0 -0
  467. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/welcome.py +0 -0
  468. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/__init__.py +0 -0
  469. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/chat.py +0 -0
  470. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/editor.py +0 -0
  471. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/file_autocomplete.py +0 -0
  472. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/messages.py +0 -0
  473. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/resource_bar.py +0 -0
  474. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/ui/widgets/status_bar.py +0 -0
  475. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/__init__.py +0 -0
  476. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/messaging/__init__.py +0 -0
  477. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/messaging/adapter.py +0 -0
  478. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/messaging/token_counter.py +0 -0
  479. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/system/__init__.py +0 -0
  480. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/src/tunacode/utils/system/gitignore.py +0 -0
  481. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/__init__.py +0 -0
  482. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/__init__.py +0 -0
  483. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_import_order.py +0 -0
  484. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_imports_in_init.py +0 -0
  485. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_init_bloat.py +0 -0
  486. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/architecture/test_layer_dependencies.py +0 -0
  487. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/benchmarks/bench_discover.py +0 -0
  488. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/conftest.py +0 -0
  489. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_minimax_execution_path.py +0 -0
  490. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_mtime_caches_end_to_end.py +0 -0
  491. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/core/test_tinyagent_tool_execution_contract.py +0 -0
  492. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/tools/test_shell_runner.py +0 -0
  493. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/tools/test_tool_conformance.py +0 -0
  494. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/integration/tools/test_web_fetch.py +0 -0
  495. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_cli_default_command.py +0 -0
  496. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_headless_cli.py +0 -0
  497. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_repl_support.py +0 -0
  498. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_startup.py +0 -0
  499. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/system/cli/test_tmux_tools.py +0 -0
  500. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/test_compaction.py +0 -0
  501. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/test_dependency_layers.py +0 -0
  502. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/__init__.py +0 -0
  503. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_hashline.py +0 -0
  504. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_hashline_edit.py +0 -0
  505. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_ignore.py +0 -0
  506. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/tools/test_line_cache.py +0 -0
  507. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_default_config_minimax_keys.py +0 -0
  508. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_default_config_stream_agent_text.py +0 -0
  509. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_models_registry_minimax_contract.py +0 -0
  510. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/configuration/test_provider_api_key_env_fallback.py +0 -0
  511. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_agent_cache_abort.py +0 -0
  512. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_compaction_controller_outcomes.py +0 -0
  513. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_compaction_summarizer.py +0 -0
  514. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_context_overflow_detection.py +0 -0
  515. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_exceptions.py +0 -0
  516. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_logging.py +0 -0
  517. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_openrouter_usage_metrics.py +0 -0
  518. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_provider_error_surfacing.py +0 -0
  519. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_request_orchestrator_parallel_tools.py +0 -0
  520. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_session_state_defaults.py +0 -0
  521. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_session_usage_schema.py +0 -0
  522. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_thinking_stream_routing.py +0 -0
  523. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_tinyagent_openrouter_model_config.py +0 -0
  524. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_tool_concurrency_limit.py +0 -0
  525. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/core/test_usage_trace_debug.py +0 -0
  526. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/infrastructure/test_cache_infrastructure.py +0 -0
  527. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/infrastructure/test_migrated_lru_cache_replacements.py +0 -0
  528. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/infrastructure/test_typed_cache_accessors.py +0 -0
  529. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/prompts/test_versioning.py +0 -0
  530. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/test_sanitize_canonicalization.py +0 -0
  531. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_bash.py +0 -0
  532. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_discover.py +0 -0
  533. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_tinyagent_tool_adapter.py +0 -0
  534. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/tools/test_tool_decorators.py +0 -0
  535. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/types/test_adapter.py +0 -0
  536. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/types/test_canonical.py +0 -0
  537. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/types/test_tool_registry.py +0 -0
  538. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_agent_response.py +0 -0
  539. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_api_key_entry.py +0 -0
  540. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_app_latest_response_text.py +0 -0
  541. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_base_renderer.py +0 -0
  542. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_base_tool_renderer.py +0 -0
  543. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_chat_container.py +0 -0
  544. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_command_contracts.py +0 -0
  545. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_context_panel_toggle.py +0 -0
  546. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_diagnostics_renderer.py +0 -0
  547. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_error_renderer_authentication.py +0 -0
  548. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_hashline_edit_renderer.py +0 -0
  549. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_model_display.py +0 -0
  550. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_resource_bar_usage_cost.py +0 -0
  551. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_status_bar_layout.py +0 -0
  552. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_stream_agent_text_setting.py +0 -0
  553. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_supported_themes.py +0 -0
  554. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_theme_variable_contract.py +0 -0
  555. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_thinking_renderer.py +0 -0
  556. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/ui/test_tool_panel_css_flow.py +0 -0
  557. {tunacode_cli-0.1.84 → tunacode_cli-0.1.86}/tests/unit/utils/test_shell_command_escape.py +0 -0
  558. {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)
@@ -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: "Bug: Messages Not Persisted on Error/Abort"
3
+ type: debug
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: b2f4d4fd-7e70-48d8-b326-92bd9b697299
7
+ ---
8
+
1
9
  # Bug: Messages Not Persisted on Error/Abort
2
10
 
3
11
  ## Summary
@@ -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.
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "PyPI release 0.1.84"
3
+ type: delta
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: 49c56f85-1b52-4822-93b4-d9034bb606f5
7
+ ---
8
+
1
9
  # PyPI release 0.1.84
2
10
 
3
11
  ## Summary
@@ -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.
@@ -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.
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 01: Canonical Messaging Adoption"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: f71c2309-4adf-4ee1-803c-02b5db1d9258
7
+ ---
8
+
1
9
  # Task 01: Canonical Messaging Adoption
2
10
 
3
11
  ## Status: COMPLETE ✓
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 02: SessionState Decomposition"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: cf299522-eb4f-41df-a153-a4e24bf9fdfd
7
+ ---
8
+
1
9
  # Task 02: SessionState Decomposition
2
10
 
3
11
  ## Status: PENDING
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 03: Message Parity Harness"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: 126e3844-6c64-4499-9ce9-229beddb09e1
7
+ ---
8
+
1
9
  # Task 03: Message Parity Harness
2
10
 
3
11
  ## Summary
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 04: Canonical Sanitization"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: eaa5370f-cc3f-4dd3-a14d-58e86eb132a4
7
+ ---
8
+
1
9
  # Task 04: Canonical Sanitization
2
10
 
3
11
  ## Summary
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 05: Tool Call Registry Ownership"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: 4736f7b4-04b7-4579-a024-337fc5f5f2a9
7
+ ---
8
+
1
9
  # Task 05: Tool Call Registry Ownership
2
10
 
3
11
  ## Summary
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 06: ReAct State Alignment"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: c3569ebb-2b37-412e-8acb-638581d8107f
7
+ ---
8
+
1
9
  # Task 06: ReAct State Alignment
2
10
 
3
11
  ## Summary
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 07: Todo State Alignment"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: 22c1a005-1d86-4f59-a6e4-4e115237bcd8
7
+ ---
8
+
1
9
  # Task 07: Todo State Alignment
2
10
 
3
11
  ## Summary
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 08: Usage Metrics Consolidation"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: f99bc665-7a0e-4e56-a024-082111553c81
7
+ ---
8
+
1
9
  # Task 08: Usage Metrics Consolidation
2
10
 
3
11
  ## Summary
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 09: Architecture Enforcement Tests"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: f100ac1a-f5f7-4795-8fcf-66e5386bc9a7
7
+ ---
8
+
1
9
  # Task 09: Architecture Enforcement Tests
2
10
 
3
11
  ## Summary
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "Task 10: Legacy Path Decommission"
3
+ type: task
4
+ created_at: 2026-03-06T05:18:58Z
5
+ updated_at: 2026-03-06T05:18:58Z
6
+ uuid: 84d799c0-b1df-4cc0-9930-e66f5f00e41e
7
+ ---
8
+
1
9
  # Task 10: Legacy Path Decommission
2
10
 
3
11
  ## Summary
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tunacode-cli
3
- Version: 0.1.84
3
+ Version: 0.1.86
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
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
  [project]
6
6
  name = "tunacode-cli"
7
7
 
8
- version = "0.1.84"
8
+ version = "0.1.86"
9
9
  description = "Your agentic CLI developer."
10
10
  keywords = ["cli", "agent", "development", "automation"]
11
11
  readme = "README.md"
@@ -18,7 +18,7 @@ KB = 1024
18
18
  MB = KB * 1024
19
19
 
20
20
  APP_NAME = "TunaCode"
21
- APP_VERSION = "0.1.84"
21
+ APP_VERSION = "0.1.86"
22
22
 
23
23
 
24
24
  GUIDE_FILE_NAME = "AGENTS.md"
@@ -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):
@@ -42,6 +42,9 @@ class SelectedSkill:
42
42
 
43
43
  name: str
44
44
  source: SkillSource
45
+ skill_dir: Path
45
46
  skill_path: Path
47
+ referenced_paths: tuple[Path, ...]
48
+ related_paths: tuple[Path, ...]
46
49
  content: str
47
50
  attachment_index: int
@@ -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()