@hasna/terminal 2.0.5 → 2.3.0

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 (263) hide show
  1. package/dist/cli.js +52 -21
  2. package/package.json +1 -1
  3. package/src/ai.ts +77 -130
  4. package/src/cli.tsx +51 -21
  5. package/src/command-validator.ts +11 -0
  6. package/src/context-hints.ts +291 -0
  7. package/src/discover.ts +238 -0
  8. package/src/economy.ts +53 -0
  9. package/src/output-processor.ts +7 -18
  10. package/src/output-store.ts +65 -0
  11. package/src/providers/base.ts +3 -1
  12. package/src/providers/groq.ts +108 -0
  13. package/src/providers/index.ts +26 -2
  14. package/src/providers/providers.test.ts +4 -2
  15. package/src/providers/xai.ts +108 -0
  16. package/src/sessions-db.ts +81 -0
  17. package/temp/rtk/.claude/agents/code-reviewer.md +221 -0
  18. package/temp/rtk/.claude/agents/debugger.md +519 -0
  19. package/temp/rtk/.claude/agents/rtk-testing-specialist.md +461 -0
  20. package/temp/rtk/.claude/agents/rust-rtk.md +511 -0
  21. package/temp/rtk/.claude/agents/technical-writer.md +355 -0
  22. package/temp/rtk/.claude/commands/diagnose.md +352 -0
  23. package/temp/rtk/.claude/commands/test-routing.md +362 -0
  24. package/temp/rtk/.claude/hooks/bash/pre-commit-format.sh +16 -0
  25. package/temp/rtk/.claude/hooks/rtk-rewrite.sh +70 -0
  26. package/temp/rtk/.claude/hooks/rtk-suggest.sh +152 -0
  27. package/temp/rtk/.claude/rules/cli-testing.md +526 -0
  28. package/temp/rtk/.claude/skills/issue-triage/SKILL.md +348 -0
  29. package/temp/rtk/.claude/skills/issue-triage/templates/issue-comment.md +134 -0
  30. package/temp/rtk/.claude/skills/performance.md +435 -0
  31. package/temp/rtk/.claude/skills/pr-triage/SKILL.md +315 -0
  32. package/temp/rtk/.claude/skills/pr-triage/templates/review-comment.md +71 -0
  33. package/temp/rtk/.claude/skills/repo-recap.md +206 -0
  34. package/temp/rtk/.claude/skills/rtk-tdd/SKILL.md +78 -0
  35. package/temp/rtk/.claude/skills/rtk-tdd/references/testing-patterns.md +124 -0
  36. package/temp/rtk/.claude/skills/security-guardian.md +503 -0
  37. package/temp/rtk/.claude/skills/ship.md +404 -0
  38. package/temp/rtk/.github/workflows/benchmark.yml +34 -0
  39. package/temp/rtk/.github/workflows/dco-check.yaml +12 -0
  40. package/temp/rtk/.github/workflows/release-please.yml +51 -0
  41. package/temp/rtk/.github/workflows/release.yml +343 -0
  42. package/temp/rtk/.github/workflows/security-check.yml +135 -0
  43. package/temp/rtk/.github/workflows/validate-docs.yml +78 -0
  44. package/temp/rtk/.release-please-manifest.json +3 -0
  45. package/temp/rtk/ARCHITECTURE.md +1491 -0
  46. package/temp/rtk/CHANGELOG.md +640 -0
  47. package/temp/rtk/CLAUDE.md +605 -0
  48. package/temp/rtk/CONTRIBUTING.md +199 -0
  49. package/temp/rtk/Cargo.lock +1668 -0
  50. package/temp/rtk/Cargo.toml +64 -0
  51. package/temp/rtk/Formula/rtk.rb +43 -0
  52. package/temp/rtk/INSTALL.md +390 -0
  53. package/temp/rtk/LICENSE +21 -0
  54. package/temp/rtk/README.md +386 -0
  55. package/temp/rtk/README_es.md +159 -0
  56. package/temp/rtk/README_fr.md +197 -0
  57. package/temp/rtk/README_ja.md +159 -0
  58. package/temp/rtk/README_ko.md +159 -0
  59. package/temp/rtk/README_zh.md +167 -0
  60. package/temp/rtk/ROADMAP.md +15 -0
  61. package/temp/rtk/SECURITY.md +217 -0
  62. package/temp/rtk/TEST_EXEC_TIME.md +102 -0
  63. package/temp/rtk/build.rs +57 -0
  64. package/temp/rtk/docs/AUDIT_GUIDE.md +432 -0
  65. package/temp/rtk/docs/FEATURES.md +1410 -0
  66. package/temp/rtk/docs/TROUBLESHOOTING.md +309 -0
  67. package/temp/rtk/docs/filter-workflow.md +102 -0
  68. package/temp/rtk/docs/images/gain-dashboard.jpg +0 -0
  69. package/temp/rtk/docs/tracking.md +583 -0
  70. package/temp/rtk/hooks/opencode-rtk.ts +39 -0
  71. package/temp/rtk/hooks/rtk-awareness.md +29 -0
  72. package/temp/rtk/hooks/rtk-rewrite.sh +61 -0
  73. package/temp/rtk/hooks/test-rtk-rewrite.sh +442 -0
  74. package/temp/rtk/install.sh +124 -0
  75. package/temp/rtk/release-please-config.json +10 -0
  76. package/temp/rtk/scripts/benchmark.sh +592 -0
  77. package/temp/rtk/scripts/check-installation.sh +162 -0
  78. package/temp/rtk/scripts/install-local.sh +37 -0
  79. package/temp/rtk/scripts/rtk-economics.sh +137 -0
  80. package/temp/rtk/scripts/test-all.sh +561 -0
  81. package/temp/rtk/scripts/test-aristote.sh +227 -0
  82. package/temp/rtk/scripts/test-tracking.sh +79 -0
  83. package/temp/rtk/scripts/update-readme-metrics.sh +32 -0
  84. package/temp/rtk/scripts/validate-docs.sh +73 -0
  85. package/temp/rtk/src/aws_cmd.rs +880 -0
  86. package/temp/rtk/src/binlog.rs +1645 -0
  87. package/temp/rtk/src/cargo_cmd.rs +1727 -0
  88. package/temp/rtk/src/cc_economics.rs +1157 -0
  89. package/temp/rtk/src/ccusage.rs +340 -0
  90. package/temp/rtk/src/config.rs +187 -0
  91. package/temp/rtk/src/container.rs +855 -0
  92. package/temp/rtk/src/curl_cmd.rs +134 -0
  93. package/temp/rtk/src/deps.rs +268 -0
  94. package/temp/rtk/src/diff_cmd.rs +367 -0
  95. package/temp/rtk/src/discover/mod.rs +274 -0
  96. package/temp/rtk/src/discover/provider.rs +388 -0
  97. package/temp/rtk/src/discover/registry.rs +2022 -0
  98. package/temp/rtk/src/discover/report.rs +202 -0
  99. package/temp/rtk/src/discover/rules.rs +667 -0
  100. package/temp/rtk/src/display_helpers.rs +402 -0
  101. package/temp/rtk/src/dotnet_cmd.rs +1771 -0
  102. package/temp/rtk/src/dotnet_format_report.rs +133 -0
  103. package/temp/rtk/src/dotnet_trx.rs +593 -0
  104. package/temp/rtk/src/env_cmd.rs +204 -0
  105. package/temp/rtk/src/filter.rs +462 -0
  106. package/temp/rtk/src/filters/README.md +52 -0
  107. package/temp/rtk/src/filters/ansible-playbook.toml +34 -0
  108. package/temp/rtk/src/filters/basedpyright.toml +47 -0
  109. package/temp/rtk/src/filters/biome.toml +45 -0
  110. package/temp/rtk/src/filters/brew-install.toml +37 -0
  111. package/temp/rtk/src/filters/composer-install.toml +40 -0
  112. package/temp/rtk/src/filters/df.toml +16 -0
  113. package/temp/rtk/src/filters/dotnet-build.toml +64 -0
  114. package/temp/rtk/src/filters/du.toml +16 -0
  115. package/temp/rtk/src/filters/fail2ban-client.toml +15 -0
  116. package/temp/rtk/src/filters/gcc.toml +49 -0
  117. package/temp/rtk/src/filters/gcloud.toml +22 -0
  118. package/temp/rtk/src/filters/hadolint.toml +24 -0
  119. package/temp/rtk/src/filters/helm.toml +29 -0
  120. package/temp/rtk/src/filters/iptables.toml +27 -0
  121. package/temp/rtk/src/filters/jj.toml +28 -0
  122. package/temp/rtk/src/filters/jq.toml +24 -0
  123. package/temp/rtk/src/filters/make.toml +41 -0
  124. package/temp/rtk/src/filters/markdownlint.toml +24 -0
  125. package/temp/rtk/src/filters/mix-compile.toml +27 -0
  126. package/temp/rtk/src/filters/mix-format.toml +15 -0
  127. package/temp/rtk/src/filters/mvn-build.toml +44 -0
  128. package/temp/rtk/src/filters/oxlint.toml +43 -0
  129. package/temp/rtk/src/filters/ping.toml +63 -0
  130. package/temp/rtk/src/filters/pio-run.toml +40 -0
  131. package/temp/rtk/src/filters/poetry-install.toml +50 -0
  132. package/temp/rtk/src/filters/pre-commit.toml +35 -0
  133. package/temp/rtk/src/filters/ps.toml +16 -0
  134. package/temp/rtk/src/filters/quarto-render.toml +41 -0
  135. package/temp/rtk/src/filters/rsync.toml +48 -0
  136. package/temp/rtk/src/filters/shellcheck.toml +27 -0
  137. package/temp/rtk/src/filters/shopify-theme.toml +29 -0
  138. package/temp/rtk/src/filters/skopeo.toml +45 -0
  139. package/temp/rtk/src/filters/sops.toml +16 -0
  140. package/temp/rtk/src/filters/ssh.toml +44 -0
  141. package/temp/rtk/src/filters/stat.toml +34 -0
  142. package/temp/rtk/src/filters/swift-build.toml +41 -0
  143. package/temp/rtk/src/filters/systemctl-status.toml +33 -0
  144. package/temp/rtk/src/filters/terraform-plan.toml +35 -0
  145. package/temp/rtk/src/filters/tofu-fmt.toml +16 -0
  146. package/temp/rtk/src/filters/tofu-init.toml +38 -0
  147. package/temp/rtk/src/filters/tofu-plan.toml +35 -0
  148. package/temp/rtk/src/filters/tofu-validate.toml +17 -0
  149. package/temp/rtk/src/filters/trunk-build.toml +39 -0
  150. package/temp/rtk/src/filters/ty.toml +50 -0
  151. package/temp/rtk/src/filters/uv-sync.toml +37 -0
  152. package/temp/rtk/src/filters/xcodebuild.toml +99 -0
  153. package/temp/rtk/src/filters/yamllint.toml +25 -0
  154. package/temp/rtk/src/find_cmd.rs +598 -0
  155. package/temp/rtk/src/format_cmd.rs +386 -0
  156. package/temp/rtk/src/gain.rs +723 -0
  157. package/temp/rtk/src/gh_cmd.rs +1651 -0
  158. package/temp/rtk/src/git.rs +2012 -0
  159. package/temp/rtk/src/go_cmd.rs +592 -0
  160. package/temp/rtk/src/golangci_cmd.rs +254 -0
  161. package/temp/rtk/src/grep_cmd.rs +288 -0
  162. package/temp/rtk/src/gt_cmd.rs +810 -0
  163. package/temp/rtk/src/hook_audit_cmd.rs +283 -0
  164. package/temp/rtk/src/hook_check.rs +171 -0
  165. package/temp/rtk/src/init.rs +1859 -0
  166. package/temp/rtk/src/integrity.rs +537 -0
  167. package/temp/rtk/src/json_cmd.rs +231 -0
  168. package/temp/rtk/src/learn/detector.rs +628 -0
  169. package/temp/rtk/src/learn/mod.rs +119 -0
  170. package/temp/rtk/src/learn/report.rs +184 -0
  171. package/temp/rtk/src/lint_cmd.rs +694 -0
  172. package/temp/rtk/src/local_llm.rs +316 -0
  173. package/temp/rtk/src/log_cmd.rs +248 -0
  174. package/temp/rtk/src/ls.rs +324 -0
  175. package/temp/rtk/src/main.rs +2482 -0
  176. package/temp/rtk/src/mypy_cmd.rs +389 -0
  177. package/temp/rtk/src/next_cmd.rs +241 -0
  178. package/temp/rtk/src/npm_cmd.rs +236 -0
  179. package/temp/rtk/src/parser/README.md +267 -0
  180. package/temp/rtk/src/parser/error.rs +46 -0
  181. package/temp/rtk/src/parser/formatter.rs +336 -0
  182. package/temp/rtk/src/parser/mod.rs +311 -0
  183. package/temp/rtk/src/parser/types.rs +119 -0
  184. package/temp/rtk/src/pip_cmd.rs +302 -0
  185. package/temp/rtk/src/playwright_cmd.rs +479 -0
  186. package/temp/rtk/src/pnpm_cmd.rs +573 -0
  187. package/temp/rtk/src/prettier_cmd.rs +221 -0
  188. package/temp/rtk/src/prisma_cmd.rs +482 -0
  189. package/temp/rtk/src/psql_cmd.rs +382 -0
  190. package/temp/rtk/src/pytest_cmd.rs +384 -0
  191. package/temp/rtk/src/read.rs +217 -0
  192. package/temp/rtk/src/rewrite_cmd.rs +50 -0
  193. package/temp/rtk/src/ruff_cmd.rs +402 -0
  194. package/temp/rtk/src/runner.rs +271 -0
  195. package/temp/rtk/src/summary.rs +297 -0
  196. package/temp/rtk/src/tee.rs +405 -0
  197. package/temp/rtk/src/telemetry.rs +248 -0
  198. package/temp/rtk/src/toml_filter.rs +1655 -0
  199. package/temp/rtk/src/tracking.rs +1416 -0
  200. package/temp/rtk/src/tree.rs +209 -0
  201. package/temp/rtk/src/tsc_cmd.rs +259 -0
  202. package/temp/rtk/src/utils.rs +432 -0
  203. package/temp/rtk/src/verify_cmd.rs +47 -0
  204. package/temp/rtk/src/vitest_cmd.rs +385 -0
  205. package/temp/rtk/src/wc_cmd.rs +401 -0
  206. package/temp/rtk/src/wget_cmd.rs +260 -0
  207. package/temp/rtk/tests/fixtures/dotnet/build_failed.txt +11 -0
  208. package/temp/rtk/tests/fixtures/dotnet/format_changes.json +31 -0
  209. package/temp/rtk/tests/fixtures/dotnet/format_empty.json +1 -0
  210. package/temp/rtk/tests/fixtures/dotnet/format_success.json +12 -0
  211. package/temp/rtk/tests/fixtures/dotnet/test_failed.txt +18 -0
  212. package/dist/App.js +0 -404
  213. package/dist/Browse.js +0 -79
  214. package/dist/FuzzyPicker.js +0 -47
  215. package/dist/Onboarding.js +0 -51
  216. package/dist/Spinner.js +0 -12
  217. package/dist/StatusBar.js +0 -49
  218. package/dist/ai.js +0 -368
  219. package/dist/cache.js +0 -41
  220. package/dist/command-rewriter.js +0 -64
  221. package/dist/command-validator.js +0 -77
  222. package/dist/compression.js +0 -107
  223. package/dist/diff-cache.js +0 -107
  224. package/dist/economy.js +0 -79
  225. package/dist/expand-store.js +0 -38
  226. package/dist/file-cache.js +0 -72
  227. package/dist/file-index.js +0 -62
  228. package/dist/history.js +0 -62
  229. package/dist/lazy-executor.js +0 -54
  230. package/dist/line-dedup.js +0 -59
  231. package/dist/loop-detector.js +0 -75
  232. package/dist/mcp/install.js +0 -98
  233. package/dist/mcp/server.js +0 -569
  234. package/dist/noise-filter.js +0 -86
  235. package/dist/output-processor.js +0 -136
  236. package/dist/output-router.js +0 -41
  237. package/dist/parsers/base.js +0 -2
  238. package/dist/parsers/build.js +0 -64
  239. package/dist/parsers/errors.js +0 -101
  240. package/dist/parsers/files.js +0 -78
  241. package/dist/parsers/git.js +0 -99
  242. package/dist/parsers/index.js +0 -48
  243. package/dist/parsers/tests.js +0 -89
  244. package/dist/providers/anthropic.js +0 -39
  245. package/dist/providers/base.js +0 -4
  246. package/dist/providers/cerebras.js +0 -95
  247. package/dist/providers/index.js +0 -49
  248. package/dist/recipes/model.js +0 -20
  249. package/dist/recipes/storage.js +0 -136
  250. package/dist/search/content-search.js +0 -68
  251. package/dist/search/file-search.js +0 -61
  252. package/dist/search/filters.js +0 -34
  253. package/dist/search/index.js +0 -5
  254. package/dist/search/semantic.js +0 -320
  255. package/dist/session-boot.js +0 -59
  256. package/dist/session-context.js +0 -55
  257. package/dist/sessions-db.js +0 -120
  258. package/dist/smart-display.js +0 -286
  259. package/dist/snapshots.js +0 -51
  260. package/dist/supervisor.js +0 -112
  261. package/dist/test-watchlist.js +0 -131
  262. package/dist/tree.js +0 -94
  263. package/dist/usage-cache.js +0 -65
