@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.
- package/dist/cli.js +64 -16
- package/package.json +1 -1
- package/src/ai.ts +8 -0
- package/src/cli.tsx +57 -18
- package/src/output-processor.ts +6 -1
- package/src/output-store.ts +58 -12
- package/src/tool-profiles.ts +139 -0
- package/temp/rtk/.claude/agents/code-reviewer.md +0 -221
- package/temp/rtk/.claude/agents/debugger.md +0 -519
- package/temp/rtk/.claude/agents/rtk-testing-specialist.md +0 -461
- package/temp/rtk/.claude/agents/rust-rtk.md +0 -511
- package/temp/rtk/.claude/agents/technical-writer.md +0 -355
- package/temp/rtk/.claude/commands/diagnose.md +0 -352
- package/temp/rtk/.claude/commands/test-routing.md +0 -362
- package/temp/rtk/.claude/hooks/bash/pre-commit-format.sh +0 -16
- package/temp/rtk/.claude/hooks/rtk-rewrite.sh +0 -70
- package/temp/rtk/.claude/hooks/rtk-suggest.sh +0 -152
- package/temp/rtk/.claude/rules/cli-testing.md +0 -526
- package/temp/rtk/.claude/skills/issue-triage/SKILL.md +0 -348
- package/temp/rtk/.claude/skills/issue-triage/templates/issue-comment.md +0 -134
- package/temp/rtk/.claude/skills/performance.md +0 -435
- package/temp/rtk/.claude/skills/pr-triage/SKILL.md +0 -315
- package/temp/rtk/.claude/skills/pr-triage/templates/review-comment.md +0 -71
- package/temp/rtk/.claude/skills/repo-recap.md +0 -206
- package/temp/rtk/.claude/skills/rtk-tdd/SKILL.md +0 -78
- package/temp/rtk/.claude/skills/rtk-tdd/references/testing-patterns.md +0 -124
- package/temp/rtk/.claude/skills/security-guardian.md +0 -503
- package/temp/rtk/.claude/skills/ship.md +0 -404
- package/temp/rtk/.github/workflows/benchmark.yml +0 -34
- package/temp/rtk/.github/workflows/dco-check.yaml +0 -12
- package/temp/rtk/.github/workflows/release-please.yml +0 -51
- package/temp/rtk/.github/workflows/release.yml +0 -343
- package/temp/rtk/.github/workflows/security-check.yml +0 -135
- package/temp/rtk/.github/workflows/validate-docs.yml +0 -78
- package/temp/rtk/.release-please-manifest.json +0 -3
- package/temp/rtk/ARCHITECTURE.md +0 -1491
- package/temp/rtk/CHANGELOG.md +0 -640
- package/temp/rtk/CLAUDE.md +0 -605
- package/temp/rtk/CONTRIBUTING.md +0 -199
- package/temp/rtk/Cargo.lock +0 -1668
- package/temp/rtk/Cargo.toml +0 -64
- package/temp/rtk/Formula/rtk.rb +0 -43
- package/temp/rtk/INSTALL.md +0 -390
- package/temp/rtk/LICENSE +0 -21
- package/temp/rtk/README.md +0 -386
- package/temp/rtk/README_es.md +0 -159
- package/temp/rtk/README_fr.md +0 -197
- package/temp/rtk/README_ja.md +0 -159
- package/temp/rtk/README_ko.md +0 -159
- package/temp/rtk/README_zh.md +0 -167
- package/temp/rtk/ROADMAP.md +0 -15
- package/temp/rtk/SECURITY.md +0 -217
- package/temp/rtk/TEST_EXEC_TIME.md +0 -102
- package/temp/rtk/build.rs +0 -57
- package/temp/rtk/docs/AUDIT_GUIDE.md +0 -432
- package/temp/rtk/docs/FEATURES.md +0 -1410
- package/temp/rtk/docs/TROUBLESHOOTING.md +0 -309
- package/temp/rtk/docs/filter-workflow.md +0 -102
- package/temp/rtk/docs/images/gain-dashboard.jpg +0 -0
- package/temp/rtk/docs/tracking.md +0 -583
- package/temp/rtk/hooks/opencode-rtk.ts +0 -39
- package/temp/rtk/hooks/rtk-awareness.md +0 -29
- package/temp/rtk/hooks/rtk-rewrite.sh +0 -61
- package/temp/rtk/hooks/test-rtk-rewrite.sh +0 -442
- package/temp/rtk/install.sh +0 -124
- package/temp/rtk/release-please-config.json +0 -10
- package/temp/rtk/scripts/benchmark.sh +0 -592
- package/temp/rtk/scripts/check-installation.sh +0 -162
- package/temp/rtk/scripts/install-local.sh +0 -37
- package/temp/rtk/scripts/rtk-economics.sh +0 -137
- package/temp/rtk/scripts/test-all.sh +0 -561
- package/temp/rtk/scripts/test-aristote.sh +0 -227
- package/temp/rtk/scripts/test-tracking.sh +0 -79
- package/temp/rtk/scripts/update-readme-metrics.sh +0 -32
- package/temp/rtk/scripts/validate-docs.sh +0 -73
- package/temp/rtk/src/aws_cmd.rs +0 -880
- package/temp/rtk/src/binlog.rs +0 -1645
- package/temp/rtk/src/cargo_cmd.rs +0 -1727
- package/temp/rtk/src/cc_economics.rs +0 -1157
- package/temp/rtk/src/ccusage.rs +0 -340
- package/temp/rtk/src/config.rs +0 -187
- package/temp/rtk/src/container.rs +0 -855
- package/temp/rtk/src/curl_cmd.rs +0 -134
- package/temp/rtk/src/deps.rs +0 -268
- package/temp/rtk/src/diff_cmd.rs +0 -367
- package/temp/rtk/src/discover/mod.rs +0 -274
- package/temp/rtk/src/discover/provider.rs +0 -388
- package/temp/rtk/src/discover/registry.rs +0 -2022
- package/temp/rtk/src/discover/report.rs +0 -202
- package/temp/rtk/src/discover/rules.rs +0 -667
- package/temp/rtk/src/display_helpers.rs +0 -402
- package/temp/rtk/src/dotnet_cmd.rs +0 -1771
- package/temp/rtk/src/dotnet_format_report.rs +0 -133
- package/temp/rtk/src/dotnet_trx.rs +0 -593
- package/temp/rtk/src/env_cmd.rs +0 -204
- package/temp/rtk/src/filter.rs +0 -462
- package/temp/rtk/src/filters/README.md +0 -52
- package/temp/rtk/src/filters/ansible-playbook.toml +0 -34
- package/temp/rtk/src/filters/basedpyright.toml +0 -47
- package/temp/rtk/src/filters/biome.toml +0 -45
- package/temp/rtk/src/filters/brew-install.toml +0 -37
- package/temp/rtk/src/filters/composer-install.toml +0 -40
- package/temp/rtk/src/filters/df.toml +0 -16
- package/temp/rtk/src/filters/dotnet-build.toml +0 -64
- package/temp/rtk/src/filters/du.toml +0 -16
- package/temp/rtk/src/filters/fail2ban-client.toml +0 -15
- package/temp/rtk/src/filters/gcc.toml +0 -49
- package/temp/rtk/src/filters/gcloud.toml +0 -22
- package/temp/rtk/src/filters/hadolint.toml +0 -24
- package/temp/rtk/src/filters/helm.toml +0 -29
- package/temp/rtk/src/filters/iptables.toml +0 -27
- package/temp/rtk/src/filters/jj.toml +0 -28
- package/temp/rtk/src/filters/jq.toml +0 -24
- package/temp/rtk/src/filters/make.toml +0 -41
- package/temp/rtk/src/filters/markdownlint.toml +0 -24
- package/temp/rtk/src/filters/mix-compile.toml +0 -27
- package/temp/rtk/src/filters/mix-format.toml +0 -15
- package/temp/rtk/src/filters/mvn-build.toml +0 -44
- package/temp/rtk/src/filters/oxlint.toml +0 -43
- package/temp/rtk/src/filters/ping.toml +0 -63
- package/temp/rtk/src/filters/pio-run.toml +0 -40
- package/temp/rtk/src/filters/poetry-install.toml +0 -50
- package/temp/rtk/src/filters/pre-commit.toml +0 -35
- package/temp/rtk/src/filters/ps.toml +0 -16
- package/temp/rtk/src/filters/quarto-render.toml +0 -41
- package/temp/rtk/src/filters/rsync.toml +0 -48
- package/temp/rtk/src/filters/shellcheck.toml +0 -27
- package/temp/rtk/src/filters/shopify-theme.toml +0 -29
- package/temp/rtk/src/filters/skopeo.toml +0 -45
- package/temp/rtk/src/filters/sops.toml +0 -16
- package/temp/rtk/src/filters/ssh.toml +0 -44
- package/temp/rtk/src/filters/stat.toml +0 -34
- package/temp/rtk/src/filters/swift-build.toml +0 -41
- package/temp/rtk/src/filters/systemctl-status.toml +0 -33
- package/temp/rtk/src/filters/terraform-plan.toml +0 -35
- package/temp/rtk/src/filters/tofu-fmt.toml +0 -16
- package/temp/rtk/src/filters/tofu-init.toml +0 -38
- package/temp/rtk/src/filters/tofu-plan.toml +0 -35
- package/temp/rtk/src/filters/tofu-validate.toml +0 -17
- package/temp/rtk/src/filters/trunk-build.toml +0 -39
- package/temp/rtk/src/filters/ty.toml +0 -50
- package/temp/rtk/src/filters/uv-sync.toml +0 -37
- package/temp/rtk/src/filters/xcodebuild.toml +0 -99
- package/temp/rtk/src/filters/yamllint.toml +0 -25
- package/temp/rtk/src/find_cmd.rs +0 -598
- package/temp/rtk/src/format_cmd.rs +0 -386
- package/temp/rtk/src/gain.rs +0 -723
- package/temp/rtk/src/gh_cmd.rs +0 -1651
- package/temp/rtk/src/git.rs +0 -2012
- package/temp/rtk/src/go_cmd.rs +0 -592
- package/temp/rtk/src/golangci_cmd.rs +0 -254
- package/temp/rtk/src/grep_cmd.rs +0 -288
- package/temp/rtk/src/gt_cmd.rs +0 -810
- package/temp/rtk/src/hook_audit_cmd.rs +0 -283
- package/temp/rtk/src/hook_check.rs +0 -171
- package/temp/rtk/src/init.rs +0 -1859
- package/temp/rtk/src/integrity.rs +0 -537
- package/temp/rtk/src/json_cmd.rs +0 -231
- package/temp/rtk/src/learn/detector.rs +0 -628
- package/temp/rtk/src/learn/mod.rs +0 -119
- package/temp/rtk/src/learn/report.rs +0 -184
- package/temp/rtk/src/lint_cmd.rs +0 -694
- package/temp/rtk/src/local_llm.rs +0 -316
- package/temp/rtk/src/log_cmd.rs +0 -248
- package/temp/rtk/src/ls.rs +0 -324
- package/temp/rtk/src/main.rs +0 -2482
- package/temp/rtk/src/mypy_cmd.rs +0 -389
- package/temp/rtk/src/next_cmd.rs +0 -241
- package/temp/rtk/src/npm_cmd.rs +0 -236
- package/temp/rtk/src/parser/README.md +0 -267
- package/temp/rtk/src/parser/error.rs +0 -46
- package/temp/rtk/src/parser/formatter.rs +0 -336
- package/temp/rtk/src/parser/mod.rs +0 -311
- package/temp/rtk/src/parser/types.rs +0 -119
- package/temp/rtk/src/pip_cmd.rs +0 -302
- package/temp/rtk/src/playwright_cmd.rs +0 -479
- package/temp/rtk/src/pnpm_cmd.rs +0 -573
- package/temp/rtk/src/prettier_cmd.rs +0 -221
- package/temp/rtk/src/prisma_cmd.rs +0 -482
- package/temp/rtk/src/psql_cmd.rs +0 -382
- package/temp/rtk/src/pytest_cmd.rs +0 -384
- package/temp/rtk/src/read.rs +0 -217
- package/temp/rtk/src/rewrite_cmd.rs +0 -50
- package/temp/rtk/src/ruff_cmd.rs +0 -402
- package/temp/rtk/src/runner.rs +0 -271
- package/temp/rtk/src/summary.rs +0 -297
- package/temp/rtk/src/tee.rs +0 -405
- package/temp/rtk/src/telemetry.rs +0 -248
- package/temp/rtk/src/toml_filter.rs +0 -1655
- package/temp/rtk/src/tracking.rs +0 -1416
- package/temp/rtk/src/tree.rs +0 -209
- package/temp/rtk/src/tsc_cmd.rs +0 -259
- package/temp/rtk/src/utils.rs +0 -432
- package/temp/rtk/src/verify_cmd.rs +0 -47
- package/temp/rtk/src/vitest_cmd.rs +0 -385
- package/temp/rtk/src/wc_cmd.rs +0 -401
- package/temp/rtk/src/wget_cmd.rs +0 -260
- package/temp/rtk/tests/fixtures/dotnet/build_failed.txt +0 -11
- package/temp/rtk/tests/fixtures/dotnet/format_changes.json +0 -31
- package/temp/rtk/tests/fixtures/dotnet/format_empty.json +0 -1
- package/temp/rtk/tests/fixtures/dotnet/format_success.json +0 -12
- package/temp/rtk/tests/fixtures/dotnet/test_failed.txt +0 -18
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# RTK Installation Verification Script
|
|
3
|
-
# Helps diagnose if you have the correct rtk (Token Killer) installed
|
|
4
|
-
|
|
5
|
-
set -e
|
|
6
|
-
|
|
7
|
-
RED='\033[0;31m'
|
|
8
|
-
GREEN='\033[0;32m'
|
|
9
|
-
YELLOW='\033[1;33m'
|
|
10
|
-
NC='\033[0m' # No Color
|
|
11
|
-
|
|
12
|
-
echo "═══════════════════════════════════════════════════════════"
|
|
13
|
-
echo " RTK Installation Verification"
|
|
14
|
-
echo "═══════════════════════════════════════════════════════════"
|
|
15
|
-
echo ""
|
|
16
|
-
|
|
17
|
-
# Check 1: RTK installed?
|
|
18
|
-
echo "1. Checking if RTK is installed..."
|
|
19
|
-
if command -v rtk &> /dev/null; then
|
|
20
|
-
echo -e " ${GREEN}✅ RTK is installed${NC}"
|
|
21
|
-
RTK_PATH=$(which rtk)
|
|
22
|
-
echo " Location: $RTK_PATH"
|
|
23
|
-
else
|
|
24
|
-
echo -e " ${RED}❌ RTK is NOT installed${NC}"
|
|
25
|
-
echo ""
|
|
26
|
-
echo " Install with:"
|
|
27
|
-
echo " curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh| sh"
|
|
28
|
-
exit 1
|
|
29
|
-
fi
|
|
30
|
-
echo ""
|
|
31
|
-
|
|
32
|
-
# Check 2: RTK version
|
|
33
|
-
echo "2. Checking RTK version..."
|
|
34
|
-
RTK_VERSION=$(rtk --version 2>/dev/null || echo "unknown")
|
|
35
|
-
echo " Version: $RTK_VERSION"
|
|
36
|
-
echo ""
|
|
37
|
-
|
|
38
|
-
# Check 3: Is it Token Killer or Type Kit?
|
|
39
|
-
echo "3. Verifying this is Token Killer (not Type Kit)..."
|
|
40
|
-
if rtk gain &>/dev/null || rtk gain --help &>/dev/null; then
|
|
41
|
-
echo -e " ${GREEN}✅ CORRECT - You have Rust Token Killer${NC}"
|
|
42
|
-
CORRECT_RTK=true
|
|
43
|
-
else
|
|
44
|
-
echo -e " ${RED}❌ WRONG - You have Rust Type Kit (different project!)${NC}"
|
|
45
|
-
echo ""
|
|
46
|
-
echo " You installed the wrong package. Fix it with:"
|
|
47
|
-
echo " cargo uninstall rtk"
|
|
48
|
-
echo " curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh | sh"
|
|
49
|
-
CORRECT_RTK=false
|
|
50
|
-
fi
|
|
51
|
-
echo ""
|
|
52
|
-
|
|
53
|
-
if [ "$CORRECT_RTK" = false ]; then
|
|
54
|
-
echo "═══════════════════════════════════════════════════════════"
|
|
55
|
-
echo -e "${RED}INSTALLATION CHECK FAILED${NC}"
|
|
56
|
-
echo "═══════════════════════════════════════════════════════════"
|
|
57
|
-
exit 1
|
|
58
|
-
fi
|
|
59
|
-
|
|
60
|
-
# Check 4: Available features
|
|
61
|
-
echo "4. Checking available features..."
|
|
62
|
-
FEATURES=()
|
|
63
|
-
MISSING_FEATURES=()
|
|
64
|
-
|
|
65
|
-
check_command() {
|
|
66
|
-
local cmd=$1
|
|
67
|
-
local name=$2
|
|
68
|
-
if rtk --help 2>/dev/null | grep -qw "$cmd"; then
|
|
69
|
-
echo -e " ${GREEN}✅${NC} $name"
|
|
70
|
-
FEATURES+=("$name")
|
|
71
|
-
else
|
|
72
|
-
echo -e " ${YELLOW}⚠️${NC} $name (missing - upgrade to fork?)"
|
|
73
|
-
MISSING_FEATURES+=("$name")
|
|
74
|
-
fi
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
check_command "gain" "Token savings analytics"
|
|
78
|
-
check_command "git" "Git operations"
|
|
79
|
-
check_command "gh" "GitHub CLI"
|
|
80
|
-
check_command "pnpm" "pnpm support"
|
|
81
|
-
check_command "vitest" "Vitest test runner"
|
|
82
|
-
check_command "lint" "ESLint/linters"
|
|
83
|
-
check_command "tsc" "TypeScript compiler"
|
|
84
|
-
check_command "next" "Next.js"
|
|
85
|
-
check_command "prettier" "Prettier"
|
|
86
|
-
check_command "playwright" "Playwright E2E"
|
|
87
|
-
check_command "prisma" "Prisma ORM"
|
|
88
|
-
check_command "discover" "Discover missed savings"
|
|
89
|
-
|
|
90
|
-
echo ""
|
|
91
|
-
|
|
92
|
-
# Check 5: CLAUDE.md initialization
|
|
93
|
-
echo "5. Checking Claude Code integration..."
|
|
94
|
-
GLOBAL_INIT=false
|
|
95
|
-
LOCAL_INIT=false
|
|
96
|
-
|
|
97
|
-
if [ -f "$HOME/.claude/CLAUDE.md" ] && grep -q "rtk" "$HOME/.claude/CLAUDE.md"; then
|
|
98
|
-
echo -e " ${GREEN}✅${NC} Global CLAUDE.md initialized (~/.claude/CLAUDE.md)"
|
|
99
|
-
GLOBAL_INIT=true
|
|
100
|
-
else
|
|
101
|
-
echo -e " ${YELLOW}⚠️${NC} Global CLAUDE.md not initialized"
|
|
102
|
-
echo " Run: rtk init --global"
|
|
103
|
-
fi
|
|
104
|
-
|
|
105
|
-
if [ -f "./CLAUDE.md" ] && grep -q "rtk" "./CLAUDE.md"; then
|
|
106
|
-
echo -e " ${GREEN}✅${NC} Local CLAUDE.md initialized (./CLAUDE.md)"
|
|
107
|
-
LOCAL_INIT=true
|
|
108
|
-
else
|
|
109
|
-
echo -e " ${YELLOW}⚠️${NC} Local CLAUDE.md not initialized in current directory"
|
|
110
|
-
echo " Run: rtk init (in your project directory)"
|
|
111
|
-
fi
|
|
112
|
-
echo ""
|
|
113
|
-
|
|
114
|
-
# Check 6: Auto-rewrite hook
|
|
115
|
-
echo "6. Checking auto-rewrite hook (optional but recommended)..."
|
|
116
|
-
if [ -f "$HOME/.claude/hooks/rtk-rewrite.sh" ]; then
|
|
117
|
-
echo -e " ${GREEN}✅${NC} Hook script installed"
|
|
118
|
-
if [ -f "$HOME/.claude/settings.json" ] && grep -q "rtk-rewrite.sh" "$HOME/.claude/settings.json"; then
|
|
119
|
-
echo -e " ${GREEN}✅${NC} Hook enabled in settings.json"
|
|
120
|
-
else
|
|
121
|
-
echo -e " ${YELLOW}⚠️${NC} Hook script exists but not enabled in settings.json"
|
|
122
|
-
echo " See README.md 'Auto-Rewrite Hook' section"
|
|
123
|
-
fi
|
|
124
|
-
else
|
|
125
|
-
echo -e " ${YELLOW}⚠️${NC} Auto-rewrite hook not installed (optional)"
|
|
126
|
-
echo " Install: cp .claude/hooks/rtk-rewrite.sh ~/.claude/hooks/"
|
|
127
|
-
fi
|
|
128
|
-
echo ""
|
|
129
|
-
|
|
130
|
-
# Summary
|
|
131
|
-
echo "═══════════════════════════════════════════════════════════"
|
|
132
|
-
echo " SUMMARY"
|
|
133
|
-
echo "═══════════════════════════════════════════════════════════"
|
|
134
|
-
|
|
135
|
-
if [ ${#MISSING_FEATURES[@]} -gt 0 ]; then
|
|
136
|
-
echo -e "${YELLOW}⚠️ You have a basic RTK installation${NC}"
|
|
137
|
-
echo ""
|
|
138
|
-
echo "Missing features:"
|
|
139
|
-
for feature in "${MISSING_FEATURES[@]}"; do
|
|
140
|
-
echo " - $feature"
|
|
141
|
-
done
|
|
142
|
-
echo ""
|
|
143
|
-
echo "To get all features, install the fork:"
|
|
144
|
-
echo " cargo uninstall rtk"
|
|
145
|
-
echo " curl -fsSL https://github.com/rtk-ai/rtk/blob/master/install.sh | sh"
|
|
146
|
-
echo " cd rtk && git checkout feat/all-features"
|
|
147
|
-
echo " cargo install --path . --force"
|
|
148
|
-
else
|
|
149
|
-
echo -e "${GREEN}✅ Full-featured RTK installation detected${NC}"
|
|
150
|
-
fi
|
|
151
|
-
|
|
152
|
-
echo ""
|
|
153
|
-
|
|
154
|
-
if [ "$GLOBAL_INIT" = false ] && [ "$LOCAL_INIT" = false ]; then
|
|
155
|
-
echo -e "${YELLOW}⚠️ RTK not initialized for Claude Code${NC}"
|
|
156
|
-
echo " Run: rtk init --global (for all projects)"
|
|
157
|
-
echo " Or: rtk init (for this project only)"
|
|
158
|
-
fi
|
|
159
|
-
|
|
160
|
-
echo ""
|
|
161
|
-
echo "Need help? See docs/TROUBLESHOOTING.md"
|
|
162
|
-
echo "═══════════════════════════════════════════════════════════"
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Install RTK from a local release build (builds from source, no network download).
|
|
3
|
-
|
|
4
|
-
set -euo pipefail
|
|
5
|
-
|
|
6
|
-
INSTALL_DIR="${1:-$HOME/.cargo/bin}"
|
|
7
|
-
INSTALL_PATH="${INSTALL_DIR}/rtk"
|
|
8
|
-
BINARY_PATH="./target/release/rtk"
|
|
9
|
-
|
|
10
|
-
if ! command -v cargo &>/dev/null; then
|
|
11
|
-
echo "error: cargo not found"
|
|
12
|
-
echo "install Rust: https://rustup.rs"
|
|
13
|
-
exit 1
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
echo "installing to: $INSTALL_DIR"
|
|
17
|
-
if [ -f "$BINARY_PATH" ] && [ -z "$(find src/ Cargo.toml Cargo.lock -newer "$BINARY_PATH" -print -quit 2>/dev/null)" ]; then
|
|
18
|
-
echo "binary is up to date"
|
|
19
|
-
else
|
|
20
|
-
echo "building rtk (release)..."
|
|
21
|
-
cargo build --release
|
|
22
|
-
fi
|
|
23
|
-
|
|
24
|
-
mkdir -p "$INSTALL_DIR"
|
|
25
|
-
install -m 755 "$BINARY_PATH" "$INSTALL_PATH"
|
|
26
|
-
|
|
27
|
-
echo "installed: $INSTALL_PATH"
|
|
28
|
-
echo "version: $("$INSTALL_PATH" --version)"
|
|
29
|
-
|
|
30
|
-
case ":$PATH:" in
|
|
31
|
-
*":$INSTALL_DIR:"*) ;;
|
|
32
|
-
*) echo
|
|
33
|
-
echo "warning: $INSTALL_DIR is not in your PATH"
|
|
34
|
-
echo "add this to your shell profile:"
|
|
35
|
-
echo " export PATH=\"\$PATH:$INSTALL_DIR\""
|
|
36
|
-
;;
|
|
37
|
-
esac
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# rtk-economics.sh
|
|
3
|
-
# Combine ccusage (tokens spent) with rtk (tokens saved) for economic analysis
|
|
4
|
-
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
# Colors for output
|
|
8
|
-
RED='\033[0;31m'
|
|
9
|
-
GREEN='\033[0;32m'
|
|
10
|
-
YELLOW='\033[1;33m'
|
|
11
|
-
BLUE='\033[0;34m'
|
|
12
|
-
NC='\033[0m' # No Color
|
|
13
|
-
|
|
14
|
-
# Get current month
|
|
15
|
-
CURRENT_MONTH=$(date +%Y-%m)
|
|
16
|
-
|
|
17
|
-
echo -e "${BLUE}📊 RTK Economic Impact Analysis${NC}"
|
|
18
|
-
echo "════════════════════════════════════════════════════════════════"
|
|
19
|
-
echo
|
|
20
|
-
|
|
21
|
-
# Check if ccusage is available
|
|
22
|
-
if ! command -v ccusage &> /dev/null; then
|
|
23
|
-
echo -e "${RED}Error: ccusage not found${NC}"
|
|
24
|
-
echo "Install: npm install -g @anthropics/claude-code-usage"
|
|
25
|
-
exit 1
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
# Check if rtk is available
|
|
29
|
-
if ! command -v rtk &> /dev/null; then
|
|
30
|
-
echo -e "${RED}Error: rtk not found${NC}"
|
|
31
|
-
echo "Install: cargo install --path ."
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
# Fetch ccusage data
|
|
36
|
-
echo -e "${YELLOW}Fetching token usage data from ccusage...${NC}"
|
|
37
|
-
if ! ccusage_json=$(ccusage monthly --json 2>/dev/null); then
|
|
38
|
-
echo -e "${RED}Failed to fetch ccusage data${NC}"
|
|
39
|
-
exit 1
|
|
40
|
-
fi
|
|
41
|
-
|
|
42
|
-
# Fetch rtk data
|
|
43
|
-
echo -e "${YELLOW}Fetching token savings data from rtk...${NC}"
|
|
44
|
-
if ! rtk_json=$(rtk gain --monthly --format json 2>/dev/null); then
|
|
45
|
-
echo -e "${RED}Failed to fetch rtk data${NC}"
|
|
46
|
-
exit 1
|
|
47
|
-
fi
|
|
48
|
-
|
|
49
|
-
echo
|
|
50
|
-
|
|
51
|
-
# Parse ccusage data for current month
|
|
52
|
-
ccusage_cost=$(echo "$ccusage_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .totalCost // 0")
|
|
53
|
-
ccusage_input=$(echo "$ccusage_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .inputTokens // 0")
|
|
54
|
-
ccusage_output=$(echo "$ccusage_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .outputTokens // 0")
|
|
55
|
-
ccusage_total=$(echo "$ccusage_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .totalTokens // 0")
|
|
56
|
-
|
|
57
|
-
# Parse rtk data for current month
|
|
58
|
-
rtk_saved=$(echo "$rtk_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .saved_tokens // 0")
|
|
59
|
-
rtk_commands=$(echo "$rtk_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .commands // 0")
|
|
60
|
-
rtk_input=$(echo "$rtk_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .input_tokens // 0")
|
|
61
|
-
rtk_output=$(echo "$rtk_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .output_tokens // 0")
|
|
62
|
-
rtk_pct=$(echo "$rtk_json" | jq -r ".monthly[] | select(.month == \"$CURRENT_MONTH\") | .savings_pct // 0")
|
|
63
|
-
|
|
64
|
-
# Estimate cost avoided (rough: $0.0001/token for mixed usage)
|
|
65
|
-
# More accurate would be to use ccusage's model-specific pricing
|
|
66
|
-
saved_cost=$(echo "scale=2; $rtk_saved * 0.0001" | bc 2>/dev/null || echo "0")
|
|
67
|
-
|
|
68
|
-
# Calculate total without rtk
|
|
69
|
-
total_without_rtk=$(echo "scale=2; $ccusage_cost + $saved_cost" | bc 2>/dev/null || echo "$ccusage_cost")
|
|
70
|
-
|
|
71
|
-
# Calculate savings percentage
|
|
72
|
-
if (( $(echo "$total_without_rtk > 0" | bc -l) )); then
|
|
73
|
-
savings_pct=$(echo "scale=1; ($saved_cost / $total_without_rtk) * 100" | bc 2>/dev/null || echo "0")
|
|
74
|
-
else
|
|
75
|
-
savings_pct="0"
|
|
76
|
-
fi
|
|
77
|
-
|
|
78
|
-
# Calculate cost per command
|
|
79
|
-
if [ "$rtk_commands" -gt 0 ]; then
|
|
80
|
-
cost_per_cmd_with=$(echo "scale=2; $ccusage_cost / $rtk_commands" | bc 2>/dev/null || echo "0")
|
|
81
|
-
cost_per_cmd_without=$(echo "scale=2; $total_without_rtk / $rtk_commands" | bc 2>/dev/null || echo "0")
|
|
82
|
-
else
|
|
83
|
-
cost_per_cmd_with="N/A"
|
|
84
|
-
cost_per_cmd_without="N/A"
|
|
85
|
-
fi
|
|
86
|
-
|
|
87
|
-
# Format numbers
|
|
88
|
-
format_number() {
|
|
89
|
-
local num=$1
|
|
90
|
-
if [ "$num" = "0" ] || [ "$num" = "N/A" ]; then
|
|
91
|
-
echo "$num"
|
|
92
|
-
else
|
|
93
|
-
echo "$num" | numfmt --to=si 2>/dev/null || echo "$num"
|
|
94
|
-
fi
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
# Display report
|
|
98
|
-
cat << EOF
|
|
99
|
-
${GREEN}💰 Economic Impact Report - $CURRENT_MONTH${NC}
|
|
100
|
-
════════════════════════════════════════════════════════════════
|
|
101
|
-
|
|
102
|
-
${BLUE}Tokens Consumed (via Claude API):${NC}
|
|
103
|
-
Input tokens: $(format_number $ccusage_input)
|
|
104
|
-
Output tokens: $(format_number $ccusage_output)
|
|
105
|
-
Total tokens: $(format_number $ccusage_total)
|
|
106
|
-
${RED}Actual cost: \$$ccusage_cost${NC}
|
|
107
|
-
|
|
108
|
-
${BLUE}Tokens Saved by rtk:${NC}
|
|
109
|
-
Commands executed: $rtk_commands
|
|
110
|
-
Input avoided: $(format_number $rtk_input) tokens
|
|
111
|
-
Output generated: $(format_number $rtk_output) tokens
|
|
112
|
-
Total saved: $(format_number $rtk_saved) tokens (${rtk_pct}% reduction)
|
|
113
|
-
${GREEN}Cost avoided: ~\$$saved_cost${NC}
|
|
114
|
-
|
|
115
|
-
${BLUE}Economic Analysis:${NC}
|
|
116
|
-
Cost without rtk: \$$total_without_rtk (estimated)
|
|
117
|
-
Cost with rtk: \$$ccusage_cost (actual)
|
|
118
|
-
${GREEN}Net savings: \$$saved_cost ($savings_pct%)${NC}
|
|
119
|
-
ROI: ${GREEN}Infinite${NC} (rtk is free)
|
|
120
|
-
|
|
121
|
-
${BLUE}Efficiency Metrics:${NC}
|
|
122
|
-
Cost per command: \$$cost_per_cmd_without → \$$cost_per_cmd_with
|
|
123
|
-
Tokens per command: $(echo "scale=0; $rtk_input / $rtk_commands" | bc 2>/dev/null || echo "N/A") → $(echo "scale=0; $rtk_output / $rtk_commands" | bc 2>/dev/null || echo "N/A")
|
|
124
|
-
|
|
125
|
-
${BLUE}12-Month Projection:${NC}
|
|
126
|
-
Annual savings: ~\$$(echo "scale=2; $saved_cost * 12" | bc 2>/dev/null || echo "0")
|
|
127
|
-
Commands needed: $(echo "$rtk_commands * 12" | bc 2>/dev/null || echo "0") (at current rate)
|
|
128
|
-
|
|
129
|
-
════════════════════════════════════════════════════════════════
|
|
130
|
-
|
|
131
|
-
${YELLOW}Note:${NC} Cost estimates use \$0.0001/token average. Actual pricing varies by model.
|
|
132
|
-
See ccusage for precise model-specific costs.
|
|
133
|
-
|
|
134
|
-
${GREEN}Recommendation:${NC} Focus rtk usage on high-frequency commands (git, grep, ls)
|
|
135
|
-
for maximum cost reduction.
|
|
136
|
-
|
|
137
|
-
EOF
|