@curatedmcp/tokenshield 1.2.0 → 1.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 +33 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.js +31 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/run.d.ts +22 -0
- package/dist/commands/run.js +104 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/dashboard.js +37 -18
- package/dist/dashboard.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -12,6 +12,7 @@ import { runSetup } from "./commands/setup.js";
|
|
|
12
12
|
import { runIntegrationsList, runIntegrationsEnable, runIntegrationsShow, runIntegrationsDisable, } from "./commands/integrations.js";
|
|
13
13
|
import { runTelemetry } from "./commands/telemetry.js";
|
|
14
14
|
import { runLogin, runLogout, runWhoami } from "./commands/login.js";
|
|
15
|
+
import { runRun } from "./commands/run.js";
|
|
15
16
|
import { setOutputMode, c, dim, emit, isJson } from "./lib/ui.js";
|
|
16
17
|
import { ensureNumber, runCommand, installProcessHandlers } from "./lib/errors.js";
|
|
17
18
|
import { VERSION } from "./version.js";
|
|
@@ -229,6 +230,38 @@ integrations
|
|
|
229
230
|
.command("disable <target>")
|
|
230
231
|
.description("Remove TokenShield config (currently: only 'shell')")
|
|
231
232
|
.action((target) => runCommand(() => runIntegrationsDisable(target)));
|
|
233
|
+
// ── run ──────────────────────────────────────────────────────────────────────
|
|
234
|
+
// Wraps any AI tool (default: claude) with the right env + Keychain bypass.
|
|
235
|
+
// THIS IS THE COMMAND that makes TokenShield work on Pro/Max subscriptions.
|
|
236
|
+
program
|
|
237
|
+
.command("run")
|
|
238
|
+
.description("Run claude (or any tool) routed through TokenShield with strict API-key auth")
|
|
239
|
+
.option("--cmd <command>", "command to invoke (default: claude)")
|
|
240
|
+
.option("--no-bare", "don't auto-inject --bare for claude (allows Keychain — usually wrong)")
|
|
241
|
+
.option("--force", "skip the 'is the proxy running?' check", false)
|
|
242
|
+
.allowUnknownOption(true)
|
|
243
|
+
.addHelpText("after", `\n${c.bold("Examples")}
|
|
244
|
+
${c.cyan("$ tokenshield run -- \\\"explain this codebase\\\"")}
|
|
245
|
+
${dim("# routes claude through proxy, with Keychain bypassed via --bare")}
|
|
246
|
+
${c.cyan("$ tokenshield run -- --model claude-haiku-4-5 \\\"hi\\\"")}
|
|
247
|
+
${dim("# all post-`--` args pass through to claude untouched")}
|
|
248
|
+
${c.cyan("$ tokenshield run --cmd cursor-cli -- chat")}
|
|
249
|
+
${dim("# wrap a different tool (--bare auto-inject skipped for non-claude)")}
|
|
250
|
+
|
|
251
|
+
${c.bold("Why this exists")}
|
|
252
|
+
Claude Code stores OAuth tokens in your macOS Keychain after \`claude login\`.
|
|
253
|
+
Those tokens override ANTHROPIC_API_KEY and bypass the proxy entirely,
|
|
254
|
+
producing silent 401s with no obvious cause. \`tokenshield run\` invokes
|
|
255
|
+
\`claude --bare\` which strictly uses ANTHROPIC_API_KEY (no Keychain reads).
|
|
256
|
+
`)
|
|
257
|
+
.action((options, cmd) => {
|
|
258
|
+
runCommand(() => runRun({
|
|
259
|
+
passthroughArgs: cmd.args,
|
|
260
|
+
...(options["cmd"] ? { command: String(options["cmd"]) } : {}),
|
|
261
|
+
noBare: options["bare"] === false,
|
|
262
|
+
force: options["force"] === true,
|
|
263
|
+
}));
|
|
264
|
+
});
|
|
232
265
|
// ── login / logout / whoami ───────────────────────────────────────────────────
|
|
233
266
|
program
|
|
234
267
|
.command("login")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
1
2
|
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
+
import { homedir, platform } from "node:os";
|
|
3
4
|
import { join } from "node:path";
|
|
4
5
|
import { defaultConfig } from "@curatedmcp/tokenshield-core";
|
|
5
6
|
import { classifyApiKey, probeUpstream, checkPort } from "../lib/preflight.js";
|
|
@@ -9,8 +10,13 @@ import { c, sym, dim, emit, emitJson, isJson, say, heading } from "../lib/ui.js"
|
|
|
9
10
|
* Detect Claude Code OAuth credentials from a prior `claude login`.
|
|
10
11
|
* If present, Claude Code prefers OAuth Bearer tokens over ANTHROPIC_API_KEY,
|
|
11
12
|
* which routes broken auth through the proxy and produces 401s upstream.
|
|
13
|
+
*
|
|
14
|
+
* Checks both file-based caches (~/.claude/.credentials.json) AND the macOS
|
|
15
|
+
* Keychain (the actual real-world location on Mac, which is where the
|
|
16
|
+
* silent killer lives for most users).
|
|
12
17
|
*/
|
|
13
18
|
function detectClaudeOAuth() {
|
|
19
|
+
// 1. File-based caches (Linux + older Claude Code versions on macOS)
|
|
14
20
|
const home = process.env["HOME"] ?? homedir();
|
|
15
21
|
const candidates = [
|
|
16
22
|
join(home, ".claude", ".credentials.json"),
|
|
@@ -22,14 +28,29 @@ function detectClaudeOAuth() {
|
|
|
22
28
|
continue;
|
|
23
29
|
try {
|
|
24
30
|
const raw = readFileSync(p, "utf8");
|
|
25
|
-
// Look for OAuth-shaped fields without parsing PII
|
|
26
31
|
if (/access[_-]?token|oauth|refresh[_-]?token|bearer/i.test(raw)) {
|
|
27
|
-
return { found: true,
|
|
32
|
+
return { found: true, source: p };
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
catch {
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
return { found: true, source: p };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// 2. macOS Keychain — where Claude Code actually stores OAuth on Mac.
|
|
40
|
+
// We DON'T read the secret itself (would prompt for keychain unlock);
|
|
41
|
+
// we just check whether an item exists with the known service name.
|
|
42
|
+
if (platform() === "darwin") {
|
|
43
|
+
try {
|
|
44
|
+
// `security find-generic-password -s "Claude Code"` returns 0 if present.
|
|
45
|
+
// Using -g and discarding stderr to avoid any password prompt side-effects.
|
|
46
|
+
execSync('security find-generic-password -s "Claude Code" 2>/dev/null', {
|
|
47
|
+
stdio: ["ignore", "ignore", "ignore"],
|
|
48
|
+
timeout: 2000,
|
|
49
|
+
});
|
|
50
|
+
return { found: true, source: "macOS Keychain (service=\"Claude Code\")" };
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Either not found (exit != 0) or `security` missing — both safe to ignore
|
|
33
54
|
}
|
|
34
55
|
}
|
|
35
56
|
return { found: false };
|
|
@@ -81,20 +102,20 @@ export async function runDoctor() {
|
|
|
81
102
|
if (oauth.found) {
|
|
82
103
|
const apiKeyOk = ks.state === "ok";
|
|
83
104
|
if (apiKeyOk) {
|
|
84
|
-
// Worst case — both set
|
|
105
|
+
// Worst case — both set. OAuth wins. User thinks it's working.
|
|
85
106
|
checks.push({
|
|
86
107
|
name: "Claude Code auth",
|
|
87
108
|
status: "warn",
|
|
88
|
-
detail:
|
|
89
|
-
hint: `
|
|
109
|
+
detail: `OAuth + API key both present (OAuth at ${oauth.source}) — Claude Code will silently prefer OAuth and route broken auth through the proxy.`,
|
|
110
|
+
hint: "Fix: use `tokenshield run -- <your prompt>` (auto-injects --bare to force ANTHROPIC_API_KEY). Or remove the OAuth: `security delete-generic-password -s 'Claude Code'` on macOS.",
|
|
90
111
|
});
|
|
91
112
|
}
|
|
92
113
|
else {
|
|
93
114
|
checks.push({
|
|
94
115
|
name: "Claude Code auth",
|
|
95
116
|
status: "warn",
|
|
96
|
-
detail: `OAuth credentials found at ${oauth.
|
|
97
|
-
hint: "
|
|
117
|
+
detail: `OAuth credentials found at ${oauth.source}`,
|
|
118
|
+
hint: "Set ANTHROPIC_API_KEY in this shell, then use `tokenshield run -- <args>` which forces API-key auth via --bare.",
|
|
98
119
|
});
|
|
99
120
|
}
|
|
100
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface RunOptions {
|
|
2
|
+
/** Forwarded argv after the `--`. First element may be the command name (defaults to `claude`). */
|
|
3
|
+
passthroughArgs: string[];
|
|
4
|
+
/** Override the wrapped command (default: claude). */
|
|
5
|
+
command?: string;
|
|
6
|
+
/** Skip the --bare auto-inject (useful for non-Claude commands). */
|
|
7
|
+
noBare: boolean;
|
|
8
|
+
/** Bypass the daemon check (useful in CI/scripted contexts). */
|
|
9
|
+
force: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Wrap a child process so it routes through the TokenShield proxy with
|
|
13
|
+
* strict API-key auth (no Keychain, no OAuth bleed-through).
|
|
14
|
+
*
|
|
15
|
+
* For Claude Code specifically (the default), we inject `--bare` which the
|
|
16
|
+
* binary documents as: "Anthropic auth is strictly ANTHROPIC_API_KEY or
|
|
17
|
+
* apiKeyHelper. OAuth and keychain are never read."
|
|
18
|
+
*
|
|
19
|
+
* This is the canonical fix for the macOS Keychain interference that
|
|
20
|
+
* silently breaks Pro/Max users' first install.
|
|
21
|
+
*/
|
|
22
|
+
export declare function runRun(options: RunOptions): Promise<void>;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { defaultConfig } from "@curatedmcp/tokenshield-core";
|
|
3
|
+
import { c, sym, dim, emit, say } from "../lib/ui.js";
|
|
4
|
+
import { TokenShieldError } from "../lib/errors.js";
|
|
5
|
+
import { readDaemon } from "../lib/daemon.js";
|
|
6
|
+
import { classifyApiKey } from "../lib/preflight.js";
|
|
7
|
+
/**
|
|
8
|
+
* Wrap a child process so it routes through the TokenShield proxy with
|
|
9
|
+
* strict API-key auth (no Keychain, no OAuth bleed-through).
|
|
10
|
+
*
|
|
11
|
+
* For Claude Code specifically (the default), we inject `--bare` which the
|
|
12
|
+
* binary documents as: "Anthropic auth is strictly ANTHROPIC_API_KEY or
|
|
13
|
+
* apiKeyHelper. OAuth and keychain are never read."
|
|
14
|
+
*
|
|
15
|
+
* This is the canonical fix for the macOS Keychain interference that
|
|
16
|
+
* silently breaks Pro/Max users' first install.
|
|
17
|
+
*/
|
|
18
|
+
export async function runRun(options) {
|
|
19
|
+
const cfg = defaultConfig();
|
|
20
|
+
const proxyBase = `http://${cfg.bind}:${cfg.port}`;
|
|
21
|
+
// ── 1. Refuse to run if no proxy is live (unless --force) ────────────────
|
|
22
|
+
if (!options.force) {
|
|
23
|
+
const daemon = readDaemon();
|
|
24
|
+
if (daemon === null) {
|
|
25
|
+
throw new TokenShieldError({
|
|
26
|
+
code: "DAEMON_NOT_RUNNING",
|
|
27
|
+
message: "No TokenShield proxy is running. Requests would bypass the proxy entirely.",
|
|
28
|
+
nextSteps: [
|
|
29
|
+
"tokenshield up --daemon # start the proxy in the background",
|
|
30
|
+
"tokenshield run -- <args> # then re-run this command",
|
|
31
|
+
"# or pass --force to run anyway (defeats the purpose)",
|
|
32
|
+
],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// ── 2. Require ANTHROPIC_API_KEY in this shell ───────────────────────────
|
|
37
|
+
const apiKey = process.env["ANTHROPIC_API_KEY"];
|
|
38
|
+
const cls = classifyApiKey(apiKey);
|
|
39
|
+
if (cls.state !== "ok") {
|
|
40
|
+
throw new TokenShieldError({
|
|
41
|
+
code: "MISSING_API_KEY",
|
|
42
|
+
message: "ANTHROPIC_API_KEY is not set (or has the wrong prefix) in this shell.",
|
|
43
|
+
hint: cls.hint,
|
|
44
|
+
nextSteps: [
|
|
45
|
+
"1. Get an API key: https://console.anthropic.com/settings/keys",
|
|
46
|
+
"2. export ANTHROPIC_API_KEY=sk-ant-api03-...",
|
|
47
|
+
"3. tokenshield run -- <your command>",
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
// ── 3. Resolve the command + argv ────────────────────────────────────────
|
|
52
|
+
const cmd = options.command ?? "claude";
|
|
53
|
+
const args = [...options.passthroughArgs];
|
|
54
|
+
// For `claude`, inject --bare to force strict env-var auth. This is the
|
|
55
|
+
// ONE flag that bypasses Keychain reads on macOS — the #1 silent killer
|
|
56
|
+
// for new TokenShield users on Pro/Max subscriptions.
|
|
57
|
+
if (cmd === "claude" && !options.noBare && !args.includes("--bare")) {
|
|
58
|
+
args.unshift("--bare");
|
|
59
|
+
}
|
|
60
|
+
// ── 4. Build the child env ───────────────────────────────────────────────
|
|
61
|
+
const childEnv = {
|
|
62
|
+
...process.env,
|
|
63
|
+
ANTHROPIC_BASE_URL: proxyBase,
|
|
64
|
+
ANTHROPIC_API_KEY: apiKey,
|
|
65
|
+
// Belt-and-braces: clear any prior OAuth token env vars some shells
|
|
66
|
+
// export inadvertently after `claude login`.
|
|
67
|
+
CLAUDE_CODE_OAUTH_TOKEN: "",
|
|
68
|
+
};
|
|
69
|
+
// ── 5. Announce and exec ────────────────────────────────────────────────
|
|
70
|
+
say("");
|
|
71
|
+
say(`${sym.arrow} Routing ${c.bold(cmd + (args.length ? " " + args.join(" ") : ""))} through TokenShield`);
|
|
72
|
+
say(` ${dim("ANTHROPIC_BASE_URL=" + proxyBase)}`);
|
|
73
|
+
say(` ${dim("ANTHROPIC_API_KEY=…" + (apiKey ?? "").slice(-4) + " (strict — Keychain bypassed)")}`);
|
|
74
|
+
say("");
|
|
75
|
+
const child = spawn(cmd, args, {
|
|
76
|
+
stdio: "inherit",
|
|
77
|
+
env: childEnv,
|
|
78
|
+
});
|
|
79
|
+
await new Promise((resolve, reject) => {
|
|
80
|
+
child.on("error", (err) => {
|
|
81
|
+
if (err.code === "ENOENT") {
|
|
82
|
+
reject(new TokenShieldError({
|
|
83
|
+
code: "NOT_FOUND",
|
|
84
|
+
message: `Command not found: ${cmd}`,
|
|
85
|
+
nextSteps: [
|
|
86
|
+
cmd === "claude" ? "npm install -g @anthropic-ai/claude-code" : `install ${cmd} first`,
|
|
87
|
+
"then re-run: tokenshield run -- " + args.join(" "),
|
|
88
|
+
],
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
reject(err);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
child.on("exit", (code, signal) => {
|
|
96
|
+
if (signal !== null) {
|
|
97
|
+
emit(dim(`(child exited via ${signal})`));
|
|
98
|
+
process.exit(128 + (signal === "SIGINT" ? 2 : signal === "SIGTERM" ? 15 : 1));
|
|
99
|
+
}
|
|
100
|
+
process.exit(code ?? 0);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/dashboard.js
CHANGED
|
@@ -154,11 +154,16 @@ a:hover { text-decoration: underline; }
|
|
|
154
154
|
<div id="tier-banner" class="tier-banner"></div>
|
|
155
155
|
|
|
156
156
|
<div class="grid">
|
|
157
|
-
<div class="card
|
|
157
|
+
<div class="card">
|
|
158
158
|
<div class="label">Spent (24h)</div>
|
|
159
159
|
<div class="value" id="dollars-spent">$0.00</div>
|
|
160
160
|
<div class="sub" id="request-count">0 requests · 0 successful</div>
|
|
161
161
|
</div>
|
|
162
|
+
<div class="card savings" title="Bytes/dollars TokenShield processors stripped from outbound requests this window. Real numbers, from your actual traffic.">
|
|
163
|
+
<div class="label">Saved (24h)</div>
|
|
164
|
+
<div class="value" id="dollars-saved">$0.00</div>
|
|
165
|
+
<div class="sub" id="dollars-saved-sub">processors not yet active · run \`tokenshield bench\` to preview</div>
|
|
166
|
+
</div>
|
|
162
167
|
<div class="card">
|
|
163
168
|
<div class="label">Input tokens (24h)</div>
|
|
164
169
|
<div class="value" id="input-tokens">0</div>
|
|
@@ -169,11 +174,6 @@ a:hover { text-decoration: underline; }
|
|
|
169
174
|
<div class="value" id="output-tokens">0</div>
|
|
170
175
|
<div class="sub">most expensive line item on Opus</div>
|
|
171
176
|
</div>
|
|
172
|
-
<div class="card">
|
|
173
|
-
<div class="label">Projected weekly</div>
|
|
174
|
-
<div class="value" id="weekly-projected">$0.00</div>
|
|
175
|
-
<div class="sub">extrapolated from last 24h</div>
|
|
176
|
-
</div>
|
|
177
177
|
</div>
|
|
178
178
|
|
|
179
179
|
<div class="section">
|
|
@@ -207,10 +207,11 @@ a:hover { text-decoration: underline; }
|
|
|
207
207
|
<th class="num">Output</th>
|
|
208
208
|
<th class="num">Duration</th>
|
|
209
209
|
<th class="num">$</th>
|
|
210
|
+
<th class="num" title="Dollars saved by processors on this request">Saved</th>
|
|
210
211
|
<th>Status</th>
|
|
211
212
|
</tr>
|
|
212
213
|
</thead>
|
|
213
|
-
<tbody><tr><td colspan="
|
|
214
|
+
<tbody><tr><td colspan="9" class="muted">No requests recorded yet.</td></tr></tbody>
|
|
214
215
|
</table>
|
|
215
216
|
</div>
|
|
216
217
|
|
|
@@ -278,13 +279,14 @@ function renderDiagnostic(rec) {
|
|
|
278
279
|
cls = 'bad';
|
|
279
280
|
const pct = Math.round((failed.length / apiCalls.length) * 100);
|
|
280
281
|
html = '<div class="diag-title"><span class="icon">!</span>' + pct + '% of API calls failing with 401/403 — auth not reaching Anthropic</div>' +
|
|
281
|
-
'<strong
|
|
282
|
-
'  
|
|
283
|
-
'
|
|
284
|
-
'
|
|
285
|
-
'
|
|
286
|
-
'
|
|
287
|
-
'
|
|
282
|
+
'<strong>One-line fix (works for 9 out of 10 cases):</strong><br>' +
|
|
283
|
+
' <code>tokenshield run -- "your prompt here"</code><br>' +
|
|
284
|
+
'<br>That wrapper invokes <code>claude --bare</code> which strictly uses <code>ANTHROPIC_API_KEY</code> (no Keychain, no OAuth).' +
|
|
285
|
+
'<br><br><strong>Why this happens:</strong> Claude Code stores OAuth tokens in your macOS Keychain after <code>claude login</code>. Those tokens override <code>ANTHROPIC_API_KEY</code>, are sent as Bearer auth, and Anthropic rejects them through the proxy.' +
|
|
286
|
+
'<br><br><strong>If <code>tokenshield run</code> still fails:</strong><br>' +
|
|
287
|
+
' 1. Check key in shell: <code>echo $ANTHROPIC_API_KEY</code> — must start with <code>sk-ant-</code><br>' +
|
|
288
|
+
' 2. Verify key works directly: <code>curl -s -o /dev/null -w "%{http_code}\\\\n" -X POST https://api.anthropic.com/v1/messages -H "x-api-key: $ANTHROPIC_API_KEY" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" -d \\'{"model":"claude-haiku-4-5","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}\\'</code> — must print <code>200</code><br>' +
|
|
289
|
+
' 3. Run <code>tokenshield doctor</code> for the full diagnostic';
|
|
288
290
|
} else if (fiveXx.length >= apiCalls.length * 0.3 && fiveXx.length > 0) {
|
|
289
291
|
cls = 'warn';
|
|
290
292
|
html = '<div class="diag-title"><span class="icon">!</span>Upstream errors from Anthropic</div>' +
|
|
@@ -308,7 +310,7 @@ function renderRecent(rec) {
|
|
|
308
310
|
const msg = rec.length === 0
|
|
309
311
|
? 'No requests recorded yet.'
|
|
310
312
|
: 'No Anthropic API calls yet (' + rec.length + ' non-API probe' + (rec.length === 1 ? '' : 's') + ' hidden — click "Show probes" to view).';
|
|
311
|
-
recBody.innerHTML = '<tr><td colspan="
|
|
313
|
+
recBody.innerHTML = '<tr><td colspan="9" class="muted">' + msg + '</td></tr>';
|
|
312
314
|
return;
|
|
313
315
|
}
|
|
314
316
|
|
|
@@ -319,6 +321,12 @@ function renderRecent(rec) {
|
|
|
319
321
|
const pillCls = isOk ? 'ok' : (isAuthFail ? 'warn' : 'err');
|
|
320
322
|
const isProbe = !isApiCall(r);
|
|
321
323
|
const modelDisplay = (r.model === 'unknown' && isProbe) ? '<span class="muted">—</span>' : r.model;
|
|
324
|
+
const processors = (r.processorsApplied || []);
|
|
325
|
+
const savedCell = r.dollarsSaved > 0
|
|
326
|
+
? '<span style="color: var(--accent); font-weight: 600;">' + fmtDollars(r.dollarsSaved) + '</span>'
|
|
327
|
+
: (processors.length > 0
|
|
328
|
+
? '<span class="muted" title="' + processors.join(', ') + '">' + processors.length + ' ✓</span>'
|
|
329
|
+
: '<span class="muted">—</span>');
|
|
322
330
|
return '<tr class="' + (isProbe ? 'row-faded' : '') + '">' +
|
|
323
331
|
'<td class="muted">' + fmtTime(r.timestamp) + '</td>' +
|
|
324
332
|
'<td>' + modelDisplay + '</td>' +
|
|
@@ -327,6 +335,7 @@ function renderRecent(rec) {
|
|
|
327
335
|
'<td class="num">' + fmtNum(r.usageRaw.outputTokens) + '</td>' +
|
|
328
336
|
'<td class="num muted">' + fmtMs(r.durationMs) + '</td>' +
|
|
329
337
|
'<td class="num">' + fmtDollars(r.dollarsRaw) + '</td>' +
|
|
338
|
+
'<td class="num">' + savedCell + '</td>' +
|
|
330
339
|
'<td><span class="pill ' + pillCls + '">' + status + '</span></td>' +
|
|
331
340
|
'</tr>';
|
|
332
341
|
}).join('');
|
|
@@ -359,9 +368,19 @@ async function refresh() {
|
|
|
359
368
|
document.getElementById('input-tokens').textContent = fmtNum(sum.totalInputTokensRaw);
|
|
360
369
|
document.getElementById('output-tokens').textContent = fmtNum(sum.totalOutputTokensRaw);
|
|
361
370
|
|
|
362
|
-
|
|
363
|
-
const
|
|
364
|
-
|
|
371
|
+
// Saved card — the actual byte/dollar deltas processors stripped from outbound requests
|
|
372
|
+
const dollarsSaved = Number(sum.dollarsSaved || 0);
|
|
373
|
+
const requestsTouched = apiCalls.filter((r) => (r.processorsApplied || []).length > 0).length;
|
|
374
|
+
document.getElementById('dollars-saved').textContent = fmtDollars(dollarsSaved);
|
|
375
|
+
const savedSub = document.getElementById('dollars-saved-sub');
|
|
376
|
+
if (dollarsSaved > 0) {
|
|
377
|
+
const pct = sum.dollarsRaw > 0 ? Math.round((dollarsSaved / (sum.dollarsRaw + dollarsSaved)) * 100) : 0;
|
|
378
|
+
savedSub.textContent = pct + '% saved · ' + requestsTouched + ' request' + (requestsTouched === 1 ? '' : 's') + ' compressed';
|
|
379
|
+
} else if (apiCalls.length === 0) {
|
|
380
|
+
savedSub.textContent = 'no traffic yet · run \`tokenshield run -- "hi"\` to test';
|
|
381
|
+
} else {
|
|
382
|
+
savedSub.textContent = 'processors found nothing to dedupe yet · keep using it';
|
|
383
|
+
}
|
|
365
384
|
|
|
366
385
|
const modelBody = document.querySelector('#by-model tbody');
|
|
367
386
|
const realModels = (sum.byModel || []).filter((m) => m.model && m.model !== 'unknown');
|
package/dist/dashboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,IAM7B;IACC,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IACjF,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC;IACtE,MAAM,aAAa,GAAG,KAAK;QACzB,CAAC,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,cAAc,+CAA+C;QAC5F,CAAC,CAAC,yGAAyG,CAAC;IAC9G,OAAO;;;;;qBAKY,IAAI,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4HA,IAAI,CAAC,OAAO;;qBAExB,aAAa,YAAY,aAAa,KAAK,aAAa;;;;;8CAK/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2HA6CkD,SAAS
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,IAM7B;IACC,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IACjF,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC;IACtE,MAAM,aAAa,GAAG,KAAK;QACzB,CAAC,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,cAAc,+CAA+C;QAC5F,CAAC,CAAC,yGAAyG,CAAC;IAC9G,OAAO;;;;;qBAKY,IAAI,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4HA,IAAI,CAAC,OAAO;;qBAExB,aAAa,YAAY,aAAa,KAAK,aAAa;;;;;8CAK/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2HA6CkD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDA8B5E,SAAS;;;;;;;;;;;;;;;mBAe9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+FAuCyC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAmFrD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iJAqCmE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuDlJ,CAAC;AACT,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.3.0";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@curatedmcp/tokenshield",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "TokenShield CLI — cut your Claude Code bill 40–70%. Local proxy. Your API key never leaves your machine.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@curatedmcp/tokenshield-core": "^1.
|
|
35
|
+
"@curatedmcp/tokenshield-core": "^1.3.0",
|
|
36
36
|
"commander": "^12.0.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|