@closedrouter/cli 1.0.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/LICENSE +21 -0
- package/README.md +192 -0
- package/bin/closedrouter.js +20 -0
- package/dist/bridge/claude-executor.d.ts +39 -0
- package/dist/bridge/claude-executor.d.ts.map +1 -0
- package/dist/bridge/tunnel-client.d.ts +50 -0
- package/dist/bridge/tunnel-client.d.ts.map +1 -0
- package/dist/client.d.ts +62 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/commands/antigravity-gui.d.ts +25 -0
- package/dist/commands/antigravity-gui.d.ts.map +1 -0
- package/dist/commands/gateway.d.ts +14 -0
- package/dist/commands/gateway.d.ts.map +1 -0
- package/dist/commands/import.d.ts +30 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/keys.d.ts +5 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/login.d.ts +7 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/logout.d.ts +5 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/onboard.d.ts +10 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/scan.d.ts +9 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/start.d.ts +31 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8817 -0
- package/dist/scanners/antigravity.d.ts +18 -0
- package/dist/scanners/antigravity.d.ts.map +1 -0
- package/dist/scanners/claude.d.ts +17 -0
- package/dist/scanners/claude.d.ts.map +1 -0
- package/dist/scanners/cockpit.d.ts +18 -0
- package/dist/scanners/cockpit.d.ts.map +1 -0
- package/dist/scanners/codex.d.ts +15 -0
- package/dist/scanners/codex.d.ts.map +1 -0
- package/dist/scanners/cursor.d.ts +15 -0
- package/dist/scanners/cursor.d.ts.map +1 -0
- package/dist/scanners/env.d.ts +13 -0
- package/dist/scanners/env.d.ts.map +1 -0
- package/dist/scanners/grok.d.ts +15 -0
- package/dist/scanners/grok.d.ts.map +1 -0
- package/dist/scanners/index.d.ts +17 -0
- package/dist/scanners/index.d.ts.map +1 -0
- package/dist/scanners/sqlite.d.ts +6 -0
- package/dist/scanners/sqlite.d.ts.map +1 -0
- package/dist/scanners/types.d.ts +37 -0
- package/dist/scanners/types.d.ts.map +1 -0
- package/dist/ui.d.ts +10 -0
- package/dist/ui.d.ts.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Antigravity Scanner
|
|
3
|
+
* Reads standalone jetski OAuth tokens and Antigravity IDE globalStorage state.vscdb.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
6
|
+
export declare class AntigravityScanner implements Scanner {
|
|
7
|
+
readonly name = "antigravity";
|
|
8
|
+
readonly providerTypes: string[];
|
|
9
|
+
readonly description = "Google Antigravity OAuth tokens (~/.gemini and IDE SQLite)";
|
|
10
|
+
private tokenFile;
|
|
11
|
+
private ideDbPath;
|
|
12
|
+
constructor(customTokenFile?: string, customDbPath?: string);
|
|
13
|
+
isAvailable(): boolean;
|
|
14
|
+
private scanStandalone;
|
|
15
|
+
private scanIdeDb;
|
|
16
|
+
scan(): Promise<DiscoveredAccount[]>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=antigravity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/scanners/antigravity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,kBAAmB,YAAW,OAAO;IAChD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,aAAa,WAAyB;IAC/C,QAAQ,CAAC,WAAW,gEAAgE;IAEpF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAE1B,YAAY,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAsB1D;IAED,WAAW,IAAI,OAAO,CAErB;IAED,OAAO,CAAC,cAAc;YAkDR,SAAS;IA6CjB,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAWzC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Claude Code Keychain & Config Scanner
|
|
3
|
+
* Extracts Claude Code OAuth tokens from macOS Keychain Services and ~/.claude.json.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
6
|
+
export declare class ClaudeScanner implements Scanner {
|
|
7
|
+
readonly name = "claude";
|
|
8
|
+
readonly providerTypes: string[];
|
|
9
|
+
readonly description = "Claude Code credentials (macOS Keychain and ~/.claude.json)";
|
|
10
|
+
private configPath;
|
|
11
|
+
private readonly serviceName;
|
|
12
|
+
constructor(customConfigPath?: string);
|
|
13
|
+
isAvailable(): boolean;
|
|
14
|
+
private queryKeychain;
|
|
15
|
+
scan(): Promise<DiscoveredAccount[]>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/scanners/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAI1D,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,aAAa,WAAoB;IAC1C,QAAQ,CAAC,WAAW,iEAAiE;IAErF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IAEzD,YAAY,gBAAgB,CAAC,EAAE,MAAM,EAEpC;IAED,WAAW,IAAI,OAAO,CAGrB;YAEa,aAAa;IAiBrB,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsFzC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Cockpit Tools Store Scanner
|
|
3
|
+
* Decrypts AES-256-GCM accounts from ~/.antigravity_cockpit using secure-account-storage.key.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
6
|
+
export declare class CockpitScanner implements Scanner {
|
|
7
|
+
readonly name = "cockpit";
|
|
8
|
+
readonly providerTypes: string[];
|
|
9
|
+
readonly description = "Cockpit Tools encrypted vault (~/.antigravity_cockpit)";
|
|
10
|
+
private cockpitDir;
|
|
11
|
+
private keyFile;
|
|
12
|
+
constructor(customDir?: string);
|
|
13
|
+
isAvailable(): boolean;
|
|
14
|
+
private loadKey;
|
|
15
|
+
private decryptFile;
|
|
16
|
+
scan(): Promise<DiscoveredAccount[]>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=cockpit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cockpit.d.ts","sourceRoot":"","sources":["../../src/scanners/cockpit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,cAAe,YAAW,OAAO;IAC5C,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,aAAa,WAOpB;IACF,QAAQ,CAAC,WAAW,4DAA4D;IAEhF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY,SAAS,CAAC,EAAE,MAAM,EAc7B;IAED,WAAW,IAAI,OAAO,CAErB;IAED,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,WAAW;IAsBb,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkPzC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - ChatGPT Codex Scanner
|
|
3
|
+
* Reads Codex CLI credentials from ~/.codex/auth.json.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
6
|
+
export declare class CodexScanner implements Scanner {
|
|
7
|
+
readonly name = "codex";
|
|
8
|
+
readonly providerTypes: string[];
|
|
9
|
+
readonly description = "ChatGPT Codex CLI credentials (~/.codex/auth.json)";
|
|
10
|
+
private authPath;
|
|
11
|
+
constructor(customAuthPath?: string);
|
|
12
|
+
isAvailable(): boolean;
|
|
13
|
+
scan(): Promise<DiscoveredAccount[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/scanners/codex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,YAAa,YAAW,OAAO;IAC1C,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,aAAa,WAAiC;IACvD,QAAQ,CAAC,WAAW,wDAAwD;IAE5E,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,cAAc,CAAC,EAAE,MAAM,EAElC;IAED,WAAW,IAAI,OAAO,CAErB;IAEK,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuDzC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Cursor Scanner
|
|
3
|
+
* Reads Cursor authentication tokens from state.vscdb SQLite database.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
6
|
+
export declare class CursorScanner implements Scanner {
|
|
7
|
+
readonly name = "cursor";
|
|
8
|
+
readonly providerTypes: string[];
|
|
9
|
+
readonly description = "Cursor editor SQLite state tokens (~/Library/Application Support/Cursor)";
|
|
10
|
+
private dbPath;
|
|
11
|
+
constructor(customDbPath?: string);
|
|
12
|
+
isAvailable(): boolean;
|
|
13
|
+
scan(): Promise<DiscoveredAccount[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/scanners/cursor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,aAAa,WAAoB;IAC1C,QAAQ,CAAC,WAAW,8EAA8E;IAElG,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,YAAY,CAAC,EAAE,MAAM,EAoBhC;IAED,WAAW,IAAI,OAAO,CAErB;IAEK,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA6CzC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Environment Variables Scanner
|
|
3
|
+
* Checks host environment variables for OpenAI, Anthropic, Gemini, Cursor SDK, and xAI keys.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
6
|
+
export declare class EnvScanner implements Scanner {
|
|
7
|
+
readonly name = "env";
|
|
8
|
+
readonly providerTypes: string[];
|
|
9
|
+
readonly description = "API keys in environment variables (OPENAI, ANTHROPIC, GEMINI, GROK, CURSOR)";
|
|
10
|
+
isAvailable(): boolean;
|
|
11
|
+
scan(): DiscoveredAccount[];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/scanners/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAkB1D,qBAAa,UAAW,YAAW,OAAO;IACxC,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,aAAa,WAA0E;IAChG,QAAQ,CAAC,WAAW,iFAAiF;IAErG,WAAW,IAAI,OAAO,CAErB;IAED,IAAI,IAAI,iBAAiB,EAAE,CA0B1B;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Grok CLI Scanner
|
|
3
|
+
* Reads Grok CLI OAuth profiles from ~/.grok/auth.json.
|
|
4
|
+
*/
|
|
5
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
6
|
+
export declare class GrokScanner implements Scanner {
|
|
7
|
+
readonly name = "grok";
|
|
8
|
+
readonly providerTypes: string[];
|
|
9
|
+
readonly description = "Grok CLI OAuth credentials (~/.grok/auth.json)";
|
|
10
|
+
private authPath;
|
|
11
|
+
constructor(customAuthPath?: string);
|
|
12
|
+
isAvailable(): boolean;
|
|
13
|
+
scan(): Promise<DiscoveredAccount[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=grok.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok.d.ts","sourceRoot":"","sources":["../../src/scanners/grok.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,WAAY,YAAW,OAAO;IACzC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,aAAa,WAAkB;IACxC,QAAQ,CAAC,WAAW,oDAAoD;IAExE,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,cAAc,CAAC,EAAE,MAAM,EAElC;IAED,WAAW,IAAI,OAAO,CAErB;IAEK,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2CzC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Scanners Registry & Discovery Orchestrator
|
|
3
|
+
*/
|
|
4
|
+
import { AntigravityScanner } from "./antigravity";
|
|
5
|
+
import { ClaudeScanner } from "./claude";
|
|
6
|
+
import { CockpitScanner } from "./cockpit";
|
|
7
|
+
import { CodexScanner } from "./codex";
|
|
8
|
+
import { CursorScanner } from "./cursor";
|
|
9
|
+
import { EnvScanner } from "./env";
|
|
10
|
+
import { GrokScanner } from "./grok";
|
|
11
|
+
import type { DiscoveredAccount, Scanner } from "./types";
|
|
12
|
+
export * from "./types";
|
|
13
|
+
export { AntigravityScanner, ClaudeScanner, CockpitScanner, CodexScanner, CursorScanner, EnvScanner, GrokScanner };
|
|
14
|
+
export declare const ALL_SCANNER_CLASSES: (new () => Scanner)[];
|
|
15
|
+
export declare function getAvailableScanners(filterNames?: string[]): Promise<Scanner[]>;
|
|
16
|
+
export declare function scanAllLocal(filterNames?: string[]): Promise<DiscoveredAccount[]>;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAEnH,eAAO,MAAM,mBAAmB,EAAE,CAAC,UAAU,OAAO,CAAC,EAQpD,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAoBrF;AAED,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4BvF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe multi-runtime SQLite query executor.
|
|
3
|
+
* Supports Bun (bun:sqlite), Node 22+ (node:sqlite), and fallback to system sqlite3 CLI.
|
|
4
|
+
*/
|
|
5
|
+
export declare function querySqliteKeyValue(dbPath: string, likePrefix: string): Promise<Map<string, string>>;
|
|
6
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/scanners/sqlite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA8F9B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - Scanner Models & Types
|
|
3
|
+
*/
|
|
4
|
+
export interface DiscoveredSecret {
|
|
5
|
+
accessToken?: string;
|
|
6
|
+
refreshToken?: string;
|
|
7
|
+
idToken?: string;
|
|
8
|
+
apiKey?: string;
|
|
9
|
+
sessionCookie?: string;
|
|
10
|
+
projectId?: string;
|
|
11
|
+
tokenExpiresAt?: string;
|
|
12
|
+
refreshTokenExpiresAt?: string;
|
|
13
|
+
extra?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export interface DiscoveredAccount {
|
|
16
|
+
source: string;
|
|
17
|
+
providerType: string;
|
|
18
|
+
authKind: "oauth_refresh_token" | "session_token" | "api_key";
|
|
19
|
+
accountIdentifier: string;
|
|
20
|
+
displayName: string;
|
|
21
|
+
email?: string;
|
|
22
|
+
planTier: string;
|
|
23
|
+
secrets: DiscoveredSecret;
|
|
24
|
+
rawMetadata?: Record<string, unknown>;
|
|
25
|
+
isShared?: boolean;
|
|
26
|
+
maxConcurrency?: number;
|
|
27
|
+
dailyTokenCap?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface Scanner {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly description: string;
|
|
32
|
+
readonly providerTypes?: readonly string[];
|
|
33
|
+
isAvailable(): Promise<boolean> | boolean;
|
|
34
|
+
scan(): Promise<DiscoveredAccount[]> | DiscoveredAccount[];
|
|
35
|
+
}
|
|
36
|
+
export declare function redactSecret(token?: string | null, head?: number, tail?: number): string;
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scanners/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,qBAAqB,GAAG,eAAe,GAAG,SAAS,CAAC;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC1C,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC;CAC5D;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,SAAI,EAAE,IAAI,SAAI,GAAG,MAAM,CAK9E"}
|
package/dist/ui.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClosedRouter CLI - UI Formatting, Badges & ASCII Art
|
|
3
|
+
*/
|
|
4
|
+
import type { DiscoveredAccount } from "./scanners/types";
|
|
5
|
+
export declare function formatProviderBadge(providerType: string): string;
|
|
6
|
+
export declare function formatPlanBadge(plan: string): string;
|
|
7
|
+
export declare function formatAccountRow(account: DiscoveredAccount, index?: number): string;
|
|
8
|
+
export declare function printAsciiBanner(): void;
|
|
9
|
+
export declare function formatCliInstructions(serverUrl: string, apiKey: string): string;
|
|
10
|
+
//# sourceMappingURL=ui.d.ts.map
|
package/dist/ui.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA0BhE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAOnF;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAwB/E"}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@closedrouter/cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "ClosedRouter CLI: Onboard and import local AI subscriptions and API keys into your shared token pool",
|
|
5
|
+
"author": "ClosedRouter Contributors",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/arterialist/closedrouter.git",
|
|
9
|
+
"directory": "cli"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/arterialist/closedrouter/tree/main/cli#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/arterialist/closedrouter/issues"
|
|
14
|
+
},
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"bin": {
|
|
19
|
+
"closedrouter": "./bin/closedrouter.js",
|
|
20
|
+
"cr": "./bin/closedrouter.js"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"bin",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"dev": "bun run src/index.ts",
|
|
30
|
+
"build": "bun build src/index.ts --outdir dist --target node && tsc --emitDeclarationOnly",
|
|
31
|
+
"typecheck": "tsc --noEmit",
|
|
32
|
+
"test": "bun test tests"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@clack/prompts": "^0.11.0",
|
|
36
|
+
"commander": "^14.0.3",
|
|
37
|
+
"picocolors": "^1.1.1",
|
|
38
|
+
"ws": "^8.18.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^22.13.0",
|
|
42
|
+
"@types/ws": "^8.5.14",
|
|
43
|
+
"typescript": "7.0.2"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=18.0.0"
|
|
47
|
+
},
|
|
48
|
+
"keywords": [
|
|
49
|
+
"closedrouter",
|
|
50
|
+
"openrouter",
|
|
51
|
+
"ai",
|
|
52
|
+
"llm",
|
|
53
|
+
"proxy",
|
|
54
|
+
"cursor",
|
|
55
|
+
"antigravity",
|
|
56
|
+
"claude-code",
|
|
57
|
+
"codex",
|
|
58
|
+
"token-pool"
|
|
59
|
+
],
|
|
60
|
+
"license": "MIT"
|
|
61
|
+
}
|