@curatedmcp/tokenshield 1.0.2 → 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 +49 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.js +80 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.js +91 -0
- package/dist/commands/login.js.map +1 -0
- 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/commands/up.js +24 -2
- package/dist/commands/up.js.map +1 -1
- package/dist/dashboard.d.ts +2 -0
- package/dist/dashboard.js +116 -18
- package/dist/dashboard.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.js +2 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/license.d.ts +37 -0
- package/dist/lib/license.js +100 -0
- package/dist/lib/license.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -11,6 +11,8 @@ import { runLogs } from "./commands/logs.js";
|
|
|
11
11
|
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
|
+
import { runLogin, runLogout, runWhoami } from "./commands/login.js";
|
|
15
|
+
import { runRun } from "./commands/run.js";
|
|
14
16
|
import { setOutputMode, c, dim, emit, isJson } from "./lib/ui.js";
|
|
15
17
|
import { ensureNumber, runCommand, installProcessHandlers } from "./lib/errors.js";
|
|
16
18
|
import { VERSION } from "./version.js";
|
|
@@ -228,6 +230,53 @@ integrations
|
|
|
228
230
|
.command("disable <target>")
|
|
229
231
|
.description("Remove TokenShield config (currently: only 'shell')")
|
|
230
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
|
+
});
|
|
265
|
+
// ── login / logout / whoami ───────────────────────────────────────────────────
|
|
266
|
+
program
|
|
267
|
+
.command("login")
|
|
268
|
+
.description("Link this machine to your TokenShield Pro license")
|
|
269
|
+
.option("--token <token>", "license token from curatedmcp.com/tokenshield/connect")
|
|
270
|
+
.addHelpText("after", `\n${c.bold("How to get a token")}\n 1. ${c.cyan("https://www.curatedmcp.com/tokenshield/upgrade")} ${dim("# subscribe ($19/mo)")}\n 2. Copy your token from the post-checkout connect page\n 3. ${c.cyan("tokenshield login --token <paste>")}\n`)
|
|
271
|
+
.action((raw) => runCommand(() => runLogin({ ...(raw["token"] ? { token: String(raw["token"]) } : {}) })));
|
|
272
|
+
program
|
|
273
|
+
.command("logout")
|
|
274
|
+
.description("Remove the stored license token from this machine")
|
|
275
|
+
.action(() => runCommand(runLogout));
|
|
276
|
+
program
|
|
277
|
+
.command("whoami")
|
|
278
|
+
.description("Show the license linked to this machine + current tier")
|
|
279
|
+
.action(() => runCommand(runWhoami));
|
|
231
280
|
// ── telemetry ─────────────────────────────────────────────────────────────────
|
|
232
281
|
const telemetryCmd = program
|
|
233
282
|
.command("telemetry")
|
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,8 +1,60 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
3
|
+
import { homedir, platform } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
2
5
|
import { defaultConfig } from "@curatedmcp/tokenshield-core";
|
|
3
6
|
import { classifyApiKey, probeUpstream, checkPort } from "../lib/preflight.js";
|
|
4
7
|
import { readDaemon } from "../lib/daemon.js";
|
|
5
8
|
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`.
|
|
11
|
+
* If present, Claude Code prefers OAuth Bearer tokens over ANTHROPIC_API_KEY,
|
|
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).
|
|
17
|
+
*/
|
|
18
|
+
function detectClaudeOAuth() {
|
|
19
|
+
// 1. File-based caches (Linux + older Claude Code versions on macOS)
|
|
20
|
+
const home = process.env["HOME"] ?? homedir();
|
|
21
|
+
const candidates = [
|
|
22
|
+
join(home, ".claude", ".credentials.json"),
|
|
23
|
+
join(home, ".claude", "credentials.json"),
|
|
24
|
+
join(home, ".config", "claude", "credentials.json"),
|
|
25
|
+
];
|
|
26
|
+
for (const p of candidates) {
|
|
27
|
+
if (!existsSync(p))
|
|
28
|
+
continue;
|
|
29
|
+
try {
|
|
30
|
+
const raw = readFileSync(p, "utf8");
|
|
31
|
+
if (/access[_-]?token|oauth|refresh[_-]?token|bearer/i.test(raw)) {
|
|
32
|
+
return { found: true, source: p };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
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
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { found: false };
|
|
57
|
+
}
|
|
6
58
|
function row(c0) {
|
|
7
59
|
const symbol = c0.status === "ok" ? sym.check : c0.status === "warn" ? sym.warn : sym.cross;
|
|
8
60
|
const name = c0.name.padEnd(24);
|
|
@@ -43,6 +95,33 @@ export async function runDoctor() {
|
|
|
43
95
|
hint: `export ANTHROPIC_BASE_URL=http://${cfg.bind}:${cfg.port}`,
|
|
44
96
|
});
|
|
45
97
|
}
|
|
98
|
+
// Claude Code OAuth credentials — the #1 silent killer for Pro/Max users.
|
|
99
|
+
// If `claude login` ran previously, Claude Code prefers OAuth over the env-var
|
|
100
|
+
// API key. The proxy then forwards an OAuth Bearer token, Anthropic returns 401.
|
|
101
|
+
const oauth = detectClaudeOAuth();
|
|
102
|
+
if (oauth.found) {
|
|
103
|
+
const apiKeyOk = ks.state === "ok";
|
|
104
|
+
if (apiKeyOk) {
|
|
105
|
+
// Worst case — both set. OAuth wins. User thinks it's working.
|
|
106
|
+
checks.push({
|
|
107
|
+
name: "Claude Code auth",
|
|
108
|
+
status: "warn",
|
|
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.",
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
checks.push({
|
|
115
|
+
name: "Claude Code auth",
|
|
116
|
+
status: "warn",
|
|
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.",
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
checks.push({ name: "Claude Code auth", status: "ok", detail: "no OAuth credentials cached (API-key path clear)" });
|
|
124
|
+
}
|
|
46
125
|
// Daemon
|
|
47
126
|
const daemon = readDaemon();
|
|
48
127
|
if (daemon !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,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,91 @@
|
|
|
1
|
+
import { c, sym, say, dim, emit } from "../lib/ui.js";
|
|
2
|
+
import { fetchRemoteLicense, writeLicense, readLicense, deleteLicense } from "../lib/license.js";
|
|
3
|
+
import { TokenShieldError } from "../lib/errors.js";
|
|
4
|
+
const CONNECT_URL = "https://www.curatedmcp.com/tokenshield/connect";
|
|
5
|
+
const UPGRADE_URL = "https://www.curatedmcp.com/tokenshield/upgrade";
|
|
6
|
+
export async function runLogin(options) {
|
|
7
|
+
if (!options.token) {
|
|
8
|
+
throw new TokenShieldError({
|
|
9
|
+
code: "MISSING_TOKEN",
|
|
10
|
+
message: "Pass your license token with --token.",
|
|
11
|
+
nextSteps: [
|
|
12
|
+
`1. Subscribe at ${UPGRADE_URL}`,
|
|
13
|
+
`2. Copy your license token from ${CONNECT_URL}`,
|
|
14
|
+
`3. Run: tokenshield login --token <paste-here>`,
|
|
15
|
+
],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
say("");
|
|
19
|
+
say(`${sym.arrow} Validating token with curatedmcp.com…`);
|
|
20
|
+
const remote = await fetchRemoteLicense(options.token.trim());
|
|
21
|
+
writeLicense({
|
|
22
|
+
token: options.token.trim(),
|
|
23
|
+
tier: remote.tier,
|
|
24
|
+
status: remote.status,
|
|
25
|
+
enabledProcessors: remote.enabledProcessors,
|
|
26
|
+
email: remote.email,
|
|
27
|
+
fetchedAt: new Date().toISOString(),
|
|
28
|
+
});
|
|
29
|
+
emit("");
|
|
30
|
+
emit(`${sym.check} ${c.bold("Logged in as")} ${remote.email}`);
|
|
31
|
+
emit(` Tier: ${c.brightGreen(remote.tier.toUpperCase())} (${remote.status})`);
|
|
32
|
+
emit(` Processors: ${remote.enabledProcessors.length === 0 ? dim("none active") : remote.enabledProcessors.join(", ")}`);
|
|
33
|
+
emit("");
|
|
34
|
+
emit(dim("On next `tokenshield up`, the dashboard pill flips from Estimate mode → Pro · active."));
|
|
35
|
+
emit("");
|
|
36
|
+
}
|
|
37
|
+
export async function runLogout() {
|
|
38
|
+
const existing = readLicense();
|
|
39
|
+
if (!existing) {
|
|
40
|
+
say(`${sym.info} No license stored on this machine — nothing to log out of.`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
deleteLicense();
|
|
44
|
+
emit("");
|
|
45
|
+
emit(`${sym.check} ${c.bold("Logged out.")} License token removed from ~/.tokenshield/license.json`);
|
|
46
|
+
emit(dim(" You can re-link any time at " + CONNECT_URL));
|
|
47
|
+
emit("");
|
|
48
|
+
}
|
|
49
|
+
export async function runWhoami() {
|
|
50
|
+
const license = readLicense();
|
|
51
|
+
if (!license) {
|
|
52
|
+
say("");
|
|
53
|
+
say(`${sym.info} Not logged in. Free CLI tier is active.`);
|
|
54
|
+
say("");
|
|
55
|
+
say(` ${c.bold("To upgrade:")} ${UPGRADE_URL}`);
|
|
56
|
+
say(` ${c.bold("To link an existing license:")} tokenshield login --token <your-token>`);
|
|
57
|
+
say("");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Refresh from server so we report current truth, not stale cache
|
|
61
|
+
try {
|
|
62
|
+
const remote = await fetchRemoteLicense(license.token);
|
|
63
|
+
writeLicense({
|
|
64
|
+
token: license.token,
|
|
65
|
+
tier: remote.tier,
|
|
66
|
+
status: remote.status,
|
|
67
|
+
enabledProcessors: remote.enabledProcessors,
|
|
68
|
+
email: remote.email,
|
|
69
|
+
fetchedAt: new Date().toISOString(),
|
|
70
|
+
});
|
|
71
|
+
emit("");
|
|
72
|
+
emit(`${sym.check} ${c.bold("Logged in as")} ${remote.email}`);
|
|
73
|
+
emit(` Tier: ${c.brightGreen(remote.tier.toUpperCase())} (${remote.status})`);
|
|
74
|
+
emit(` Processors: ${remote.enabledProcessors.length === 0 ? dim("none active") : remote.enabledProcessors.join(", ")}`);
|
|
75
|
+
if (remote.currentPeriodEnd) {
|
|
76
|
+
emit(` Renews: ${dim(new Date(remote.currentPeriodEnd).toLocaleDateString())}`);
|
|
77
|
+
}
|
|
78
|
+
emit("");
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
// Network error or revocation — show cached state but flag staleness
|
|
82
|
+
emit("");
|
|
83
|
+
emit(`${sym.warn} Could not refresh from curatedmcp.com (${err.message})`);
|
|
84
|
+
emit(` Showing cached license from ${dim(new Date(license.fetchedAt).toLocaleString())}:`);
|
|
85
|
+
emit(` Email: ${license.email ?? dim("unknown")}`);
|
|
86
|
+
emit(` Tier: ${license.tier.toUpperCase()} (${license.status})`);
|
|
87
|
+
emit(` Processors: ${license.enabledProcessors.length === 0 ? dim("none active") : license.enabledProcessors.join(", ")}`);
|
|
88
|
+
emit("");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.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/commands/up.js
CHANGED
|
@@ -4,6 +4,7 @@ import { VERSION } from "../version.js";
|
|
|
4
4
|
import { c, sym, box, link, say, emit, dim } from "../lib/ui.js";
|
|
5
5
|
import { firstRunBanner, isFirstRun, markFirstRunComplete, telemetry } from "@curatedmcp/tokenshield-core";
|
|
6
6
|
import { TokenShieldError } from "../lib/errors.js";
|
|
7
|
+
import { refreshLicense } from "../lib/license.js";
|
|
7
8
|
import { requirePortFree, classifyApiKey } from "../lib/preflight.js";
|
|
8
9
|
import { readDaemon, spawnDaemon } from "../lib/daemon.js";
|
|
9
10
|
import { logFile } from "../lib/paths.js";
|
|
@@ -92,12 +93,24 @@ export async function runUp(options) {
|
|
|
92
93
|
say(`${sym.check} Started as daemon ${dim(`(pid ${info.pid})`)}.`);
|
|
93
94
|
return;
|
|
94
95
|
}
|
|
96
|
+
// Refresh license before binding ports — best-effort, won't fail boot
|
|
97
|
+
const license = await refreshLicense();
|
|
98
|
+
const tier = license?.tier === "pro" || license?.tier === "team" ? license.tier : "free";
|
|
95
99
|
// Foreground mode
|
|
96
100
|
const handle = await start({
|
|
97
101
|
config,
|
|
98
|
-
renderDashboard: () => dashboardHtml({
|
|
102
|
+
renderDashboard: () => dashboardHtml({
|
|
103
|
+
proxyPort: config.port,
|
|
104
|
+
bind: config.bind,
|
|
105
|
+
version: VERSION,
|
|
106
|
+
tier,
|
|
107
|
+
email: license?.email,
|
|
108
|
+
}),
|
|
99
109
|
});
|
|
100
110
|
emit(banner(config, { daemon: false }));
|
|
111
|
+
if (license) {
|
|
112
|
+
say(`${sym.check} Licensed as ${c.bold(license.email ?? "unknown")} · tier: ${c.brightGreen(tier.toUpperCase())}`);
|
|
113
|
+
}
|
|
101
114
|
maybeWarnAboutLocalKey();
|
|
102
115
|
if (isFirstRun()) {
|
|
103
116
|
emit(firstRunBanner());
|
|
@@ -146,9 +159,18 @@ export async function runSupervised(options) {
|
|
|
146
159
|
...(options.ledger ? { ledgerPath: options.ledger } : {}),
|
|
147
160
|
retentionDays: options.retentionDays,
|
|
148
161
|
});
|
|
162
|
+
// Refresh license in daemon too (best-effort)
|
|
163
|
+
const supLicense = await refreshLicense();
|
|
164
|
+
const supTier = supLicense?.tier === "pro" || supLicense?.tier === "team" ? supLicense.tier : "free";
|
|
149
165
|
const handle = await start({
|
|
150
166
|
config,
|
|
151
|
-
renderDashboard: () => dashboardHtml({
|
|
167
|
+
renderDashboard: () => dashboardHtml({
|
|
168
|
+
proxyPort: config.port,
|
|
169
|
+
bind: config.bind,
|
|
170
|
+
version: VERSION,
|
|
171
|
+
tier: supTier,
|
|
172
|
+
email: supLicense?.email,
|
|
173
|
+
}),
|
|
152
174
|
});
|
|
153
175
|
const shutdown = async (signal) => {
|
|
154
176
|
process.stderr.write(`[tokenshield] caught ${signal}, shutting down\n`);
|
package/dist/commands/up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
|
package/dist/dashboard.d.ts
CHANGED
package/dist/dashboard.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
export function dashboardHtml(opts) {
|
|
2
2
|
const proxyBase = `http://${opts.bind}:${opts.proxyPort}`;
|
|
3
|
+
const tier = opts.tier ?? "free";
|
|
4
|
+
const isPro = tier === "pro" || tier === "team";
|
|
5
|
+
const modePillLabel = isPro ? `${tier.toUpperCase()} · active` : "Estimate mode";
|
|
6
|
+
const modePillClass = isPro ? "mode-pill mode-pill-pro" : "mode-pill";
|
|
7
|
+
const modePillTitle = isPro
|
|
8
|
+
? `Licensed as ${opts.email ?? "your account"}. Active processors will engage as they ship.`
|
|
9
|
+
: "Estimate mode measures your spend. Upgrade to Pro to unlock active compression processors as they ship.";
|
|
3
10
|
return `<!doctype html>
|
|
4
11
|
<html lang="en">
|
|
5
12
|
<head>
|
|
@@ -41,6 +48,7 @@ header { display: flex; align-items: center; justify-content: space-between; mar
|
|
|
41
48
|
.brand-by a:hover { text-decoration: underline; }
|
|
42
49
|
.brand-ver { font-size: 12px; color: var(--muted); font-weight: 400; }
|
|
43
50
|
.mode-pill { font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; padding: 2px 7px; border-radius: 999px; background: var(--info-bg); border: 1px solid var(--info-border); color: var(--info); font-weight: 600; cursor: help; }
|
|
51
|
+
.mode-pill-pro { background: rgba(109,211,168,0.12); border-color: rgba(109,211,168,0.45); color: var(--accent); }
|
|
44
52
|
.status { display: flex; align-items: center; gap: 14px; }
|
|
45
53
|
.status-pill { font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 6px; }
|
|
46
54
|
.dot { display: inline-block; width: 8px; height: 8px; border-radius: 999px; background: var(--accent); flex-shrink: 0; }
|
|
@@ -64,6 +72,19 @@ header { display: flex; align-items: center; justify-content: space-between; mar
|
|
|
64
72
|
.diag code { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 12px; background: var(--panel-2); padding: 1px 6px; border-radius: 4px; border: 1px solid var(--border); }
|
|
65
73
|
.diag a { color: var(--link); }
|
|
66
74
|
|
|
75
|
+
/* ── tier banner (free → upgrade nudge, pro → confirmation) ── */
|
|
76
|
+
.tier-banner { display: none; margin-bottom: 16px; padding: 14px 18px; border-radius: 10px; border: 1px solid; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
|
|
77
|
+
.tier-banner.show { display: flex; }
|
|
78
|
+
.tier-banner.upgrade { background: linear-gradient(90deg, rgba(109,211,168,0.06), rgba(109,211,168,0.02)); border-color: rgba(109,211,168,0.35); }
|
|
79
|
+
.tier-banner.pro { background: rgba(109,211,168,0.08); border-color: rgba(109,211,168,0.5); }
|
|
80
|
+
.tier-msg { font-size: 13px; color: var(--text); line-height: 1.5; flex: 1 1 60%; }
|
|
81
|
+
.tier-msg .highlight { color: var(--accent); font-weight: 600; }
|
|
82
|
+
.tier-msg .small { font-size: 11px; color: var(--muted); margin-top: 2px; display: block; }
|
|
83
|
+
.tier-cta { background: var(--accent); color: #0b0d10; text-decoration: none; font-size: 13px; font-weight: 600; padding: 8px 14px; border-radius: 6px; white-space: nowrap; transition: opacity 0.15s; }
|
|
84
|
+
.tier-cta:hover { opacity: 0.9; text-decoration: none; }
|
|
85
|
+
.tier-cta-secondary { font-size: 12px; color: var(--muted); text-decoration: none; }
|
|
86
|
+
.tier-cta-secondary:hover { color: var(--accent); }
|
|
87
|
+
|
|
67
88
|
/* ── metric cards ── */
|
|
68
89
|
.grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
|
|
69
90
|
.card { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 14px; }
|
|
@@ -117,7 +138,7 @@ a:hover { text-decoration: underline; }
|
|
|
117
138
|
<a class="brand-name" href="https://www.curatedmcp.com/tokenshield" target="_blank" rel="noopener">TokenShield</a>
|
|
118
139
|
<span class="brand-ver">v${opts.version}</span>
|
|
119
140
|
<span class="brand-by">by <a href="https://www.curatedmcp.com" target="_blank" rel="noopener">CuratedMCP</a></span>
|
|
120
|
-
<span class="
|
|
141
|
+
<span class="${modePillClass}" title="${modePillTitle}">${modePillLabel}</span>
|
|
121
142
|
</div>
|
|
122
143
|
<div class="status">
|
|
123
144
|
<div class="status-pill">
|
|
@@ -129,12 +150,20 @@ a:hover { text-decoration: underline; }
|
|
|
129
150
|
|
|
130
151
|
<div id="diag" class="diag"></div>
|
|
131
152
|
|
|
153
|
+
<!-- Tier banner — renders one of two messages depending on license tier -->
|
|
154
|
+
<div id="tier-banner" class="tier-banner"></div>
|
|
155
|
+
|
|
132
156
|
<div class="grid">
|
|
133
|
-
<div class="card
|
|
157
|
+
<div class="card">
|
|
134
158
|
<div class="label">Spent (24h)</div>
|
|
135
159
|
<div class="value" id="dollars-spent">$0.00</div>
|
|
136
160
|
<div class="sub" id="request-count">0 requests · 0 successful</div>
|
|
137
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>
|
|
138
167
|
<div class="card">
|
|
139
168
|
<div class="label">Input tokens (24h)</div>
|
|
140
169
|
<div class="value" id="input-tokens">0</div>
|
|
@@ -145,11 +174,6 @@ a:hover { text-decoration: underline; }
|
|
|
145
174
|
<div class="value" id="output-tokens">0</div>
|
|
146
175
|
<div class="sub">most expensive line item on Opus</div>
|
|
147
176
|
</div>
|
|
148
|
-
<div class="card">
|
|
149
|
-
<div class="label">Projected weekly</div>
|
|
150
|
-
<div class="value" id="weekly-projected">$0.00</div>
|
|
151
|
-
<div class="sub">extrapolated from last 24h</div>
|
|
152
|
-
</div>
|
|
153
177
|
</div>
|
|
154
178
|
|
|
155
179
|
<div class="section">
|
|
@@ -183,10 +207,11 @@ a:hover { text-decoration: underline; }
|
|
|
183
207
|
<th class="num">Output</th>
|
|
184
208
|
<th class="num">Duration</th>
|
|
185
209
|
<th class="num">$</th>
|
|
210
|
+
<th class="num" title="Dollars saved by processors on this request">Saved</th>
|
|
186
211
|
<th>Status</th>
|
|
187
212
|
</tr>
|
|
188
213
|
</thead>
|
|
189
|
-
<tbody><tr><td colspan="
|
|
214
|
+
<tbody><tr><td colspan="9" class="muted">No requests recorded yet.</td></tr></tbody>
|
|
190
215
|
</table>
|
|
191
216
|
</div>
|
|
192
217
|
|
|
@@ -200,13 +225,24 @@ a:hover { text-decoration: underline; }
|
|
|
200
225
|
<span class="sep">·</span>
|
|
201
226
|
<a href="https://www.curatedmcp.com/docs/tokenshield" target="_blank" rel="noopener">Docs</a>
|
|
202
227
|
<span class="sep">·</span>
|
|
203
|
-
<a href="https://www.curatedmcp.com/
|
|
228
|
+
<a href="https://www.curatedmcp.com/tokenshield/upgrade" target="_blank" rel="noopener" class="upgrade-link">Upgrade →</a>
|
|
204
229
|
</div>
|
|
205
230
|
</div>
|
|
206
231
|
|
|
207
232
|
</div>
|
|
208
233
|
|
|
209
234
|
<script>
|
|
235
|
+
// Server-baked license context — driven by ~/.tokenshield/license.json on boot
|
|
236
|
+
const __TIER__ = ${JSON.stringify(tier)};
|
|
237
|
+
const __EMAIL__ = ${JSON.stringify(opts.email ?? null)};
|
|
238
|
+
// Projected savings if Pro processors were active.
|
|
239
|
+
// Conservative estimate: conversation-dedup ≈ 30% + result-cache ≈ 10% = 40% blended on heavy workloads.
|
|
240
|
+
// Surfaced as a range to set honest expectations (25%–55%).
|
|
241
|
+
const PRO_SAVINGS_LOW = 0.25;
|
|
242
|
+
const PRO_SAVINGS_HIGH = 0.55;
|
|
243
|
+
const UPGRADE_URL = "https://www.curatedmcp.com/tokenshield/upgrade";
|
|
244
|
+
const DASHBOARD_URL = "https://www.curatedmcp.com/tokenshield/dashboard";
|
|
245
|
+
|
|
210
246
|
const fmtNum = (n) => Number(n || 0).toLocaleString();
|
|
211
247
|
const fmtDollars = (d) => '$' + Number(d || 0).toFixed(Math.abs(d) < 1 ? 4 : 2);
|
|
212
248
|
const fmtTime = (ms) => new Date(ms).toLocaleTimeString();
|
|
@@ -242,11 +278,15 @@ function renderDiagnostic(rec) {
|
|
|
242
278
|
} else if (failed.length >= apiCalls.length * 0.5 && failed.length > 0) {
|
|
243
279
|
cls = 'bad';
|
|
244
280
|
const pct = Math.round((failed.length / apiCalls.length) * 100);
|
|
245
|
-
html = '<div class="diag-title"><span class="icon">!</span>' + pct + '% of API calls failing with 401/403 —
|
|
246
|
-
'
|
|
247
|
-
'
|
|
248
|
-
'<code>
|
|
249
|
-
'
|
|
281
|
+
html = '<div class="diag-title"><span class="icon">!</span>' + pct + '% of API calls failing with 401/403 — auth not reaching Anthropic</div>' +
|
|
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';
|
|
250
290
|
} else if (fiveXx.length >= apiCalls.length * 0.3 && fiveXx.length > 0) {
|
|
251
291
|
cls = 'warn';
|
|
252
292
|
html = '<div class="diag-title"><span class="icon">!</span>Upstream errors from Anthropic</div>' +
|
|
@@ -270,7 +310,7 @@ function renderRecent(rec) {
|
|
|
270
310
|
const msg = rec.length === 0
|
|
271
311
|
? 'No requests recorded yet.'
|
|
272
312
|
: 'No Anthropic API calls yet (' + rec.length + ' non-API probe' + (rec.length === 1 ? '' : 's') + ' hidden — click "Show probes" to view).';
|
|
273
|
-
recBody.innerHTML = '<tr><td colspan="
|
|
313
|
+
recBody.innerHTML = '<tr><td colspan="9" class="muted">' + msg + '</td></tr>';
|
|
274
314
|
return;
|
|
275
315
|
}
|
|
276
316
|
|
|
@@ -281,6 +321,12 @@ function renderRecent(rec) {
|
|
|
281
321
|
const pillCls = isOk ? 'ok' : (isAuthFail ? 'warn' : 'err');
|
|
282
322
|
const isProbe = !isApiCall(r);
|
|
283
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>');
|
|
284
330
|
return '<tr class="' + (isProbe ? 'row-faded' : '') + '">' +
|
|
285
331
|
'<td class="muted">' + fmtTime(r.timestamp) + '</td>' +
|
|
286
332
|
'<td>' + modelDisplay + '</td>' +
|
|
@@ -289,6 +335,7 @@ function renderRecent(rec) {
|
|
|
289
335
|
'<td class="num">' + fmtNum(r.usageRaw.outputTokens) + '</td>' +
|
|
290
336
|
'<td class="num muted">' + fmtMs(r.durationMs) + '</td>' +
|
|
291
337
|
'<td class="num">' + fmtDollars(r.dollarsRaw) + '</td>' +
|
|
338
|
+
'<td class="num">' + savedCell + '</td>' +
|
|
292
339
|
'<td><span class="pill ' + pillCls + '">' + status + '</span></td>' +
|
|
293
340
|
'</tr>';
|
|
294
341
|
}).join('');
|
|
@@ -321,9 +368,19 @@ async function refresh() {
|
|
|
321
368
|
document.getElementById('input-tokens').textContent = fmtNum(sum.totalInputTokensRaw);
|
|
322
369
|
document.getElementById('output-tokens').textContent = fmtNum(sum.totalOutputTokensRaw);
|
|
323
370
|
|
|
324
|
-
|
|
325
|
-
const
|
|
326
|
-
|
|
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
|
+
}
|
|
327
384
|
|
|
328
385
|
const modelBody = document.querySelector('#by-model tbody');
|
|
329
386
|
const realModels = (sum.byModel || []).filter((m) => m.model && m.model !== 'unknown');
|
|
@@ -341,11 +398,52 @@ async function refresh() {
|
|
|
341
398
|
|
|
342
399
|
renderRecent(rec);
|
|
343
400
|
renderDiagnostic(rec);
|
|
401
|
+
renderTierBanner(sum);
|
|
344
402
|
} catch (e) {
|
|
345
403
|
document.getElementById('status-text').textContent = 'error: ' + e.message;
|
|
346
404
|
}
|
|
347
405
|
}
|
|
348
406
|
|
|
407
|
+
function renderTierBanner(sum) {
|
|
408
|
+
const banner = document.getElementById('tier-banner');
|
|
409
|
+
if (!banner) return;
|
|
410
|
+
|
|
411
|
+
const spent = Number(sum.dollarsRaw) || 0;
|
|
412
|
+
const windowMs = Math.max(1, sum.windowEnd - sum.windowStart);
|
|
413
|
+
const monthlyProj = spent / (windowMs / (30 * 24 * 60 * 60 * 1000));
|
|
414
|
+
|
|
415
|
+
if (__TIER__ === 'pro' || __TIER__ === 'team') {
|
|
416
|
+
// Pro user — show confirmation + link to cloud dashboard
|
|
417
|
+
banner.className = 'tier-banner show pro';
|
|
418
|
+
banner.innerHTML =
|
|
419
|
+
'<div class="tier-msg">' +
|
|
420
|
+
'<span class="highlight">✓ ' + __TIER__.toUpperCase() + ' · ' + (__EMAIL__ ? __EMAIL__ : 'licensed') + '</span> — cloud sync active. ' +
|
|
421
|
+
'Active compression processors enable as they ship through Q3.' +
|
|
422
|
+
'<span class="small">View your spend across every machine at curatedmcp.com/tokenshield/dashboard</span>' +
|
|
423
|
+
'</div>' +
|
|
424
|
+
'<a class="tier-cta" href="' + DASHBOARD_URL + '" target="_blank" rel="noopener">Open cloud dashboard →</a>';
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// Free tier — show projection nudge once spend is meaningful (> $0.50 in window)
|
|
429
|
+
if (spent < 0.50) {
|
|
430
|
+
banner.className = 'tier-banner';
|
|
431
|
+
banner.innerHTML = '';
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
const monthlyLow = monthlyProj * PRO_SAVINGS_LOW;
|
|
436
|
+
const monthlyHigh = monthlyProj * PRO_SAVINGS_HIGH;
|
|
437
|
+
const fmt = (n) => '$' + n.toFixed(n < 10 ? 2 : 0);
|
|
438
|
+
banner.className = 'tier-banner show upgrade';
|
|
439
|
+
banner.innerHTML =
|
|
440
|
+
'<div class="tier-msg">' +
|
|
441
|
+
'At your current rate, Pro processors would save you about <span class="highlight">' + fmt(monthlyLow) + '–' + fmt(monthlyHigh) + '/month</span>. ' +
|
|
442
|
+
'<span class="small">Projected from ' + fmtDollars(spent) + ' measured in the last ' + Math.round(windowMs / (60 * 60 * 1000)) + 'h · 25–55% blended savings from conversation-dedup + result-cache</span>' +
|
|
443
|
+
'</div>' +
|
|
444
|
+
'<a class="tier-cta" href="' + UPGRADE_URL + '" target="_blank" rel="noopener">Upgrade · $19/mo →</a>';
|
|
445
|
+
}
|
|
446
|
+
|
|
349
447
|
refresh();
|
|
350
448
|
setInterval(refresh, 2000);
|
|
351
449
|
</script>
|
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,
|
|
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/lib/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ErrorCode = "PORT_IN_USE" | "DAEMON_NOT_RUNNING" | "DAEMON_ALREADY_RUNNING" | "MISSING_API_KEY" | "BAD_API_KEY" | "UPSTREAM_UNREACHABLE" | "BAD_CONFIG" | "INVALID_ARGUMENT" | "PERMISSION_DENIED" | "NOT_FOUND" | "INTERRUPTED" | "INTERNAL";
|
|
1
|
+
export type ErrorCode = "PORT_IN_USE" | "DAEMON_NOT_RUNNING" | "DAEMON_ALREADY_RUNNING" | "MISSING_API_KEY" | "BAD_API_KEY" | "MISSING_TOKEN" | "BAD_TOKEN" | "UPSTREAM_UNREACHABLE" | "BAD_CONFIG" | "INVALID_ARGUMENT" | "PERMISSION_DENIED" | "NOT_FOUND" | "INTERRUPTED" | "INTERNAL";
|
|
2
2
|
export declare class TokenShieldError extends Error {
|
|
3
3
|
readonly code: ErrorCode;
|
|
4
4
|
readonly hint: string | undefined;
|
package/dist/lib/errors.js
CHANGED
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* License storage + fetch.
|
|
3
|
+
*
|
|
4
|
+
* Pro/Team users authenticate the CLI by storing a `licenseToken` in
|
|
5
|
+
* ~/.tokenshield/license.json. Every `tokenshield up` refreshes the
|
|
6
|
+
* license tier from curatedmcp.com so revoked subscriptions stop
|
|
7
|
+
* unlocking processors within minutes.
|
|
8
|
+
*/
|
|
9
|
+
export interface LicenseFile {
|
|
10
|
+
token: string;
|
|
11
|
+
tier: "free" | "pro" | "team";
|
|
12
|
+
status: "active" | "past_due" | "canceled" | "incomplete";
|
|
13
|
+
enabledProcessors: string[];
|
|
14
|
+
email?: string;
|
|
15
|
+
fetchedAt: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function readLicense(): LicenseFile | null;
|
|
18
|
+
export declare function writeLicense(license: LicenseFile): void;
|
|
19
|
+
export declare function deleteLicense(): boolean;
|
|
20
|
+
export interface RemoteLicense {
|
|
21
|
+
email: string;
|
|
22
|
+
tier: "free" | "pro" | "team";
|
|
23
|
+
status: "active" | "past_due" | "canceled" | "incomplete";
|
|
24
|
+
enabledProcessors: string[];
|
|
25
|
+
currentPeriodEnd: string | null;
|
|
26
|
+
cancelAt: string | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validate a token against curatedmcp.com. Returns the server's view of the
|
|
30
|
+
* license so the caller can decide whether to persist it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function fetchRemoteLicense(token: string): Promise<RemoteLicense>;
|
|
33
|
+
/**
|
|
34
|
+
* Convenience: refresh the locally-cached license from the server.
|
|
35
|
+
* Returns the updated LicenseFile or null if no token is stored / fetch failed.
|
|
36
|
+
*/
|
|
37
|
+
export declare function refreshLicense(): Promise<LicenseFile | null>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* License storage + fetch.
|
|
3
|
+
*
|
|
4
|
+
* Pro/Team users authenticate the CLI by storing a `licenseToken` in
|
|
5
|
+
* ~/.tokenshield/license.json. Every `tokenshield up` refreshes the
|
|
6
|
+
* license tier from curatedmcp.com so revoked subscriptions stop
|
|
7
|
+
* unlocking processors within minutes.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { homedir } from "node:os";
|
|
11
|
+
import { dirname, join } from "node:path";
|
|
12
|
+
const LICENSE_BASE_URL = process.env["TOKENSHIELD_API_BASE"] ?? "https://www.curatedmcp.com";
|
|
13
|
+
function licensePath() {
|
|
14
|
+
const home = process.env["HOME"] ?? homedir();
|
|
15
|
+
return join(home, ".tokenshield", "license.json");
|
|
16
|
+
}
|
|
17
|
+
export function readLicense() {
|
|
18
|
+
const p = licensePath();
|
|
19
|
+
if (!existsSync(p))
|
|
20
|
+
return null;
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(readFileSync(p, "utf8"));
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function writeLicense(license) {
|
|
29
|
+
const p = licensePath();
|
|
30
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
31
|
+
writeFileSync(p, JSON.stringify(license, null, 2) + "\n", { mode: 0o600 });
|
|
32
|
+
}
|
|
33
|
+
export function deleteLicense() {
|
|
34
|
+
const p = licensePath();
|
|
35
|
+
if (!existsSync(p))
|
|
36
|
+
return false;
|
|
37
|
+
unlinkSync(p);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Validate a token against curatedmcp.com. Returns the server's view of the
|
|
42
|
+
* license so the caller can decide whether to persist it.
|
|
43
|
+
*/
|
|
44
|
+
export async function fetchRemoteLicense(token) {
|
|
45
|
+
const url = `${LICENSE_BASE_URL}/api/v1/tokenshield/license`;
|
|
46
|
+
const ctrl = new AbortController();
|
|
47
|
+
const timeout = setTimeout(() => ctrl.abort(), 8000);
|
|
48
|
+
try {
|
|
49
|
+
const res = await fetch(url, {
|
|
50
|
+
headers: { Authorization: `Bearer ${token}`, Accept: "application/json" },
|
|
51
|
+
signal: ctrl.signal,
|
|
52
|
+
});
|
|
53
|
+
if (res.status === 404) {
|
|
54
|
+
throw new Error("Unknown license token. Check curatedmcp.com/tokenshield/connect for your token.");
|
|
55
|
+
}
|
|
56
|
+
if (res.status === 401) {
|
|
57
|
+
throw new Error("Token rejected by curatedmcp.com — re-fetch from /tokenshield/connect.");
|
|
58
|
+
}
|
|
59
|
+
if (!res.ok) {
|
|
60
|
+
throw new Error(`License lookup failed: HTTP ${res.status}`);
|
|
61
|
+
}
|
|
62
|
+
return (await res.json());
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
if (err.name === "AbortError") {
|
|
66
|
+
throw new Error("License lookup timed out (network issue). CLI will continue with cached tier.");
|
|
67
|
+
}
|
|
68
|
+
throw err;
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
clearTimeout(timeout);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convenience: refresh the locally-cached license from the server.
|
|
76
|
+
* Returns the updated LicenseFile or null if no token is stored / fetch failed.
|
|
77
|
+
*/
|
|
78
|
+
export async function refreshLicense() {
|
|
79
|
+
const local = readLicense();
|
|
80
|
+
if (!local?.token)
|
|
81
|
+
return null;
|
|
82
|
+
try {
|
|
83
|
+
const remote = await fetchRemoteLicense(local.token);
|
|
84
|
+
const updated = {
|
|
85
|
+
token: local.token,
|
|
86
|
+
tier: remote.tier,
|
|
87
|
+
status: remote.status,
|
|
88
|
+
enabledProcessors: remote.enabledProcessors,
|
|
89
|
+
email: remote.email,
|
|
90
|
+
fetchedAt: new Date().toISOString(),
|
|
91
|
+
};
|
|
92
|
+
writeLicense(updated);
|
|
93
|
+
return updated;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Network/auth failure — keep stale cache so the CLI keeps working offline
|
|
97
|
+
return local;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.0
|
|
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.0
|
|
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.0
|
|
35
|
+
"@curatedmcp/tokenshield-core": "^1.3.0",
|
|
36
36
|
"commander": "^12.0.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|