@@ -0,0 +1,33 @@
1
+ [filters.systemctl-status]
2
+ description = "Compact systemctl status output — strip blank lines, limit to 20 lines"
3
+ match_command = "^systemctl\\s+status\\b"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^\\s*$",
7
+ ]
8
+ max_lines = 20
9
+
10
+ [[tests.systemctl-status]]
11
+ name = "verbose unit status stripped of blank lines"
12
+ input = """
13
+ ● nginx.service - A high performance web server
14
+ Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
15
+ Active: active (running) since Mon 2024-01-15 10:30:00 UTC; 2h ago
16
+ Docs: man:nginx(8)
17
+ Main PID: 1234 (nginx)
18
+ Tasks: 3 (limit: 4915)
19
+ Memory: 8.5M
20
+
21
+ CGroup: /system.slice/nginx.service
22
+ ├─1234 nginx: master process /usr/sbin/nginx
23
+ └─1235 nginx: worker process
24
+
25
+ Jan 15 10:30:00 host nginx[1234]: nginx/1.24.0
26
+ Jan 15 10:30:00 host systemd[1]: Started nginx.service
27
+ """
28
+ expected = "● nginx.service - A high performance web server\n Loaded: loaded (/lib/systemd/system/nginx.service; enabled)\n Active: active (running) since Mon 2024-01-15 10:30:00 UTC; 2h ago\n Docs: man:nginx(8)\n Main PID: 1234 (nginx)\n Tasks: 3 (limit: 4915)\n Memory: 8.5M\n CGroup: /system.slice/nginx.service\n ├─1234 nginx: master process /usr/sbin/nginx\n └─1235 nginx: worker process\nJan 15 10:30:00 host nginx[1234]: nginx/1.24.0\nJan 15 10:30:00 host systemd[1]: Started nginx.service"
29
+
30
+ [[tests.systemctl-status]]
31
+ name = "empty input passes through"
32
+ input = ""
33
+ expected = ""
@@ -0,0 +1,35 @@
1
+ [filters.terraform-plan]
2
+ description = "Compact Terraform plan output"
3
+ match_command = "^terraform\\s+plan"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^Refreshing state",
7
+ "^\\s*#.*unchanged",
8
+ "^\\s*$",
9
+ "^Acquiring state lock",
10
+ "^Releasing state lock",
11
+ ]
12
+ max_lines = 80
13
+ on_empty = "terraform plan: no changes detected"
14
+
15
+ [[tests.terraform-plan]]
16
+ name = "strips Refreshing state lines and blank lines"
17
+ input = """
18
+ Acquiring state lock. This may take a few moments...
19
+ Refreshing state... [id=vpc-abc]
20
+ Refreshing state... [id=sg-123]
21
+ Releasing state lock. This may take a few moments...
22
+
23
+ Terraform will perform the following actions:
24
+
25
+ # aws_instance.web will be created
26
+ + resource "aws_instance" "web" {}
27
+
28
+ Plan: 1 to add, 0 to change, 0 to destroy.
29
+ """
30
+ expected = "Terraform will perform the following actions:\n # aws_instance.web will be created\n + resource \"aws_instance\" \"web\" {}\nPlan: 1 to add, 0 to change, 0 to destroy."
31
+
32
+ [[tests.terraform-plan]]
33
+ name = "strips noise, preserves non-blank content"
34
+ input = "Refreshing state... [id=vpc-abc]\nNo changes. Your infrastructure matches the configuration."
35
+ expected = "No changes. Your infrastructure matches the configuration."
@@ -0,0 +1,16 @@
1
+ [filters.tofu-fmt]
2
+ description = "Compact OpenTofu fmt output"
3
+ match_command = "^tofu\\s+fmt(\\s|$)"
4
+ strip_ansi = true
5
+ on_empty = "tofu fmt: ok (no changes)"
6
+ max_lines = 30
7
+
8
+ [[tests.tofu-fmt]]
9
+ name = "empty output returns on_empty message"
10
+ input = ""
11
+ expected = "tofu fmt: ok (no changes)"
12
+
13
+ [[tests.tofu-fmt]]
14
+ name = "changed files pass through"
15
+ input = "main.tf\nvariables.tf"
16
+ expected = "main.tf\nvariables.tf"
@@ -0,0 +1,38 @@
1
+ [filters.tofu-init]
2
+ description = "Compact OpenTofu init output"
3
+ match_command = "^tofu\\s+init(\\s|$)"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^- Downloading",
7
+ "^- Installing",
8
+ "^- Using previously-installed",
9
+ "^\\s*$",
10
+ "^Initializing provider",
11
+ "^Initializing the backend",
12
+ "^Initializing modules",
13
+ ]
14
+ max_lines = 20
15
+ on_empty = "tofu init: ok"
16
+
17
+ [[tests.tofu-init]]
18
+ name = "strips downloading/installing lines"
19
+ input = """
20
+ Initializing the backend...
21
+ Initializing provider plugins...
22
+ - Downloading hashicorp/aws 5.0.0...
23
+ - Installing hashicorp/aws 5.0.0...
24
+ - Using previously-installed hashicorp/random 3.5.1
25
+
26
+ OpenTofu has been successfully initialized!
27
+ """
28
+ expected = "OpenTofu has been successfully initialized!"
29
+
30
+ [[tests.tofu-init]]
31
+ name = "on_empty when all noise stripped"
32
+ input = """
33
+ Initializing the backend...
34
+ Initializing provider plugins...
35
+ - Using previously-installed hashicorp/aws 5.0.0
36
+
37
+ """
38
+ expected = "tofu init: ok"
@@ -0,0 +1,35 @@
1
+ [filters.tofu-plan]
2
+ description = "Compact OpenTofu plan output"
3
+ match_command = "^tofu\\s+plan(\\s|$)"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^Refreshing state",
7
+ "^\\s*#.*unchanged",
8
+ "^\\s*$",
9
+ "^Acquiring state lock",
10
+ "^Releasing state lock",
11
+ ]
12
+ max_lines = 80
13
+ on_empty = "tofu plan: no changes detected"
14
+
15
+ [[tests.tofu-plan]]
16
+ name = "strips Refreshing state and lock lines"
17
+ input = """
18
+ Acquiring state lock. This may take a few moments...
19
+ Refreshing state... [id=vpc-abc123]
20
+ Refreshing state... [id=sg-def456]
21
+ Releasing state lock. This may take a few moments...
22
+
23
+ OpenTofu will perform the following actions:
24
+
25
+ # aws_instance.web will be created
26
+ + resource "aws_instance" "web" {}
27
+
28
+ Plan: 1 to add, 0 to change, 0 to destroy.
29
+ """
30
+ expected = "OpenTofu will perform the following actions:\n # aws_instance.web will be created\n + resource \"aws_instance\" \"web\" {}\nPlan: 1 to add, 0 to change, 0 to destroy."
31
+
32
+ [[tests.tofu-plan]]
33
+ name = "on_empty when all noise stripped"
34
+ input = "Refreshing state... [id=vpc-abc]\nAcquiring state lock. This may take a few moments...\nReleasing state lock. This may take a few moments..."
35
+ expected = "tofu plan: no changes detected"
@@ -0,0 +1,17 @@
1
+ [filters.tofu-validate]
2
+ description = "Compact OpenTofu validate output"
3
+ match_command = "^tofu\\s+validate(\\s|$)"
4
+ strip_ansi = true
5
+ match_output = [
6
+ { pattern = "Success! The configuration is valid", message = "ok (valid)" },
7
+ ]
8
+
9
+ [[tests.tofu-validate]]
10
+ name = "success short-circuits to ok"
11
+ input = "Success! The configuration is valid."
12
+ expected = "ok (valid)"
13
+
14
+ [[tests.tofu-validate]]
15
+ name = "error passes through unchanged"
16
+ input = "Error: Invalid resource type\n on main.tf line 3: resource \"aws_instancee\" \"web\""
17
+ expected = "Error: Invalid resource type\n on main.tf line 3: resource \"aws_instancee\" \"web\""
@@ -0,0 +1,39 @@
1
+ [filters.trunk-build]
2
+ description = "Compact trunk build output"
3
+ match_command = "^trunk\\s+build"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^\\s*$",
7
+ "^\\s*Compiling\\s",
8
+ "^\\s*Downloading\\s",
9
+ "^\\s*Fetching\\s",
10
+ "^\\s*Fresh\\s",
11
+ "^\\s*Checking\\s",
12
+ ]
13
+ tail_lines = 10
14
+ max_lines = 30
15
+ on_empty = "trunk build: ok"
16
+
17
+ [[tests.trunk-build]]
18
+ name = "strips compile noise, keeps tail summary"
19
+ input = """
20
+ Compiling tokio v1.35.0
21
+ Compiling hyper v0.14.28
22
+ Compiling my-crate v0.1.0
23
+ Downloading serde v1.0.195
24
+ Fresh regex v1.10.2
25
+
26
+ Finished release [optimized] target(s) in 45.23s
27
+ Binary: target/release/my-crate (5.2MB)
28
+ """
29
+ expected = " Finished release [optimized] target(s) in 45.23s\n Binary: target/release/my-crate (5.2MB)"
30
+
31
+ [[tests.trunk-build]]
32
+ name = "on_empty when all noise stripped"
33
+ input = """
34
+ Compiling my-crate v0.1.0
35
+ Fresh serde v1.0
36
+ Checking tokio v1.35.0
37
+
38
+ """
39
+ expected = "trunk build: ok"
@@ -0,0 +1,50 @@
1
+ [filters.ty]
2
+ description = "Compact ty type checker output — strip blank lines, keep errors"
3
+ match_command = "^ty\\b"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^\\s*$",
7
+ "^Checking \\d+ file",
8
+ "^ty \\d+\\.\\d+",
9
+ ]
10
+ max_lines = 50
11
+ on_empty = "ty: ok"
12
+
13
+ [[tests.ty]]
14
+ name = "strips noise, keeps diagnostics"
15
+ input = """
16
+ ty 0.1.0
17
+ Checking 15 files
18
+
19
+ error[unresolved-reference]: Name `foo` used when not defined
20
+ --> app/main.py:10:5
21
+ |
22
+ 10 | foo()
23
+ | ^^^
24
+ |
25
+
26
+ warning[unused-variable]: Variable `x` is not used
27
+ --> app/utils.py:8:9
28
+ |
29
+ 8 | x = 42
30
+ | ^
31
+ |
32
+
33
+ Found 1 error, 1 warning
34
+ """
35
+ expected = "error[unresolved-reference]: Name `foo` used when not defined\n --> app/main.py:10:5\n |\n10 | foo()\n | ^^^\n |\nwarning[unused-variable]: Variable `x` is not used\n --> app/utils.py:8:9\n |\n 8 | x = 42\n | ^\n |\nFound 1 error, 1 warning"
36
+
37
+ [[tests.ty]]
38
+ name = "clean output"
39
+ input = """
40
+ ty 0.1.0
41
+ Checking 10 files
42
+
43
+ All checks passed!
44
+ """
45
+ expected = "All checks passed!"
46
+
47
+ [[tests.ty]]
48
+ name = "empty input passes through"
49
+ input = ""
50
+ expected = ""
@@ -0,0 +1,37 @@
1
+ [filters.uv-sync]
2
+ description = "Compact uv sync/pip install output — strip downloads, short-circuit when up-to-date"
3
+ match_command = "^uv\\s+(sync|pip\\s+install)\\b"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^\\s*$",
7
+ "^\\s+Downloading ",
8
+ "^\\s+Using cached ",
9
+ "^\\s+Preparing ",
10
+ ]
11
+ match_output = [
12
+ { pattern = "Audited \\d+ package", message = "ok (up to date)" },
13
+ ]
14
+ max_lines = 20
15
+
16
+ [[tests.uv-sync]]
17
+ name = "audited packages short-circuits to ok"
18
+ input = """
19
+ Resolved 42 packages in 123ms
20
+ Audited 42 packages in 0.05ms
21
+ """
22
+ expected = "ok (up to date)"
23
+
24
+ [[tests.uv-sync]]
25
+ name = "install strips download and cached lines"
26
+ input = """
27
+ Downloading requests-2.31.0-py3-none-any.whl (62.6 kB)
28
+ Using cached certifi-2023.11.17-py3-none-any.whl (162 kB)
29
+ Preparing packages...
30
+ Installed 5 packages in 23ms
31
+ + certifi==2023.11.17
32
+ + charset-normalizer==3.3.2
33
+ + idna==3.6
34
+ + requests==2.31.0
35
+ + urllib3==2.1.0
36
+ """
37
+ expected = "Installed 5 packages in 23ms\n + certifi==2023.11.17\n + charset-normalizer==3.3.2\n + idna==3.6\n + requests==2.31.0\n + urllib3==2.1.0"
@@ -0,0 +1,99 @@
1
+ [filters.xcodebuild]
2
+ description = "Compact xcodebuild output — strip build phases, keep errors/warnings/summary"
3
+ match_command = "^xcodebuild\\b"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^\\s*$",
7
+ "^CompileC\\s",
8
+ "^CompileSwift\\s",
9
+ "^Ld\\s",
10
+ "^CreateBuildDirectory\\s",
11
+ "^MkDir\\s",
12
+ "^ProcessInfoPlistFile\\s",
13
+ "^CopySwiftLibs\\s",
14
+ "^CodeSign\\s",
15
+ "^Signing Identity:",
16
+ "^RegisterWithLaunchServices",
17
+ "^Validate\\s",
18
+ "^ProcessProductPackaging",
19
+ "^Touch\\s",
20
+ "^LinkStoryboards",
21
+ "^CompileStoryboard",
22
+ "^CompileAssetCatalog",
23
+ "^GenerateDSYMFile",
24
+ "^PhaseScriptExecution",
25
+ "^PBXCp\\s",
26
+ "^SetMode\\s",
27
+ "^SetOwnerAndGroup\\s",
28
+ "^Ditto\\s",
29
+ "^CpResource\\s",
30
+ "^CpHeader\\s",
31
+ "^\\s+cd\\s+/",
32
+ "^\\s+export\\s",
33
+ "^\\s+/Applications/Xcode",
34
+ "^\\s+/usr/bin/",
35
+ "^\\s+builtin-",
36
+ "^note: Using new build system",
37
+ ]
38
+ max_lines = 60
39
+ on_empty = "xcodebuild: ok"
40
+
41
+ [[tests.xcodebuild]]
42
+ name = "strips build phases, keeps errors and summary"
43
+ input = """
44
+ note: Using new build system
45
+ CompileSwift normal arm64 /Users/dev/App/ViewController.swift
46
+ cd /Users/dev/App
47
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -c
48
+ CompileSwift normal arm64 /Users/dev/App/AppDelegate.swift
49
+ cd /Users/dev/App
50
+ export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
51
+ Ld /Users/dev/Build/Products/Debug/App normal arm64
52
+ cd /Users/dev/App
53
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
54
+ CodeSign /Users/dev/Build/Products/Debug/App.app
55
+ cd /Users/dev/App
56
+ builtin-codesign --force --sign
57
+
58
+ /Users/dev/App/ViewController.swift:42:9: error: use of unresolved identifier 'foo'
59
+ /Users/dev/App/Model.swift:18:5: warning: variable 'x' was never used
60
+
61
+ ** BUILD FAILED **
62
+ """
63
+ expected = "/Users/dev/App/ViewController.swift:42:9: error: use of unresolved identifier 'foo'\n/Users/dev/App/Model.swift:18:5: warning: variable 'x' was never used\n** BUILD FAILED **"
64
+
65
+ [[tests.xcodebuild]]
66
+ name = "clean build success"
67
+ input = """
68
+ note: Using new build system
69
+ CompileSwift normal arm64 /Users/dev/App/Main.swift
70
+ cd /Users/dev/App
71
+ Ld /Users/dev/Build/Products/Debug/App normal arm64
72
+ cd /Users/dev/App
73
+ CodeSign /Users/dev/Build/Products/Debug/App.app
74
+ cd /Users/dev/App
75
+ builtin-codesign --force --sign
76
+
77
+ ** BUILD SUCCEEDED **
78
+ """
79
+ expected = "** BUILD SUCCEEDED **"
80
+
81
+ [[tests.xcodebuild]]
82
+ name = "test output keeps test results"
83
+ input = """
84
+ note: Using new build system
85
+ CompileSwift normal arm64 /Users/dev/AppTests/Tests.swift
86
+ cd /Users/dev/App
87
+ Test Suite 'All tests' started at 2026-03-10 12:00:00
88
+ Test Suite 'AppTests' started at 2026-03-10 12:00:00
89
+ Test Case '-[AppTests testExample]' passed (0.001 seconds).
90
+ Test Case '-[AppTests testFailing]' failed (0.002 seconds).
91
+ Test Suite 'AppTests' passed at 2026-03-10 12:00:01
92
+ Executed 2 tests, with 1 failure in 0.003 seconds
93
+ """
94
+ expected = "Test Suite 'All tests' started at 2026-03-10 12:00:00\nTest Suite 'AppTests' started at 2026-03-10 12:00:00\nTest Case '-[AppTests testExample]' passed (0.001 seconds).\nTest Case '-[AppTests testFailing]' failed (0.002 seconds).\nTest Suite 'AppTests' passed at 2026-03-10 12:00:01\nExecuted 2 tests, with 1 failure in 0.003 seconds"
95
+
96
+ [[tests.xcodebuild]]
97
+ name = "empty input passes through"
98
+ input = ""
99
+ expected = ""
@@ -0,0 +1,25 @@
1
+ [filters.yamllint]
2
+ description = "Compact yamllint output — strip blank lines, limit rows"
3
+ match_command = "^yamllint\\b"
4
+ strip_ansi = true
5
+ strip_lines_matching = [
6
+ "^\\s*$",
7
+ ]
8
+ max_lines = 50
9
+ truncate_lines_at = 120
10
+
11
+ [[tests.yamllint]]
12
+ name = "multi-warning output stripped of blank lines"
13
+ input = """
14
+ config.yml
15
+ 3:1 warning missing document start "---" (document-start)
16
+ 5:12 error too many spaces inside braces (braces)
17
+
18
+ 8:1 error wrong indentation: expected 2 but found 4 (indentation)
19
+ """
20
+ expected = "config.yml\n 3:1 warning missing document start \"---\" (document-start)\n 5:12 error too many spaces inside braces (braces)\n 8:1 error wrong indentation: expected 2 but found 4 (indentation)"
21
+
22
+ [[tests.yamllint]]
23
+ name = "empty input passes through"
24
+ input = ""
25
+ expected = ""