Skip to content

Embed rtk, fd, rg binaries and wrap bash with rtk#66

Merged
vaayne merged 6 commits intomainfrom
feat/embed-rtk
Mar 18, 2026
Merged

Embed rtk, fd, rg binaries and wrap bash with rtk#66
vaayne merged 6 commits intomainfrom
feat/embed-rtk

Conversation

@vaayne
Copy link
Copy Markdown
Owner

@vaayne vaayne commented Mar 18, 2026

Summary

  • Embed fd, rg, rtk binaries (gzip-compressed) via internal/embedded package, extracted to ANNA_HOME/bin/ on first use
  • All bash tool commands automatically wrapped with rtk for 60-90% token reduction on command output
  • ANNA_HOME/bin prepended to PATH so embedded tools are available to the LLM
  • Download script uses mise install-into — no manual platform mapping needed
  • Binary size impact: +6MB (~83MB total from 77MB base)

How it works

  1. mise run tools:download → downloads fd, rg, rtk for current platform via mise
  2. Binaries are gzip-compressed into internal/embedded/binaries/ and embedded via //go:embed
  3. On first tool registry creation, binaries are extracted to ANNA_HOME/bin/
  4. Bash tool checks for rtk (embedded or system PATH) and wraps commands as rtk <command>

Test plan

  • go build ./... compiles clean
  • golangci-lint run — 0 issues
  • go test -v -race ./internal/embedded/ — extraction + idempotency tests pass
  • Manual: verify rtk wrapping reduces token output for common commands (git status, ls, etc.)
  • CI: each platform runner runs mise run tools:download before build

- Add internal/embedded package to embed and extract tool binaries
  (gzip-compressed) to ANNA_HOME/bin/ on first use
- Add scripts/download-tools.sh using mise to download fd, rg, rtk
  for the current platform
- Wrap all bash tool commands with rtk for token-efficient output
- Prepend ANNA_HOME/bin to PATH in bash tool so embedded tools
  are available to the LLM
- Add mise task tools:download and goreleaser before hook
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 18, 2026

📊 Coverage Report

Total coverage: 43.0%

