freeturtle 0.1.48 → 0.1.49
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/src/modules/onchain/bankr-tools.d.ts +4 -0
- package/dist/src/modules/onchain/bankr-tools.js +106 -0
- package/dist/src/modules/onchain/bankr-tools.js.map +1 -0
- package/dist/src/modules/onchain/index.d.ts +1 -0
- package/dist/src/modules/onchain/index.js +37 -6
- package/dist/src/modules/onchain/index.js.map +1 -1
- package/dist/src/modules/onchain/wallet/bankr.d.ts +68 -0
- package/dist/src/modules/onchain/wallet/bankr.js +90 -0
- package/dist/src/modules/onchain/wallet/bankr.js.map +1 -0
- package/dist/src/modules/onchain/wallet/index.js +5 -0
- package/dist/src/modules/onchain/wallet/index.js.map +1 -1
- package/dist/src/modules/onchain/wallet/types.d.ts +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ToolDefinition } from "../types.js";
|
|
2
|
+
import type { BankrWalletClient } from "./wallet/bankr.js";
|
|
3
|
+
export declare const bankrTools: ToolDefinition[];
|
|
4
|
+
export declare function executeBankrTool(name: string, input: Record<string, unknown>, client: BankrWalletClient): Promise<string>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export const bankrTools = [
|
|
2
|
+
{
|
|
3
|
+
name: "bankr_balances",
|
|
4
|
+
description: "Get token balances across all supported chains (Base, Ethereum, Polygon, Unichain, Solana). Returns native and token balances with USD values.",
|
|
5
|
+
input_schema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
chains: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: 'Comma-separated chain filter (e.g. "base,solana"). Omit for all chains.',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
required: [],
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "bankr_prompt",
|
|
18
|
+
description: 'Execute an onchain command using natural language. Examples: "what is the price of ETH?", "swap 0.1 ETH for USDC on Base", "what are my token balances?", "deploy a token called MyAgent with symbol AGENT on base". The command is processed asynchronously and this tool waits for the result.',
|
|
19
|
+
input_schema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
command: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Natural language onchain command. Be specific with amounts, chain names, and token symbols.",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
required: ["command"],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "bankr_job_status",
|
|
32
|
+
description: "Check the status of a previously submitted bankr job. Use this if a prior bankr_prompt timed out and you want to check if it completed.",
|
|
33
|
+
input_schema: {
|
|
34
|
+
type: "object",
|
|
35
|
+
properties: {
|
|
36
|
+
jobId: {
|
|
37
|
+
type: "string",
|
|
38
|
+
description: "The job ID returned by a previous bankr_prompt call.",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
required: ["jobId"],
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
async function pollJob(client, jobId) {
|
|
46
|
+
let delay = 1000;
|
|
47
|
+
const maxDelay = 16000;
|
|
48
|
+
const deadline = Date.now() + 60000;
|
|
49
|
+
while (Date.now() < deadline) {
|
|
50
|
+
const job = await client.getJobStatus(jobId);
|
|
51
|
+
if (job.status === "completed") {
|
|
52
|
+
return job.response ?? "Job completed (no response body).";
|
|
53
|
+
}
|
|
54
|
+
if (job.status === "failed") {
|
|
55
|
+
return `Job failed: ${job.response ?? "unknown error"}`;
|
|
56
|
+
}
|
|
57
|
+
if (job.status === "cancelled") {
|
|
58
|
+
return "Job was cancelled.";
|
|
59
|
+
}
|
|
60
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
61
|
+
delay = Math.min(delay * 2, maxDelay);
|
|
62
|
+
}
|
|
63
|
+
return `Job ${jobId} is still processing. Use bankr_job_status to check later.`;
|
|
64
|
+
}
|
|
65
|
+
export async function executeBankrTool(name, input, client) {
|
|
66
|
+
switch (name) {
|
|
67
|
+
case "bankr_balances": {
|
|
68
|
+
const chains = input.chains
|
|
69
|
+
? input.chains.split(",").map((c) => c.trim())
|
|
70
|
+
: undefined;
|
|
71
|
+
const data = await client.getBalances(chains);
|
|
72
|
+
const lines = [
|
|
73
|
+
`EVM Address: ${data.evmAddress}`,
|
|
74
|
+
`Solana Address: ${data.solAddress}`,
|
|
75
|
+
"",
|
|
76
|
+
];
|
|
77
|
+
for (const [chain, info] of Object.entries(data.balances)) {
|
|
78
|
+
lines.push(`## ${chain}`, `Native: ${info.nativeBalance} ($${info.nativeUsd})`);
|
|
79
|
+
if (info.tokenBalances?.length) {
|
|
80
|
+
for (const tb of info.tokenBalances) {
|
|
81
|
+
const t = tb.token;
|
|
82
|
+
lines.push(` ${t.baseToken.symbol}: ${t.balance} ($${t.balanceUSD.toFixed(2)})`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
lines.push(`Total: $${info.total}`, "");
|
|
86
|
+
}
|
|
87
|
+
return lines.join("\n");
|
|
88
|
+
}
|
|
89
|
+
case "bankr_prompt": {
|
|
90
|
+
const command = input.command;
|
|
91
|
+
const res = await client.prompt(command);
|
|
92
|
+
if (!res.success) {
|
|
93
|
+
return `Bankr prompt failed: ${res.message ?? "unknown error"}`;
|
|
94
|
+
}
|
|
95
|
+
return pollJob(client, res.jobId);
|
|
96
|
+
}
|
|
97
|
+
case "bankr_job_status": {
|
|
98
|
+
const jobId = input.jobId;
|
|
99
|
+
const job = await client.getJobStatus(jobId);
|
|
100
|
+
return JSON.stringify(job, null, 2);
|
|
101
|
+
}
|
|
102
|
+
default:
|
|
103
|
+
throw new Error(`Unknown bankr tool: ${name}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=bankr-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bankr-tools.js","sourceRoot":"","sources":["../../../../src/modules/onchain/bankr-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export declare class OnchainModule implements FreeTurtleModule {
|
|
|
8
8
|
private env;
|
|
9
9
|
private hasWriteAccess;
|
|
10
10
|
private hasTaskboard;
|
|
11
|
+
private hasBankrWallet;
|
|
11
12
|
private workspaceDir?;
|
|
12
13
|
private walletProvider;
|
|
13
14
|
initialize(_config: Record<string, unknown>, env: Record<string, string>, options?: {
|
|
@@ -5,24 +5,30 @@ import { OnchainClient } from "./client.js";
|
|
|
5
5
|
import { onchainTools } from "./tools.js";
|
|
6
6
|
import { taskboardTools, executeTaskboardTool, } from "./taskboard.js";
|
|
7
7
|
import { portfolioTools, executePortfolioTool, } from "./portfolio.js";
|
|
8
|
+
import { bankrTools, executeBankrTool, } from "./bankr-tools.js";
|
|
8
9
|
import { createWalletProvider } from "./wallet/index.js";
|
|
10
|
+
import { getBankrClient, getCachedBalances } from "./wallet/bankr.js";
|
|
9
11
|
import { setCachedAccount, getTaskChain } from "./chains.js";
|
|
10
12
|
import { createPublicClient, formatEther, http } from "viem";
|
|
11
13
|
export class OnchainModule {
|
|
12
14
|
name = "onchain";
|
|
13
15
|
description = "Read smart contracts, balances, and transactions on Base.";
|
|
14
|
-
client;
|
|
16
|
+
client = null;
|
|
15
17
|
policy;
|
|
16
18
|
env;
|
|
17
19
|
hasWriteAccess = false;
|
|
18
20
|
hasTaskboard = false;
|
|
21
|
+
hasBankrWallet = false;
|
|
19
22
|
workspaceDir;
|
|
20
23
|
walletProvider = null;
|
|
21
24
|
async initialize(_config, env, options) {
|
|
22
25
|
const rpcUrl = env.RPC_URL;
|
|
23
|
-
if (!rpcUrl)
|
|
24
|
-
throw new Error("Onchain module requires RPC_URL");
|
|
25
|
-
|
|
26
|
+
if (!rpcUrl && !env.BANKR_API_KEY) {
|
|
27
|
+
throw new Error("Onchain module requires RPC_URL (or BANKR_API_KEY for bankr wallet)");
|
|
28
|
+
}
|
|
29
|
+
if (rpcUrl) {
|
|
30
|
+
this.client = new OnchainClient(rpcUrl, env.BLOCK_EXPLORER_API_KEY);
|
|
31
|
+
}
|
|
26
32
|
this.policy = options?.policy;
|
|
27
33
|
this.env = env;
|
|
28
34
|
this.workspaceDir = _config._workspaceDir;
|
|
@@ -32,6 +38,7 @@ export class OnchainModule {
|
|
|
32
38
|
if (this.walletProvider) {
|
|
33
39
|
setCachedAccount(this.walletProvider.account);
|
|
34
40
|
}
|
|
41
|
+
this.hasBankrWallet = this.walletProvider?.type === "bankr";
|
|
35
42
|
this.hasWriteAccess = this.walletProvider !== null && !!env.TASK_CHAIN_ID;
|
|
36
43
|
this.hasTaskboard =
|
|
37
44
|
this.hasWriteAccess && !!env.TASK_CONTRACT_ADDRESS;
|
|
@@ -55,22 +62,31 @@ export class OnchainModule {
|
|
|
55
62
|
if (this.hasWriteAccess) {
|
|
56
63
|
tools.push(...portfolioTools);
|
|
57
64
|
}
|
|
65
|
+
if (this.hasBankrWallet) {
|
|
66
|
+
tools.push(...bankrTools);
|
|
67
|
+
}
|
|
58
68
|
}
|
|
59
69
|
return tools;
|
|
60
70
|
}
|
|
61
71
|
async executeTool(name, input) {
|
|
62
|
-
// Existing read-only tools
|
|
72
|
+
// Existing read-only tools (require OnchainClient / RPC_URL)
|
|
63
73
|
switch (name) {
|
|
64
74
|
case "read_contract": {
|
|
75
|
+
if (!this.client)
|
|
76
|
+
return "RPC_URL not configured. Read-only onchain tools require RPC_URL.";
|
|
65
77
|
assertOnchainScopeAllowed(this.policy, input.address, input.function_name);
|
|
66
78
|
const result = await withRetry(() => this.client.readContract(input.address, input.abi, input.function_name, input.args));
|
|
67
79
|
return JSON.stringify(result);
|
|
68
80
|
}
|
|
69
81
|
case "get_balance": {
|
|
82
|
+
if (!this.client)
|
|
83
|
+
return "RPC_URL not configured. Read-only onchain tools require RPC_URL.";
|
|
70
84
|
const balance = await withRetry(() => this.client.getBalance(input.address));
|
|
71
85
|
return `${balance} ETH`;
|
|
72
86
|
}
|
|
73
87
|
case "get_transactions": {
|
|
88
|
+
if (!this.client)
|
|
89
|
+
return "RPC_URL not configured. Read-only onchain tools require RPC_URL.";
|
|
74
90
|
const txs = await withRetry(() => this.client.getTransactions(input.address, input.limit ?? 10));
|
|
75
91
|
return JSON.stringify(txs);
|
|
76
92
|
}
|
|
@@ -78,12 +94,18 @@ export class OnchainModule {
|
|
|
78
94
|
if (!isAlpha())
|
|
79
95
|
return ALPHA_REQUIRED_MSG;
|
|
80
96
|
if (!this.walletProvider) {
|
|
81
|
-
return "No wallet configured. Set CDP_API_KEY_ID + CDP_API_KEY_SECRET for CDP wallet,
|
|
97
|
+
return "No wallet configured. Set CDP_API_KEY_ID + CDP_API_KEY_SECRET for CDP wallet, CEO_PRIVATE_KEY for private key wallet, or BANKR_API_KEY for bankr wallet.";
|
|
82
98
|
}
|
|
83
99
|
const status = {
|
|
84
100
|
provider: this.walletProvider.type,
|
|
85
101
|
address: this.walletProvider.address,
|
|
86
102
|
};
|
|
103
|
+
if (this.walletProvider.type === "bankr") {
|
|
104
|
+
const cached = getCachedBalances();
|
|
105
|
+
if (cached?.solAddress) {
|
|
106
|
+
status.solanaAddress = cached.solAddress;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
87
109
|
if (this.env.TASK_CHAIN_ID) {
|
|
88
110
|
try {
|
|
89
111
|
const chain = getTaskChain(this.env);
|
|
@@ -117,6 +139,15 @@ export class OnchainModule {
|
|
|
117
139
|
return "Write access not configured. Set up a wallet and TASK_CHAIN_ID in .env";
|
|
118
140
|
return executePortfolioTool(name, input, this.env);
|
|
119
141
|
}
|
|
142
|
+
// Bankr tools (alpha)
|
|
143
|
+
if (bankrTools.some((t) => t.name === name)) {
|
|
144
|
+
if (!isAlpha())
|
|
145
|
+
return ALPHA_REQUIRED_MSG;
|
|
146
|
+
const client = getBankrClient();
|
|
147
|
+
if (!client)
|
|
148
|
+
return "Bankr wallet not configured. Set BANKR_API_KEY in .env";
|
|
149
|
+
return executeBankrTool(name, input, client);
|
|
150
|
+
}
|
|
120
151
|
throw new Error(`Unknown onchain tool: ${name}`);
|
|
121
152
|
}
|
|
122
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/onchain/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAuB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE7D,MAAM,OAAO,aAAa;IACxB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,2DAA2D,CAAC;IAElE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/onchain/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { WalletProvider } from "./types.js";
|
|
2
|
+
export interface BankrBalancesResponse {
|
|
3
|
+
success: boolean;
|
|
4
|
+
evmAddress: string;
|
|
5
|
+
solAddress: string;
|
|
6
|
+
balances: Record<string, {
|
|
7
|
+
nativeBalance: string;
|
|
8
|
+
nativeUsd: string;
|
|
9
|
+
tokenBalances: Array<{
|
|
10
|
+
network: string;
|
|
11
|
+
token: {
|
|
12
|
+
balance: number;
|
|
13
|
+
balanceUSD: number;
|
|
14
|
+
baseToken: {
|
|
15
|
+
name: string;
|
|
16
|
+
address: string;
|
|
17
|
+
symbol: string;
|
|
18
|
+
price: number;
|
|
19
|
+
imgUrl: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
}>;
|
|
23
|
+
total: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export interface BankrPromptResponse {
|
|
27
|
+
success: boolean;
|
|
28
|
+
jobId: string;
|
|
29
|
+
threadId: string;
|
|
30
|
+
status: string;
|
|
31
|
+
message?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface BankrJobResponse {
|
|
34
|
+
success: boolean;
|
|
35
|
+
jobId: string;
|
|
36
|
+
status: "pending" | "processing" | "completed" | "failed" | "cancelled";
|
|
37
|
+
prompt?: string;
|
|
38
|
+
response?: string;
|
|
39
|
+
processingTime?: number;
|
|
40
|
+
}
|
|
41
|
+
interface BankrSignResponse {
|
|
42
|
+
success: boolean;
|
|
43
|
+
signature: `0x${string}`;
|
|
44
|
+
signer: string;
|
|
45
|
+
signatureType: string;
|
|
46
|
+
}
|
|
47
|
+
export declare class BankrWalletClient {
|
|
48
|
+
private apiKey;
|
|
49
|
+
constructor(apiKey: string);
|
|
50
|
+
private request;
|
|
51
|
+
getBalances(chains?: string[]): Promise<BankrBalancesResponse>;
|
|
52
|
+
prompt(text: string, threadId?: string): Promise<BankrPromptResponse>;
|
|
53
|
+
getJobStatus(jobId: string): Promise<BankrJobResponse>;
|
|
54
|
+
sign(request: {
|
|
55
|
+
signatureType: "personal_sign";
|
|
56
|
+
message: string;
|
|
57
|
+
} | {
|
|
58
|
+
signatureType: "eth_signTypedData_v4";
|
|
59
|
+
typedData: unknown;
|
|
60
|
+
} | {
|
|
61
|
+
signatureType: "eth_signTransaction";
|
|
62
|
+
transaction: unknown;
|
|
63
|
+
}): Promise<BankrSignResponse>;
|
|
64
|
+
}
|
|
65
|
+
export declare function getBankrClient(): BankrWalletClient | null;
|
|
66
|
+
export declare function getCachedBalances(): BankrBalancesResponse | null;
|
|
67
|
+
export declare function createBankrProvider(apiKey: string): Promise<WalletProvider>;
|
|
68
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { toAccount } from "viem/accounts";
|
|
2
|
+
const BASE_URL = "https://api.bankr.bot";
|
|
3
|
+
// --- Client ---
|
|
4
|
+
export class BankrWalletClient {
|
|
5
|
+
apiKey;
|
|
6
|
+
constructor(apiKey) {
|
|
7
|
+
this.apiKey = apiKey;
|
|
8
|
+
}
|
|
9
|
+
async request(path, options) {
|
|
10
|
+
const res = await fetch(`${BASE_URL}${path}`, {
|
|
11
|
+
...options,
|
|
12
|
+
headers: {
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
"X-API-Key": this.apiKey,
|
|
15
|
+
...options?.headers,
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
if (!res.ok) {
|
|
19
|
+
const body = await res.text();
|
|
20
|
+
throw new Error(`Bankr API ${res.status}: ${body}`);
|
|
21
|
+
}
|
|
22
|
+
return res.json();
|
|
23
|
+
}
|
|
24
|
+
async getBalances(chains) {
|
|
25
|
+
const query = chains?.length ? `?chains=${chains.join(",")}` : "";
|
|
26
|
+
return this.request(`/agent/balances${query}`);
|
|
27
|
+
}
|
|
28
|
+
async prompt(text, threadId) {
|
|
29
|
+
return this.request("/agent/prompt", {
|
|
30
|
+
method: "POST",
|
|
31
|
+
body: JSON.stringify({ prompt: text, ...(threadId && { threadId }) }),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async getJobStatus(jobId) {
|
|
35
|
+
return this.request(`/agent/job/${jobId}`);
|
|
36
|
+
}
|
|
37
|
+
async sign(request) {
|
|
38
|
+
return this.request("/agent/sign", {
|
|
39
|
+
method: "POST",
|
|
40
|
+
body: JSON.stringify(request),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Module-level client singleton (set during createBankrProvider)
|
|
45
|
+
let _client = null;
|
|
46
|
+
let _cachedBalances = null;
|
|
47
|
+
export function getBankrClient() {
|
|
48
|
+
return _client;
|
|
49
|
+
}
|
|
50
|
+
export function getCachedBalances() {
|
|
51
|
+
return _cachedBalances;
|
|
52
|
+
}
|
|
53
|
+
export async function createBankrProvider(apiKey) {
|
|
54
|
+
const client = new BankrWalletClient(apiKey);
|
|
55
|
+
_client = client;
|
|
56
|
+
// Fetch balances to get wallet addresses
|
|
57
|
+
const balances = await client.getBalances();
|
|
58
|
+
_cachedBalances = balances;
|
|
59
|
+
const address = balances.evmAddress;
|
|
60
|
+
const account = toAccount({
|
|
61
|
+
address,
|
|
62
|
+
signMessage: async ({ message }) => {
|
|
63
|
+
const res = await client.sign({
|
|
64
|
+
signatureType: "personal_sign",
|
|
65
|
+
message: typeof message === "string" ? message : message.raw.toString(),
|
|
66
|
+
});
|
|
67
|
+
return res.signature;
|
|
68
|
+
},
|
|
69
|
+
signTransaction: async (transaction) => {
|
|
70
|
+
const res = await client.sign({
|
|
71
|
+
signatureType: "eth_signTransaction",
|
|
72
|
+
transaction,
|
|
73
|
+
});
|
|
74
|
+
return res.signature;
|
|
75
|
+
},
|
|
76
|
+
signTypedData: async (typedData) => {
|
|
77
|
+
const res = await client.sign({
|
|
78
|
+
signatureType: "eth_signTypedData_v4",
|
|
79
|
+
typedData,
|
|
80
|
+
});
|
|
81
|
+
return res.signature;
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
type: "bankr",
|
|
86
|
+
account,
|
|
87
|
+
address,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=bankr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bankr.js","sourceRoot":"","sources":["../../../../../src/modules/onchain/wallet/bankr.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,11 @@ export async function createWalletProvider(env) {
|
|
|
9
9
|
const { createPrivateKeyProvider } = await import("./private-key.js");
|
|
10
10
|
return createPrivateKeyProvider(env.CEO_PRIVATE_KEY);
|
|
11
11
|
}
|
|
12
|
+
// Priority 3: Bankr custodial wallet
|
|
13
|
+
if (env.BANKR_API_KEY) {
|
|
14
|
+
const { createBankrProvider } = await import("./bankr.js");
|
|
15
|
+
return createBankrProvider(env.BANKR_API_KEY);
|
|
16
|
+
}
|
|
12
17
|
// No wallet configured — read-only mode
|
|
13
18
|
return null;
|
|
14
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/onchain/wallet/index.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAA2B;IAE3B,gCAAgC;IAChC,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACjD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,yCAAyC;IACzC,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACtE,OAAO,wBAAwB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,wCAAwC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/onchain/wallet/index.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAA2B;IAE3B,gCAAgC;IAChC,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACjD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,yCAAyC;IACzC,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACtE,OAAO,wBAAwB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3D,OAAO,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,wCAAwC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.49";
|
package/dist/src/version.js
CHANGED