@enshell/cli 0.1.0-beta.17 → 0.1.0-beta.20

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.
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const trustCommand: Command;
@@ -0,0 +1,42 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { ENShell, Network } from "@enshell/sdk";
5
+ import { getSigner, walletHint } from "../config.js";
6
+ export const trustCommand = new Command("trust")
7
+ .description("Check trust between two agents (writes TrustChecked event on-chain)")
8
+ .requiredOption("--id <agentId>", "Your agent identifier (the checker)")
9
+ .requiredOption("--check <targetId>", "Target agent to evaluate")
10
+ .action(async (opts) => {
11
+ const spinner = ora(`Checking trust: ${opts.id} → ${opts.check}${walletHint()}...`).start();
12
+ try {
13
+ const signer = await getSigner();
14
+ const client = new ENShell({
15
+ network: Network.SEPOLIA,
16
+ signer,
17
+ });
18
+ const { trusted, txHash } = await client.checkTrust(opts.id, opts.check);
19
+ if (trusted) {
20
+ spinner.succeed(chalk.green(`${opts.check}.enshell.eth is TRUSTED`));
21
+ }
22
+ else {
23
+ spinner.fail(chalk.red(`${opts.check}.enshell.eth is NOT TRUSTED`));
24
+ }
25
+ // Show details
26
+ const agent = await client.getAgent(opts.check);
27
+ const score = (Number(agent.threatScore) / 1000).toFixed(1);
28
+ const scoreColor = Number(agent.threatScore) > 60000 ? chalk.red : Number(agent.threatScore) > 30000 ? chalk.yellow : chalk.green;
29
+ console.log(chalk.gray(` tx: https://sepolia.etherscan.io/tx/${txHash}`));
30
+ console.log("");
31
+ console.log(chalk.gray(" Agent: ") + chalk.cyan(`${opts.check}.enshell.eth`));
32
+ console.log(chalk.gray(" Threat Score: ") + scoreColor(`${score} / 100`));
33
+ console.log(chalk.gray(" Strikes: ") + chalk.white(`${agent.strikes}`));
34
+ console.log(chalk.gray(" Active: ") + (agent.active ? chalk.green("yes") : chalk.red("frozen")));
35
+ console.log("");
36
+ }
37
+ catch (err) {
38
+ spinner.fail(chalk.red(`Trust check failed: ${err.message}`));
39
+ process.exit(1);
40
+ }
41
+ });
42
+ //# sourceMappingURL=trust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -3,6 +3,8 @@ import { JsonRpcProvider, Signer } from "ethers";
3
3
  import { WalletMode } from "./wallets/index.js";
4
4
  export declare function setWalletMode(mode: WalletMode): void;
5
5
  export declare function getWalletMode(): WalletMode;
6
+ export declare function setKeyName(name: string | undefined): void;
7
+ export declare function getKeyName(): string | undefined;
6
8
  /** Returns a hint string for commands when wallet approval is needed. */
7
9
  export declare function walletHint(): string;
8
10
  export declare function getProvider(): JsonRpcProvider;
package/dist/config.js CHANGED
@@ -4,12 +4,19 @@ import { getFirewallContract } from "@enshell/sdk";
4
4
  import { resolveSigner } from "./wallets/index.js";
5
5
  /** Global wallet mode — set by --wallet flag in index.ts */
6
6
  let _walletMode = "walletconnect";
7
+ let _keyName;
7
8
  export function setWalletMode(mode) {
8
9
  _walletMode = mode;
9
10
  }
10
11
  export function getWalletMode() {
11
12
  return _walletMode;
12
13
  }
14
+ export function setKeyName(name) {
15
+ _keyName = name;
16
+ }
17
+ export function getKeyName() {
18
+ return _keyName;
19
+ }
13
20
  /** Returns a hint string for commands when wallet approval is needed. */