Per-package breakdown
github.com/vaayne/anna/cmd/anna/chat.go:13:                  2.9%
github.com/vaayne/anna/cmd/anna/commands.go:218:             7.7%
github.com/vaayne/anna/cmd/anna/commands.go:240:             0.0%
github.com/vaayne/anna/cmd/anna/commands.go:25:              100.0%
github.com/vaayne/anna/cmd/anna/commands.go:58:              68.1%
github.com/vaayne/anna/cmd/anna/gateway.go:206:              0.0%
github.com/vaayne/anna/cmd/anna/gateway.go:269:              37.5%
github.com/vaayne/anna/cmd/anna/gateway.go:27:               85.7%
github.com/vaayne/anna/cmd/anna/gateway.go:58:               15.3%
github.com/vaayne/anna/cmd/anna/main.go:9:                   0.0%
github.com/vaayne/anna/cmd/anna/models.go:104:               0.0%
github.com/vaayne/anna/cmd/anna/models.go:118:               0.0%
github.com/vaayne/anna/cmd/anna/models.go:131:               0.0%
github.com/vaayne/anna/cmd/anna/models.go:139:               100.0%
github.com/vaayne/anna/cmd/anna/models.go:154:               100.0%
github.com/vaayne/anna/cmd/anna/models.go:162:               0.0%
github.com/vaayne/anna/cmd/anna/models.go:177:               7.1%
github.com/vaayne/anna/cmd/anna/models.go:209:               11.1%
github.com/vaayne/anna/cmd/anna/models.go:228:               5.3%
github.com/vaayne/anna/cmd/anna/models.go:23:                0.0%
github.com/vaayne/anna/cmd/anna/models.go:266:               4.8%
github.com/vaayne/anna/cmd/anna/models.go:307:               0.0%
github.com/vaayne/anna/cmd/anna/models.go:68:                0.0%
github.com/vaayne/anna/cmd/anna/onboard.go:22:               50.0%
github.com/vaayne/anna/cmd/anna/onboard.go:39:               0.0%
github.com/vaayne/anna/cmd/anna/onboard.go:95:               0.0%
github.com/vaayne/anna/cmd/anna/plugin.go:130:               4.3%
github.com/vaayne/anna/cmd/anna/plugin.go:16:                50.0%
github.com/vaayne/anna/cmd/anna/plugin.go:177:               0.0%
github.com/vaayne/anna/cmd/anna/plugin.go:190:               0.0%
github.com/vaayne/anna/cmd/anna/plugin.go:199:               0.0%
github.com/vaayne/anna/cmd/anna/plugin.go:214:               0.0%
github.com/vaayne/anna/cmd/anna/plugin.go:31:                50.0%
github.com/vaayne/anna/cmd/anna/plugin.go:41:                0.0%
github.com/vaayne/anna/cmd/anna/plugin.go:65:                3.6%
github.com/vaayne/anna/cmd/anna/skills.go:114:               25.0%
github.com/vaayne/anna/cmd/anna/skills.go:133:               0.0%
github.com/vaayne/anna/cmd/anna/skills.go:176:               0.0%
github.com/vaayne/anna/cmd/anna/skills.go:19:                50.0%
github.com/vaayne/anna/cmd/anna/skills.go:210:               6.7%
github.com/vaayne/anna/cmd/anna/skills.go:36:                5.3%
github.com/vaayne/anna/cmd/anna/skills.go:79:                5.9%
github.com/vaayne/anna/cmd/anna/version.go:101:              75.0%
github.com/vaayne/anna/cmd/anna/version.go:109:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:117:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:151:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:185:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:197:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:202:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:235:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:271:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:282:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:327:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:360:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:376:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:446:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:462:              0.0%
github.com/vaayne/anna/cmd/anna/version.go:469:              75.0%
github.com/vaayne/anna/cmd/anna/version.go:54:               33.3%
github.com/vaayne/anna/cmd/anna/version.go:65:               6.2%
github.com/vaayne/anna/internal/admin/agents.go:18:          46.2%
github.com/vaayne/anna/internal/admin/agents.go:38:          66.7%
github.com/vaayne/anna/internal/admin/agents.go:48:          0.0%
github.com/vaayne/anna/internal/admin/agents.go:66:          0.0%
github.com/vaayne/anna/internal/admin/agents.go:9:           60.0%
github.com/vaayne/anna/internal/admin/channels.go:18:        0.0%
github.com/vaayne/anna/internal/admin/channels.go:28:        0.0%
github.com/vaayne/anna/internal/admin/channels.go:9:         0.0%
github.com/vaayne/anna/internal/admin/embed.go:15:           75.0%
github.com/vaayne/anna/internal/admin/models.go:11:          0.0%
github.com/vaayne/anna/internal/admin/providers.go:144:      0.0%
github.com/vaayne/anna/internal/admin/providers.go:15:       60.0%
github.com/vaayne/anna/internal/admin/providers.go:170:      0.0%
github.com/vaayne/anna/internal/admin/providers.go:24:       46.2%
github.com/vaayne/anna/internal/admin/providers.go:44:       0.0%
github.com/vaayne/anna/internal/admin/providers.go:54:       0.0%
github.com/vaayne/anna/internal/admin/providers.go:72:       0.0%
github.com/vaayne/anna/internal/admin/providers.go:81:       0.0%
github.com/vaayne/anna/internal/admin/render.go:11:          100.0%
github.com/vaayne/anna/internal/admin/render.go:15:          100.0%
github.com/vaayne/anna/internal/admin/render.go:19:          100.0%
github.com/vaayne/anna/internal/admin/render.go:23:          100.0%
github.com/vaayne/anna/internal/admin/render.go:27:          100.0%
github.com/vaayne/anna/internal/admin/render.go:31:          100.0%
github.com/vaayne/anna/internal/admin/render.go:35:          100.0%
github.com/vaayne/anna/internal/admin/render.go:41:          66.7%
github.com/vaayne/anna/internal/admin/scheduler.go:146:      0.0%
github.com/vaayne/anna/internal/admin/scheduler.go:162:      0.0%
github.com/vaayne/anna/internal/admin/scheduler.go:183:      0.0%
github.com/vaayne/anna/internal/admin/scheduler.go:208:      0.0%
github.com/vaayne/anna/internal/admin/scheduler.go:29:       0.0%
github.com/vaayne/anna/internal/admin/scheduler.go:42:       0.0%
github.com/vaayne/anna/internal/admin/scheduler.go:88:       0.0%
github.com/vaayne/anna/internal/admin/server.go:103:         100.0%
github.com/vaayne/anna/internal/admin/server.go:108:         100.0%
github.com/vaayne/anna/internal/admin/server.go:113:         100.0%
github.com/vaayne/anna/internal/admin/server.go:135:         100.0%
github.com/vaayne/anna/internal/admin/server.go:141:         0.0%
github.com/vaayne/anna/internal/admin/server.go:148:         100.0%
github.com/vaayne/anna/internal/admin/server.go:25:          100.0%
github.com/vaayne/anna/internal/admin/sessions.go:103:       0.0%
github.com/vaayne/anna/internal/admin/sessions.go:125:       0.0%
github.com/vaayne/anna/internal/admin/sessions.go:166:       0.0%
github.com/vaayne/anna/internal/admin/sessions.go:189:       0.0%
github.com/vaayne/anna/internal/admin/sessions.go:198:       0.0%
github.com/vaayne/anna/internal/admin/sessions.go:237:       0.0%
github.com/vaayne/anna/internal/admin/sessions.go:251:       0.0%
github.com/vaayne/anna/internal/admin/sessions.go:33:        0.0%
github.com/vaayne/anna/internal/admin/sessions.go:46:        0.0%
github.com/vaayne/anna/internal/admin/sessions.go:63:        0.0%
github.com/vaayne/anna/internal/admin/settings.go:24:        0.0%
github.com/vaayne/anna/internal/admin/settings.go:8:         0.0%
github.com/vaayne/anna/internal/admin/tools.go:22:           0.0%
github.com/vaayne/anna/internal/admin/tools.go:31:           0.0%
github.com/vaayne/anna/internal/admin/tools.go:61:           0.0%
github.com/vaayne/anna/internal/admin/ui/components_templ.go:122: 0.0%
github.com/vaayne/anna/internal/admin/ui/components_templ.go:12: 0.0%
github.com/vaayne/anna/internal/admin/ui/components_templ.go:182: 0.0%
github.com/vaayne/anna/internal/admin/ui/components_templ.go:206: 0.0%
github.com/vaayne/anna/internal/admin/ui/components_templ.go:78: 0.0%
github.com/vaayne/anna/internal/admin/ui/layout_templ.go:11: 0.0%
github.com/vaayne/anna/internal/admin/ui/layout_templ.go:87: 0.0%
github.com/vaayne/anna/internal/admin/ui/navbar_templ.go:230: 0.0%
github.com/vaayne/anna/internal/admin/ui/navbar_templ.go:27: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/agents_templ.go:13: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/agents_templ.go:183: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/channels_templ.go:13: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/channels_templ.go:545: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/providers_templ.go:13: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/scheduler_templ.go:13: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/sessions_templ.go:13: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/settings_templ.go:13: 0.0%
github.com/vaayne/anna/internal/admin/ui/pages/users_templ.go:13: 0.0%
github.com/vaayne/anna/internal/admin/users.go:17:           0.0%
github.com/vaayne/anna/internal/admin/users.go:37:           0.0%
github.com/vaayne/anna/internal/admin/users.go:51:           0.0%
github.com/vaayne/anna/internal/admin/users.go:72:           0.0%
github.com/vaayne/anna/internal/admin/users.go:8:            0.0%
github.com/vaayne/anna/internal/agent/engine/continue.go:12: 60.0%
github.com/vaayne/anna/internal/agent/engine/engine.go:122:  85.1%
github.com/vaayne/anna/internal/agent/engine/engine.go:20:   91.7%
github.com/vaayne/anna/internal/agent/engine/engine.go:212:  88.9%
github.com/vaayne/anna/internal/agent/engine/engine.go:227:  100.0%
github.com/vaayne/anna/internal/agent/engine/engine.go:42:   94.6%
github.com/vaayne/anna/internal/agent/engine/events.go:13:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:20:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:28:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:35:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:42:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:49:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:56:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:63:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:68:   100.0%
github.com/vaayne/anna/internal/agent/engine/events.go:75:   100.0%
github.com/vaayne/anna/internal/agent/engine/tool_execution.go:18: 73.5%
github.com/vaayne/anna/internal/agent/factory.go:17:         16.7%
github.com/vaayne/anna/internal/agent/pool.go:138:           100.0%
github.com/vaayne/anna/internal/agent/pool.go:147:           100.0%
github.com/vaayne/anna/internal/agent/pool.go:159:           75.0%
github.com/vaayne/anna/internal/agent/pool.go:169:           100.0%
github.com/vaayne/anna/internal/agent/pool.go:185:           83.3%
github.com/vaayne/anna/internal/agent/pool.go:197:           89.5%
github.com/vaayne/anna/internal/agent/pool.go:235:           100.0%
github.com/vaayne/anna/internal/agent/pool.go:246:           81.2%
github.com/vaayne/anna/internal/agent/pool.go:38:            100.0%
github.com/vaayne/anna/internal/agent/pool.go:402:           100.0%
github.com/vaayne/anna/internal/agent/pool.go:410:           100.0%
github.com/vaayne/anna/internal/agent/pool.go:417:           80.0%
github.com/vaayne/anna/internal/agent/pool.go:450:           91.3%
github.com/vaayne/anna/internal/agent/pool.go:57:            100.0%
github.com/vaayne/anna/internal/agent/pool.go:62:            100.0%
github.com/vaayne/anna/internal/agent/pool.go:71:            83.3%
github.com/vaayne/anna/internal/agent/pool.go:88:            75.0%
github.com/vaayne/anna/internal/agent/pool.go:98:            100.0%
github.com/vaayne/anna/internal/agent/pool_compaction.go:12: 100.0%
github.com/vaayne/anna/internal/agent/pool_compaction.go:17: 80.0%
github.com/vaayne/anna/internal/agent/pool_compaction.go:37: 100.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:102:   75.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:131:   80.8%
github.com/vaayne/anna/internal/agent/pool_manager.go:191:   80.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:201:   81.8%
github.com/vaayne/anna/internal/agent/pool_manager.go:27:    0.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:34:    0.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:41:    0.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:48:    0.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:55:    0.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:78:    75.0%
github.com/vaayne/anna/internal/agent/pool_manager.go:94:    100.0%
github.com/vaayne/anna/internal/agent/pool_options.go:14:    100.0%
github.com/vaayne/anna/internal/agent/pool_options.go:21:    100.0%
github.com/vaayne/anna/internal/agent/pool_options.go:28:    100.0%
github.com/vaayne/anna/internal/agent/pool_options.go:35:    100.0%
github.com/vaayne/anna/internal/agent/pool_options.go:42:    100.0%
github.com/vaayne/anna/internal/agent/pool_options.go:49:    0.0%
github.com/vaayne/anna/internal/agent/pool_options.go:56:    100.0%
github.com/vaayne/anna/internal/agent/pool_options.go:71:    100.0%
github.com/vaayne/anna/internal/agent/pool_reaper.go:13:     83.3%
github.com/vaayne/anna/internal/agent/pool_reaper.go:28:     89.5%
github.com/vaayne/anna/internal/agent/runner/builtin/embed.go:17: 0.0%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:106: 100.0%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:143: 100.0%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:146: 100.0%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:153: 100.0%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:156: 100.0%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:169: 94.4%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:220: 90.5%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:262: 100.0%
github.com/vaayne/anna/internal/agent/runner/gorunner.go:51: 95.0%
github.com/vaayne/anna/internal/agent/runner/prompt.go:106:  95.0%
github.com/vaayne/anna/internal/agent/runner/prompt.go:146:  100.0%
github.com/vaayne/anna/internal/agent/runner/prompt.go:36:   75.9%
github.com/vaayne/anna/internal/agent/runner/prompt.go:91:   85.7%
github.com/vaayne/anna/internal/agent/runner/runner.go:61:   100.0%
github.com/vaayne/anna/internal/agent/runner/runner.go:85:   75.0%
github.com/vaayne/anna/internal/agent/runner/skill.go:104:   100.0%
github.com/vaayne/anna/internal/agent/runner/skill.go:113:   85.7%
github.com/vaayne/anna/internal/agent/runner/skill.go:155:   85.7%
github.com/vaayne/anna/internal/agent/runner/skill.go:191:   91.7%
github.com/vaayne/anna/internal/agent/runner/skill.go:217:   100.0%
github.com/vaayne/anna/internal/agent/runner/skill.go:248:   91.7%
github.com/vaayne/anna/internal/agent/runner/skill.go:268:   100.0%
github.com/vaayne/anna/internal/agent/runner/skill.go:43:    100.0%
github.com/vaayne/anna/internal/agent/runner/skill.go:48:    92.6%
github.com/vaayne/anna/internal/agent/runner/stream_proxy.go:17: 80.0%
github.com/vaayne/anna/internal/agent/runner/stream_proxy.go:27: 82.4%
github.com/vaayne/anna/internal/agent/runner/stream_proxy.go:57: 100.0%
github.com/vaayne/anna/internal/agent/session.go:21:         100.0%
github.com/vaayne/anna/internal/agent/session.go:33:         100.0%
github.com/vaayne/anna/internal/agent/tool/bash.go:105:      33.3%
github.com/vaayne/anna/internal/agent/tool/bash.go:121:      85.7%
github.com/vaayne/anna/internal/agent/tool/bash.go:133:      40.0%
github.com/vaayne/anna/internal/agent/tool/bash.go:23:       100.0%
github.com/vaayne/anna/internal/agent/tool/bash.go:40:       100.0%
github.com/vaayne/anna/internal/agent/tool/bash.go:85:       100.0%
github.com/vaayne/anna/internal/agent/tool/delegate.go:144:  88.9%
github.com/vaayne/anna/internal/agent/tool/delegate.go:221:  100.0%
github.com/vaayne/anna/internal/agent/tool/delegate.go:260:  100.0%
github.com/vaayne/anna/internal/agent/tool/delegate.go:276:  100.0%
github.com/vaayne/anna/internal/agent/tool/delegate.go:284:  89.7%
github.com/vaayne/anna/internal/agent/tool/delegate.go:40:   100.0%
github.com/vaayne/anna/internal/agent/tool/delegate.go:45:   100.0%
github.com/vaayne/anna/internal/agent/tool/delegate.go:91:   100.0%
github.com/vaayne/anna/internal/agent/tool/delegate.go:95:   90.9%
github.com/vaayne/anna/internal/agent/tool/edit.go:15:       100.0%
github.com/vaayne/anna/internal/agent/tool/edit.go:40:       85.0%
github.com/vaayne/anna/internal/agent/tool/read.go:107:      100.0%
github.com/vaayne/anna/internal/agent/tool/read.go:124:      76.2%
github.com/vaayne/anna/internal/agent/tool/read.go:160:      71.4%
github.com/vaayne/anna/internal/agent/tool/read.go:16:       100.0%
github.com/vaayne/anna/internal/agent/tool/read.go:172:      71.4%
github.com/vaayne/anna/internal/agent/tool/read.go:41:       94.4%
github.com/vaayne/anna/internal/agent/tool/tool.go:25:       88.9%
github.com/vaayne/anna/internal/agent/tool/tool.go:39:       0.0%
github.com/vaayne/anna/internal/agent/tool/tool.go:48:       100.0%
github.com/vaayne/anna/internal/agent/tool/tool.go:53:       100.0%
github.com/vaayne/anna/internal/agent/tool/tool.go:62:       100.0%
github.com/vaayne/anna/internal/agent/tool/tool.go:68:       100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:102:  100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:119:  66.7%
github.com/vaayne/anna/internal/agent/tool/truncate.go:132:  100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:144:  94.1%
github.com/vaayne/anna/internal/agent/tool/truncate.go:22:   100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:31:   100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:42:   100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:52:   100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:58:   100.0%
github.com/vaayne/anna/internal/agent/tool/truncate.go:65:   92.9%
github.com/vaayne/anna/internal/agent/tool/truncate.go:89:   100.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:109:  66.7%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:118:  68.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:164:  66.7%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:175:  40.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:188:  81.8%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:206:  0.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:214:  0.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:237:  0.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:263:  90.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:282:  75.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:40:   100.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:46:   100.0%
github.com/vaayne/anna/internal/agent/tool/webfetch.go:69:   77.3%
github.com/vaayne/anna/internal/agent/tool/write.go:15:      100.0%
github.com/vaayne/anna/internal/agent/tool/write.go:36:      80.0%
github.com/vaayne/anna/internal/agent/workspace.go:12:       83.3%
github.com/vaayne/anna/internal/ai/events.go:103:            100.0%
github.com/vaayne/anna/internal/ai/events.go:111:            100.0%
github.com/vaayne/anna/internal/ai/events.go:119:            100.0%
github.com/vaayne/anna/internal/ai/events.go:124:            100.0%
github.com/vaayne/anna/internal/ai/events.go:16:             100.0%
github.com/vaayne/anna/internal/ai/events.go:24:             100.0%
github.com/vaayne/anna/internal/ai/events.go:33:             100.0%
github.com/vaayne/anna/internal/ai/events.go:42:             100.0%
github.com/vaayne/anna/internal/ai/events.go:50:             100.0%
github.com/vaayne/anna/internal/ai/events.go:59:             100.0%
github.com/vaayne/anna/internal/ai/events.go:68:             100.0%
github.com/vaayne/anna/internal/ai/events.go:76:             100.0%
github.com/vaayne/anna/internal/ai/events.go:87:             100.0%
github.com/vaayne/anna/internal/ai/events.go:96:             100.0%
github.com/vaayne/anna/internal/ai/message.go:101:           100.0%
github.com/vaayne/anna/internal/ai/message.go:111:           100.0%
github.com/vaayne/anna/internal/ai/message.go:26:            100.0%
github.com/vaayne/anna/internal/ai/message.go:35:            100.0%
github.com/vaayne/anna/internal/ai/message.go:43:            100.0%
github.com/vaayne/anna/internal/ai/message.go:46:            100.0%
github.com/vaayne/anna/internal/ai/message.go:58:            100.0%
github.com/vaayne/anna/internal/ai/message.go:72:            100.0%
github.com/vaayne/anna/internal/ai/message.go:86:            100.0%
github.com/vaayne/anna/internal/ai/message.go:98:            100.0%
github.com/vaayne/anna/internal/ai/provider.go:162:          100.0%
github.com/vaayne/anna/internal/ai/provider.go:167:          100.0%
github.com/vaayne/anna/internal/ai/provider.go:172:          100.0%
github.com/vaayne/anna/internal/ai/provider.go:177:          100.0%
github.com/vaayne/anna/internal/ai/provider.go:187:          100.0%
github.com/vaayne/anna/internal/ai/provider.go:195:          100.0%
github.com/vaayne/anna/internal/ai/provider.go:36:           100.0%
github.com/vaayne/anna/internal/ai/provider.go:46:           100.0%
github.com/vaayne/anna/internal/ai/provider.go:54:           100.0%
github.com/vaayne/anna/internal/ai/provider.go:61:           100.0%
github.com/vaayne/anna/internal/ai/provider.go:69:           100.0%
github.com/vaayne/anna/internal/ai/provider.go:78:           100.0%
github.com/vaayne/anna/internal/ai/provider.go:87:           97.1%
github.com/vaayne/anna/internal/ai/providers/anthropic/client.go:24: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/client.go:36: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/client.go:39: 0.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/client.go:56: 0.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/client.go:61: 0.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/client.go:81: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/convert_messages.go:10: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/convert_messages.go:25: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/convert_messages.go:45: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/convert_messages.go:60: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/options.go:10: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/options.go:37: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/stream.go:21: 76.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/stream.go:77: 100.0%
github.com/vaayne/anna/internal/ai/providers/anthropic/stream.go:9: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:105: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:110: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:130: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:27: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:42: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:59: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:79: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:84: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/client.go:87: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/convert_messages.go:13: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/convert_messages.go:34: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/convert_messages.go:68: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/options.go:11: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/options.go:39: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/stream.go:21: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/stream.go:74: 40.0%
github.com/vaayne/anna/internal/ai/providers/openai-response/stream.go:9: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai/client.go:24: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/client.go:36: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/client.go:39: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai/client.go:57: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai/client.go:62: 0.0%
github.com/vaayne/anna/internal/ai/providers/openai/client.go:82: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/convert_messages.go:13: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/convert_messages.go:33: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/convert_messages.go:66: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/options.go:11: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/options.go:33: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/stream.go:22: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/stream.go:57: 100.0%
github.com/vaayne/anna/internal/ai/providers/openai/stream.go:9: 0.0%
github.com/vaayne/anna/internal/ai/providers/register_builtins.go:11: 0.0%
github.com/vaayne/anna/internal/ai/transform.go:42:          85.7%
github.com/vaayne/anna/internal/ai/transform.go:6:           93.8%
github.com/vaayne/anna/internal/channel/agent_command.go:17: 0.0%
github.com/vaayne/anna/internal/channel/agent_command.go:22: 0.0%
github.com/vaayne/anna/internal/channel/agent_command.go:29: 0.0%
github.com/vaayne/anna/internal/channel/agent_command.go:54: 0.0%
github.com/vaayne/anna/internal/channel/cli/chat.go:126:     75.0%
github.com/vaayne/anna/internal/channel/cli/chat.go:136:     16.7%
github.com/vaayne/anna/internal/channel/cli/chat.go:169:     0.0%
github.com/vaayne/anna/internal/channel/cli/chat.go:180:     0.0%
github.com/vaayne/anna/internal/channel/cli/chat.go:184:     38.5%
github.com/vaayne/anna/internal/channel/cli/chat.go:88:      84.6%
github.com/vaayne/anna/internal/channel/cli/chat_input.go:107: 20.0%
github.com/vaayne/anna/internal/channel/cli/chat_input.go:11: 43.4%
github.com/vaayne/anna/internal/channel/cli/chat_input.go:82: 72.7%
github.com/vaayne/anna/internal/channel/cli/chat_picker.go:96: 0.0%
github.com/vaayne/anna/internal/channel/cli/chat_picker.go:9: 0.0%
github.com/vaayne/anna/internal/channel/cli/chat_view.go:16: 77.3%
github.com/vaayne/anna/internal/channel/cli/chat_view.go:66: 66.7%
github.com/vaayne/anna/internal/channel/cli/chat_view.go:78: 100.0%
github.com/vaayne/anna/internal/channel/cli/chat_view.go:85: 100.0%
github.com/vaayne/anna/internal/channel/cli/chat_view.go:88: 0.0%
github.com/vaayne/anna/internal/channel/cli/chat_view.go:96: 0.0%
github.com/vaayne/anna/internal/channel/cli/cli.go:29:       0.0%
github.com/vaayne/anna/internal/channel/cli/cli.go:60:       0.0%
github.com/vaayne/anna/internal/channel/cli/command.go:22:   0.0%
github.com/vaayne/anna/internal/channel/cli/command.go:36:   0.0%
github.com/vaayne/anna/internal/channel/cli/model.go:17:     0.0%
github.com/vaayne/anna/internal/channel/cli/model.go:25:     0.0%
github.com/vaayne/anna/internal/channel/cli/model.go:41:     0.0%
github.com/vaayne/anna/internal/channel/command.go:22:       47.1%
github.com/vaayne/anna/internal/channel/command.go:63:       100.0%
github.com/vaayne/anna/internal/channel/command.go:68:       100.0%
github.com/vaayne/anna/internal/channel/command.go:78:       100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:106: 0.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:142: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:150: 0.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:182: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:186: 31.2%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:225: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:235: 0.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:249: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:256: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:274: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:287: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:316: 90.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:338: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:34: 100.0%
github.com/vaayne/anna/internal/channel/feishu/feishu.go:72: 90.9%
github.com/vaayne/anna/internal/channel/feishu/handler.go:131: 0.0%
github.com/vaayne/anna/internal/channel/feishu/handler.go:151: 0.0%
github.com/vaayne/anna/internal/channel/feishu/handler.go:181: 100.0%
github.com/vaayne/anna/internal/channel/feishu/handler.go:195: 0.0%
github.com/vaayne/anna/internal/channel/feishu/handler.go:19: 0.0%
github.com/vaayne/anna/internal/channel/feishu/handler.go:230: 69.2%
github.com/vaayne/anna/internal/channel/feishu/handler.go:253: 0.0%
github.com/vaayne/anna/internal/channel/feishu/handler.go:273: 100.0%
github.com/vaayne/anna/internal/channel/feishu/handler.go:87: 0.0%
github.com/vaayne/anna/internal/channel/feishu/model.go:106: 100.0%
github.com/vaayne/anna/internal/channel/feishu/model.go:22:  100.0%
github.com/vaayne/anna/internal/channel/feishu/model.go:46:  53.3%
github.com/vaayne/anna/internal/channel/feishu/model.go:75:  100.0%
github.com/vaayne/anna/internal/channel/feishu/model.go:90:  100.0%
github.com/vaayne/anna/internal/channel/feishu/render.go:17: 0.0%
github.com/vaayne/anna/internal/channel/feishu/render.go:44: 18.2%
github.com/vaayne/anna/internal/channel/feishu/render.go:95: 100.0%
github.com/vaayne/anna/internal/channel/feishu/stream.go:129: 0.0%
github.com/vaayne/anna/internal/channel/feishu/stream.go:152: 0.0%
github.com/vaayne/anna/internal/channel/feishu/stream.go:172: 78.6%
github.com/vaayne/anna/internal/channel/feishu/stream.go:27: 100.0%
github.com/vaayne/anna/internal/channel/feishu/stream.go:53: 0.0%
github.com/vaayne/anna/internal/channel/identity.go:18:      75.0%
github.com/vaayne/anna/internal/channel/identity.go:30:      83.3%
github.com/vaayne/anna/internal/channel/notifier.go:37:      100.0%
github.com/vaayne/anna/internal/channel/notifier.go:42:      100.0%
github.com/vaayne/anna/internal/channel/notifier.go:50:      100.0%
github.com/vaayne/anna/internal/channel/notifier.go:88:      100.0%
github.com/vaayne/anna/internal/channel/notify_tool.go:16:   100.0%
github.com/vaayne/anna/internal/channel/notify_tool.go:43:   100.0%
github.com/vaayne/anna/internal/channel/notify_tool.go:51:   100.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:105:   30.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:139:   100.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:152:   76.2%
github.com/vaayne/anna/internal/channel/qq/handler.go:189:   0.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:19:    0.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:230:   69.2%
github.com/vaayne/anna/internal/channel/qq/handler.go:254:   100.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:259:   0.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:269:   0.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:281:   0.0%
github.com/vaayne/anna/internal/channel/qq/handler.go:55:    0.0%
github.com/vaayne/anna/internal/channel/qq/model.go:11:      100.0%
github.com/vaayne/anna/internal/channel/qq/model.go:21:      90.9%
github.com/vaayne/anna/internal/channel/qq/model.go:43:      91.7%
github.com/vaayne/anna/internal/channel/qq/model.go:78:      100.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:137:        100.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:145:        100.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:148:        18.2%
github.com/vaayne/anna/internal/channel/qq/qq.go:178:        100.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:187:        100.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:192:        100.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:198:        0.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:24:         100.0%
github.com/vaayne/anna/internal/channel/qq/qq.go:59:         90.9%
github.com/vaayne/anna/internal/channel/qq/qq.go:92:         0.0%
github.com/vaayne/anna/internal/channel/qq/render.go:11:     0.0%
github.com/vaayne/anna/internal/channel/qq/render.go:41:     100.0%
github.com/vaayne/anna/internal/channel/qq/stream.go:131:    0.0%
github.com/vaayne/anna/internal/channel/qq/stream.go:171:    78.6%
github.com/vaayne/anna/internal/channel/qq/stream.go:27:     100.0%
github.com/vaayne/anna/internal/channel/qq/stream.go:53:     0.0%
github.com/vaayne/anna/internal/channel/resolved.go:25:      0.0%
github.com/vaayne/anna/internal/channel/resolved.go:28:      0.0%
github.com/vaayne/anna/internal/channel/resolved.go:33:      0.0%
github.com/vaayne/anna/internal/channel/resolved.go:38:      0.0%
github.com/vaayne/anna/internal/channel/resolved.go:44:      0.0%
github.com/vaayne/anna/internal/channel/resolved.go:54:      0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:109: 0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:118: 0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:137: 0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:161: 0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:180: 0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:19: 100.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:225: 0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:27: 100.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:38: 0.0%
github.com/vaayne/anna/internal/channel/telegram/handler.go:42: 0.0%
github.com/vaayne/anna/internal/channel/telegram/model.go:126: 0.0%
github.com/vaayne/anna/internal/channel/telegram/model.go:14: 0.0%
github.com/vaayne/anna/internal/channel/telegram/model.go:21: 0.0%
github.com/vaayne/anna/internal/channel/telegram/model.go:88: 0.0%
github.com/vaayne/anna/internal/channel/telegram/render.go:22: 0.0%
github.com/vaayne/anna/internal/channel/telegram/render.go:32: 0.0%
github.com/vaayne/anna/internal/channel/telegram/render.go:48: 0.0%
github.com/vaayne/anna/internal/channel/telegram/render.go:67: 85.7%
github.com/vaayne/anna/internal/channel/telegram/stream.go:110: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:138: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:146: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:153: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:215: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:235: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:244: 75.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:262: 0.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:281: 0.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:338: 0.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:408: 85.7%
github.com/vaayne/anna/internal/channel/telegram/stream.go:437: 0.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:448: 0.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:60: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:77: 100.0%
github.com/vaayne/anna/internal/channel/telegram/stream.go:97: 83.3%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:102: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:122: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:128: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:131: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:168: 100.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:171: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:195: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:207: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:213: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:226: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:244: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:253: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:25: 0.0%
github.com/vaayne/anna/internal/channel/telegram/telegram.go:56: 0.0%
github.com/vaayne/anna/internal/channel/util.go:13:          100.0%
github.com/vaayne/anna/internal/channel/util.go:42:          100.0%
github.com/vaayne/anna/internal/config/config.go:37:         100.0%
github.com/vaayne/anna/internal/config/config.go:49:         100.0%
github.com/vaayne/anna/internal/config/config.go:54:         66.7%
github.com/vaayne/anna/internal/config/config.go:62:         80.0%
github.com/vaayne/anna/internal/config/config.go:73:         100.0%
github.com/vaayne/anna/internal/config/dbstore.go:107:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:115:       85.7%
github.com/vaayne/anna/internal/config/dbstore.go:136:       71.4%
github.com/vaayne/anna/internal/config/dbstore.go:157:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:163:       85.7%
github.com/vaayne/anna/internal/config/dbstore.go:175:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:183:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:197:       85.7%
github.com/vaayne/anna/internal/config/dbstore.go:209:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:217:       75.0%
github.com/vaayne/anna/internal/config/dbstore.go:21:        100.0%
github.com/vaayne/anna/internal/config/dbstore.go:229:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:238:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:249:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:257:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:266:       83.3%
github.com/vaayne/anna/internal/config/dbstore.go:280:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:288:       0.0%
github.com/vaayne/anna/internal/config/dbstore.go:28:        85.7%
github.com/vaayne/anna/internal/config/dbstore.go:305:       0.0%
github.com/vaayne/anna/internal/config/dbstore.go:314:       83.3%
github.com/vaayne/anna/internal/config/dbstore.go:325:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:334:       86.7%
github.com/vaayne/anna/internal/config/dbstore.go:40:        100.0%
github.com/vaayne/anna/internal/config/dbstore.go:412:       76.5%
github.com/vaayne/anna/internal/config/dbstore.go:455:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:466:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:477:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:485:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:499:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:515:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:51:        75.0%
github.com/vaayne/anna/internal/config/dbstore.go:523:       100.0%
github.com/vaayne/anna/internal/config/dbstore.go:64:        75.0%
github.com/vaayne/anna/internal/config/dbstore.go:77:        100.0%
github.com/vaayne/anna/internal/config/dbstore.go:83:        85.7%
github.com/vaayne/anna/internal/config/dbstore.go:95:        85.7%
github.com/vaayne/anna/internal/config/model.go:33:          87.5%
github.com/vaayne/anna/internal/config/models_cache.go:24:   0.0%
github.com/vaayne/anna/internal/config/models_cache.go:29:   0.0%
github.com/vaayne/anna/internal/config/models_cache.go:42:   0.0%
github.com/vaayne/anna/internal/config/paths.go:17:          100.0%
github.com/vaayne/anna/internal/config/paths.go:24:          60.0%
github.com/vaayne/anna/internal/config/paths.go:42:          100.0%
github.com/vaayne/anna/internal/config/paths.go:48:          100.0%
github.com/vaayne/anna/internal/config/paths.go:53:          100.0%
github.com/vaayne/anna/internal/config/snapshot.go:100:      0.0%
github.com/vaayne/anna/internal/config/snapshot.go:111:      100.0%
github.com/vaayne/anna/internal/config/snapshot.go:116:      100.0%
github.com/vaayne/anna/internal/config/snapshot.go:43:       100.0%
github.com/vaayne/anna/internal/config/snapshot.go:52:       100.0%
github.com/vaayne/anna/internal/config/snapshot.go:67:       100.0%
github.com/vaayne/anna/internal/config/snapshot.go:75:       87.5%
github.com/vaayne/anna/internal/db/database.go:112:          0.0%
github.com/vaayne/anna/internal/db/database.go:132:          0.0%
github.com/vaayne/anna/internal/db/database.go:18:           0.0%
github.com/vaayne/anna/internal/db/database.go:44:           0.0%
github.com/vaayne/anna/internal/db/database.go:57:           0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_agent_memory.sql.go:125: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_agent_memory.sql.go:21: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_agent_memory.sql.go:35: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_agent_memory.sql.go:51: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_agent_memory.sql.go:83: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:113: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:136: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:175: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:220: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:234: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:243: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:24: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:252: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:266: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:280: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:59: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_conversations.sql.go:90: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:127: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:174: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:193: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:220: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:26: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:41: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:57: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:66: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_items.sql.go:79: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:101: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:121: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:132: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:170: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:218: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:262: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:29: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:307: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:70: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_messages.sql.go:90: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:100: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:140: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:167: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:210: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:249: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:296: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:312: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:32: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:330: 0.0%
github.com/vaayne/anna/internal/db/sqlc/ctx_summaries.sql.go:53: 0.0%
github.com/vaayne/anna/internal/db/sqlc/db.go:19:            0.0%
github.com/vaayne/anna/internal/db/sqlc/db.go:27:            0.0%
github.com/vaayne/anna/internal/db/sqlc/sched_jobs.sql.go:100: 0.0%
github.com/vaayne/anna/internal/db/sqlc/sched_jobs.sql.go:155: 0.0%
github.com/vaayne/anna/internal/db/sqlc/sched_jobs.sql.go:33: 0.0%
github.com/vaayne/anna/internal/db/sqlc/sched_jobs.sql.go:68: 0.0%
github.com/vaayne/anna/internal/db/sqlc/sched_jobs.sql.go:77: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings.sql.go:16:  0.0%
github.com/vaayne/anna/internal/db/sqlc/settings.sql.go:25:  0.0%
github.com/vaayne/anna/internal/db/sqlc/settings.sql.go:36:  0.0%
github.com/vaayne/anna/internal/db/sqlc/settings.sql.go:72:  0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_agents.sql.go:129: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_agents.sql.go:187: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_agents.sql.go:29: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_agents.sql.go:60: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_agents.sql.go:69: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_agents.sql.go:91: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_channel_agents.sql.go:21: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_channel_agents.sql.go:35: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_channel_agents.sql.go:51: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_channel_agents.sql.go:93: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_channels.sql.go:16: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_channels.sql.go:33: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_channels.sql.go:77: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_providers.sql.go:121: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_providers.sql.go:25: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_providers.sql.go:48: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_providers.sql.go:57: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_providers.sql.go:75: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_users.sql.go:130: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_users.sql.go:150: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_users.sql.go:25: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_users.sql.go:44: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_users.sql.go:68: 0.0%
github.com/vaayne/anna/internal/db/sqlc/settings_users.sql.go:87: 0.0%
github.com/vaayne/anna/internal/embedded/embedded.go:105:    0.0%
github.com/vaayne/anna/internal/embedded/embedded.go:20:     100.0%
github.com/vaayne/anna/internal/embedded/embedded.go:29:     100.0%
github.com/vaayne/anna/internal/embedded/embedded.go:34:     0.0%
github.com/vaayne/anna/internal/embedded/embedded.go:43:     75.0%
github.com/vaayne/anna/internal/embedded/embedded.go:57:     58.8%
github.com/vaayne/anna/internal/embedded/embedded.go:91:     87.5%
github.com/vaayne/anna/internal/memory/assembler.go:100:     85.7%
github.com/vaayne/anna/internal/memory/assembler.go:113:     66.7%
github.com/vaayne/anna/internal/memory/assembler.go:147:     100.0%
github.com/vaayne/anna/internal/memory/assembler.go:182:     87.5%
github.com/vaayne/anna/internal/memory/assembler.go:19:      100.0%
github.com/vaayne/anna/internal/memory/assembler.go:26:      90.9%
github.com/vaayne/anna/internal/memory/assembler.go:83:      100.0%
github.com/vaayne/anna/internal/memory/compaction.go:125:    100.0%
github.com/vaayne/anna/internal/memory/compaction.go:156:    82.4%
github.com/vaayne/anna/internal/memory/compaction.go:24:     100.0%
github.com/vaayne/anna/internal/memory/compaction.go:271:    88.2%
github.com/vaayne/anna/internal/memory/compaction.go:312:    100.0%
github.com/vaayne/anna/internal/memory/compaction.go:350:    81.0%
github.com/vaayne/anna/internal/memory/compaction.go:37:     81.8%
github.com/vaayne/anna/internal/memory/compaction.go:476:    100.0%
github.com/vaayne/anna/internal/memory/compaction.go:78:     63.6%
github.com/vaayne/anna/internal/memory/compaction.go:98:     87.5%
github.com/vaayne/anna/internal/memory/context.go:14:        0.0%
github.com/vaayne/anna/internal/memory/context.go:19:        0.0%
github.com/vaayne/anna/internal/memory/context.go:25:        0.0%
github.com/vaayne/anna/internal/memory/context.go:30:        0.0%
github.com/vaayne/anna/internal/memory/context.go:36:        0.0%
github.com/vaayne/anna/internal/memory/context.go:41:        0.0%
github.com/vaayne/anna/internal/memory/engine.go:107:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:113:        80.0%
github.com/vaayne/anna/internal/memory/engine.go:124:        78.6%
github.com/vaayne/anna/internal/memory/engine.go:182:        75.0%
github.com/vaayne/anna/internal/memory/engine.go:191:        88.9%
github.com/vaayne/anna/internal/memory/engine.go:207:        85.7%
github.com/vaayne/anna/internal/memory/engine.go:220:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:226:        75.0%
github.com/vaayne/anna/internal/memory/engine.go:275:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:284:        90.9%
github.com/vaayne/anna/internal/memory/engine.go:304:        77.8%
github.com/vaayne/anna/internal/memory/engine.go:324:        66.7%
github.com/vaayne/anna/internal/memory/engine.go:331:        83.3%
github.com/vaayne/anna/internal/memory/engine.go:355:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:363:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:379:        75.0%
github.com/vaayne/anna/internal/memory/engine.go:406:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:414:        80.0%
github.com/vaayne/anna/internal/memory/engine.go:475:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:488:        83.3%
github.com/vaayne/anna/internal/memory/engine.go:510:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:531:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:54:         100.0%
github.com/vaayne/anna/internal/memory/engine.go:556:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:571:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:594:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:615:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:63:         100.0%
github.com/vaayne/anna/internal/memory/engine.go:650:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:660:        100.0%
github.com/vaayne/anna/internal/memory/engine.go:71:         83.3%
github.com/vaayne/anna/internal/memory/engine.go:85:         100.0%
github.com/vaayne/anna/internal/memory/retrieval.go:133:     92.6%
github.com/vaayne/anna/internal/memory/retrieval.go:14:      100.0%
github.com/vaayne/anna/internal/memory/retrieval.go:188:     100.0%
github.com/vaayne/anna/internal/memory/retrieval.go:197:     100.0%
github.com/vaayne/anna/internal/memory/retrieval.go:211:     100.0%
github.com/vaayne/anna/internal/memory/retrieval.go:27:      0.0%
github.com/vaayne/anna/internal/memory/retrieval.go:37:      86.4%
github.com/vaayne/anna/internal/memory/retrieval.go:94:      87.5%
github.com/vaayne/anna/internal/memory/summarize.go:127:     94.7%
github.com/vaayne/anna/internal/memory/summarize.go:164:     100.0%
github.com/vaayne/anna/internal/memory/summarize.go:193:     100.0%
github.com/vaayne/anna/internal/memory/summarize.go:96:      100.0%
github.com/vaayne/anna/internal/memory/tool/helpers.go:4:    71.4%
github.com/vaayne/anna/internal/memory/tool/memory.go:100:   88.2%
github.com/vaayne/anna/internal/memory/tool/memory.go:130:   80.0%
github.com/vaayne/anna/internal/memory/tool/memory.go:148:   81.8%
github.com/vaayne/anna/internal/memory/tool/memory.go:168:   85.7%
github.com/vaayne/anna/internal/memory/tool/memory.go:61:    100.0%
github.com/vaayne/anna/internal/memory/tool/memory.go:66:    100.0%
github.com/vaayne/anna/internal/memory/tool/memory.go:80:    100.0%
github.com/vaayne/anna/internal/memory/tool/memory.go:84:    100.0%
github.com/vaayne/anna/internal/memory/types.go:125:         100.0%
github.com/vaayne/anna/internal/memory/types.go:200:         100.0%
github.com/vaayne/anna/internal/memory/usermemory.go:16:     100.0%
github.com/vaayne/anna/internal/memory/usermemory.go:22:     75.0%
github.com/vaayne/anna/internal/memory/usermemory.go:31:     66.7%
github.com/vaayne/anna/internal/plugin/adapt.go:15:          100.0%
github.com/vaayne/anna/internal/plugin/adapt.go:23:          100.0%
github.com/vaayne/anna/internal/plugin/adapt.go:28:          100.0%
github.com/vaayne/anna/internal/plugin/convert.go:12:        43.8%
github.com/vaayne/anna/internal/plugin/convert.go:46:        85.7%
github.com/vaayne/anna/internal/plugin/convert.go:58:        71.4%
github.com/vaayne/anna/internal/plugin/hostapi.go:105:       92.3%
github.com/vaayne/anna/internal/plugin/hostapi.go:131:       37.5%
github.com/vaayne/anna/internal/plugin/hostapi.go:149:       100.0%
github.com/vaayne/anna/internal/plugin/hostapi.go:154:       50.9%
github.com/vaayne/anna/internal/plugin/hostapi.go:247:       0.0%
github.com/vaayne/anna/internal/plugin/hostapi.go:279:       0.0%
github.com/vaayne/anna/internal/plugin/hostapi.go:35:        55.0%
github.com/vaayne/anna/internal/plugin/manager.go:20:        100.0%
github.com/vaayne/anna/internal/plugin/manager.go:28:        0.0%
github.com/vaayne/anna/internal/plugin/manager.go:34:        83.3%
github.com/vaayne/anna/internal/plugin/manager.go:46:        66.7%
github.com/vaayne/anna/internal/plugin/manager.go:57:        0.0%
github.com/vaayne/anna/internal/plugin/manager.go:67:        100.0%
github.com/vaayne/anna/internal/plugin/manager.go:76:        100.0%
github.com/vaayne/anna/internal/plugin/registry.go:18:       100.0%
github.com/vaayne/anna/internal/plugin/registry.go:31:       100.0%
github.com/vaayne/anna/internal/plugin/registry.go:45:       100.0%
github.com/vaayne/anna/internal/plugin/registry.go:52:       100.0%
github.com/vaayne/anna/internal/plugin/registry.go:72:       100.0%
github.com/vaayne/anna/internal/plugin/runtime.go:207:       85.0%
github.com/vaayne/anna/internal/plugin/runtime.go:245:       100.0%
github.com/vaayne/anna/internal/plugin/runtime.go:24:        100.0%
github.com/vaayne/anna/internal/plugin/runtime.go:26:        100.0%
github.com/vaayne/anna/internal/plugin/runtime.go:40:        100.0%
github.com/vaayne/anna/internal/plugin/runtime.go:46:        84.3%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:113:  75.0%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:129:  80.0%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:146:  80.0%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:155:  90.9%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:175:  71.4%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:190:  100.0%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:209:  100.0%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:36:   100.0%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:45:   0.0%
github.com/vaayne/anna/internal/scheduler/heartbeat.go:64:   83.9%
github.com/vaayne/anna/internal/scheduler/job.go:39:         85.7%
github.com/vaayne/anna/internal/scheduler/persistence.go:118: 71.4%
github.com/vaayne/anna/internal/scheduler/persistence.go:16: 85.7%
github.com/vaayne/anna/internal/scheduler/persistence.go:29: 100.0%
github.com/vaayne/anna/internal/scheduler/persistence.go:51: 100.0%
github.com/vaayne/anna/internal/scheduler/persistence.go:57: 71.9%
github.com/vaayne/anna/internal/scheduler/service.go:103:    100.0%
github.com/vaayne/anna/internal/scheduler/service.go:107:    88.0%
github.com/vaayne/anna/internal/scheduler/service.go:151:    60.0%
github.com/vaayne/anna/internal/scheduler/service.go:162:    0.0%
github.com/vaayne/anna/internal/scheduler/service.go:187:    87.8%
github.com/vaayne/anna/internal/scheduler/service.go:267:    84.6%
github.com/vaayne/anna/internal/scheduler/service.go:294:    100.0%
github.com/vaayne/anna/internal/scheduler/service.go:305:    88.9%
github.com/vaayne/anna/internal/scheduler/service.go:349:    88.9%
github.com/vaayne/anna/internal/scheduler/service.go:52:     75.0%
github.com/vaayne/anna/internal/scheduler/service.go:69:     0.0%
github.com/vaayne/anna/internal/scheduler/service.go:85:     100.0%
github.com/vaayne/anna/internal/scheduler/service.go:90:     100.0%
github.com/vaayne/anna/internal/scheduler/service.go:97:     100.0%
github.com/vaayne/anna/internal/scheduler/tool.go:113:       100.0%
github.com/vaayne/anna/internal/scheduler/tool.go:123:       83.3%
github.com/vaayne/anna/internal/scheduler/tool.go:62:        100.0%
github.com/vaayne/anna/internal/scheduler/tool.go:67:        100.0%
github.com/vaayne/anna/internal/scheduler/tool.go:76:        100.0%
github.com/vaayne/anna/internal/scheduler/tool.go:81:        100.0%
github.com/vaayne/anna/internal/scheduler/tool.go:95:        91.7%
github.com/vaayne/anna/internal/skills/install.go:22:        100.0%
github.com/vaayne/anna/internal/skills/install.go:26:        88.9%
github.com/vaayne/anna/internal/skills/install.go:43:        46.7%
github.com/vaayne/anna/internal/skills/install.go:77:        0.0%
github.com/vaayne/anna/internal/skills/install.go:98:        75.0%
github.com/vaayne/anna/internal/skills/list.go:17:           87.5%
github.com/vaayne/anna/internal/skills/load.go:10:           90.9%
github.com/vaayne/anna/internal/skills/remove.go:14:         66.7%
github.com/vaayne/anna/internal/skills/remove.go:34:         100.0%
github.com/vaayne/anna/internal/skills/tool.go:54:           100.0%
github.com/vaayne/anna/internal/skills/tool.go:59:           100.0%
github.com/vaayne/anna/internal/skills/tool.go:68:           100.0%
github.com/vaayne/anna/internal/skills/tool.go:73:           75.0%
github.com/vaayne/anna/internal/skills/tool.go:91:           23.1%

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e7895593ff

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .goreleaser.yaml Outdated
before:
hooks:
- go mod download
- bash scripts/download-tools.sh
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Build each target's embedded tools instead of the host set

