@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.
- package/dist/cli.js +52 -21
- package/package.json +1 -1
- package/src/ai.ts +77 -130
- package/src/cli.tsx +51 -21
- package/src/command-validator.ts +11 -0
- package/src/context-hints.ts +291 -0
- package/src/discover.ts +238 -0
- package/src/economy.ts +53 -0
- package/src/output-processor.ts +7 -18
- package/src/output-store.ts +65 -0
- package/src/providers/base.ts +3 -1
- package/src/providers/groq.ts +108 -0
- package/src/providers/index.ts +26 -2
- package/src/providers/providers.test.ts +4 -2
- package/src/providers/xai.ts +108 -0
- package/src/sessions-db.ts +81 -0
- package/temp/rtk/.claude/agents/code-reviewer.md +221 -0
- package/temp/rtk/.claude/agents/debugger.md +519 -0
- package/temp/rtk/.claude/agents/rtk-testing-specialist.md +461 -0
- package/temp/rtk/.claude/agents/rust-rtk.md +511 -0
- package/temp/rtk/.claude/agents/technical-writer.md +355 -0
- package/temp/rtk/.claude/commands/diagnose.md +352 -0
- package/temp/rtk/.claude/commands/test-routing.md +362 -0
- package/temp/rtk/.claude/hooks/bash/pre-commit-format.sh +16 -0
- package/temp/rtk/.claude/hooks/rtk-rewrite.sh +70 -0
- package/temp/rtk/.claude/hooks/rtk-suggest.sh +152 -0
- package/temp/rtk/.claude/rules/cli-testing.md +526 -0
- package/temp/rtk/.claude/skills/issue-triage/SKILL.md +348 -0
- package/temp/rtk/.claude/skills/issue-triage/templates/issue-comment.md +134 -0
- package/temp/rtk/.claude/skills/performance.md +435 -0
- package/temp/rtk/.claude/skills/pr-triage/SKILL.md +315 -0
- package/temp/rtk/.claude/skills/pr-triage/templates/review-comment.md +71 -0
- package/temp/rtk/.claude/skills/repo-recap.md +206 -0
- package/temp/rtk/.claude/skills/rtk-tdd/SKILL.md +78 -0
- package/temp/rtk/.claude/skills/rtk-tdd/references/testing-patterns.md +124 -0
- package/temp/rtk/.claude/skills/security-guardian.md +503 -0
- package/temp/rtk/.claude/skills/ship.md +404 -0
- package/temp/rtk/.github/workflows/benchmark.yml +34 -0
- package/temp/rtk/.github/workflows/dco-check.yaml +12 -0
- package/temp/rtk/.github/workflows/release-please.yml +51 -0
- package/temp/rtk/.github/workflows/release.yml +343 -0
- package/temp/rtk/.github/workflows/security-check.yml +135 -0
- package/temp/rtk/.github/workflows/validate-docs.yml +78 -0
- package/temp/rtk/.release-please-manifest.json +3 -0
- package/temp/rtk/ARCHITECTURE.md +1491 -0
- package/temp/rtk/CHANGELOG.md +640 -0
- package/temp/rtk/CLAUDE.md +605 -0
- package/temp/rtk/CONTRIBUTING.md +199 -0
- package/temp/rtk/Cargo.lock +1668 -0
- package/temp/rtk/Cargo.toml +64 -0
- package/temp/rtk/Formula/rtk.rb +43 -0
- package/temp/rtk/INSTALL.md +390 -0
- package/temp/rtk/LICENSE +21 -0
- package/temp/rtk/README.md +386 -0
- package/temp/rtk/README_es.md +159 -0
- package/temp/rtk/README_fr.md +197 -0
- package/temp/rtk/README_ja.md +159 -0
- package/temp/rtk/README_ko.md +159 -0
- package/temp/rtk/README_zh.md +167 -0
- package/temp/rtk/ROADMAP.md +15 -0
- package/temp/rtk/SECURITY.md +217 -0
- package/temp/rtk/TEST_EXEC_TIME.md +102 -0
- package/temp/rtk/build.rs +57 -0
- package/temp/rtk/docs/AUDIT_GUIDE.md +432 -0
- package/temp/rtk/docs/FEATURES.md +1410 -0
- package/temp/rtk/docs/TROUBLESHOOTING.md +309 -0
- package/temp/rtk/docs/filter-workflow.md +102 -0
- package/temp/rtk/docs/images/gain-dashboard.jpg +0 -0
- package/temp/rtk/docs/tracking.md +583 -0
- package/temp/rtk/hooks/opencode-rtk.ts +39 -0
- package/temp/rtk/hooks/rtk-awareness.md +29 -0
- package/temp/rtk/hooks/rtk-rewrite.sh +61 -0
- package/temp/rtk/hooks/test-rtk-rewrite.sh +442 -0
- package/temp/rtk/install.sh +124 -0
- package/temp/rtk/release-please-config.json +10 -0
- package/temp/rtk/scripts/benchmark.sh +592 -0
- package/temp/rtk/scripts/check-installation.sh +162 -0
- package/temp/rtk/scripts/install-local.sh +37 -0
- package/temp/rtk/scripts/rtk-economics.sh +137 -0
- package/temp/rtk/scripts/test-all.sh +561 -0
- package/temp/rtk/scripts/test-aristote.sh +227 -0
- package/temp/rtk/scripts/test-tracking.sh +79 -0
- package/temp/rtk/scripts/update-readme-metrics.sh +32 -0
- package/temp/rtk/scripts/validate-docs.sh +73 -0
- package/temp/rtk/src/aws_cmd.rs +880 -0
- package/temp/rtk/src/binlog.rs +1645 -0
- package/temp/rtk/src/cargo_cmd.rs +1727 -0
- package/temp/rtk/src/cc_economics.rs +1157 -0
- package/temp/rtk/src/ccusage.rs +340 -0
- package/temp/rtk/src/config.rs +187 -0
- package/temp/rtk/src/container.rs +855 -0
- package/temp/rtk/src/curl_cmd.rs +134 -0
- package/temp/rtk/src/deps.rs +268 -0
- package/temp/rtk/src/diff_cmd.rs +367 -0
- package/temp/rtk/src/discover/mod.rs +274 -0
- package/temp/rtk/src/discover/provider.rs +388 -0
- package/temp/rtk/src/discover/registry.rs +2022 -0
- package/temp/rtk/src/discover/report.rs +202 -0
- package/temp/rtk/src/discover/rules.rs +667 -0
- package/temp/rtk/src/display_helpers.rs +402 -0
- package/temp/rtk/src/dotnet_cmd.rs +1771 -0
- package/temp/rtk/src/dotnet_format_report.rs +133 -0
- package/temp/rtk/src/dotnet_trx.rs +593 -0
- package/temp/rtk/src/env_cmd.rs +204 -0
- package/temp/rtk/src/filter.rs +462 -0
- package/temp/rtk/src/filters/README.md +52 -0
- package/temp/rtk/src/filters/ansible-playbook.toml +34 -0
- package/temp/rtk/src/filters/basedpyright.toml +47 -0
- package/temp/rtk/src/filters/biome.toml +45 -0
- package/temp/rtk/src/filters/brew-install.toml +37 -0
- package/temp/rtk/src/filters/composer-install.toml +40 -0
- package/temp/rtk/src/filters/df.toml +16 -0
- package/temp/rtk/src/filters/dotnet-build.toml +64 -0
- package/temp/rtk/src/filters/du.toml +16 -0
- package/temp/rtk/src/filters/fail2ban-client.toml +15 -0
- package/temp/rtk/src/filters/gcc.toml +49 -0
- package/temp/rtk/src/filters/gcloud.toml +22 -0
- package/temp/rtk/src/filters/hadolint.toml +24 -0
- package/temp/rtk/src/filters/helm.toml +29 -0
- package/temp/rtk/src/filters/iptables.toml +27 -0
- package/temp/rtk/src/filters/jj.toml +28 -0
- package/temp/rtk/src/filters/jq.toml +24 -0
- package/temp/rtk/src/filters/make.toml +41 -0
- package/temp/rtk/src/filters/markdownlint.toml +24 -0
- package/temp/rtk/src/filters/mix-compile.toml +27 -0
- package/temp/rtk/src/filters/mix-format.toml +15 -0
- package/temp/rtk/src/filters/mvn-build.toml +44 -0
- package/temp/rtk/src/filters/oxlint.toml +43 -0
- package/temp/rtk/src/filters/ping.toml +63 -0
- package/temp/rtk/src/filters/pio-run.toml +40 -0
- package/temp/rtk/src/filters/poetry-install.toml +50 -0
- package/temp/rtk/src/filters/pre-commit.toml +35 -0
- package/temp/rtk/src/filters/ps.toml +16 -0
- package/temp/rtk/src/filters/quarto-render.toml +41 -0
- package/temp/rtk/src/filters/rsync.toml +48 -0
- package/temp/rtk/src/filters/shellcheck.toml +27 -0
- package/temp/rtk/src/filters/shopify-theme.toml +29 -0
- package/temp/rtk/src/filters/skopeo.toml +45 -0
- package/temp/rtk/src/filters/sops.toml +16 -0
- package/temp/rtk/src/filters/ssh.toml +44 -0
- package/temp/rtk/src/filters/stat.toml +34 -0
- package/temp/rtk/src/filters/swift-build.toml +41 -0
- package/temp/rtk/src/filters/systemctl-status.toml +33 -0
- package/temp/rtk/src/filters/terraform-plan.toml +35 -0
- package/temp/rtk/src/filters/tofu-fmt.toml +16 -0
- package/temp/rtk/src/filters/tofu-init.toml +38 -0
- package/temp/rtk/src/filters/tofu-plan.toml +35 -0
- package/temp/rtk/src/filters/tofu-validate.toml +17 -0
- package/temp/rtk/src/filters/trunk-build.toml +39 -0
- package/temp/rtk/src/filters/ty.toml +50 -0
- package/temp/rtk/src/filters/uv-sync.toml +37 -0
- package/temp/rtk/src/filters/xcodebuild.toml +99 -0
- package/temp/rtk/src/filters/yamllint.toml +25 -0
- package/temp/rtk/src/find_cmd.rs +598 -0
- package/temp/rtk/src/format_cmd.rs +386 -0
- package/temp/rtk/src/gain.rs +723 -0
- package/temp/rtk/src/gh_cmd.rs +1651 -0
- package/temp/rtk/src/git.rs +2012 -0
- package/temp/rtk/src/go_cmd.rs +592 -0
- package/temp/rtk/src/golangci_cmd.rs +254 -0
- package/temp/rtk/src/grep_cmd.rs +288 -0
- package/temp/rtk/src/gt_cmd.rs +810 -0
- package/temp/rtk/src/hook_audit_cmd.rs +283 -0
- package/temp/rtk/src/hook_check.rs +171 -0
- package/temp/rtk/src/init.rs +1859 -0
- package/temp/rtk/src/integrity.rs +537 -0
- package/temp/rtk/src/json_cmd.rs +231 -0
- package/temp/rtk/src/learn/detector.rs +628 -0
- package/temp/rtk/src/learn/mod.rs +119 -0
- package/temp/rtk/src/learn/report.rs +184 -0
- package/temp/rtk/src/lint_cmd.rs +694 -0
- package/temp/rtk/src/local_llm.rs +316 -0
- package/temp/rtk/src/log_cmd.rs +248 -0
- package/temp/rtk/src/ls.rs +324 -0
- package/temp/rtk/src/main.rs +2482 -0
- package/temp/rtk/src/mypy_cmd.rs +389 -0
- package/temp/rtk/src/next_cmd.rs +241 -0
- package/temp/rtk/src/npm_cmd.rs +236 -0
- package/temp/rtk/src/parser/README.md +267 -0
- package/temp/rtk/src/parser/error.rs +46 -0
- package/temp/rtk/src/parser/formatter.rs +336 -0
- package/temp/rtk/src/parser/mod.rs +311 -0
- package/temp/rtk/src/parser/types.rs +119 -0
- package/temp/rtk/src/pip_cmd.rs +302 -0
- package/temp/rtk/src/playwright_cmd.rs +479 -0
- package/temp/rtk/src/pnpm_cmd.rs +573 -0
- package/temp/rtk/src/prettier_cmd.rs +221 -0
- package/temp/rtk/src/prisma_cmd.rs +482 -0
- package/temp/rtk/src/psql_cmd.rs +382 -0
- package/temp/rtk/src/pytest_cmd.rs +384 -0
- package/temp/rtk/src/read.rs +217 -0
- package/temp/rtk/src/rewrite_cmd.rs +50 -0
- package/temp/rtk/src/ruff_cmd.rs +402 -0
- package/temp/rtk/src/runner.rs +271 -0
- package/temp/rtk/src/summary.rs +297 -0
- package/temp/rtk/src/tee.rs +405 -0
- package/temp/rtk/src/telemetry.rs +248 -0
- package/temp/rtk/src/toml_filter.rs +1655 -0
- package/temp/rtk/src/tracking.rs +1416 -0
- package/temp/rtk/src/tree.rs +209 -0
- package/temp/rtk/src/tsc_cmd.rs +259 -0
- package/temp/rtk/src/utils.rs +432 -0
- package/temp/rtk/src/verify_cmd.rs +47 -0
- package/temp/rtk/src/vitest_cmd.rs +385 -0
- package/temp/rtk/src/wc_cmd.rs +401 -0
- package/temp/rtk/src/wget_cmd.rs +260 -0
- package/temp/rtk/tests/fixtures/dotnet/build_failed.txt +11 -0
- package/temp/rtk/tests/fixtures/dotnet/format_changes.json +31 -0
- package/temp/rtk/tests/fixtures/dotnet/format_empty.json +1 -0
- package/temp/rtk/tests/fixtures/dotnet/format_success.json +12 -0
- package/temp/rtk/tests/fixtures/dotnet/test_failed.txt +18 -0
- package/dist/App.js +0 -404
- package/dist/Browse.js +0 -79
- package/dist/FuzzyPicker.js +0 -47
- package/dist/Onboarding.js +0 -51
- package/dist/Spinner.js +0 -12
- package/dist/StatusBar.js +0 -49
- package/dist/ai.js +0 -368
- package/dist/cache.js +0 -41
- package/dist/command-rewriter.js +0 -64
- package/dist/command-validator.js +0 -77
- package/dist/compression.js +0 -107
- package/dist/diff-cache.js +0 -107
- package/dist/economy.js +0 -79
- package/dist/expand-store.js +0 -38
- package/dist/file-cache.js +0 -72
- package/dist/file-index.js +0 -62
- package/dist/history.js +0 -62
- package/dist/lazy-executor.js +0 -54
- package/dist/line-dedup.js +0 -59
- package/dist/loop-detector.js +0 -75
- package/dist/mcp/install.js +0 -98
- package/dist/mcp/server.js +0 -569
- package/dist/noise-filter.js +0 -86
- package/dist/output-processor.js +0 -136
- package/dist/output-router.js +0 -41
- package/dist/parsers/base.js +0 -2
- package/dist/parsers/build.js +0 -64
- package/dist/parsers/errors.js +0 -101
- package/dist/parsers/files.js +0 -78
- package/dist/parsers/git.js +0 -99
- package/dist/parsers/index.js +0 -48
- package/dist/parsers/tests.js +0 -89
- package/dist/providers/anthropic.js +0 -39
- package/dist/providers/base.js +0 -4
- package/dist/providers/cerebras.js +0 -95
- package/dist/providers/index.js +0 -49
- package/dist/recipes/model.js +0 -20
- package/dist/recipes/storage.js +0 -136
- package/dist/search/content-search.js +0 -68
- package/dist/search/file-search.js +0 -61
- package/dist/search/filters.js +0 -34
- package/dist/search/index.js +0 -5
- package/dist/search/semantic.js +0 -320
- package/dist/session-boot.js +0 -59
- package/dist/session-context.js +0 -55
- package/dist/sessions-db.js +0 -120
- package/dist/smart-display.js +0 -286
- package/dist/snapshots.js +0 -51
- package/dist/supervisor.js +0 -112
- package/dist/test-watchlist.js +0 -131
- package/dist/tree.js +0 -94
- package/dist/usage-cache.js +0 -65
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
# RTK Token Savings Audit Guide
|
|
2
|
+
|
|
3
|
+
Complete guide to analyzing your rtk token savings with temporal breakdowns and data exports.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The `rtk gain` command provides comprehensive analytics for tracking your token savings across time periods.
|
|
8
|
+
|
|
9
|
+
**Database Location**: `~/.local/share/rtk/history.db`
|
|
10
|
+
**Retention Policy**: 90 days
|
|
11
|
+
**Scope**: Global across all projects, worktrees, and Claude sessions
|
|
12
|
+
|
|
13
|
+
## Quick Reference
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Default summary view
|
|
17
|
+
rtk gain
|
|
18
|
+
|
|
19
|
+
# Temporal breakdowns
|
|
20
|
+
rtk gain --daily # All days since tracking started
|
|
21
|
+
rtk gain --weekly # Aggregated by week
|
|
22
|
+
rtk gain --monthly # Aggregated by month
|
|
23
|
+
rtk gain --all # Show all breakdowns at once
|
|
24
|
+
|
|
25
|
+
# Export formats
|
|
26
|
+
rtk gain --all --format json > savings.json
|
|
27
|
+
rtk gain --all --format csv > savings.csv
|
|
28
|
+
|
|
29
|
+
# Combined flags
|
|
30
|
+
rtk gain --graph --history --quota # Classic view with extras
|
|
31
|
+
rtk gain --daily --weekly --monthly # Multiple breakdowns
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Command Options
|
|
35
|
+
|
|
36
|
+
### Temporal Flags
|
|
37
|
+
|
|
38
|
+
| Flag | Description | Output |
|
|
39
|
+
|------|-------------|--------|
|
|
40
|
+
| `--daily` | Day-by-day breakdown | All days with full metrics |
|
|
41
|
+
| `--weekly` | Week-by-week breakdown | Aggregated by Sunday-Saturday weeks |
|
|
42
|
+
| `--monthly` | Month-by-month breakdown | Aggregated by calendar month |
|
|
43
|
+
| `--all` | All time breakdowns | Daily + Weekly + Monthly combined |
|
|
44
|
+
|
|
45
|
+
### Classic Flags (still available)
|
|
46
|
+
|
|
47
|
+
| Flag | Description |
|
|
48
|
+
|------|-------------|
|
|
49
|
+
| `--graph` | ASCII graph of last 30 days |
|
|
50
|
+
| `--history` | Recent 10 commands |
|
|
51
|
+
| `--quota` | Monthly quota analysis (Pro/5x/20x tiers) |
|
|
52
|
+
| `--tier <TIER>` | Quota tier: pro, 5x, 20x (default: 20x) |
|
|
53
|
+
|
|
54
|
+
### Export Formats
|
|
55
|
+
|
|
56
|
+
| Format | Flag | Use Case |
|
|
57
|
+
|--------|------|----------|
|
|
58
|
+
| `text` | `--format text` (default) | Terminal display |
|
|
59
|
+
| `json` | `--format json` | Programmatic analysis, APIs |
|
|
60
|
+
| `csv` | `--format csv` | Excel, data analysis, plotting |
|
|
61
|
+
|
|
62
|
+
## Output Examples
|
|
63
|
+
|
|
64
|
+
### Daily Breakdown
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
📅 Daily Breakdown (3 days)
|
|
68
|
+
════════════════════════════════════════════════════════════════
|
|
69
|
+
Date Cmds Input Output Saved Save%
|
|
70
|
+
────────────────────────────────────────────────────────────────
|
|
71
|
+
2026-01-28 89 380.9K 26.7K 355.8K 93.4%
|
|
72
|
+
2026-01-29 102 894.5K 32.4K 863.7K 96.6%
|
|
73
|
+
2026-01-30 5 749 55 694 92.7%
|
|
74
|
+
────────────────────────────────────────────────────────────────
|
|
75
|
+
TOTAL 196 1.3M 59.2K 1.2M 95.6%
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Metrics explained:**
|
|
79
|
+
- **Cmds**: Number of rtk commands executed
|
|
80
|
+
- **Input**: Estimated tokens from raw command output
|
|
81
|
+
- **Output**: Actual tokens after rtk filtering
|
|
82
|
+
- **Saved**: Input - Output (tokens prevented from reaching LLM)
|
|
83
|
+
- **Save%**: Percentage reduction (Saved / Input × 100)
|
|
84
|
+
|
|
85
|
+
### Weekly Breakdown
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
📊 Weekly Breakdown (1 weeks)
|
|
89
|
+
════════════════════════════════════════════════════════════════════════
|
|
90
|
+
Week Cmds Input Output Saved Save%
|
|
91
|
+
────────────────────────────────────────────────────────────────────────
|
|
92
|
+
01-26 → 02-01 196 1.3M 59.2K 1.2M 95.6%
|
|
93
|
+
────────────────────────────────────────────────────────────────────────
|
|
94
|
+
TOTAL 196 1.3M 59.2K 1.2M 95.6%
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Week definition**: Sunday to Saturday (ISO week starting Sunday at 00:00)
|
|
98
|
+
|
|
99
|
+
### Monthly Breakdown
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
📆 Monthly Breakdown (1 months)
|
|
103
|
+
════════════════════════════════════════════════════════════════
|
|
104
|
+
Month Cmds Input Output Saved Save%
|
|
105
|
+
────────────────────────────────────────────────────────────────
|
|
106
|
+
2026-01 196 1.3M 59.2K 1.2M 95.6%
|
|
107
|
+
────────────────────────────────────────────────────────────────
|
|
108
|
+
TOTAL 196 1.3M 59.2K 1.2M 95.6%
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Month format**: YYYY-MM (calendar month)
|
|
112
|
+
|
|
113
|
+
### JSON Export
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"summary": {
|
|
118
|
+
"total_commands": 196,
|
|
119
|
+
"total_input": 1276098,
|
|
120
|
+
"total_output": 59244,
|
|
121
|
+
"total_saved": 1220217,
|
|
122
|
+
"avg_savings_pct": 95.62
|
|
123
|
+
},
|
|
124
|
+
"daily": [
|
|
125
|
+
{
|
|
126
|
+
"date": "2026-01-28",
|
|
127
|
+
"commands": 89,
|
|
128
|
+
"input_tokens": 380894,
|
|
129
|
+
"output_tokens": 26744,
|
|
130
|
+
"saved_tokens": 355779,
|
|
131
|
+
"savings_pct": 93.41
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"weekly": [...],
|
|
135
|
+
"monthly": [...]
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Use cases:**
|
|
140
|
+
- API integration
|
|
141
|
+
- Custom dashboards
|
|
142
|
+
- Automated reporting
|
|
143
|
+
- Data pipeline ingestion
|
|
144
|
+
|
|
145
|
+
### CSV Export
|
|
146
|
+
|
|
147
|
+
```csv
|
|
148
|
+
# Daily Data
|
|
149
|
+
date,commands,input_tokens,output_tokens,saved_tokens,savings_pct
|
|
150
|
+
2026-01-28,89,380894,26744,355779,93.41
|
|
151
|
+
2026-01-29,102,894455,32445,863744,96.57
|
|
152
|
+
|
|
153
|
+
# Weekly Data
|
|
154
|
+
week_start,week_end,commands,input_tokens,output_tokens,saved_tokens,savings_pct
|
|
155
|
+
2026-01-26,2026-02-01,196,1276098,59244,1220217,95.62
|
|
156
|
+
|
|
157
|
+
# Monthly Data
|
|
158
|
+
month,commands,input_tokens,output_tokens,saved_tokens,savings_pct
|
|
159
|
+
2026-01,196,1276098,59244,1220217,95.62
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Use cases:**
|
|
163
|
+
- Excel analysis
|
|
164
|
+
- Python/R data science
|
|
165
|
+
- Google Sheets dashboards
|
|
166
|
+
- Matplotlib/seaborn plotting
|
|
167
|
+
|
|
168
|
+
## Analysis Workflows
|
|
169
|
+
|
|
170
|
+
### Weekly Progress Tracking
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Generate weekly report every Monday
|
|
174
|
+
rtk gain --weekly --format csv > reports/week-$(date +%Y-%W).csv
|
|
175
|
+
|
|
176
|
+
# Compare this week vs last week
|
|
177
|
+
rtk gain --weekly | tail -3
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Monthly Cost Analysis
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
# Export monthly data for budget review
|
|
184
|
+
rtk gain --monthly --format json | jq '.monthly[] |
|
|
185
|
+
{month, saved_tokens, quota_pct: (.saved_tokens / 6000000 * 100)}'
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Data Science Analysis
|
|
189
|
+
|
|
190
|
+
```python
|
|
191
|
+
import pandas as pd
|
|
192
|
+
import subprocess
|
|
193
|
+
|
|
194
|
+
# Get CSV data
|
|
195
|
+
result = subprocess.run(['rtk', 'gain', '--all', '--format', 'csv'],
|
|
196
|
+
capture_output=True, text=True)
|
|
197
|
+
|
|
198
|
+
# Parse daily data
|
|
199
|
+
lines = result.stdout.split('\n')
|
|
200
|
+
daily_start = lines.index('# Daily Data') + 2
|
|
201
|
+
daily_end = lines.index('', daily_start)
|
|
202
|
+
daily_df = pd.read_csv(pd.StringIO('\n'.join(lines[daily_start:daily_end])))
|
|
203
|
+
|
|
204
|
+
# Plot savings trend
|
|
205
|
+
daily_df['date'] = pd.to_datetime(daily_df['date'])
|
|
206
|
+
daily_df.plot(x='date', y='savings_pct', kind='line')
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Excel Analysis
|
|
210
|
+
|
|
211
|
+
1. Export CSV: `rtk gain --all --format csv > rtk-data.csv`
|
|
212
|
+
2. Open in Excel
|
|
213
|
+
3. Create pivot tables:
|
|
214
|
+
- Daily trends (line chart)
|
|
215
|
+
- Weekly totals (bar chart)
|
|
216
|
+
- Savings % distribution (histogram)
|
|
217
|
+
|
|
218
|
+
### Dashboard Creation
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Generate dashboard data daily via cron
|
|
222
|
+
0 0 * * * rtk gain --all --format json > /var/www/dashboard/rtk-stats.json
|
|
223
|
+
|
|
224
|
+
# Serve with static site
|
|
225
|
+
cat > index.html <<'EOF'
|
|
226
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
227
|
+
<canvas id="savings"></canvas>
|
|
228
|
+
<script>
|
|
229
|
+
fetch('rtk-stats.json')
|
|
230
|
+
.then(r => r.json())
|
|
231
|
+
.then(data => {
|
|
232
|
+
new Chart(document.getElementById('savings'), {
|
|
233
|
+
type: 'line',
|
|
234
|
+
data: {
|
|
235
|
+
labels: data.daily.map(d => d.date),
|
|
236
|
+
datasets: [{
|
|
237
|
+
label: 'Daily Savings %',
|
|
238
|
+
data: data.daily.map(d => d.savings_pct)
|
|
239
|
+
}]
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
</script>
|
|
244
|
+
EOF
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Understanding Token Savings
|
|
248
|
+
|
|
249
|
+
### Token Estimation
|
|
250
|
+
|
|
251
|
+
rtk estimates tokens using `text.len() / 4` (4 characters per token average).
|
|
252
|
+
|
|
253
|
+
**Accuracy**: ±10% compared to actual LLM tokenization (sufficient for trends).
|
|
254
|
+
|
|
255
|
+
### Savings Calculation
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
Input Tokens = estimate_tokens(raw_command_output)
|
|
259
|
+
Output Tokens = estimate_tokens(rtk_filtered_output)
|
|
260
|
+
Saved Tokens = Input - Output
|
|
261
|
+
Savings % = (Saved / Input) × 100
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Typical Savings by Command
|
|
265
|
+
|
|
266
|
+
| Command | Typical Savings | Mechanism |
|
|
267
|
+
|---------|----------------|-----------|
|
|
268
|
+
| `rtk git status` | 77-93% | Compact stat format |
|
|
269
|
+
| `rtk eslint` | 84% | Group by rule |
|
|
270
|
+
| `rtk vitest run` | 94-99% | Show failures only |
|
|
271
|
+
| `rtk find` | 75% | Tree format |
|
|
272
|
+
| `rtk pnpm list` | 70-90% | Compact dependencies |
|
|
273
|
+
| `rtk grep` | 70% | Truncate + group |
|
|
274
|
+
|
|
275
|
+
## Database Management
|
|
276
|
+
|
|
277
|
+
### Inspect Raw Data
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# Location
|
|
281
|
+
ls -lh ~/.local/share/rtk/history.db
|
|
282
|
+
|
|
283
|
+
# Schema
|
|
284
|
+
sqlite3 ~/.local/share/rtk/history.db ".schema"
|
|
285
|
+
|
|
286
|
+
# Recent records
|
|
287
|
+
sqlite3 ~/.local/share/rtk/history.db \
|
|
288
|
+
"SELECT timestamp, rtk_cmd, saved_tokens FROM commands
|
|
289
|
+
ORDER BY timestamp DESC LIMIT 10"
|
|
290
|
+
|
|
291
|
+
# Total database size
|
|
292
|
+
sqlite3 ~/.local/share/rtk/history.db \
|
|
293
|
+
"SELECT COUNT(*),
|
|
294
|
+
SUM(saved_tokens) as total_saved,
|
|
295
|
+
MIN(DATE(timestamp)) as first_record,
|
|
296
|
+
MAX(DATE(timestamp)) as last_record
|
|
297
|
+
FROM commands"
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Backup & Restore
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
# Backup
|
|
304
|
+
cp ~/.local/share/rtk/history.db ~/backups/rtk-history-$(date +%Y%m%d).db
|
|
305
|
+
|
|
306
|
+
# Restore
|
|
307
|
+
cp ~/backups/rtk-history-20260128.db ~/.local/share/rtk/history.db
|
|
308
|
+
|
|
309
|
+
# Export for migration
|
|
310
|
+
sqlite3 ~/.local/share/rtk/history.db .dump > rtk-backup.sql
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Cleanup
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
# Manual cleanup (older than 90 days)
|
|
317
|
+
sqlite3 ~/.local/share/rtk/history.db \
|
|
318
|
+
"DELETE FROM commands WHERE timestamp < datetime('now', '-90 days')"
|
|
319
|
+
|
|
320
|
+
# Reset all data
|
|
321
|
+
rm ~/.local/share/rtk/history.db
|
|
322
|
+
# Next rtk command will recreate database
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Integration Examples
|
|
326
|
+
|
|
327
|
+
### GitHub Actions CI/CD
|
|
328
|
+
|
|
329
|
+
```yaml
|
|
330
|
+
# .github/workflows/rtk-stats.yml
|
|
331
|
+
name: RTK Stats Report
|
|
332
|
+
on:
|
|
333
|
+
schedule:
|
|
334
|
+
- cron: '0 0 * * 1' # Weekly on Monday
|
|
335
|
+
jobs:
|
|
336
|
+
stats:
|
|
337
|
+
runs-on: ubuntu-latest
|
|
338
|
+
steps:
|
|
339
|
+
- uses: actions/checkout@v3
|
|
340
|
+
- name: Install rtk
|
|
341
|
+
run: cargo install --path .
|
|
342
|
+
- name: Generate report
|
|
343
|
+
run: |
|
|
344
|
+
rtk gain --weekly --format json > stats/week-$(date +%Y-%W).json
|
|
345
|
+
- name: Commit stats
|
|
346
|
+
run: |
|
|
347
|
+
git add stats/
|
|
348
|
+
git commit -m "Weekly rtk stats"
|
|
349
|
+
git push
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### Slack Bot
|
|
353
|
+
|
|
354
|
+
```python
|
|
355
|
+
import subprocess
|
|
356
|
+
import json
|
|
357
|
+
import requests
|
|
358
|
+
|
|
359
|
+
def send_rtk_stats():
|
|
360
|
+
result = subprocess.run(['rtk', 'gain', '--format', 'json'],
|
|
361
|
+
capture_output=True, text=True)
|
|
362
|
+
data = json.loads(result.stdout)
|
|
363
|
+
|
|
364
|
+
message = f"""
|
|
365
|
+
📊 *RTK Token Savings Report*
|
|
366
|
+
|
|
367
|
+
Total Saved: {data['summary']['total_saved']:,} tokens
|
|
368
|
+
Savings Rate: {data['summary']['avg_savings_pct']:.1f}%
|
|
369
|
+
Commands: {data['summary']['total_commands']}
|
|
370
|
+
"""
|
|
371
|
+
|
|
372
|
+
requests.post(SLACK_WEBHOOK_URL, json={'text': message})
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
## Troubleshooting
|
|
376
|
+
|
|
377
|
+
### No data showing
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# Check if database exists
|
|
381
|
+
ls -lh ~/.local/share/rtk/history.db
|
|
382
|
+
|
|
383
|
+
# Check record count
|
|
384
|
+
sqlite3 ~/.local/share/rtk/history.db "SELECT COUNT(*) FROM commands"
|
|
385
|
+
|
|
386
|
+
# Run a tracked command to generate data
|
|
387
|
+
rtk git status
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### Export fails
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
# Check for pipe errors
|
|
394
|
+
rtk gain --format json 2>&1 | tee /tmp/rtk-debug.log | jq .
|
|
395
|
+
|
|
396
|
+
# Use release build to avoid warnings
|
|
397
|
+
cargo build --release
|
|
398
|
+
./target/release/rtk gain --format json
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### Incorrect statistics
|
|
402
|
+
|
|
403
|
+
Token estimation is a heuristic. For precise measurements:
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# Install tiktoken
|
|
407
|
+
pip install tiktoken
|
|
408
|
+
|
|
409
|
+
# Validate estimation
|
|
410
|
+
rtk git status > output.txt
|
|
411
|
+
python -c "
|
|
412
|
+
import tiktoken
|
|
413
|
+
enc = tiktoken.get_encoding('cl100k_base')
|
|
414
|
+
text = open('output.txt').read()
|
|
415
|
+
print(f'Actual tokens: {len(enc.encode(text))}')
|
|
416
|
+
print(f'rtk estimate: {len(text) // 4}')
|
|
417
|
+
"
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
## Best Practices
|
|
421
|
+
|
|
422
|
+
1. **Regular Exports**: `rtk gain --all --format json > monthly-$(date +%Y%m).json`
|
|
423
|
+
2. **Trend Analysis**: Compare week-over-week savings to identify optimization opportunities
|
|
424
|
+
3. **Command Profiling**: Use `--history` to see which commands save the most
|
|
425
|
+
4. **Backup Before Cleanup**: Always backup before manual database operations
|
|
426
|
+
5. **CI Integration**: Track savings across team in shared dashboards
|
|
427
|
+
|
|
428
|
+
## See Also
|
|
429
|
+
|
|
430
|
+
- [README.md](../README.md) - Full rtk documentation
|
|
431
|
+
- [CLAUDE.md](../CLAUDE.md) - Claude Code integration guide
|
|
432
|
+
- [ARCHITECTURE.md](../ARCHITECTURE.md) - Technical architecture
|