14
21
  export function walletHint() {
15
22
  return _walletMode === "walletconnect" ? " — approve in your wallet" : "";
@@ -19,7 +26,7 @@ export function getProvider() {
19
26
  return new JsonRpcProvider(rpcUrl);
20
27
  }
21
28
  export async function getSigner() {
22
- return resolveSigner(_walletMode);
29
+ return resolveSigner(_walletMode, _keyName);
23
30
  }
24
31
  export function getContractAddress() {
25
32
  const addr = process.env.ENSHELL_CONTRACT_ADDRESS;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAU,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AAE/D,4DAA4D;AAC5D,IAAI,WAAW,GAAe,eAAe,CAAC;AAE9C,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,6CAA6C,CAAC;IAC5F,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAClD,IAAI,CAAC,IAAI;QACP,OAAO,4CAA4C,CAAC,CAAC,kBAAkB;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,WAAW;IACzB,OAAO,mBAAmB,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAU,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AAE/D,4DAA4D;AAC5D,IAAI,WAAW,GAAe,eAAe,CAAC;AAC9C,IAAI,QAA4B,CAAC;AAEjC,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAwB;IACjD,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,KAAK,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,6CAA6C,CAAC;IAC5F,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,OAAO,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAClD,IAAI,CAAC,IAAI;QACP,OAAO,4CAA4C,CAAC,CAAC,kBAAkB;IACzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,WAAW;IACzB,OAAO,mBAAmB,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from "node:module";
3
3
  import { Command } from "commander";
4
- import { setWalletMode } from "./config.js";
4
+ import { setWalletMode, setKeyName } from "./config.js";
5
5
  const require = createRequire(import.meta.url);
6
6
  const pkg = require("../package.json");
7
7
  import { registerCommand } from "./commands/register.js";
@@ -10,6 +10,7 @@ import { inspectCommand } from "./commands/inspect.js";
10
10
  import { freezeCommand } from "./commands/freeze.js";
11
11
  import { activateCommand } from "./commands/activate.js";
12
12
  import { protectCommand } from "./commands/protect.js";
13
+ import { trustCommand } from "./commands/trust.js";
13
14
  import { connectCommand } from "./commands/connect.js";
14
15
  import { disconnectCommand } from "./commands/disconnect.js";
15
16
  const program = new Command();
@@ -18,11 +19,15 @@ program
18
19
  .description("CLI for ENShell on-chain AI agent firewall")
19
20
  .version(pkg.version)
20
21
  .option("--wallet <mode>", "Wallet mode: env (private key) or ledger (USB)")
22
+ .option("--key <name>", "Named key for env mode (reads ENSHELL_PRIVATE_KEY_<NAME>)")
21
23
  .hook("preAction", (thisCommand) => {
22
24
  const opts = thisCommand.opts();
23
25
  if (opts.wallet) {
24
26
  setWalletMode(opts.wallet);
25
27
  }
28
+ if (opts.key) {
29
+ setKeyName(opts.key);
30
+ }
26
31
  });
27
32
  program.addCommand(connectCommand);
28
33
  program.addCommand(disconnectCommand);
@@ -32,5 +37,6 @@ program.addCommand(inspectCommand);
32
37
  program.addCommand(freezeCommand);
33
38
  program.addCommand(activateCommand);
34
39
  program.addCommand(protectCommand);
40
+ program.addCommand(trustCommand);
35
41
  program.parseAsync().then(() => process.exit(0));
36
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CACL,iBAAiB,EACjB,gDAAgD,CACjD;KACA,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC,MAAoB,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CACL,iBAAiB,EACjB,gDAAgD,CACjD;KACA,MAAM,CACL,cAAc,EACd,2DAA2D,CAC5D;KACA,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC,MAAoB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -2,6 +2,6 @@ import "dotenv/config";
2
2
  import { Wallet } from "ethers";
3
3
  /**
4
4
  * Create an ethers Wallet signer from environment variables.
5
- * Requires ENSHELL_PRIVATE_KEY and ENSHELL_RPC_URL in .env.
5
+ * With --key <name>, reads ENSHELL_PRIVATE_KEY_<NAME> instead of ENSHELL_PRIVATE_KEY.
6
6
  */
7
- export declare function envGetSigner(): Wallet;
7
+ export declare function envGetSigner(keyName?: string): Wallet;
@@ -2,15 +2,15 @@ import "dotenv/config";
2
2
  import { Wallet, JsonRpcProvider } from "ethers";
3
3
  /**
4
4
  * Create an ethers Wallet signer from environment variables.
5
- * Requires ENSHELL_PRIVATE_KEY and ENSHELL_RPC_URL in .env.
5
+ * With --key <name>, reads ENSHELL_PRIVATE_KEY_<NAME> instead of ENSHELL_PRIVATE_KEY.
6
6
  */
7
- export function envGetSigner() {
8
- const rpcUrl = process.env.ENSHELL_RPC_URL;
9
- if (!rpcUrl)
10
- throw new Error("ENSHELL_RPC_URL not set in environment");
11
- const pk = process.env.ENSHELL_PRIVATE_KEY;
7
+ export function envGetSigner(keyName) {
8
+ const rpcUrl = process.env.ENSHELL_RPC_URL || "https://ethereum-sepolia-rpc.publicnode.com";
9
+ const suffix = keyName ? `_${keyName.toUpperCase()}` : "";
10
+ const envVar = `ENSHELL_PRIVATE_KEY${suffix}`;
11
+ const pk = process.env[envVar];
12
12
  if (!pk)
13
- throw new Error("ENSHELL_PRIVATE_KEY not set in environment");
13
+ throw new Error(`${envVar} not set in environment`);
14
14
  const provider = new JsonRpcProvider(rpcUrl);
15
15
  return new Wallet(pk, provider);
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/wallets/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEvE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3C,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/wallets/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,6CAA6C,CAAC;IAE5F,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,sBAAsB,MAAM,EAAE,CAAC;IAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
@@ -7,4 +7,4 @@ export type WalletMode = "walletconnect" | "env" | "ledger";
7
7
  * --wallet env: Private key from .env
8
8
  * --wallet ledger: Ledger USB (not yet implemented)
9
9
  */
10
- export declare function resolveSigner(mode: WalletMode): Promise<Signer>;
10
+ export declare function resolveSigner(mode: WalletMode, keyName?: string): Promise<Signer>;
@@ -7,10 +7,10 @@ import { wcGetSigner } from "./walletconnect.js";
7
7
  * --wallet env: Private key from .env
8
8
  * --wallet ledger: Ledger USB (not yet implemented)
9
9
  */
10
- export async function resolveSigner(mode) {
10
+ export async function resolveSigner(mode, keyName) {
11
11
  switch (mode) {
12
12
  case "env":
13
- return envGetSigner();
13
+ return envGetSigner(keyName);
14
14
  case "walletconnect":
15
15
  return wcGetSigner();
16
16
  case "ledger":
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAgB;IAClD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,YAAY,EAAE,CAAC;QAExB,KAAK,eAAe;YAClB,OAAO,WAAW,EAAE,CAAC;QAEvB,KAAK,QAAQ;YACX,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;QAEJ;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAgB,EAAE,OAAgB;IACpE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAE/B,KAAK,eAAe;YAClB,OAAO,WAAW,EAAE,CAAC;QAEvB,KAAK,QAAQ;YACX,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;QAEJ;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enshell/cli",
3
- "version": "0.1.0-beta.17",
3
+ "version": "0.1.0-beta.20",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "enshell": "dist/index.js"
@@ -17,7 +17,7 @@
17
17
  "prepublishOnly": "npm run build"
18
18
  },
19
19
  "dependencies": {
20
- "@enshell/sdk": "^0.1.0-beta.17",
20
+ "@enshell/sdk": "^0.1.0-beta.20",
21
21
  "@walletconnect/ethereum-provider": "^2.23.9",
22
22
  "chalk": "^5.4.1",
23
23
  "commander": "^14.0.0",