I checked .github/workflows/release.yml:16-38: releases run GoReleaser once on a single Linux runner. This new global hook downloads fd/rg/rtk only for the current platform (scripts/download-tools.sh:4-23), but the same embedded payload is then compiled into every target in .goreleaser.yaml:16-22, including darwin, windows, and linux/arm64. As a result, every non-host artifact will ship the runner's binaries, and because envWithToolsBin prepends ANNA_HOME/bin to PATH, those releases will try to execute the wrong OS/arch tools at runtime.

Useful? React with 👍 / 👎.

Comment thread internal/embedded/embedded.go Outdated
Comment on lines +75 to +76
if _, err := os.Stat(destPath); err == nil {
continue // already extracted
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Refresh embedded binaries when Anna upgrades

extractTools now treats an existing ANNA_HOME/bin/<name> as permanently valid and skips re-extracting it. Because the installed filenames are stable (fd, rg, rtk) while the embedded versions are expected to change over time, upgrading Anna will keep using the old on-disk binaries forever unless the user manually deletes ~/.anna/bin. That means future version bumps or fixes to these bundled tools will never reach existing installs.

Useful? React with 👍 / 👎.

Comment thread internal/agent/tool/bash.go Outdated
Comment on lines +102 to +106
func wrapWithRTK(command string, _ []string) string {
if rtkPath() == "" {
return command
}
return rtkPath() + " " + command
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve shell env-prefix semantics when wrapping with rtk

Blindly concatenating rtkPath() + " " + command changes the meaning of valid bash commands that start with an environment assignment. For example, FOO=bar go test ./... currently sets a temporary env var, but after this change it becomes rtk FOO=bar go test ./..., so FOO=bar is passed as an argument instead of being applied to the command. Since the tool is documented for arbitrary shell commands, this is a real regression for any command that relies on standard shell prefixes.

Useful? React with 👍 / 👎.

vaayne added 5 commits March 18, 2026 16:12
- Re-extract embedded tools when anna upgrades by comparing a
  fingerprint (file names + sizes) stored in ANNA_HOME/bin/.embedded-version
- Skip rtk wrapping for commands starting with env var assignments
  (e.g. FOO=bar go test) to preserve shell semantics
Goreleaser per-build hook now passes --goos/--goarch to the download
script, which maps to MISE_OS/MISE_ARCH env vars. This ensures each
build target embeds the correct platform's fd/rg/rtk binaries, all
from a single CI runner.
Replace naive string prefix with `rtk rewrite` which correctly handles
env var prefixes (FOO=bar cmd), pipes, and unsupported commands.
Guide the LLM to prefer fd/rg over find/grep since they are
bundled as embedded tools.
- Remove unused env parameter from wrapWithRTK
- Add 200MB size cap to extractGzip to guard against decompression bombs
- Add unit tests for wrapWithRTK and envWithToolsBin
@vaayne vaayne merged commit 94c7987 into main Mar 18, 2026
6 checks passed
@vaayne vaayne deleted the feat/embed-rtk branch March 18, 2026 08:53
vaayne added a commit that referenced this pull request Apr 17, 2026
* ✨ feat: embed rtk, fd, rg binaries and wrap bash commands with rtk

- Add internal/embedded package to embed and extract tool binaries
  (gzip-compressed) to ANNA_HOME/bin/ on first use
- Add scripts/download-tools.sh using mise to download fd, rg, rtk
  for the current platform
- Wrap all bash tool commands with rtk for token-efficient output
- Prepend ANNA_HOME/bin to PATH in bash tool so embedded tools
  are available to the LLM
- Add mise task tools:download and goreleaser before hook

* 🐛 fix: address PR review — version-check extraction and rtk env-prefix

- Re-extract embedded tools when anna upgrades by comparing a
  fingerprint (file names + sizes) stored in ANNA_HOME/bin/.embedded-version
- Skip rtk wrapping for commands starting with env var assignments
  (e.g. FOO=bar go test) to preserve shell semantics

* 🐛 fix: use mise with MISE_OS/MISE_ARCH for cross-platform tool downloads

Goreleaser per-build hook now passes --goos/--goarch to the download
script, which maps to MISE_OS/MISE_ARCH env vars. This ensures each
build target embeds the correct platform's fd/rg/rtk binaries, all
from a single CI runner.

* ♻️ refactor: use rtk rewrite for smart command wrapping

Replace naive string prefix with `rtk rewrite` which correctly handles
env var prefixes (FOO=bar cmd), pipes, and unsupported commands.

* 📝 docs: mention built-in fd and rg in system prompt

Guide the LLM to prefer fd/rg over find/grep since they are
bundled as embedded tools.

* 🐛 fix: clean up embedded rtk integration

- Remove unused env parameter from wrapWithRTK
- Add 200MB size cap to extractGzip to guard against decompression bombs
- Add unit tests for wrapWithRTK and envWithToolsBin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant