@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 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhE"}
@@ -0,0 +1,45 @@
1
+ import { getJobStatus } from "../lib/api.js";
2
+ import { requireApiKey } from "../lib/config.js";
3
+ import * as output from "../lib/output.js";
4
+ export async function statusCommand(jobId) {
5
+ requireApiKey();
6
+ const spin = output.spinner("Fetching job status...");
7
+ try {
8
+ const status = await getJobStatus(jobId);
9
+ spin.stop();
10
+ output.label("Job", status.jobId);
11
+ output.label("Status", output.formatStatus(status.status));
12
+ output.label("Prompt", `"${status.prompt}"`);
13
+ output.label("Created", status.createdAt);
14
+ if (status.startedAt) {
15
+ output.label("Started", status.startedAt);
16
+ }
17
+ if (status.completedAt) {
18
+ output.label("Completed", status.completedAt);
19
+ }
20
+ if (status.cancelledAt) {
21
+ output.label("Cancelled", status.cancelledAt);
22
+ }
23
+ if (status.processingTime) {
24
+ output.label("Duration", output.formatDuration(status.processingTime));
25
+ }
26
+ if (status.response) {
27
+ console.log();
28
+ console.log(status.response);
29
+ }
30
+ if (status.error) {
31
+ console.log();
32
+ output.error(status.error);
33
+ }
34
+ if (status.transactions && status.transactions.length > 0) {
35
+ console.log();
36
+ output.dim(`${status.transactions.length} transaction(s) attached.`);
37
+ }
38
+ }
39
+ catch (err) {
40
+ spin.fail("Failed to fetch job status");
41
+ output.error(err.message);
42
+ process.exit(1);
43
+ }
44
+ }
45
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa;IAC/C,aAAa,EAAE,CAAC;IAEhB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,2BAA2B,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ interface SubmitOptions {
2
+ to: string;
3
+ chainId: string;
4
+ value?: string;
5
+ data?: string;
6
+ gas?: string;
7
+ gasPrice?: string;
8
+ maxFeePerGas?: string;
9
+ maxPriorityFeePerGas?: string;
10
+ nonce?: string;
11
+ description?: string;
12
+ noWait?: boolean;
13
+ }
14
+ export declare function submitCommand(opts: SubmitOptions): Promise<void>;
15
+ export declare function submitJsonCommand(json: string, opts: {
16
+ noWait?: boolean;
17
+ description?: string;
18
+ }): Promise<void>;
19
+ export {};
20
+ //# sourceMappingURL=submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA0BD,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDtE;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDrH"}
@@ -0,0 +1,124 @@
1
+ import { submit } from "../lib/api.js";
2
+ import * as output from "../lib/output.js";
3
+ function displayResult(result) {
4
+ if (!result.success) {
5
+ output.error(result.error || "Submission failed");
6
+ if (result.transactionHash) {
7
+ output.keyValue("Transaction Hash", result.transactionHash);
8
+ }
9
+ process.exit(1);
10
+ }
11
+ output.success("Transaction submitted");
12
+ console.log();
13
+ output.keyValue("Transaction Hash", result.transactionHash || "");
14
+ output.keyValue("Status", result.status || "unknown");
15
+ output.keyValue("Signer", result.signer);
16
+ output.keyValue("Chain ID", result.chainId.toString());
17
+ if (result.blockNumber) {
18
+ output.keyValue("Block Number", result.blockNumber);
19
+ }
20
+ if (result.gasUsed) {
21
+ output.keyValue("Gas Used", result.gasUsed);
22
+ }
23
+ }
24
+ export async function submitCommand(opts) {
25
+ // Validate required fields
26
+ if (!opts.to) {
27
+ output.error("--to is required");
28
+ process.exit(1);
29
+ }
30
+ if (!opts.chainId) {
31
+ output.error("--chain-id is required");
32
+ process.exit(1);
33
+ }
34
+ const chainId = parseInt(opts.chainId, 10);
35
+ if (isNaN(chainId)) {
36
+ output.error("--chain-id must be a number");
37
+ process.exit(1);
38
+ }
39
+ let nonce;
40
+ if (opts.nonce) {
41
+ nonce = parseInt(opts.nonce, 10);
42
+ if (isNaN(nonce)) {
43
+ output.error("--nonce must be a number");
44
+ process.exit(1);
45
+ }
46
+ }
47
+ const request = {
48
+ transaction: {
49
+ to: opts.to,
50
+ chainId,
51
+ value: opts.value,
52
+ data: opts.data,
53
+ gas: opts.gas,
54
+ gasPrice: opts.gasPrice,
55
+ maxFeePerGas: opts.maxFeePerGas,
56
+ maxPriorityFeePerGas: opts.maxPriorityFeePerGas,
57
+ nonce,
58
+ },
59
+ description: opts.description,
60
+ waitForConfirmation: !opts.noWait,
61
+ };
62
+ // Execute submission with spinner
63
+ const spinner = output.spinner(opts.noWait ? "Submitting transaction..." : "Submitting and waiting for confirmation...");
64
+ try {
65
+ const result = await submit(request);
66
+ spinner.stop();
67
+ displayResult(result);
68
+ }
69
+ catch (err) {
70
+ spinner.stop();
71
+ output.error(err.message);
72
+ process.exit(1);
73
+ }
74
+ }
75
+ // Alternative: submit from JSON
76
+ export async function submitJsonCommand(json, opts) {
77
+ let transaction;
78
+ try {
79
+ transaction = JSON.parse(json);
80
+ }
81
+ catch {
82
+ output.error("Invalid JSON. Expected: {to, chainId, value?, data?}");
83
+ process.exit(1);
84
+ }
85
+ if (!transaction || typeof transaction !== "object" || Array.isArray(transaction)) {
86
+ output.error("Invalid JSON. Expected object: {to, chainId, value?, data?}");
87
+ process.exit(1);
88
+ }
89
+ // Validate required fields
90
+ if (!transaction.to) {
91
+ output.error("Transaction must have 'to' field");
92
+ process.exit(1);
93
+ }
94
+ if (transaction.chainId === undefined) {
95
+ output.error("Transaction must have 'chainId' field");
96
+ process.exit(1);
97
+ }
98
+ if (typeof transaction.chainId !== "number" || isNaN(transaction.chainId)) {
99
+ output.error("Transaction 'chainId' must be a number");
100
+ process.exit(1);
101
+ }
102
+ if (transaction.nonce !== undefined && (typeof transaction.nonce !== "number" || isNaN(transaction.nonce))) {
103
+ output.error("Transaction 'nonce' must be a number");
104
+ process.exit(1);
105
+ }
106
+ const request = {
107
+ transaction,
108
+ description: opts.description,
109
+ waitForConfirmation: !opts.noWait,
110
+ };
111
+ // Execute submission with spinner
112
+ const spinner = output.spinner(opts.noWait ? "Submitting transaction..." : "Submitting and waiting for confirmation...");
113
+ try {
114
+ const result = await submit(request);
115
+ spinner.stop();
116
+ displayResult(result);
117
+ }
118
+ catch (err) {
119
+ spinner.stop();
120
+ output.error(err.message);
121
+ process.exit(1);
122
+ }
123
+ }
124
+ //# sourceMappingURL=submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function whoamiCommand(): Promise<void>;
2
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAWA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuFnD"}
@@ -0,0 +1,75 @@
1
+ import { existsSync } from "fs";
2
+ import { getApiKey, getApiUrl, getConfigPath, isCustomApiUrl, } from "../lib/config.js";
3
+ import { getUserInfo } from "../lib/api.js";
4
+ import * as output from "../lib/output.js";
5
+ export async function whoamiCommand() {
6
+ const apiKey = getApiKey();
7
+ const apiUrl = getApiUrl();
8
+ const configPath = getConfigPath();
9
+ if (!apiKey) {
10
+ output.error("Not authenticated. Run `bankr login` to set up your Bankr API key.");
11
+ process.exit(1);
12
+ }
13
+ const source = process.env.BANKR_API_KEY ? "env (BANKR_API_KEY)" : configPath;
14
+ output.label("Bankr API Key", output.maskApiKey(apiKey));
15
+ output.label("Bankr API URL", apiUrl);
16
+ if (isCustomApiUrl()) {
17
+ output.warn("Using a non-official Bankr API URL");
18
+ }
19
+ output.label("Source", source);
20
+ if (existsSync(configPath)) {
21
+ output.label("Config", configPath);
22
+ }
23
+ console.log();
24
+ const spin = output.spinner("Checking Bankr API connection...");
25
+ try {
26
+ const res = await fetch(`${apiUrl}/_health`, {
27
+ headers: { "X-API-Key": apiKey },
28
+ });
29
+ if (res.ok) {
30
+ spin.succeed("Bankr API connection OK");
31
+ }
32
+ else {
33
+ spin.fail(`Bankr API returned ${res.status}`);
34
+ return;
35
+ }
36
+ }
37
+ catch (err) {
38
+ spin.fail(`Could not reach Bankr API: ${err.message}`);
39
+ return;
40
+ }
41
+ // Fetch user profile info
42
+ const profileSpin = output.spinner("Fetching account info...");
43
+ try {
44
+ const info = await getUserInfo();
45
+ profileSpin.succeed("Account info loaded");
46
+ console.log();
47
+ output.label("Wallets", "");
48
+ for (const w of info.wallets) {
49
+ console.log(` ${w.chain.toUpperCase().padEnd(8)} ${w.address}`);
50
+ }
51
+ if (info.socialAccounts.length > 0) {
52
+ console.log();
53
+ output.label("Social Accounts", "");
54
+ for (const s of info.socialAccounts) {
55
+ const displayPlatform = s.platform === "twitter" ? "x (twitter)" : s.platform;
56
+ console.log(` ${displayPlatform.padEnd(12)} ${s.username ?? output.fmt.dim("(no username)")}`);
57
+ }
58
+ }
59
+ console.log();
60
+ const clubStatus = info.bankrClub.active
61
+ ? `Active (${info.bankrClub.subscriptionType ?? "unknown"})`
62
+ : "Inactive";
63
+ output.label("Bankr Club", clubStatus);
64
+ if (info.refCode) {
65
+ output.label("Referral Code", info.refCode);
66
+ }
67
+ const { score, rank } = info.leaderboard;
68
+ const rankStr = rank ? ` (#${rank})` : "";
69
+ output.label("Score", `${score}${rankStr}`);
70
+ }
71
+ catch (err) {
72
+ profileSpin.fail(`Could not fetch account info: ${err.message}`);
73
+ }
74
+ }
75
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { clearConfig, DEFAULT_API_URL, getApiKey, getApiUrl, readConfig, setConfigPath, writeConfig, } from "./lib/config.js";
2
+ export type { BankrConfig } from "./lib/config.js";
3
+ export { cancelJob, getJobStatus, getUserInfo, pollJob, submitPrompt, validateApiKey, } from "./lib/api.js";
4
+ export type { JobStatusResponse, PromptResponse, UserInfoResponse, } from "./lib/api.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,OAAO,EACP,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { clearConfig, DEFAULT_API_URL, getApiKey, getApiUrl, readConfig, setConfigPath, writeConfig, } from "./lib/config.js";
2
+ export { cancelJob, getJobStatus, getUserInfo, pollJob, submitPrompt, validateApiKey, } from "./lib/api.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,WAAW,EACX,OAAO,EACP,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,113 @@
1
+ export interface UserInfoResponse {
2
+ success: boolean;
3
+ wallets: {
4
+ chain: string;
5
+ address: string;
6
+ }[];
7
+ socialAccounts: {
8
+ platform: string;
9
+ username?: string;
10
+ }[];
11
+ refCode?: string;
12
+ bankrClub: {
13
+ active: boolean;
14
+ subscriptionType?: string;
15
+ renewOrCancelOn?: number;
16
+ };
17
+ leaderboard: {
18
+ score: number;
19
+ rank?: number;
20
+ };
21
+ }
22
+ export interface PromptResponse {
23
+ success: boolean;
24
+ jobId: string;
25
+ status: string;
26
+ message: string;
27
+ }
28
+ export interface JobStatusResponse {
29
+ success: boolean;
30
+ jobId: string;
31
+ status: "pending" | "processing" | "completed" | "failed" | "cancelled";
32
+ prompt: string;
33
+ createdAt: string;
34
+ processingTime?: number;
35
+ response?: string;
36
+ error?: string;
37
+ startedAt?: string;
38
+ completedAt?: string;
39
+ cancelledAt?: string;
40
+ transactions?: unknown[];
41
+ richData?: unknown[];
42
+ cancellable?: boolean;
43
+ }
44
+ export declare function submitPrompt(prompt: string): Promise<PromptResponse>;
45
+ export declare function getJobStatus(jobId: string): Promise<JobStatusResponse>;
46
+ export declare function cancelJob(jobId: string): Promise<JobStatusResponse>;
47
+ export declare function validateApiKey(): Promise<boolean>;
48
+ export declare function getUserInfo(): Promise<UserInfoResponse>;
49
+ export declare function pollJob(jobId: string, opts?: {
50
+ interval?: number;
51
+ maxAttempts?: number;
52
+ onStatus?: (status: JobStatusResponse) => void;
53
+ }): Promise<JobStatusResponse>;
54
+ export type SignatureType = "personal_sign" | "eth_signTypedData_v4" | "eth_signTransaction";
55
+ export interface SignRequest {
56
+ signatureType: SignatureType;
57
+ message?: string;
58
+ typedData?: {
59
+ domain: Record<string, unknown>;
60
+ types: Record<string, {
61
+ name: string;
62
+ type: string;
63
+ }[]>;
64
+ primaryType: string;
65
+ message: Record<string, unknown>;
66
+ };
67
+ transaction?: {
68
+ to: string;
69
+ chainId: number;
70
+ value?: string;
71
+ data?: string;
72
+ gas?: string;
73
+ gasPrice?: string;
74
+ maxFeePerGas?: string;
75
+ maxPriorityFeePerGas?: string;
76
+ nonce?: number;
77
+ };
78
+ }
79
+ export interface SignResponse {
80
+ success: boolean;
81
+ signature?: string;
82
+ signer: string;
83
+ signatureType: SignatureType;
84
+ error?: string;
85
+ }
86
+ export declare function sign(request: SignRequest): Promise<SignResponse>;
87
+ export interface SubmitRequest {
88
+ transaction: {
89
+ to: string;
90
+ chainId: number;
91
+ value?: string;
92
+ data?: string;
93
+ gas?: string;
94
+ gasPrice?: string;
95
+ maxFeePerGas?: string;
96
+ maxPriorityFeePerGas?: string;
97
+ nonce?: number;
98
+ };
99
+ description?: string;
100
+ waitForConfirmation?: boolean;
101
+ }
102
+ export interface SubmitResponse {
103
+ success: boolean;
104
+ transactionHash?: string;
105
+ status?: "success" | "reverted" | "pending";
106
+ blockNumber?: string;
107
+ gasUsed?: string;
108
+ signer: string;
109
+ chainId: number;
110
+ error?: string;
111
+ }
112
+ export declare function submit(request: SubmitRequest): Promise<SubmitResponse>;
113
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { getApiUrl, requireApiKey } from "./config.js";
2
+ const TERMINAL_STATUSES = [
3
+ "completed",
4
+ "failed",
5
+ "cancelled",
6
+ ];
7
+ function isTerminalStatus(status) {
8
+ return TERMINAL_STATUSES.includes(status);
9
+ }
10
+ function authHeaders() {
11
+ return {
12
+ "X-API-Key": requireApiKey(),
13
+ "Content-Type": "application/json",
14
+ };
15
+ }
16
+ async function handleResponse(res) {
17
+ if (!res.ok) {
18
+ const body = (await res
19
+ .json()
20
+ .catch(() => ({ message: res.statusText })));
21
+ const msg = body.message || body.error || res.statusText;
22
+ throw new Error(`API error (${res.status}): ${msg}`);
23
+ }
24
+ return res.json();
25
+ }
26
+ export async function submitPrompt(prompt) {
27
+ const res = await fetch(`${getApiUrl()}/agent/prompt`, {
28
+ method: "POST",
29
+ headers: authHeaders(),
30
+ body: JSON.stringify({ prompt }),
31
+ });
32
+ return handleResponse(res);
33
+ }
34
+ export async function getJobStatus(jobId) {
35
+ const res = await fetch(`${getApiUrl()}/agent/job/${jobId}`, {
36
+ headers: authHeaders(),
37
+ });
38
+ return handleResponse(res);
39
+ }
40
+ export async function cancelJob(jobId) {
41
+ const res = await fetch(`${getApiUrl()}/agent/job/${jobId}/cancel`, {
42
+ method: "POST",
43
+ headers: authHeaders(),
44
+ });
45
+ return handleResponse(res);
46
+ }
47
+ export async function validateApiKey() {
48
+ try {
49
+ const res = await fetch(`${getApiUrl()}/_health`, {
50
+ headers: { "X-API-Key": requireApiKey() },
51
+ });
52
+ return res.ok;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ export async function getUserInfo() {
59
+ const res = await fetch(`${getApiUrl()}/agent/me`, {
60
+ headers: authHeaders(),
61
+ });
62
+ return handleResponse(res);
63
+ }
64
+ export async function pollJob(jobId, opts = {}) {
65
+ const { interval = 2000, maxAttempts = 150, onStatus } = opts;
66
+ let attempts = 0;
67
+ while (attempts < maxAttempts) {
68
+ const status = await getJobStatus(jobId);
69
+ onStatus?.(status);
70
+ if (isTerminalStatus(status.status)) {
71
+ return status;
72
+ }
73
+ await new Promise((resolve) => setTimeout(resolve, interval));
74
+ attempts++;
75
+ }
76
+ throw new Error(`Polling timed out after ${maxAttempts} attempts`);
77
+ }
78
+ export async function sign(request) {
79
+ const res = await fetch(`${getApiUrl()}/agent/sign`, {
80
+ method: "POST",
81
+ headers: authHeaders(),
82
+ body: JSON.stringify(request),
83
+ });
84
+ return handleResponse(res);
85
+ }
86
+ export async function submit(request) {
87
+ const res = await fetch(`${getApiUrl()}/agent/submit`, {
88
+ method: "POST",
89
+ headers: authHeaders(),
90
+ body: JSON.stringify(request),
91
+ });
92
+ return handleResponse(res);
93
+ }
94
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface BankrConfig {
2
+ apiKey?: string;
3
+ apiUrl?: string;
4
+ llmUrl?: string;
5
+ }
6
+ export declare function setConfigPath(path: string): void;
7
+ export declare function getConfigPath(): string;
8
+ export declare const DEFAULT_API_URL = "https://api.bankr.bot";
9
+ export declare const DEFAULT_LLM_URL = "https://llm.bankr.bot";
10
+ export declare function readConfig(): BankrConfig;
11
+ export declare function writeConfig(config: BankrConfig): void;
12
+ export declare function clearConfig(): void;
13
+ export declare function getApiKey(): string | undefined;
14
+ export declare function getApiUrl(): string;
15
+ export declare function getLlmUrl(): string;
16
+ export declare function isCustomApiUrl(): boolean;
17
+ export declare function requireApiKey(): string;
18
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AASvD,wBAAgB,UAAU,IAAI,WAAW,CAYxC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAMrD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAQtC"}
@@ -0,0 +1,66 @@
1
+ import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "fs";
2
+ import { homedir } from "os";
3
+ import { dirname, join } from "path";
4
+ let configPathOverride;
5
+ const DEFAULT_CONFIG_FILE = join(homedir(), ".bankr", "config.json");
6
+ export function setConfigPath(path) {
7
+ configPathOverride = path;
8
+ }
9
+ export function getConfigPath() {
10
+ return configPathOverride || process.env.BANKR_CONFIG || DEFAULT_CONFIG_FILE;
11
+ }
12
+ export const DEFAULT_API_URL = "https://api.bankr.bot";
13
+ export const DEFAULT_LLM_URL = "https://llm.bankr.bot";
14
+ function ensureConfigDir() {
15
+ const configDir = dirname(getConfigPath());
16
+ if (!existsSync(configDir)) {
17
+ mkdirSync(configDir, { recursive: true, mode: 0o700 });
18
+ }
19
+ }
20
+ export function readConfig() {
21
+ const configFile = getConfigPath();
22
+ if (!existsSync(configFile)) {
23
+ return {};
24
+ }
25
+ const raw = readFileSync(configFile, "utf-8");
26
+ try {
27
+ return JSON.parse(raw);
28
+ }
29
+ catch {
30
+ console.warn(`Warning: Could not parse ${configFile}. Using defaults.`);
31
+ return {};
32
+ }
33
+ }
34
+ export function writeConfig(config) {
35
+ ensureConfigDir();
36
+ writeFileSync(getConfigPath(), JSON.stringify(config, null, 2) + "\n", {
37
+ encoding: "utf-8",
38
+ mode: 0o600,
39
+ });
40
+ }
41
+ export function clearConfig() {
42
+ const configFile = getConfigPath();
43
+ if (existsSync(configFile)) {
44
+ unlinkSync(configFile);
45
+ }
46
+ }
47
+ export function getApiKey() {
48
+ return process.env.BANKR_API_KEY || readConfig().apiKey;
49
+ }
50
+ export function getApiUrl() {
51
+ return process.env.BANKR_API_URL || readConfig().apiUrl || DEFAULT_API_URL;
52
+ }
53
+ export function getLlmUrl() {
54
+ return process.env.BANKR_LLM_URL || readConfig().llmUrl || DEFAULT_LLM_URL;
55
+ }
56
+ export function isCustomApiUrl() {
57
+ return getApiUrl() !== DEFAULT_API_URL;
58
+ }
59
+ export function requireApiKey() {
60
+ const key = getApiKey();
61
+ if (!key) {
62
+ throw new Error("Not authenticated. Run `bankr login` to set up your Bankr API key.");
63
+ }
64
+ return key;
65
+ }
66
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}