@hasna/terminal 2.3.0 → 2.3.1

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 (202) hide show
  1. package/dist/cli.js +64 -16
  2. package/package.json +1 -1
  3. package/src/ai.ts +8 -0
  4. package/src/cli.tsx +57 -18
  5. package/src/output-processor.ts +6 -1
  6. package/src/output-store.ts +58 -12
  7. package/src/tool-profiles.ts +139 -0
  8. package/temp/rtk/.claude/agents/code-reviewer.md +0 -221
  9. package/temp/rtk/.claude/agents/debugger.md +0 -519
  10. package/temp/rtk/.claude/agents/rtk-testing-specialist.md +0 -461
  11. package/temp/rtk/.claude/agents/rust-rtk.md +0 -511
  12. package/temp/rtk/.claude/agents/technical-writer.md +0 -355
  13. package/temp/rtk/.claude/commands/diagnose.md +0 -352
  14. package/temp/rtk/.claude/commands/test-routing.md +0 -362
  15. package/temp/rtk/.claude/hooks/bash/pre-commit-format.sh +0 -16
  16. package/temp/rtk/.claude/hooks/rtk-rewrite.sh +0 -70
  17. package/temp/rtk/.claude/hooks/rtk-suggest.sh +0 -152
  18. package/temp/rtk/.claude/rules/cli-testing.md +0 -526
  19. package/temp/rtk/.claude/skills/issue-triage/SKILL.md +0 -348
  20. package/temp/rtk/.claude/skills/issue-triage/templates/issue-comment.md +0 -134
  21. package/temp/rtk/.claude/skills/performance.md +0 -435
  22. package/temp/rtk/.claude/skills/pr-triage/SKILL.md +0 -315
  23. package/temp/rtk/.claude/skills/pr-triage/templates/review-comment.md +0 -71
  24. package/temp/rtk/.claude/skills/repo-recap.md +0 -206
  25. package/temp/rtk/.claude/skills/rtk-tdd/SKILL.md +0 -78
  26. package/temp/rtk/.claude/skills/rtk-tdd/references/testing-patterns.md +0 -124
  27. package/temp/rtk/.claude/skills/security-guardian.md +0 -503
  28. package/temp/rtk/.claude/skills/ship.md +0 -404
  29. package/temp/rtk/.github/workflows/benchmark.yml +0 -34
  30. package/temp/rtk/.github/workflows/dco-check.yaml +0 -12
  31. package/temp/rtk/.github/workflows/release-please.yml +0 -51
  32. package/temp/rtk/.github/workflows/release.yml +0 -343
  33. package/temp/rtk/.github/workflows/security-check.yml +0 -135
  34. package/temp/rtk/.github/workflows/validate-docs.yml +0 -78
  35. package/temp/rtk/.release-please-manifest.json +0 -3
  36. package/temp/rtk/ARCHITECTURE.md +0 -1491
  37. package/temp/rtk/CHANGELOG.md +0 -640
  38. package/temp/rtk/CLAUDE.md +0 -605
  39. package/temp/rtk/CONTRIBUTING.md +0 -199
  40. package/temp/rtk/Cargo.lock +0 -1668
  41. package/temp/rtk/Cargo.toml +0 -64
  42. package/temp/rtk/Formula/rtk.rb +0 -43
  43. package/temp/rtk/INSTALL.md +0 -390
  44. package/temp/rtk/LICENSE +0 -21
  45. package/temp/rtk/README.md +0 -386
  46. package/temp/rtk/README_es.md +0 -159
  47. package/temp/rtk/README_fr.md +0 -197
  48. package/temp/rtk/README_ja.md +0 -159
  49. package/temp/rtk/README_ko.md +0 -159
  50. package/temp/rtk/README_zh.md +0 -167
  51. package/temp/rtk/ROADMAP.md +0 -15
  52. package/temp/rtk/SECURITY.md +0 -217
  53. package/temp/rtk/TEST_EXEC_TIME.md +0 -102
  54. package/temp/rtk/build.rs +0 -57
  55. package/temp/rtk/docs/AUDIT_GUIDE.md +0 -432
  56. package/temp/rtk/docs/FEATURES.md +0 -1410
  57. package/temp/rtk/docs/TROUBLESHOOTING.md +0 -309
  58. package/temp/rtk/docs/filter-workflow.md +0 -102
  59. package/temp/rtk/docs/images/gain-dashboard.jpg +0 -0
  60. package/temp/rtk/docs/tracking.md +0 -583
  61. package/temp/rtk/hooks/opencode-rtk.ts +0 -39
  62. package/temp/rtk/hooks/rtk-awareness.md +0 -29
  63. package/temp/rtk/hooks/rtk-rewrite.sh +0 -61
  64. package/temp/rtk/hooks/test-rtk-rewrite.sh +0 -442
  65. package/temp/rtk/install.sh +0 -124
  66. package/temp/rtk/release-please-config.json +0 -10
  67. package/temp/rtk/scripts/benchmark.sh +0 -592
  68. package/temp/rtk/scripts/check-installation.sh +0 -162
  69. package/temp/rtk/scripts/install-local.sh +0 -37
  70. package/temp/rtk/scripts/rtk-economics.sh +0 -137
  71. package/temp/rtk/scripts/test-all.sh +0 -561
  72. package/temp/rtk/scripts/test-aristote.sh +0 -227
  73. package/temp/rtk/scripts/test-tracking.sh +0 -79
  74. package/temp/rtk/scripts/update-readme-metrics.sh +0 -32
  75. package/temp/rtk/scripts/validate-docs.sh +0 -73
  76. package/temp/rtk/src/aws_cmd.rs +0 -880
  77. package/temp/rtk/src/binlog.rs +0 -1645
  78. package/temp/rtk/src/cargo_cmd.rs +0 -1727
  79. package/temp/rtk/src/cc_economics.rs +0 -1157
  80. package/temp/rtk/src/ccusage.rs +0 -340
  81. package/temp/rtk/src/config.rs +0 -187
  82. package/temp/rtk/src/container.rs +0 -855
  83. package/temp/rtk/src/curl_cmd.rs +0 -134
  84. package/temp/rtk/src/deps.rs +0 -268
  85. package/temp/rtk/src/diff_cmd.rs +0 -367
  86. package/temp/rtk/src/discover/mod.rs +0 -274
  87. package/temp/rtk/src/discover/provider.rs +0 -388
  88. package/temp/rtk/src/discover/registry.rs +0 -2022
  89. package/temp/rtk/src/discover/report.rs +0 -202
  90. package/temp/rtk/src/discover/rules.rs +0 -667
  91. package/temp/rtk/src/display_helpers.rs +0 -402
  92. package/temp/rtk/src/dotnet_cmd.rs +0 -1771
  93. package/temp/rtk/src/dotnet_format_report.rs +0 -133
  94. package/temp/rtk/src/dotnet_trx.rs +0 -593
  95. package/temp/rtk/src/env_cmd.rs +0 -204
  96. package/temp/rtk/src/filter.rs +0 -462
  97. package/temp/rtk/src/filters/README.md +0 -52
  98. package/temp/rtk/src/filters/ansible-playbook.toml +0 -34
  99. package/temp/rtk/src/filters/basedpyright.toml +0 -47
  100. package/temp/rtk/src/filters/biome.toml +0 -45
  101. package/temp/rtk/src/filters/brew-install.toml +0 -37
  102. package/temp/rtk/src/filters/composer-install.toml +0 -40
  103. package/temp/rtk/src/filters/df.toml +0 -16
  104. package/temp/rtk/src/filters/dotnet-build.toml +0 -64
  105. package/temp/rtk/src/filters/du.toml +0 -16
  106. package/temp/rtk/src/filters/fail2ban-client.toml +0 -15
  107. package/temp/rtk/src/filters/gcc.toml +0 -49
  108. package/temp/rtk/src/filters/gcloud.toml +0 -22
  109. package/temp/rtk/src/filters/hadolint.toml +0 -24
  110. package/temp/rtk/src/filters/helm.toml +0 -29
  111. package/temp/rtk/src/filters/iptables.toml +0 -27
  112. package/temp/rtk/src/filters/jj.toml +0 -28
  113. package/temp/rtk/src/filters/jq.toml +0 -24
  114. package/temp/rtk/src/filters/make.toml +0 -41
  115. package/temp/rtk/src/filters/markdownlint.toml +0 -24
  116. package/temp/rtk/src/filters/mix-compile.toml +0 -27
  117. package/temp/rtk/src/filters/mix-format.toml +0 -15
  118. package/temp/rtk/src/filters/mvn-build.toml +0 -44
  119. package/temp/rtk/src/filters/oxlint.toml +0 -43
  120. package/temp/rtk/src/filters/ping.toml +0 -63
  121. package/temp/rtk/src/filters/pio-run.toml +0 -40
  122. package/temp/rtk/src/filters/poetry-install.toml +0 -50
  123. package/temp/rtk/src/filters/pre-commit.toml +0 -35
  124. package/temp/rtk/src/filters/ps.toml +0 -16
  125. package/temp/rtk/src/filters/quarto-render.toml +0 -41
  126. package/temp/rtk/src/filters/rsync.toml +0 -48
  127. package/temp/rtk/src/filters/shellcheck.toml +0 -27
  128. package/temp/rtk/src/filters/shopify-theme.toml +0 -29
  129. package/temp/rtk/src/filters/skopeo.toml +0 -45
  130. package/temp/rtk/src/filters/sops.toml +0 -16
  131. package/temp/rtk/src/filters/ssh.toml +0 -44
  132. package/temp/rtk/src/filters/stat.toml +0 -34
  133. package/temp/rtk/src/filters/swift-build.toml +0 -41
  134. package/temp/rtk/src/filters/systemctl-status.toml +0 -33
  135. package/temp/rtk/src/filters/terraform-plan.toml +0 -35
  136. package/temp/rtk/src/filters/tofu-fmt.toml +0 -16
  137. package/temp/rtk/src/filters/tofu-init.toml +0 -38
  138. package/temp/rtk/src/filters/tofu-plan.toml +0 -35
  139. package/temp/rtk/src/filters/tofu-validate.toml +0 -17
  140. package/temp/rtk/src/filters/trunk-build.toml +0 -39
  141. package/temp/rtk/src/filters/ty.toml +0 -50
  142. package/temp/rtk/src/filters/uv-sync.toml +0 -37
  143. package/temp/rtk/src/filters/xcodebuild.toml +0 -99
  144. package/temp/rtk/src/filters/yamllint.toml +0 -25
  145. package/temp/rtk/src/find_cmd.rs +0 -598
  146. package/temp/rtk/src/format_cmd.rs +0 -386
  147. package/temp/rtk/src/gain.rs +0 -723
  148. package/temp/rtk/src/gh_cmd.rs +0 -1651
  149. package/temp/rtk/src/git.rs +0 -2012
  150. package/temp/rtk/src/go_cmd.rs +0 -592
  151. package/temp/rtk/src/golangci_cmd.rs +0 -254
  152. package/temp/rtk/src/grep_cmd.rs +0 -288
  153. package/temp/rtk/src/gt_cmd.rs +0 -810
  154. package/temp/rtk/src/hook_audit_cmd.rs +0 -283
  155. package/temp/rtk/src/hook_check.rs +0 -171
  156. package/temp/rtk/src/init.rs +0 -1859
  157. package/temp/rtk/src/integrity.rs +0 -537
  158. package/temp/rtk/src/json_cmd.rs +0 -231
  159. package/temp/rtk/src/learn/detector.rs +0 -628
  160. package/temp/rtk/src/learn/mod.rs +0 -119
  161. package/temp/rtk/src/learn/report.rs +0 -184
  162. package/temp/rtk/src/lint_cmd.rs +0 -694
  163. package/temp/rtk/src/local_llm.rs +0 -316
  164. package/temp/rtk/src/log_cmd.rs +0 -248
  165. package/temp/rtk/src/ls.rs +0 -324
  166. package/temp/rtk/src/main.rs +0 -2482
  167. package/temp/rtk/src/mypy_cmd.rs +0 -389
  168. package/temp/rtk/src/next_cmd.rs +0 -241
  169. package/temp/rtk/src/npm_cmd.rs +0 -236
  170. package/temp/rtk/src/parser/README.md +0 -267
  171. package/temp/rtk/src/parser/error.rs +0 -46
  172. package/temp/rtk/src/parser/formatter.rs +0 -336
  173. package/temp/rtk/src/parser/mod.rs +0 -311
  174. package/temp/rtk/src/parser/types.rs +0 -119
  175. package/temp/rtk/src/pip_cmd.rs +0 -302
  176. package/temp/rtk/src/playwright_cmd.rs +0 -479
  177. package/temp/rtk/src/pnpm_cmd.rs +0 -573
  178. package/temp/rtk/src/prettier_cmd.rs +0 -221
  179. package/temp/rtk/src/prisma_cmd.rs +0 -482
  180. package/temp/rtk/src/psql_cmd.rs +0 -382
  181. package/temp/rtk/src/pytest_cmd.rs +0 -384
  182. package/temp/rtk/src/read.rs +0 -217
  183. package/temp/rtk/src/rewrite_cmd.rs +0 -50
  184. package/temp/rtk/src/ruff_cmd.rs +0 -402
  185. package/temp/rtk/src/runner.rs +0 -271
  186. package/temp/rtk/src/summary.rs +0 -297
  187. package/temp/rtk/src/tee.rs +0 -405
  188. package/temp/rtk/src/telemetry.rs +0 -248
  189. package/temp/rtk/src/toml_filter.rs +0 -1655
  190. package/temp/rtk/src/tracking.rs +0 -1416
  191. package/temp/rtk/src/tree.rs +0 -209
  192. package/temp/rtk/src/tsc_cmd.rs +0 -259
  193. package/temp/rtk/src/utils.rs +0 -432
  194. package/temp/rtk/src/verify_cmd.rs +0 -47
  195. package/temp/rtk/src/vitest_cmd.rs +0 -385
  196. package/temp/rtk/src/wc_cmd.rs +0 -401
  197. package/temp/rtk/src/wget_cmd.rs +0 -260
  198. package/temp/rtk/tests/fixtures/dotnet/build_failed.txt +0 -11
  199. package/temp/rtk/tests/fixtures/dotnet/format_changes.json +0 -31
  200. package/temp/rtk/tests/fixtures/dotnet/format_empty.json +0 -1
  201. package/temp/rtk/tests/fixtures/dotnet/format_success.json +0 -12
  202. package/temp/rtk/tests/fixtures/dotnet/test_failed.txt +0 -18
