@bankr/cli 0.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +92 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +260 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/cancel.d.ts +2 -0
  7. package/dist/commands/cancel.d.ts.map +1 -0
  8. package/dist/commands/cancel.js +25 -0
  9. package/dist/commands/cancel.js.map +1 -0
  10. package/dist/commands/capabilities.d.ts +2 -0
  11. package/dist/commands/capabilities.d.ts.map +1 -0
  12. package/dist/commands/capabilities.js +162 -0
  13. package/dist/commands/capabilities.js.map +1 -0
  14. package/dist/commands/config.d.ts +3 -0
  15. package/dist/commands/config.d.ts.map +1 -0
  16. package/dist/commands/config.js +56 -0
  17. package/dist/commands/config.js.map +1 -0
  18. package/dist/commands/llm.d.ts +12 -0
  19. package/dist/commands/llm.d.ts.map +1 -0
  20. package/dist/commands/llm.js +280 -0
  21. package/dist/commands/llm.js.map +1 -0
  22. package/dist/commands/login.d.ts +4 -0
  23. package/dist/commands/login.d.ts.map +1 -0
  24. package/dist/commands/login.js +122 -0
  25. package/dist/commands/login.js.map +1 -0
  26. package/dist/commands/logout.d.ts +2 -0
  27. package/dist/commands/logout.d.ts.map +1 -0
  28. package/dist/commands/logout.js +13 -0
  29. package/dist/commands/logout.js.map +1 -0
  30. package/dist/commands/prompt.d.ts +2 -0
  31. package/dist/commands/prompt.d.ts.map +1 -0
  32. package/dist/commands/prompt.js +56 -0
  33. package/dist/commands/prompt.js.map +1 -0
  34. package/dist/commands/sign.d.ts +10 -0
  35. package/dist/commands/sign.d.ts.map +1 -0
  36. package/dist/commands/sign.js +67 -0
  37. package/dist/commands/sign.js.map +1 -0
  38. package/dist/commands/status.d.ts +2 -0
  39. package/dist/commands/status.d.ts.map +1 -0
  40. package/dist/commands/status.js +45 -0
  41. package/dist/commands/status.js.map +1 -0
  42. package/dist/commands/submit.d.ts +20 -0
  43. package/dist/commands/submit.d.ts.map +1 -0
  44. package/dist/commands/submit.js +124 -0
  45. package/dist/commands/submit.js.map +1 -0
  46. package/dist/commands/whoami.d.ts +2 -0
  47. package/dist/commands/whoami.d.ts.map +1 -0
  48. package/dist/commands/whoami.js +75 -0
  49. package/dist/commands/whoami.js.map +1 -0
  50. package/dist/index.d.ts +5 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +3 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/lib/api.d.ts +113 -0
  55. package/dist/lib/api.d.ts.map +1 -0
  56. package/dist/lib/api.js +94 -0
  57. package/dist/lib/api.js.map +1 -0
  58. package/dist/lib/config.d.ts +18 -0
  59. package/dist/lib/config.d.ts.map +1 -0
  60. package/dist/lib/config.js +66 -0
  61. package/dist/lib/config.js.map +1 -0
  62. package/dist/lib/output.d.ts +32 -0
  63. package/dist/lib/output.d.ts.map +1 -0
  64. package/dist/lib/output.js +82 -0
  65. package/dist/lib/output.js.map +1 -0
  66. package/package.json +48 -0