@@ -1,309 +0,0 @@
1
- # RTK Troubleshooting Guide
2
-
3
- ## Problem: "rtk gain" command not found
4
-
5
- ### Symptom
6
- ```bash
7
- $ rtk --version
8
- rtk 1.0.0 # (or similar)
9
-
10
- $ rtk gain
11
- rtk: 'gain' is not a rtk command. See 'rtk --help'.
12
- ```
13
-
14
- ### Root Cause
15
- You installed the **wrong rtk package**. You have **Rust Type Kit** (reachingforthejack/rtk) instead of **Rust Token Killer** (rtk-ai/rtk).
16
-
17
- ### Solution
18
-
19
- **1. Uninstall the wrong package:**
20
- ```bash
21
- cargo uninstall rtk
22
- ```
23
-
24
- **2. Install the correct one (Token Killer):**
25
-
26
- #### Quick Install (Linux/macOS)
27
- ```bash
28
- curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh | sh
29
- ```
30
-
31
- #### Alternative: Manual Installation
32
- ```bash
33
- cargo install --git https://github.com/rtk-ai/rtk
34
- ```
35
-
36
- **3. Verify installation:**
37
- ```bash
38
- rtk --version
39
- rtk gain # MUST show token savings stats, not error
40
- ```
41
-
42
- If `rtk gain` now works, installation is correct.
43
-
44
- ---
45
-
46
- ## Problem: Confusion Between Two "rtk" Projects
47
-
48
- ### The Two Projects
49
-
50
- | Project | Repository | Purpose | Key Command |
51
- |---------|-----------|---------|-------------|
52
- | **Rust Token Killer** ✅ | rtk-ai/rtk | LLM token optimizer for Claude Code | `rtk gain` |
53
- | **Rust Type Kit** ❌ | reachingforthejack/rtk | Rust codebase query and type generator | `rtk query` |
54
-
55
- ### How to Identify Which One You Have
56
-
57
- ```bash
58
- # Check if "gain" command exists
59
- rtk gain
60
-
61
- # Token Killer → Shows token savings stats
62
- # Type Kit → Error: "gain is not a rtk command"
63
- ```
64
-
65
- ---
66
-
67
- ## Problem: cargo install rtk installs wrong package
68
-
69
- ### Why This Happens
70
- If **Rust Type Kit** is published to crates.io under the name `rtk`, running `cargo install rtk` will install the wrong package.
71
-
72
- ### Solution
73
- **NEVER use** `cargo install rtk` without verifying.
74
-
75
- **Always use explicit repository URLs:**
76
-
77
- ```bash
78
- # CORRECT - Token Killer
79
- cargo install --git https://github.com/rtk-ai/rtk
80
-
81
- # OR install from fork
82
- git clone https://github.com/rtk-ai/rtk.git
83
- cd rtk && git checkout feat/all-features
84
- cargo install --path . --force
85
- ```
86
-
87
- **After any installation, ALWAYS verify:**
88
- ```bash
89
- rtk gain # Must work if you want Token Killer
90
- ```
91
-
92
- ---
93
-
94
- ## Problem: RTK not working in Claude Code
95
-
96
- ### Symptom
97
- Claude Code doesn't seem to be using rtk, outputs are verbose.
98
-
99
- ### Checklist
100
-
101
- **1. Verify rtk is installed and correct:**
102
- ```bash
103
- rtk --version
104
- rtk gain # Must show stats
105
- ```
106
-
107
- **2. Initialize rtk for Claude Code:**
108
- ```bash
109
- # Global (all projects)
110
- rtk init --global
111
-
112
- # Per-project
113
- cd /your/project
114
- rtk init
115
- ```
116
-
117
- **3. Verify CLAUDE.md file exists:**
118
- ```bash
119
- # Check global
120
- cat ~/.claude/CLAUDE.md | grep rtk
121
-
122
- # Check project
123
- cat ./CLAUDE.md | grep rtk
124
- ```
125
-
126
- **4. Install auto-rewrite hook (recommended for automatic RTK usage):**
127
-
128
- **Option A: Automatic (recommended)**
129
- ```bash
130
- rtk init -g
131
- # → Installs hook + RTK.md automatically
132
- # → Follow printed instructions to add hook to ~/.claude/settings.json
133
- # → Restart Claude Code
134
-
135
- # Verify installation
136
- rtk init --show # Should show "✅ Hook: executable, with guards"
137
- ```
138
-
139
- **Option B: Manual (fallback)**
140
- ```bash
141
- # Copy hook to Claude Code hooks directory
142
- mkdir -p ~/.claude/hooks
143
- cp .claude/hooks/rtk-rewrite.sh ~/.claude/hooks/
144
- chmod +x ~/.claude/hooks/rtk-rewrite.sh
145
- ```
146
-
147
- Then add to `~/.claude/settings.json` (replace `~` with full path):
148
- ```json
149
- {
150
- "hooks": {
151
- "PreToolUse": [
152
- {
153
- "matcher": "Bash",
154
- "hooks": [
155
- {
156
- "type": "command",
157
- "command": "/Users/yourname/.claude/hooks/rtk-rewrite.sh"
158
- }
159
- ]
160
- }
161
- ]
162
- }
163
- }
164
- ```
165
-
166
- **Note**: Use absolute path in `settings.json`, not `~/.claude/...`
167
-
168
- ---
169
-
170
- ## Problem: RTK not working in OpenCode
171
-
172
- ### Symptom
173
- OpenCode runs commands without rtk, outputs are verbose.
174
-
175
- ### Checklist
176
-
177
- **1. Verify rtk is installed and correct:**
178
- ```bash
179
- rtk --version
180
- rtk gain # Must show stats
181
- ```
182
-
183
- **2. Install the OpenCode plugin (global only):**
184
- ```bash
185
- rtk init -g --opencode
186
- ```
187
-
188
- **3. Verify plugin file exists:**
189
- ```bash
190
- ls -la ~/.config/opencode/plugins/rtk.ts
191
- ```
192
-
193
- **4. Restart OpenCode**
194
- OpenCode must be restarted to load the plugin.
195
-
196
- **5. Verify status:**
197
- ```bash
198
- rtk init --show # Should show "OpenCode: plugin installed"
199
- ```
200
-
201
- ---
202
-
203
- ## Problem: "command not found: rtk" after installation
204
-
205
- ### Symptom
206
- ```bash
207
- $ cargo install --path . --force
208
- Compiling rtk v0.7.1
209
- Finished release [optimized] target(s)
210
- Installing ~/.cargo/bin/rtk
211
-
212
- $ rtk --version
213
- zsh: command not found: rtk
214
- ```
215
-
216
- ### Root Cause
217
- `~/.cargo/bin` is not in your PATH.
218
-
219
- ### Solution
220
-
221
- **1. Check if cargo bin is in PATH:**
222
- ```bash
223
- echo $PATH | grep -o '[^:]*\.cargo[^:]*'
224
- ```
225
-
226
- **2. If not found, add to PATH:**
227
-
228
- For **bash** (`~/.bashrc`):
229
- ```bash
230
- export PATH="$HOME/.cargo/bin:$PATH"
231
- ```
232
-
233
- For **zsh** (`~/.zshrc`):
234
- ```bash
235
- export PATH="$HOME/.cargo/bin:$PATH"
236
- ```
237
-
238
- For **fish** (`~/.config/fish/config.fish`):
239
- ```fish
240
- set -gx PATH $HOME/.cargo/bin $PATH
241
- ```
242
-
243
- **3. Reload shell config:**
244
- ```bash
245
- source ~/.bashrc # or ~/.zshrc or restart terminal
246
- ```
247
-
248
- **4. Verify:**
249
- ```bash
250
- which rtk
251
- rtk --version
252
- rtk gain
253
- ```
254
-
255
- ---
256
-
257
- ## Problem: Compilation errors during installation
258
-
259
- ### Symptom
260
- ```bash
261
- $ cargo install --path .
262
- error: failed to compile rtk v0.7.1
263
- ```
264
-
265
- ### Solutions
266
-
267
- **1. Update Rust toolchain:**
268
- ```bash
269
- rustup update stable
270
- rustup default stable
271
- ```
272
-
273
- **2. Clean and rebuild:**
274
- ```bash
275
- cargo clean
276
- cargo build --release
277
- cargo install --path . --force
278
- ```
279
-
280
- **3. Check Rust version (minimum required):**
281
- ```bash
282
- rustc --version # Should be 1.70+ for most features
283
- ```
284
-
285
- **4. If still fails, report issue:**
286
- - GitHub: https://github.com/rtk-ai/rtk/issues
287
-
288
- ---
289
-
290
- ## Need More Help?
291
-
292
- **Report issues:**
293
- - Fork-specific: https://github.com/rtk-ai/rtk/issues
294
- - Upstream: https://github.com/rtk-ai/rtk/issues
295
-
296
- **Run the diagnostic script:**
297
- ```bash
298
- # From the rtk repository root
299
- bash scripts/check-installation.sh
300
- ```
301
-
302
- This script will check:
303
- - ✅ RTK installed and in PATH
304
- - ✅ Correct version (Token Killer, not Type Kit)
305
- - ✅ Available features (pnpm, vitest, next, etc.)
306
- - ✅ Claude Code integration (CLAUDE.md files)
307
- - ✅ Auto-rewrite hook status
308
-
309
- The script provides specific fix commands for any issues found.
@@ -1,102 +0,0 @@
1
- # How a TOML filter goes from file to execution
2
-
3
- This document explains what happens between "I created `src/filters/my-tool.toml`" and "RTK filters the output of `my-tool`".
4
-
5
- ## Build pipeline
6
-
7
- ```mermaid
8
- flowchart TD
9
- A[["📄 src/filters/my-tool.toml\n(new file)"]] --> B
10
-
11
- subgraph BUILD ["🔨 cargo build"]
12
- B["build.rs\n① ls src/filters/*.toml\n② sort alphabetically\n③ concat → schema_version = 1 + all files"] --> C
13
- C{"TOML valid?\nDuplicate names?"} -->|"❌ panic! (build fails)"| D[["🛑 Error message\npoints to bad file"]]
14
- C -->|"✅ ok"| E[["OUT_DIR/builtin_filters.toml\n(generated file)"]]
15
- E --> F["rustc\ninclude_str!(concat!(env!(OUT_DIR),\n'/builtin_filters.toml'))"]
16
- F --> G[["🦀 rtk binary\nBUILTIN_TOML embedded"]]
17
- end
18
-
19
- subgraph TESTS ["🧪 cargo test"]
20
- H["test_builtin_filter_count\nassert_eq!(filters.len(), N)"] -->|"❌ count wrong"| I[["FAIL\n'Expected N, got N+1'\nUpdate the count'"]]
21
- J["test_builtin_all_expected_\nfilters_present\nassert!(names.contains('my-tool'))"] -->|"❌ name missing"| K[["FAIL\n'my-tool is missing—\nwas its .toml deleted?'"]]
22
- L["test_builtin_all_filters_\nhave_inline_tests\nassert!(tested.contains(name))"] -->|"❌ no tests"| M[["FAIL\n'Add tests.my-tool\nentries'"]]
23
- end
24
-
25
- subgraph VERIFY ["✅ rtk verify"]
26
- N["runs [[tests.my-tool]]\ninput → filter → compare expected"]
27
- N -->|"❌ mismatch"| O[["FAIL\nshows actual vs expected"]]
28
- N -->|"✅ pass"| P[["60/60 tests passed"]]
29
- end
30
-
31
- G --> H
32
- G --> J
33
- G --> L
34
- G --> N
35
-
36
- subgraph RUNTIME ["⚡ rtk my-tool --verbose"]
37
- Q["Claude Code hook\nmy-tool ... → rtk my-tool ..."] --> R
38
- R["TomlFilterRegistry::load()\n① .rtk/filters.toml (project)\n② ~/.config/rtk/filters.toml (user)\n③ BUILTIN_TOML (binary)\n④ passthrough"] --> S
39
- S{"match_command\n'^my-tool\\b'\nmatches?"} -->|"No match"| T[["exec raw\n(passthrough)"]]
40
- S -->|"✅ match"| U["exec command\ncapture stdout"]
41
- U --> V
42
-
43
- subgraph PIPELINE ["8-stage filter pipeline"]
44
- V["strip_ansi"] --> W["replace"]
45
- W --> X{"match_output\nshort-circuit?"}
46
- X -->|"✅ pattern matched"| Y[["emit message\nstop pipeline"]]
47
- X -->|"no match"| Z["strip/keep_lines"]
48
- Z --> AA["truncate_lines_at"]
49
- AA --> AB["tail_lines"]
50
- AB --> AC["max_lines"]
51
- AC --> AD{"output\nempty?"}
52
- AD -->|"yes"| AE[["emit on_empty"]]
53
- AD -->|"no"| AF[["print filtered\noutput + exit code"]]
54
- end
55
- end
56
-
57
- G --> Q
58
-
59
- style BUILD fill:#1e3a5f,color:#fff
60
- style TESTS fill:#1a3a1a,color:#fff
61
- style VERIFY fill:#2d1b69,color:#fff
62
- style RUNTIME fill:#3a1a1a,color:#fff
63
- style PIPELINE fill:#4a2a00,color:#fff
64
- style D fill:#8b0000,color:#fff
65
- style I fill:#8b0000,color:#fff
66
- style K fill:#8b0000,color:#fff
67
- style M fill:#8b0000,color:#fff
68
- style O fill:#8b0000,color:#fff
69
- ```
70
-
71
- ## Step-by-step summary
72
-
73
- | Step | Who | What happens | Fails if |
74
- |------|-----|--------------|----------|
75
- | 1 | Contributor | Creates `src/filters/my-tool.toml` | — |
76
- | 2 | `build.rs` | Concatenates all `.toml` files alphabetically | TOML syntax error, duplicate filter name |
77
- | 3 | `rustc` | Embeds result in binary via `BUILTIN_TOML` const | — |
78
- | 4 | `cargo test` | 3 guards check count, names, inline test presence | Count not updated, name not in list, no `[[tests.*]]` |
79
- | 5 | `rtk verify` | Runs each `[[tests.my-tool]]` entry | Filter logic doesn't match expected output |
80
- | 6 | Runtime | Hook rewrites command, registry looks up filter, pipeline runs | No match → passthrough (not an error) |
81
-
82
- ## Filter lookup priority at runtime
83
-
84
- ```mermaid
85
- flowchart LR
86
- CMD["rtk my-tool args"] --> P1
87
- P1{"1. .rtk/filters.toml\n(project-local)"}
88
- P1 -->|"✅ match"| WIN["apply filter"]
89
- P1 -->|"no match"| P2
90
- P2{"2. ~/.config/rtk/filters.toml\n(user-global)\n(macOS alt: ~/Library/Application Support/rtk/filters.toml)"}
91
- P2 -->|"✅ match"| WIN
92
- P2 -->|"no match"| P3
93
- P3{"3. BUILTIN_TOML\n(binary)"}
94
- P3 -->|"✅ match"| WIN
95
- P3 -->|"no match"| P4[["exec raw\n(passthrough)"]]
96
- ```
97
-
98
- First match wins. A project filter with the same name as a built-in shadows the built-in and triggers a warning:
99
-
100
- ```
101
- [rtk] warning: filter 'make' is shadowing a built-in filter
102
- ```