@@ -0,0 +1,12 @@
1
+ export declare function modelsCommand(): Promise<void>;
2
+ export declare function creditsCommand(): Promise<void>;
3
+ export declare function setupOpenclawCommand(opts: {
4
+ install?: boolean;
5
+ }): Promise<void>;
6
+ export declare function setupOpenCodeCommand(opts: {
7
+ install?: boolean;
8
+ }): Promise<void>;
9
+ export declare function setupCursorCommand(): Promise<void>;
10
+ export declare function setupClaudeCodeCommand(): Promise<void>;
11
+ export declare function claudeCommand(args: string[]): Promise<void>;
12
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":"AAuGA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBnD;AAID,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAmDpD;AAID,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChB;AAID,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB;AAID,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCxD;AAID,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB5D;AAID,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCjE"}
@@ -0,0 +1,280 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
2
+ import { homedir } from "os";
3
+ import { dirname, join } from "path";
4
+ import { spawn } from "child_process";
5
+ import { getApiKey, getLlmUrl } from "../lib/config.js";
6
+ import * as output from "../lib/output.js";
7
+ /** Model catalog — mirrors packages/llm-gateway/src/constants.ts SUPPORTED_MODELS */
8
+ const GATEWAY_MODELS = [
9
+ { id: "gemini-2.5-flash", name: "Gemini 2.5 Flash", owned_by: "google" },
10
+ { id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", owned_by: "google" },
11
+ { id: "gemini-3-flash", name: "Gemini 3 Flash", owned_by: "google" },
12
+ { id: "gemini-3-pro", name: "Gemini 3 Pro", owned_by: "google" },
13
+ { id: "claude-sonnet-4.5", name: "Claude Sonnet 4.5", owned_by: "anthropic" },
14
+ { id: "claude-opus-4.5", name: "Claude Opus 4.5", owned_by: "anthropic" },
15
+ { id: "claude-opus-4.6", name: "Claude Opus 4.6", owned_by: "anthropic" },
16
+ { id: "claude-haiku-4.5", name: "Claude Haiku 4.5", owned_by: "anthropic" },
17
+ { id: "gpt-5.2", name: "GPT 5.2", owned_by: "openai" },
18
+ { id: "gpt-5-mini", name: "GPT 5 Mini", owned_by: "openai" },
19
+ { id: "gpt-5-nano", name: "GPT 5 Nano", owned_by: "openai" },
20
+ { id: "gpt-5.2-codex", name: "GPT 5.2 Codex", owned_by: "openai" },
21
+ { id: "kimi-k2.5", name: "Kimi K2.5", owned_by: "moonshotai" },
22
+ { id: "qwen3-coder", name: "Qwen3 Coder", owned_by: "qwen" },
23
+ ];
24
+ /** Fetch live model list from the gateway; falls back to hardcoded catalog. */
25
+ async function resolveModels() {
26
+ const apiKey = getApiKey();
27
+ if (!apiKey)
28
+ return { models: GATEWAY_MODELS, live: false };
29
+ try {
30
+ const res = await fetch(`${getLlmUrl()}/v1/models`, {
31
+ headers: { "X-API-Key": apiKey },
32
+ signal: AbortSignal.timeout(5000),
33
+ });
34
+ if (!res.ok)
35
+ return { models: GATEWAY_MODELS, live: false };
36
+ const body = (await res.json());
37
+ const models = body.data.map((m) => {
38
+ const known = GATEWAY_MODELS.find((g) => g.id === m.id);
39
+ return { id: m.id, name: known?.name ?? m.id, owned_by: m.owned_by };
40
+ });
41
+ return { models, live: true };
42
+ }
43
+ catch {
44
+ return { models: GATEWAY_MODELS, live: false };
45
+ }
46
+ }
47
+ /* ─────────────────────── Shared helpers ──────────────────────────────────── */
48
+ function warnIfNoApiKey(apiKey) {
49
+ if (!apiKey) {
50
+ console.log();
51
+ output.warn("No API key configured. Set BANKR_API_KEY or run: bankr login");
52
+ }
53
+ }
54
+ /**
55
+ * Read a JSON config file, merge in new data, and write it back.
56
+ * Creates parent directories as needed. Preserves existing keys.
57
+ */
58
+ function installConfigFile(configFile, toolName, merge) {
59
+ const configDir = dirname(configFile);
60
+ let existing = {};
61
+ if (existsSync(configFile)) {
62
+ try {
63
+ existing = JSON.parse(readFileSync(configFile, "utf-8"));
64
+ }
65
+ catch {
66
+ output.warn(`Could not parse existing ${toolName} config — creating fresh`);
67
+ }
68
+ }
69
+ merge(existing);
70
+ if (!existsSync(configDir)) {
71
+ mkdirSync(configDir, { recursive: true });
72
+ }
73
+ writeFileSync(configFile, JSON.stringify(existing, null, 2) + "\n", "utf-8");
74
+ output.success(`Bankr provider installed to ${configFile}`);
75
+ }
76
+ /* ───────────────────────────── bankr llm models ───────────────────────────── */
77
+ export async function modelsCommand() {
78
+ const spin = output.spinner("Fetching models…");
79
+ const { models, live } = await resolveModels();
80
+ spin.stop();
81
+ output.brandBold("Bankr LLM Gateway — Available Models");
82
+ console.log();
83
+ const COL = { id: 24, name: 24, provider: 12 };
84
+ console.log(` ${output.fmt.brandBold("Model ID".padEnd(COL.id))} ${output.fmt.brandBold("Name".padEnd(COL.name))} ${output.fmt.brandBold("Provider")}`);
85
+ console.log(output.fmt.dim(` ${"─".repeat(COL.id + COL.name + COL.provider + 2)}`));
86
+ for (const m of models) {
87
+ console.log(` ${output.fmt.brand(m.id.padEnd(COL.id))} ${m.name.padEnd(COL.name)} ${output.fmt.dim(m.owned_by)}`);
88
+ }
89
+ console.log();
90
+ output.dim(` Gateway: ${getLlmUrl()}`);
91
+ output.dim(` ${models.length} models available${live ? "" : " (cached)"}`);
92
+ }
93
+ /* ─────────────────────── bankr llm credits ─────────────────────────────────── */
94
+ export async function creditsCommand() {
95
+ const apiKey = getApiKey();
96
+ if (!apiKey) {
97
+ output.error("Not authenticated. Run `bankr login` first.");
98
+ process.exit(1);
99
+ }
100
+ const llmUrl = getLlmUrl();
101
+ const spin = output.spinner("Fetching credit balance…");
102
+ try {
103
+ const res = await fetch(`${llmUrl}/v1/credits`, {
104
+ headers: { "X-API-Key": apiKey },
105
+ signal: AbortSignal.timeout(10000),
106
+ });
107
+ spin.stop();
108
+ if (res.status === 402) {
109
+ output.brandBold("Bankr LLM Gateway — Credits");
110
+ console.log();
111
+ output.label("Credit Balance", "$0.00");
112
+ console.log();
113
+ output.warn("Credits exhausted. No LLM Gateway requests can be made.");
114
+ return;
115
+ }
116
+ if (res.status === 401 || res.status === 403) {
117
+ output.error("Authentication failed. Check your API key or run: bankr login");
118
+ process.exit(1);
119
+ }
120
+ if (!res.ok) {
121
+ output.error(`Failed to fetch credits (HTTP ${res.status})`);
122
+ process.exit(1);
123
+ }
124
+ const body = (await res.json());
125
+ output.brandBold("Bankr LLM Gateway — Credits");
126
+ console.log();
127
+ output.label("Credit Balance", `$${body.balanceUsd.toFixed(2)}`);
128
+ console.log();
129
+ output.dim(` Gateway: ${llmUrl}`);
130
+ }
131
+ catch (err) {
132
+ spin.stop();
133
+ output.error(`Failed to fetch credits: ${err.message}`);
134
+ process.exit(1);
135
+ }
136
+ }
137
+ /* ──────────────────────── bankr llm setup openclaw ────────────────────────── */
138
+ export async function setupOpenclawCommand(opts) {
139
+ const apiKey = getApiKey();
140
+ const llmUrl = getLlmUrl();
141
+ const providerConfig = {
142
+ baseUrl: `${llmUrl}/v1`,
143
+ apiKey: apiKey ?? "${BANKR_API_KEY}",
144
+ api: "openai-completions",
145
+ models: GATEWAY_MODELS.map((m) => ({ id: m.id, name: m.name })),
146
+ };
147
+ if (opts.install) {
148
+ const configFile = join(homedir(), ".openclaw", "openclaw.json");
149
+ installConfigFile(configFile, "OpenClaw", function (existing) {
150
+ const models = existing.models ?? {};
151
+ const providers = models.providers ?? {};
152
+ providers.bankr = providerConfig;
153
+ models.providers = providers;
154
+ existing.models = models;
155
+ });
156
+ warnIfNoApiKey(apiKey);
157
+ return;
158
+ }
159
+ console.log(JSON.stringify({ models: { providers: { bankr: providerConfig } } }, null, 2));
160
+ console.log();
161
+ if (!apiKey) {
162
+ output.warn("No API key set. Replace ${BANKR_API_KEY} with your key or run: bankr login");
163
+ }
164
+ output.dim("Add to ~/.openclaw/openclaw.json or run: bankr llm setup openclaw --install");
165
+ }
166
+ /* ──────────────────────── bankr llm setup opencode ─────────────────────────── */
167
+ export async function setupOpenCodeCommand(opts) {
168
+ const apiKey = getApiKey();
169
+ const llmUrl = getLlmUrl();
170
+ const modelsObj = {};
171
+ for (const m of GATEWAY_MODELS) {
172
+ modelsObj[m.id] = { name: m.name };
173
+ }
174
+ const bankrProvider = {
175
+ npm: "@ai-sdk/openai-compatible",
176
+ name: "Bankr LLM Gateway",
177
+ options: {
178
+ baseURL: `${llmUrl}/v1`,
179
+ apiKey: apiKey ?? "{env:BANKR_API_KEY}",
180
+ },
181
+ models: modelsObj,
182
+ };
183
+ const SCHEMA_URL = "https://opencode.ai/config.json";
184
+ if (opts.install) {
185
+ const configFile = join(homedir(), ".config", "opencode", "opencode.json");
186
+ installConfigFile(configFile, "OpenCode", function (existing) {
187
+ const providers = existing.provider ?? {};
188
+ providers.bankr = bankrProvider;
189
+ existing.provider = providers;
190
+ existing.$schema ?? (existing.$schema = SCHEMA_URL);
191
+ });
192
+ warnIfNoApiKey(apiKey);
193
+ return;
194
+ }
195
+ const fullConfig = {
196
+ $schema: SCHEMA_URL,
197
+ provider: { bankr: bankrProvider },
198
+ };
199
+ console.log(JSON.stringify(fullConfig, null, 2));
200
+ console.log();
201
+ if (!apiKey) {
202
+ output.warn("No API key set. Set BANKR_API_KEY env var or run: bankr login");
203
+ }
204
+ output.dim("Add to ~/.config/opencode/opencode.json or run: bankr llm setup opencode --install");
205
+ }
206
+ /* ──────────────────────── bankr llm setup cursor ──────────────────────────── */
207
+ export async function setupCursorCommand() {
208
+ const apiKey = getApiKey();
209
+ const llmUrl = getLlmUrl();
210
+ const token = apiKey ?? "<your-bankr-api-key>";
211
+ output.brandBold("Cursor — Bankr LLM Gateway");
212
+ console.log();
213
+ output.info("In Cursor, go to Settings > Models and configure:");
214
+ console.log();
215
+ console.log(` 1. Enter your API key under ${output.fmt.brand("OpenAI API Key")}:`);
216
+ console.log(` ${token}`);
217
+ console.log();
218
+ console.log(` 2. Enable ${output.fmt.brand("Override OpenAI Base URL")} and set:`);
219
+ console.log(` ${llmUrl}/v1`);
220
+ console.log();
221
+ console.log(` 3. Click ${output.fmt.brand("+ Add model")} and add the models you want:`);
222
+ const recommended = ["claude-sonnet-4.5", "gemini-3-flash", "gpt-5.2"];
223
+ for (const id of recommended) {
224
+ console.log(` ${output.fmt.dim("•")} ${id}`);
225
+ }
226
+ console.log(` ${output.fmt.dim("(see full list: bankr llm models)")}`);
227
+ warnIfNoApiKey(apiKey);
228
+ console.log();
229
+ output.warn("When Override Base URL is enabled, ALL model requests go through the gateway.");
230
+ output.dim("Disable other models you don't need to avoid validation errors.");
231
+ }
232
+ /* ─────────────────────── bankr llm setup claude-code ──────────────────────── */
233
+ export async function setupClaudeCodeCommand() {
234
+ const apiKey = getApiKey();
235
+ const llmUrl = getLlmUrl();
236
+ const token = apiKey ?? "<your-bankr-api-key>";
237
+ output.brandBold("Claude Code — Bankr LLM Gateway");
238
+ console.log();
239
+ output.info("Add to your shell profile (~/.zshrc, ~/.bashrc):");
240
+ console.log();
241
+ console.log(` export ANTHROPIC_BASE_URL="${llmUrl}"`);
242
+ console.log(` export ANTHROPIC_AUTH_TOKEN="${token}"`);
243
+ warnIfNoApiKey(apiKey);
244
+ console.log();
245
+ output.dim("All Claude Code requests will route through the Bankr gateway.");
246
+ output.dim("Or launch directly: bankr llm claude");
247
+ }
248
+ /* ─────────────────────────── bankr llm claude ─────────────────────────────── */
249
+ export async function claudeCommand(args) {
250
+ const apiKey = getApiKey();
251
+ if (!apiKey) {
252
+ output.error("Not authenticated. Run `bankr login` first.");
253
+ process.exit(1);
254
+ }
255
+ const llmUrl = getLlmUrl();
256
+ output.dim(`Launching Claude Code via ${llmUrl}`);
257
+ return new Promise(() => {
258
+ const child = spawn("claude", args, {
259
+ stdio: "inherit",
260
+ env: {
261
+ ...process.env,
262
+ ANTHROPIC_BASE_URL: llmUrl,
263
+ ANTHROPIC_AUTH_TOKEN: apiKey,
264
+ },
265
+ });
266
+ child.on("error", (err) => {
267
+ if (err.code === "ENOENT") {
268
+ output.error("Claude Code not found. Install: https://docs.anthropic.com/en/docs/claude-code");
269
+ }
270
+ else {
271
+ output.error(`Failed to start Claude Code: ${err.message}`);
272
+ }
273
+ process.exit(1);
274
+ });
275
+ child.on("exit", (code) => {
276
+ process.exit(code ?? 0);
277
+ });
278
+ });
279
+ }
280
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function loginCommand(opts: {
2
+ apiUrl?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAuBA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoI3E"}
@@ -0,0 +1,122 @@
1
+ import { confirm, input, select } from "@inquirer/prompts";
2
+ import open from "open";
3
+ import { DEFAULT_API_URL, getApiUrl, getConfigPath, readConfig, writeConfig, } from "../lib/config.js";
4
+ import * as output from "../lib/output.js";
5
+ const DEFAULT_DASHBOARD_URL = "https://bankr.bot/api";
6
+ function deriveDashboardUrl(apiUrl) {
7
+ if (apiUrl === DEFAULT_API_URL) {
8
+ return DEFAULT_DASHBOARD_URL;
9
+ }
10
+ return (apiUrl.replace(/\/+$/, "").replace("api.", "").replace("api-", "") + "/api");
11
+ }
12
+ export async function loginCommand(opts) {
13
+ const config = readConfig();
14
+ const resolvedApiUrl = opts.apiUrl ?? getApiUrl();
15
+ if (resolvedApiUrl !== DEFAULT_API_URL) {
16
+ console.log();
17
+ output.warn(`Bankr API URL is set to a non-official URL: ${resolvedApiUrl}`);
18
+ output.dim(` Official URL: ${DEFAULT_API_URL}`);
19
+ console.log();
20
+ const proceed = await confirm({
21
+ message: "Continue with this URL?",
22
+ default: false,
23
+ theme: output.bankrTheme,
24
+ });
25
+ if (!proceed) {
26
+ output.info(`Using official Bankr API URL: ${DEFAULT_API_URL}`);
27
+ config.apiUrl = undefined;
28
+ }
29
+ else {
30
+ config.apiUrl = resolvedApiUrl;
31
+ }
32
+ }
33
+ else if (opts.apiUrl) {
34
+ config.apiUrl = opts.apiUrl;
35
+ }
36
+ const apiUrl = config.apiUrl || DEFAULT_API_URL;
37
+ console.log();
38
+ output.brandBold(" Bankr CLI Login");
39
+ console.log();
40
+ const choice = await select({
41
+ message: "How would you like to authenticate?",
42
+ choices: [
43
+ {
44
+ name: "Open bankr.bot/api to generate a new Bankr API key",
45
+ value: "browser",
46
+ },
47
+ {
48
+ name: "Paste an existing Bankr API key",
49
+ value: "paste",
50
+ },
51
+ ],
52
+ theme: output.bankrTheme,
53
+ });
54
+ if (choice === "browser") {
55
+ const dashboardUrl = deriveDashboardUrl(apiUrl);
56
+ output.info("Opening Bankr dashboard...");
57
+ output.dim(dashboardUrl);
58
+ try {
59
+ await open(dashboardUrl);
60
+ }
61
+ catch {
62
+ output.dim("Could not open browser automatically.");
63
+ output.dim(`Visit ${dashboardUrl} to get your Bankr API key.`);
64
+ }
65
+ console.log();
66
+ output.dim("Generate a Bankr API key, then paste it below.");
67
+ console.log();
68
+ }
69
+ const apiKey = await input({
70
+ message: "Paste your Bankr API key:",
71
+ theme: output.bankrTheme,
72
+ transformer: (value) => "*".repeat(value.length),
73
+ validate: (value) => {
74
+ const trimmed = value.trim();
75
+ if (!trimmed)
76
+ return "Bankr API key is required.";
77
+ if (!trimmed.startsWith("bk_"))
78
+ return 'Invalid format. Bankr API keys start with "bk_".';
79
+ return true;
80
+ },
81
+ });
82
+ const spin = output.spinner("Validating Bankr API key...");
83
+ try {
84
+ const res = await fetch(`${apiUrl}/agent/me`, {
85
+ headers: { "X-API-Key": apiKey.trim() },
86
+ });
87
+ if (res.ok) {
88
+ spin.succeed("Bankr API key validated successfully");
89
+ }
90
+ else if (res.status === 401 || res.status === 403) {
91
+ const body = await res
92
+ .json()
93
+ .catch(() => ({}));
94
+ const errorType = body.error ?? "";
95
+ if (res.status === 403 || errorType === "Agent API access not enabled") {
96
+ spin.fail("Agent API access is not enabled");
97
+ output.error("Your API key is valid but does not have Agent API access enabled.");
98
+ output.info("Go to https://bankr.bot/api and enable Agent API access for this key.");
99
+ }
100
+ else if (errorType === "Authentication required") {
101
+ spin.fail("API key is not linked to a wallet");
102
+ output.error("This API key is not associated with a wallet. Generate a new key at https://bankr.bot/api");
103
+ }
104
+ else {
105
+ spin.fail("Invalid Bankr API key");
106
+ output.error("The provided API key is invalid or inactive. Generate a new key at https://bankr.bot/api");
107
+ }
108
+ process.exit(1);
109
+ }
110
+ else {
111
+ spin.warn("Could not validate Bankr API key (API unreachable), saving anyway");
112
+ }
113
+ }
114
+ catch {
115
+ spin.warn("Could not validate Bankr API key (network error), saving anyway");
116
+ }
117
+ config.apiKey = apiKey.trim();
118
+ writeConfig(config);
119
+ output.success(`Credentials saved to ${getConfigPath()}`);
120
+ output.dim(`Bankr API URL: ${apiUrl}`);
121
+ }
122
+ //# 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,2 @@
1
+ export declare function logoutCommand(): Promise<void>;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAUnD"}
@@ -0,0 +1,13 @@
1
+ import { existsSync } from "fs";
2
+ import { clearConfig, getConfigPath } from "../lib/config.js";
3
+ import * as output from "../lib/output.js";
4
+ export async function logoutCommand() {
5
+ const configPath = getConfigPath();
6
+ if (!existsSync(configPath)) {
7
+ output.dim("No credentials found. Already logged out.");
8
+ return;
9
+ }
10
+ clearConfig();
11
+ output.success(`Credentials cleared from ${configPath}`);
12
+ }
13
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,WAAW,EAAE,CAAC;IACd,MAAM,CAAC,OAAO,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function promptCommand(text: string): Promise<void>;
2
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0D/D"}
@@ -0,0 +1,56 @@
1
+ import { pollJob, submitPrompt } from "../lib/api.js";
2
+ import { requireApiKey } from "../lib/config.js";
3
+ import * as output from "../lib/output.js";
4
+ export async function promptCommand(text) {
5
+ requireApiKey();
6
+ const spin = output.spinner("Submitting prompt...");
7
+ let jobId;
8
+ try {
9
+ const res = await submitPrompt(text);
10
+ jobId = res.jobId;
11
+ spin.text = `Processing... (${jobId})`;
12
+ }
13
+ catch (err) {
14
+ spin.fail("Failed to submit prompt");
15
+ output.error(err.message);
16
+ process.exit(1);
17
+ }
18
+ try {
19
+ const startTime = Date.now();
20
+ const result = await pollJob(jobId, {
21
+ interval: 2000,
22
+ onStatus: () => {
23
+ const elapsed = output.formatDuration(Date.now() - startTime);
24
+ spin.text = `Processing... (${elapsed})`;
25
+ },
26
+ });
27
+ if (result.status === "completed") {
28
+ const elapsed = output.formatDuration(result.processingTime ?? Date.now() - startTime);
29
+ spin.succeed(`Completed in ${elapsed}`);
30
+ console.log();
31
+ if (result.response) {
32
+ console.log(result.response);
33
+ }
34
+ if (result.transactions && result.transactions.length > 0) {
35
+ console.log();
36
+ output.dim(`${result.transactions.length} transaction(s) returned. Use the web app to review and execute.`);
37
+ }
38
+ }
39
+ else if (result.status === "failed") {
40
+ spin.fail("Job failed");
41
+ if (result.error) {
42
+ output.error(result.error);
43
+ }
44
+ process.exit(1);
45
+ }
46
+ else if (result.status === "cancelled") {
47
+ spin.warn("Job was cancelled");
48
+ }
49
+ }
50
+ catch (err) {
51
+ spin.fail("Error while polling");
52
+ output.error(err.message);
53
+ process.exit(1);
54
+ }
55
+ }
56
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,aAAa,EAAE,CAAC;IAEhB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEpD,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,kBAAkB,KAAK,GAAG,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE;YAClC,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;gBAC9D,IAAI,CAAC,IAAI,GAAG,kBAAkB,OAAO,GAAG,CAAC;YAC3C,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CACnC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAChD,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,CACR,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,kEAAkE,CAChG,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type SignatureType } from "../lib/api.js";
2
+ interface SignOptions {
3
+ type: SignatureType;
4
+ message?: string;
5
+ typedData?: string;
6
+ transaction?: string;
7
+ }
8
+ export declare function signCommand(opts: SignOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../src/commands/sign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,aAAa,EAAoB,MAAM,eAAe,CAAC;AAG3E,UAAU,WAAW;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqElE"}
@@ -0,0 +1,67 @@
1
+ import { sign } from "../lib/api.js";
2
+ import * as output from "../lib/output.js";
3
+ export async function signCommand(opts) {
4
+ const request = {
5
+ signatureType: opts.type,
6
+ };
7
+ // Validate and parse input based on signature type
8
+ switch (opts.type) {
9
+ case "personal_sign":
10
+ if (!opts.message) {
11
+ output.error("--message is required for personal_sign");
12
+ process.exit(1);
13
+ }
14
+ request.message = opts.message;
15
+ break;
16
+ case "eth_signTypedData_v4":
17
+ if (!opts.typedData) {
18
+ output.error("--typed-data is required for eth_signTypedData_v4");
19
+ process.exit(1);
20
+ }
21
+ try {
22
+ request.typedData = JSON.parse(opts.typedData);
23
+ }
24
+ catch {
25
+ output.error("--typed-data must be valid JSON");
26
+ process.exit(1);
27
+ }
28
+ break;
29
+ case "eth_signTransaction":
30
+ if (!opts.transaction) {
31
+ output.error("--transaction is required for eth_signTransaction");
32
+ process.exit(1);
33
+ }
34
+ try {
35
+ request.transaction = JSON.parse(opts.transaction);
36
+ }
37
+ catch {
38
+ output.error("--transaction must be valid JSON");
39
+ process.exit(1);
40
+ }
41
+ break;
42
+ default:
43
+ output.error(`Invalid signature type: ${opts.type}. Must be one of: personal_sign, eth_signTypedData_v4, eth_signTransaction`);
44
+ process.exit(1);
45
+ }
46
+ // Execute signing with spinner
47
+ const spinner = output.spinner("Signing...");
48
+ try {
49
+ const result = await sign(request);
50
+ spinner.stop();
51
+ if (!result.success) {
52
+ output.error(result.error || "Signing failed");
53
+ process.exit(1);
54
+ }
55
+ output.success("Signed successfully");
56
+ console.log();
57
+ output.keyValue("Signature", result.signature || "");
58
+ output.keyValue("Signer", result.signer);
59
+ output.keyValue("Type", result.signatureType);
60
+ }
61
+ catch (err) {
62
+ spinner.stop();
63
+ output.error(err.message);
64
+ process.exit(1);
65
+ }
66
+ }
67
+ //# sourceMappingURL=sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/commands/sign.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function statusCommand(jobId: string): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map