@namera-ai/cli 0.1.3 → 0.1.4

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 (143) hide show
  1. package/dist/commands/index.mjs +21 -0
  2. package/dist/commands/index.mjs.map +1 -0
  3. package/dist/commands/keystore/create.mjs +74 -0
  4. package/dist/commands/keystore/create.mjs.map +1 -0
  5. package/dist/commands/keystore/decrypt.mjs +71 -0
  6. package/dist/commands/keystore/decrypt.mjs.map +1 -0
  7. package/dist/commands/keystore/import.mjs +84 -0
  8. package/dist/commands/keystore/import.mjs.map +1 -0
  9. package/dist/commands/keystore/index.mjs +28 -0
  10. package/dist/commands/keystore/index.mjs.map +1 -0
  11. package/dist/commands/keystore/info.mjs +62 -0
  12. package/dist/commands/keystore/info.mjs.map +1 -0
  13. package/dist/commands/keystore/list.mjs +46 -0
  14. package/dist/commands/keystore/list.mjs.map +1 -0
  15. package/dist/commands/keystore/remove.mjs +51 -0
  16. package/dist/commands/keystore/remove.mjs.map +1 -0
  17. package/dist/commands/mcp/index.mjs +13 -0
  18. package/dist/commands/mcp/index.mjs.map +1 -0
  19. package/dist/commands/mcp/start.mjs +82 -0
  20. package/dist/commands/mcp/start.mjs.map +1 -0
  21. package/dist/commands/schema/index.mjs +53 -0
  22. package/dist/commands/schema/index.mjs.map +1 -0
  23. package/dist/commands/session-key/create/index.mjs +87 -0
  24. package/dist/commands/session-key/create/index.mjs.map +1 -0
  25. package/dist/commands/session-key/create/prompts/base.mjs +52 -0
  26. package/dist/commands/session-key/create/prompts/base.mjs.map +1 -0
  27. package/dist/commands/session-key/create/prompts/call.mjs +85 -0
  28. package/dist/commands/session-key/create/prompts/call.mjs.map +1 -0
  29. package/dist/commands/session-key/create/prompts/common.mjs +27 -0
  30. package/dist/commands/session-key/create/prompts/common.mjs.map +1 -0
  31. package/dist/commands/session-key/create/prompts/gas.mjs +19 -0
  32. package/dist/commands/session-key/create/prompts/gas.mjs.map +1 -0
  33. package/dist/commands/session-key/create/prompts/index.mjs +44 -0
  34. package/dist/commands/session-key/create/prompts/index.mjs.map +1 -0
  35. package/dist/commands/session-key/create/prompts/rate-limit.mjs +40 -0
  36. package/dist/commands/session-key/create/prompts/rate-limit.mjs.map +1 -0
  37. package/dist/commands/session-key/create/prompts/signature-caller.mjs +26 -0
  38. package/dist/commands/session-key/create/prompts/signature-caller.mjs.map +1 -0
  39. package/dist/commands/session-key/create/prompts/timestamp.mjs +32 -0
  40. package/dist/commands/session-key/create/prompts/timestamp.mjs.map +1 -0
  41. package/dist/commands/session-key/index.mjs +26 -0
  42. package/dist/commands/session-key/index.mjs.map +1 -0
  43. package/dist/commands/session-key/info.mjs +64 -0
  44. package/dist/commands/session-key/info.mjs.map +1 -0
  45. package/dist/commands/session-key/list.mjs +54 -0
  46. package/dist/commands/session-key/list.mjs.map +1 -0
  47. package/dist/commands/session-key/remove.mjs +51 -0
  48. package/dist/commands/session-key/remove.mjs.map +1 -0
  49. package/dist/commands/session-key/status.mjs +64 -0
  50. package/dist/commands/session-key/status.mjs.map +1 -0
  51. package/dist/commands/smart-account/create.mjs +94 -0
  52. package/dist/commands/smart-account/create.mjs.map +1 -0
  53. package/dist/commands/smart-account/import.mjs +45 -0
  54. package/dist/commands/smart-account/import.mjs.map +1 -0
  55. package/dist/commands/smart-account/index.mjs +30 -0
  56. package/dist/commands/smart-account/index.mjs.map +1 -0
  57. package/dist/commands/smart-account/info.mjs +66 -0
  58. package/dist/commands/smart-account/info.mjs.map +1 -0
  59. package/dist/commands/smart-account/list.mjs +48 -0
  60. package/dist/commands/smart-account/list.mjs.map +1 -0
  61. package/dist/commands/smart-account/remove.mjs +54 -0
  62. package/dist/commands/smart-account/remove.mjs.map +1 -0
  63. package/dist/commands/smart-account/status.mjs +63 -0
  64. package/dist/commands/smart-account/status.mjs.map +1 -0
  65. package/dist/dto/index.mjs +6 -0
  66. package/dist/dto/keystore.mjs +44 -0
  67. package/dist/dto/keystore.mjs.map +1 -0
  68. package/dist/dto/mcp.mjs +13 -0
  69. package/dist/dto/mcp.mjs.map +1 -0
  70. package/dist/dto/session-key.mjs +54 -0
  71. package/dist/dto/session-key.mjs.map +1 -0
  72. package/dist/dto/smart-account.mjs +45 -0
  73. package/dist/dto/smart-account.mjs.map +1 -0
  74. package/dist/flags/global.mjs +29 -0
  75. package/dist/flags/global.mjs.map +1 -0
  76. package/dist/flags/shared.mjs +11 -0
  77. package/dist/flags/shared.mjs.map +1 -0
  78. package/dist/helpers/humanize.mjs +153 -0
  79. package/dist/helpers/humanize.mjs.map +1 -0
  80. package/dist/helpers/paths.mjs +31 -0
  81. package/dist/helpers/paths.mjs.map +1 -0
  82. package/dist/helpers/policy.mjs +89 -0
  83. package/dist/helpers/policy.mjs.map +1 -0
  84. package/dist/helpers/pretty.mjs +71 -0
  85. package/dist/helpers/pretty.mjs.map +1 -0
  86. package/dist/index.mjs +15 -3264
  87. package/dist/index.mjs.map +1 -1
  88. package/dist/layers/config.mjs +124 -0
  89. package/dist/layers/config.mjs.map +1 -0
  90. package/dist/layers/index.mjs +11 -0
  91. package/dist/layers/keystore.mjs +225 -0
  92. package/dist/layers/keystore.mjs.map +1 -0
  93. package/dist/layers/mcp-context.mjs +8 -0
  94. package/dist/layers/mcp-context.mjs.map +1 -0
  95. package/dist/layers/mcp.mjs +31 -0
  96. package/dist/layers/mcp.mjs.map +1 -0
  97. package/dist/layers/output.mjs +21 -0
  98. package/dist/layers/output.mjs.map +1 -0
  99. package/dist/layers/prompt.mjs +78 -0
  100. package/dist/layers/prompt.mjs.map +1 -0
  101. package/dist/layers/session-key.mjs +218 -0
  102. package/dist/layers/session-key.mjs.map +1 -0
  103. package/dist/layers/smart-account.mjs +175 -0
  104. package/dist/layers/smart-account.mjs.map +1 -0
  105. package/dist/layers/web3.mjs +83 -0
  106. package/dist/layers/web3.mjs.map +1 -0
  107. package/dist/mcp/helpers/common.mjs +9 -0
  108. package/dist/mcp/helpers/common.mjs.map +1 -0
  109. package/dist/mcp/helpers/index.mjs +4 -0
  110. package/dist/mcp/helpers/session-key.mjs +129 -0
  111. package/dist/mcp/helpers/session-key.mjs.map +1 -0
  112. package/dist/mcp/index.mjs +43 -0
  113. package/dist/mcp/index.mjs.map +1 -0
  114. package/dist/mcp/mcp.mjs +15 -0
  115. package/dist/mcp/mcp.mjs.map +1 -0
  116. package/dist/mcp/tools/account/address.mjs +20 -0
  117. package/dist/mcp/tools/account/address.mjs.map +1 -0
  118. package/dist/mcp/tools/account/get-balance.mjs +54 -0
  119. package/dist/mcp/tools/account/get-balance.mjs.map +1 -0
  120. package/dist/mcp/tools/account/index.mjs +15 -0
  121. package/dist/mcp/tools/account/index.mjs.map +1 -0
  122. package/dist/mcp/tools/read/index.mjs +11 -0
  123. package/dist/mcp/tools/read/index.mjs.map +1 -0
  124. package/dist/mcp/tools/read/read-contract.mjs +49 -0
  125. package/dist/mcp/tools/read/read-contract.mjs.map +1 -0
  126. package/dist/mcp/tools/transaction/execute-transaction.mjs +38 -0
  127. package/dist/mcp/tools/transaction/execute-transaction.mjs.map +1 -0
  128. package/dist/mcp/tools/transaction/index.mjs +15 -0
  129. package/dist/mcp/tools/transaction/index.mjs.map +1 -0
  130. package/dist/mcp/tools/transaction/native-transfer.mjs +59 -0
  131. package/dist/mcp/tools/transaction/native-transfer.mjs.map +1 -0
  132. package/dist/schema/chain.mjs +124 -0
  133. package/dist/schema/chain.mjs.map +1 -0
  134. package/dist/schema/common.mjs +29 -0
  135. package/dist/schema/common.mjs.map +1 -0
  136. package/dist/schema/index.mjs +5 -0
  137. package/dist/schema/policy.mjs +114 -0
  138. package/dist/schema/policy.mjs.map +1 -0
  139. package/dist/schema/tx.mjs +19 -0
  140. package/dist/schema/tx.mjs.map +1 -0
  141. package/dist/types/index.mjs +11 -0
  142. package/dist/types/index.mjs.map +1 -0
  143. package/package.json +10 -11
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env node
2
+ import { getChain } from "../../schema/chain.mjs";
3
+ import "../../schema/index.mjs";
4
+ import { GetSessionKeyInfoParams } from "../../dto/session-key.mjs";
5
+ import "../../dto/index.mjs";
6
+ import { getGlobalFlags } from "../../flags/global.mjs";
7
+ import { SessionKeyManager } from "../../layers/session-key.mjs";
8
+ import { OutputFormatter } from "../../layers/output.mjs";
9
+ import "../../layers/index.mjs";
10
+ import { humanizePolicyParams } from "../../helpers/humanize.mjs";
11
+ import { Console, Effect, Schema } from "effect";
12
+ import { Command, Flag } from "effect/unstable/cli";
13
+ //#region src/commands/session-key/info.ts
14
+ const handler = (flagAlias) => Effect.gen(function* () {
15
+ const sessionKeyManager = yield* SessionKeyManager;
16
+ const outputFormatter = yield* OutputFormatter;
17
+ const globalFlags = yield* getGlobalFlags();
18
+ let params;
19
+ if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(GetSessionKeyInfoParams))(globalFlags.params.value);
20
+ else {
21
+ let alias;
22
+ if (flagAlias._tag === "Some") alias = flagAlias.value;
23
+ else alias = (yield* sessionKeyManager.selectSessionKey({ message: "Select Session Key:" })).alias;
24
+ params = { alias };
25
+ }
26
+ const res = yield* sessionKeyManager.getSessionKey(params);
27
+ const data = {
28
+ alias: res.alias,
29
+ ...res.data.sessionKeyType === "ecdsa" ? { address: res.data.sessionKeyAddress } : { passKeyName: res.data.passKeyName },
30
+ smartAccount: res.data.smartAccountAlias,
31
+ chains: res.data.serializedAccounts.map((a) => getChain(a.chain).name).join(", "),
32
+ policies: humanizePolicyParams(res.data.serializedAccounts[0]?.serializedAccount ?? "")
33
+ };
34
+ if (globalFlags.quiet) return;
35
+ const output = yield* outputFormatter.format(data, globalFlags.out);
36
+ yield* Console.log(output);
37
+ });
38
+ const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the session key to get info for"), Flag.withAlias("a"), Flag.optional);
39
+ const getSessionKeyInfoCommand = Command.make("info", { alias }, ({ alias }) => handler(alias)).pipe(Command.withDescription("Get information about a session key"), Command.withExamples([
40
+ {
41
+ command: "namera session-key info",
42
+ description: "Get information about a session key with alias prompt"
43
+ },
44
+ {
45
+ command: "namera session-key info --alias my-session-key",
46
+ description: "Get information about a session key with alias 'my-session-key'"
47
+ },
48
+ {
49
+ command: `namera session-key info --params '{"alias":"my-session-key"}'`,
50
+ description: "Get information about a session key with json params"
51
+ },
52
+ {
53
+ command: "namera session-key info --alias my-wallet --output json",
54
+ description: "Get information about a session key in json format"
55
+ },
56
+ {
57
+ command: "namera schema session-key.info",
58
+ description: "Get the schema for the session key info command"
59
+ }
60
+ ]));
61
+ //#endregion
62
+ export { getSessionKeyInfoCommand };
63
+
64
+ //# sourceMappingURL=info.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.mjs","names":["SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/info.ts"],"sourcesContent":["import { Console, Effect, type Option, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { GetSessionKeyInfoParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { humanizePolicyParams } from \"@/helpers/humanize\";\nimport { OutputFormatter, SessionKeyManager } from \"@/layers\";\nimport { getChain } from \"@/schema\";\n\nconst handler = (flagAlias: Option.Option<string>) =>\n Effect.gen(function* () {\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n\n const globalFlags = yield* getGlobalFlags();\n\n let params: GetSessionKeyInfoParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(GetSessionKeyInfoParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n const res = yield* sessionKeyManager.selectSessionKey({\n message: \"Select Session Key:\",\n });\n alias = res.alias;\n }\n\n params = { alias };\n }\n\n const res = yield* sessionKeyManager.getSessionKey(params);\n\n const data = {\n alias: res.alias,\n ...(res.data.sessionKeyType === \"ecdsa\"\n ? {\n address: res.data.sessionKeyAddress,\n }\n : {\n passKeyName: res.data.passKeyName,\n }),\n smartAccount: res.data.smartAccountAlias,\n chains: res.data.serializedAccounts\n .map((a) => getChain(a.chain).name)\n .join(\", \"),\n policies: humanizePolicyParams(\n res.data.serializedAccounts[0]?.serializedAccount ?? \"\",\n ),\n };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the session key to get info for\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nexport const getSessionKeyInfoCommand = Command.make(\n \"info\",\n { alias },\n ({ alias }) => handler(alias),\n).pipe(\n Command.withDescription(\"Get information about a session key\"),\n Command.withExamples([\n {\n command: \"namera session-key info\",\n description: \"Get information about a session key with alias prompt\",\n },\n {\n command: \"namera session-key info --alias my-session-key\",\n description:\n \"Get information about a session key with alias 'my-session-key'\",\n },\n {\n command: `namera session-key info --params '{\"alias\":\"my-session-key\"}'`,\n description: \"Get information about a session key with json params\",\n },\n {\n command: \"namera session-key info --alias my-wallet --output json\",\n description: \"Get information about a session key in json format\",\n },\n {\n command: \"namera schema session-key.info\",\n description: \"Get the schema for the session key info command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;;;;AASA,MAAM,WAAW,cACf,OAAO,IAAI,aAAa;CACtB,MAAM,oBAAoB,OAAOA;CACjC,MAAM,kBAAkB,OAAOC;CAE/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,wBAAwB,CAC/C,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;AAEJ,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAKlB,UAAQ,OAHW,kBAAkB,iBAAiB,EACpD,SAAS,uBACV,CAAC,EACU;AAGd,WAAS,EAAE,OAAO;;CAGpB,MAAM,MAAM,OAAO,kBAAkB,cAAc,OAAO;CAE1D,MAAM,OAAO;EACX,OAAO,IAAI;EACX,GAAI,IAAI,KAAK,mBAAmB,UAC5B,EACE,SAAS,IAAI,KAAK,mBACnB,GACD,EACE,aAAa,IAAI,KAAK,aACvB;EACL,cAAc,IAAI,KAAK;EACvB,QAAQ,IAAI,KAAK,mBACd,KAAK,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,CAClC,KAAK,KAAK;EACb,UAAU,qBACR,IAAI,KAAK,mBAAmB,IAAI,qBAAqB,GACtD;EACF;AAED,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,+CAA+C,EACpE,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAa,2BAA2B,QAAQ,KAC9C,QACA,EAAE,OAAO,GACR,EAAE,YAAY,QAAQ,MAAM,CAC9B,CAAC,KACA,QAAQ,gBAAgB,sCAAsC,EAC9D,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aACE;EACH;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+ import { getChain } from "../../schema/chain.mjs";
3
+ import "../../schema/index.mjs";
4
+ import { getGlobalFlags } from "../../flags/global.mjs";
5
+ import { SessionKeyManager } from "../../layers/session-key.mjs";
6
+ import { OutputFormatter } from "../../layers/output.mjs";
7
+ import "../../layers/index.mjs";
8
+ import { Console, Effect } from "effect";
9
+ import { Command, Flag } from "effect/unstable/cli";
10
+ //#region src/commands/session-key/list.ts
11
+ const handler = (flagSmartAccountAlias) => Effect.gen(function* () {
12
+ const sessionKeyManager = yield* SessionKeyManager;
13
+ const outputFormatter = yield* OutputFormatter;
14
+ const globalFlags = yield* getGlobalFlags();
15
+ const data = (yield* sessionKeyManager.listSessionKeys({ smartAccount: flagSmartAccountAlias._tag === "Some" ? flagSmartAccountAlias.value : void 0 })).map((d) => ({
16
+ alias: d.alias,
17
+ ...d.data.sessionKeyType === "ecdsa" ? { address: d.data.sessionKeyAddress } : { passKeyName: d.data.passKeyName },
18
+ smartAccount: d.data.smartAccountAlias,
19
+ chains: d.data.serializedAccounts.map((a) => getChain(a.chain).name).join(", ")
20
+ }));
21
+ if (globalFlags.quiet) return;
22
+ const output = yield* outputFormatter.format(data, globalFlags.out);
23
+ yield* Console.log(output);
24
+ });
25
+ const smartAccountAlias = Flag.string("smart-account").pipe(Flag.withDescription("The alias of the smart account to list session keys for"), Flag.withAlias("sa"), Flag.optional);
26
+ /**
27
+ * Command that lists all locally stored session keys.
28
+ */
29
+ const listSessionKeysCommand = Command.make("list", { smartAccountAlias }, ({ smartAccountAlias }) => handler(smartAccountAlias)).pipe(Command.withAlias("ls"), Command.withDescription("List session keys"), Command.withExamples([
30
+ {
31
+ command: "namera session-key list",
32
+ description: "List all session keys"
33
+ },
34
+ {
35
+ command: "namera session-key list --smart-account my-smart",
36
+ description: "List all session keys for smart account 'my-smart'"
37
+ },
38
+ {
39
+ command: `namera session-key list --params '{"smartAccount":"my-smart"}'`,
40
+ description: "List all session keys for smart account 'my-smart'"
41
+ },
42
+ {
43
+ command: "namera session-key list --output json",
44
+ description: "List all session keys in json format"
45
+ },
46
+ {
47
+ command: "namera schema session-key.list",
48
+ description: "Get the schema for the list session key command"
49
+ }
50
+ ]));
51
+ //#endregion
52
+ export { listSessionKeysCommand };
53
+
54
+ //# sourceMappingURL=list.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.mjs","names":["SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/list.ts"],"sourcesContent":["import { Console, Effect, type Option } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { OutputFormatter, SessionKeyManager } from \"@/layers\";\nimport { getChain } from \"@/schema\";\n\nconst handler = (flagSmartAccountAlias: Option.Option<string>) =>\n Effect.gen(function* () {\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n const res = yield* sessionKeyManager.listSessionKeys({\n smartAccount:\n flagSmartAccountAlias._tag === \"Some\"\n ? flagSmartAccountAlias.value\n : undefined,\n });\n\n const data = res.map((d) => ({\n alias: d.alias,\n ...(d.data.sessionKeyType === \"ecdsa\"\n ? {\n address: d.data.sessionKeyAddress,\n }\n : {\n passKeyName: d.data.passKeyName,\n }),\n smartAccount: d.data.smartAccountAlias,\n chains: d.data.serializedAccounts\n .map((a) => getChain(a.chain).name)\n .join(\", \"),\n }));\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst smartAccountAlias = Flag.string(\"smart-account\").pipe(\n Flag.withDescription(\n \"The alias of the smart account to list session keys for\",\n ),\n Flag.withAlias(\"sa\"),\n Flag.optional,\n);\n/**\n * Command that lists all locally stored session keys.\n */\nexport const listSessionKeysCommand = Command.make(\n \"list\",\n { smartAccountAlias },\n ({ smartAccountAlias }) => handler(smartAccountAlias),\n).pipe(\n Command.withAlias(\"ls\"),\n Command.withDescription(\"List session keys\"),\n Command.withExamples([\n {\n command: \"namera session-key list\",\n description: \"List all session keys\",\n },\n {\n command: \"namera session-key list --smart-account my-smart\",\n description: \"List all session keys for smart account 'my-smart'\",\n },\n {\n command: `namera session-key list --params '{\"smartAccount\":\"my-smart\"}'`,\n description: \"List all session keys for smart account 'my-smart'\",\n },\n {\n command: \"namera session-key list --output json\",\n description: \"List all session keys in json format\",\n },\n {\n command: \"namera schema session-key.list\",\n description: \"Get the schema for the list session key command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;AAOA,MAAM,WAAW,0BACf,OAAO,IAAI,aAAa;CACtB,MAAM,oBAAoB,OAAOA;CACjC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAS3C,MAAM,QAAO,OAPM,kBAAkB,gBAAgB,EACnD,cACE,sBAAsB,SAAS,SAC3B,sBAAsB,QACtB,QACP,CAAC,EAEe,KAAK,OAAO;EAC3B,OAAO,EAAE;EACT,GAAI,EAAE,KAAK,mBAAmB,UAC1B,EACE,SAAS,EAAE,KAAK,mBACjB,GACD,EACE,aAAa,EAAE,KAAK,aACrB;EACL,cAAc,EAAE,KAAK;EACrB,QAAQ,EAAE,KAAK,mBACZ,KAAK,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,CAClC,KAAK,KAAK;EACd,EAAE;AAEH,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,oBAAoB,KAAK,OAAO,gBAAgB,CAAC,KACrD,KAAK,gBACH,0DACD,EACD,KAAK,UAAU,KAAK,EACpB,KAAK,SACN;;;;AAID,MAAa,yBAAyB,QAAQ,KAC5C,QACA,EAAE,mBAAmB,GACpB,EAAE,wBAAwB,QAAQ,kBAAkB,CACtD,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,oBAAoB,EAC5C,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+ import { RemoveSessionKeyParams } from "../../dto/session-key.mjs";
3
+ import "../../dto/index.mjs";
4
+ import { getGlobalFlags } from "../../flags/global.mjs";
5
+ import { SessionKeyManager } from "../../layers/session-key.mjs";
6
+ import { OutputFormatter } from "../../layers/output.mjs";
7
+ import "../../layers/index.mjs";
8
+ import { Console, Effect, Schema } from "effect";
9
+ import { Command, Flag } from "effect/unstable/cli";
10
+ //#region src/commands/session-key/remove.ts
11
+ const handler = (flagAlias) => Effect.gen(function* () {
12
+ const sessionKeyManager = yield* SessionKeyManager;
13
+ const outputFormatter = yield* OutputFormatter;
14
+ const globalFlags = yield* getGlobalFlags();
15
+ let params;
16
+ if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(RemoveSessionKeyParams))(globalFlags.params.value);
17
+ else {
18
+ let alias;
19
+ if (flagAlias._tag === "Some") alias = flagAlias.value;
20
+ else alias = (yield* sessionKeyManager.selectSessionKey({ message: "Select Session Key:" })).alias;
21
+ params = { alias };
22
+ }
23
+ yield* sessionKeyManager.removeSessionKey(params);
24
+ const data = { success: true };
25
+ if (globalFlags.quiet) return;
26
+ const output = yield* outputFormatter.format(data, globalFlags.out);
27
+ yield* Console.log(output);
28
+ });
29
+ const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the session key to remove"), Flag.withAlias("a"), Flag.optional);
30
+ const removeSessionKeyCommand = Command.make("remove", { alias }, ({ alias }) => handler(alias)).pipe(Command.withAlias("rm"), Command.withDescription("Remove a Session Key"), Command.withExamples([
31
+ {
32
+ command: "namera session-key remove",
33
+ description: "Remove a session key with alias prompt"
34
+ },
35
+ {
36
+ command: "namera session-key remove --alias my-session-key",
37
+ description: "Remove a session key with alias 'my-session-key'"
38
+ },
39
+ {
40
+ command: `namera session-key remove --params '{"alias":"my-session-key"}'`,
41
+ description: "Remove a session key with json params"
42
+ },
43
+ {
44
+ command: "namera schema session-key.remove",
45
+ description: "Get the schema for the remove session key command"
46
+ }
47
+ ]));
48
+ //#endregion
49
+ export { removeSessionKeyCommand };
50
+
51
+ //# sourceMappingURL=remove.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.mjs","names":["SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/remove.ts"],"sourcesContent":["import { Console, Effect, type Option, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { RemoveSessionKeyParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { OutputFormatter, SessionKeyManager } from \"@/layers\";\n\nconst handler = (flagAlias: Option.Option<string>) =>\n Effect.gen(function* () {\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n let params: RemoveSessionKeyParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(RemoveSessionKeyParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n const res = yield* sessionKeyManager.selectSessionKey({\n message: \"Select Session Key:\",\n });\n alias = res.alias;\n }\n\n params = { alias };\n }\n\n yield* sessionKeyManager.removeSessionKey(params);\n\n const data = { success: true };\n\n if (globalFlags.quiet) return;\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the session key to remove\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nexport const removeSessionKeyCommand = Command.make(\n \"remove\",\n { alias },\n ({ alias }) => handler(alias),\n).pipe(\n Command.withAlias(\"rm\"),\n Command.withDescription(\"Remove a Session Key\"),\n Command.withExamples([\n {\n command: \"namera session-key remove\",\n description: \"Remove a session key with alias prompt\",\n },\n {\n command: \"namera session-key remove --alias my-session-key\",\n description: \"Remove a session key with alias 'my-session-key'\",\n },\n {\n command: `namera session-key remove --params '{\"alias\":\"my-session-key\"}'`,\n description: \"Remove a session key with json params\",\n },\n {\n command: \"namera schema session-key.remove\",\n description: \"Get the schema for the remove session key command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;AAOA,MAAM,WAAW,cACf,OAAO,IAAI,aAAa;CACtB,MAAM,oBAAoB,OAAOA;CACjC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,uBAAuB,CAC9C,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;AAEJ,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAKlB,UAAQ,OAHW,kBAAkB,iBAAiB,EACpD,SAAS,uBACV,CAAC,EACU;AAGd,WAAS,EAAE,OAAO;;AAGpB,QAAO,kBAAkB,iBAAiB,OAAO;CAEjD,MAAM,OAAO,EAAE,SAAS,MAAM;AAE9B,KAAI,YAAY,MAAO;CACvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,yCAAyC,EAC9D,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAa,0BAA0B,QAAQ,KAC7C,UACA,EAAE,OAAO,GACR,EAAE,YAAY,QAAQ,MAAM,CAC9B,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,uBAAuB,EAC/C,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env node
2
+ import { GetSessionKeyStatusParams } from "../../dto/session-key.mjs";
3
+ import "../../dto/index.mjs";
4
+ import { getGlobalFlags } from "../../flags/global.mjs";
5
+ import { Web3Service } from "../../layers/web3.mjs";
6
+ import { SessionKeyManager } from "../../layers/session-key.mjs";
7
+ import { OutputFormatter } from "../../layers/output.mjs";
8
+ import "../../layers/index.mjs";
9
+ import { chainAndRpcUrl } from "../../flags/shared.mjs";
10
+ import { Console, Effect, Schema } from "effect";
11
+ import { Command, Flag } from "effect/unstable/cli";
12
+ //#region src/commands/session-key/status.ts
13
+ const handler = (flagAlias, flagChain, flagRpcUrl) => Effect.gen(function* () {
14
+ const web3Service = yield* Web3Service;
15
+ const sessionKeyManager = yield* SessionKeyManager;
16
+ const outputFormatter = yield* OutputFormatter;
17
+ const globalFlags = yield* getGlobalFlags();
18
+ let params;
19
+ if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(GetSessionKeyStatusParams))(globalFlags.params.value);
20
+ else {
21
+ let alias;
22
+ let chain;
23
+ const rpcUrl = flagRpcUrl._tag === "Some" ? flagRpcUrl.value : void 0;
24
+ if (flagAlias._tag === "Some") alias = flagAlias.value;
25
+ else alias = (yield* sessionKeyManager.selectSessionKey({ message: "Select Session Key:" })).alias;
26
+ if (flagChain._tag === "Some") chain = flagChain.value;
27
+ else chain = yield* web3Service.selectChain({ message: "Select Chain:" });
28
+ params = {
29
+ alias,
30
+ chain,
31
+ rpcUrl
32
+ };
33
+ }
34
+ const data = { installed: yield* sessionKeyManager.getSessionKeyStatus(params) };
35
+ if (globalFlags.quiet) return;
36
+ const output = yield* outputFormatter.format(data, globalFlags.out);
37
+ yield* Console.log(output);
38
+ });
39
+ const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the session key"), Flag.withAlias("a"), Flag.optional);
40
+ const getSessionKeyStatusCommand = Command.make("status", {
41
+ alias,
42
+ ...chainAndRpcUrl
43
+ }, ({ alias, chain, rpcUrl }) => handler(alias, chain, rpcUrl)).pipe(Command.withDescription("Get Session key status for a given chain"), Command.withExamples([
44
+ {
45
+ command: "namera session-key status -a my-smart --chain eth-mainnet",
46
+ description: "Get Session key status for a given chain"
47
+ },
48
+ {
49
+ command: "namera session-key status --alias my-smart --chain eth-mainnet --rpc-url https://rpc.ankr.com/eth",
50
+ description: "Get Session key status for a given chain with custom RPC URL"
51
+ },
52
+ {
53
+ command: `namera session-key status --params '{"alias":"my-session-key","chain":"eth-mainnet"}'`,
54
+ description: "Get Session key status for a given chain with json params"
55
+ },
56
+ {
57
+ command: "namera schema session-key.status",
58
+ description: "Get the schema for the session key status command"
59
+ }
60
+ ]));
61
+ //#endregion
62
+ export { getSessionKeyStatusCommand };
63
+
64
+ //# sourceMappingURL=status.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.mjs","names":["Web3Service.Web3Service","SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/status.ts"],"sourcesContent":["import { Console, Effect, type Option, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { GetSessionKeyStatusParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { chainAndRpcUrl } from \"@/flags/shared\";\nimport { OutputFormatter, SessionKeyManager, Web3Service } from \"@/layers\";\nimport type { SupportedChain } from \"@/schema/chain\";\n\nconst handler = (\n flagAlias: Option.Option<string>,\n flagChain: Option.Option<SupportedChain>,\n flagRpcUrl: Option.Option<string>,\n) =>\n Effect.gen(function* () {\n const web3Service = yield* Web3Service.Web3Service;\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n let params: GetSessionKeyStatusParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(GetSessionKeyStatusParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n let chain: SupportedChain;\n const rpcUrl = flagRpcUrl._tag === \"Some\" ? flagRpcUrl.value : undefined;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n const res = yield* sessionKeyManager.selectSessionKey({\n message: \"Select Session Key:\",\n });\n alias = res.alias;\n }\n\n if (flagChain._tag === \"Some\") {\n chain = flagChain.value;\n } else {\n chain = yield* web3Service.selectChain({\n message: \"Select Chain:\",\n });\n }\n\n params = { alias, chain, rpcUrl };\n }\n\n const installed = yield* sessionKeyManager.getSessionKeyStatus(params);\n\n const data = { installed };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the session key\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nexport const getSessionKeyStatusCommand = Command.make(\n \"status\",\n {\n alias,\n ...chainAndRpcUrl,\n },\n ({ alias, chain, rpcUrl }) => handler(alias, chain, rpcUrl),\n).pipe(\n Command.withDescription(\"Get Session key status for a given chain\"),\n Command.withExamples([\n {\n command: \"namera session-key status -a my-smart --chain eth-mainnet\",\n description: \"Get Session key status for a given chain\",\n },\n {\n command:\n \"namera session-key status --alias my-smart --chain eth-mainnet --rpc-url https://rpc.ankr.com/eth\",\n description:\n \"Get Session key status for a given chain with custom RPC URL\",\n },\n {\n command: `namera session-key status --params '{\"alias\":\"my-session-key\",\"chain\":\"eth-mainnet\"}'`,\n description: \"Get Session key status for a given chain with json params\",\n },\n {\n command: \"namera schema session-key.status\",\n description: \"Get the schema for the session key status command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;;;AASA,MAAM,WACJ,WACA,WACA,eAEA,OAAO,IAAI,aAAa;CACtB,MAAM,cAAc,OAAOA;CAC3B,MAAM,oBAAoB,OAAOC;CACjC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,0BAA0B,CACjD,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;EACJ,IAAI;EACJ,MAAM,SAAS,WAAW,SAAS,SAAS,WAAW,QAAQ;AAE/D,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAKlB,UAAQ,OAHW,kBAAkB,iBAAiB,EACpD,SAAS,uBACV,CAAC,EACU;AAGd,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAElB,SAAQ,OAAO,YAAY,YAAY,EACrC,SAAS,iBACV,CAAC;AAGJ,WAAS;GAAE;GAAO;GAAO;GAAQ;;CAKnC,MAAM,OAAO,EAAE,kBAFU,kBAAkB,oBAAoB,OAAO,EAE5C;AAE1B,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,+BAA+B,EACpD,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAa,6BAA6B,QAAQ,KAChD,UACA;CACE;CACA,GAAG;CACJ,GACA,EAAE,OAAO,OAAO,aAAa,QAAQ,OAAO,OAAO,OAAO,CAC5D,CAAC,KACA,QAAQ,gBAAgB,2CAA2C,EACnE,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SACE;EACF,aACE;EACH;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env node
2
+ import { CreateSmartAccountParams } from "../../dto/smart-account.mjs";
3
+ import "../../dto/index.mjs";
4
+ import { getGlobalFlags } from "../../flags/global.mjs";
5
+ import { PromptManager } from "../../layers/prompt.mjs";
6
+ import { KeystoreManager } from "../../layers/keystore.mjs";
7
+ import { SmartAccountManager } from "../../layers/smart-account.mjs";
8
+ import { OutputFormatter } from "../../layers/output.mjs";
9
+ import "../../layers/index.mjs";
10
+ import { Console, Effect, Redacted, Schema } from "effect";
11
+ import { Command, Flag } from "effect/unstable/cli";
12
+ //#region src/commands/smart-account/create.ts
13
+ const handler = (flagAlias, flagOwnerAlias, flagOwnerPassword, flagIndex) => Effect.gen(function* () {
14
+ const promptManager = yield* PromptManager;
15
+ const keystoreManager = yield* KeystoreManager;
16
+ const smartAccountManager = yield* SmartAccountManager;
17
+ const outputFormatter = yield* OutputFormatter;
18
+ const globalFlags = yield* getGlobalFlags();
19
+ let params;
20
+ if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(CreateSmartAccountParams))(globalFlags.params.value);
21
+ else {
22
+ let alias;
23
+ let ownerAlias;
24
+ let ownerPassword;
25
+ let index;
26
+ if (flagAlias._tag === "Some") alias = flagAlias.value;
27
+ else alias = yield* promptManager.aliasPrompt({
28
+ aliasType: "new",
29
+ message: "Enter alias for smart account:",
30
+ type: "smart-account"
31
+ });
32
+ if (flagOwnerAlias._tag === "Some") ownerAlias = flagOwnerAlias.value;
33
+ else ownerAlias = (yield* keystoreManager.selectKeystore({ message: "Select owner keystore:" })).alias;
34
+ if (flagOwnerPassword._tag === "Some") ownerPassword = flagOwnerPassword.value;
35
+ else ownerPassword = yield* keystoreManager.getKeystorePassword({
36
+ alias: ownerAlias,
37
+ message: `Enter password for owner (${ownerAlias}):`
38
+ });
39
+ if (flagIndex._tag === "Some") index = BigInt(flagIndex.value);
40
+ else index = 0n;
41
+ params = {
42
+ alias,
43
+ ownerAlias,
44
+ index,
45
+ ownerPassword: Redacted.value(ownerPassword)
46
+ };
47
+ }
48
+ const res = yield* smartAccountManager.createSmartAccount(params);
49
+ const data = {
50
+ address: res.data.smartAccountAddress,
51
+ kernelVersion: res.data.kernelVersion,
52
+ index: Number(res.data.index),
53
+ owner: res.data.ownerAlias
54
+ };
55
+ if (globalFlags.quiet) return;
56
+ const output = yield* outputFormatter.format(data, globalFlags.out);
57
+ yield* Console.log(output);
58
+ });
59
+ const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the smart account to create"), Flag.withAlias("a"), Flag.optional);
60
+ const ownerAlias = Flag.string("owner-alias").pipe(Flag.withDescription("The alias of the owner keystore"), Flag.withAlias("oa"), Flag.optional);
61
+ const ownerPassword = Flag.redacted("owner-password").pipe(Flag.withDescription("The password of the owner keystore"), Flag.withAlias("op"), Flag.optional);
62
+ const index = Flag.integer("index").pipe(Flag.withDescription("The index of the smart account"), Flag.withAlias("i"), Flag.optional);
63
+ /**
64
+ * Command that creates a new smart account and stores it locally.
65
+ *
66
+ * Accepts alias, owner alias, and index via flags or JSON params.
67
+ */
68
+ const createSmartAccountCommand = Command.make("create", {
69
+ alias,
70
+ ownerAlias,
71
+ ownerPassword,
72
+ index
73
+ }, ({ alias, ownerAlias, ownerPassword, index }) => handler(alias, ownerAlias, ownerPassword, index)).pipe(Command.withAlias("c"), Command.withDescription("Creates a new smart account"), Command.withExamples([
74
+ {
75
+ command: "namera smart-account create",
76
+ description: "Creates a new smart account with interactive prompts"
77
+ },
78
+ {
79
+ command: "namera smart-account create --alias my-smart --owner-alias my-owner --index 0",
80
+ description: "Creates a new smart account with alias 'my-smart', owner alias 'my-owner', and index 0"
81
+ },
82
+ {
83
+ command: `namera smart-account create --params '{"alias":"my-smart","owner-alias":"my-owner","index":0}'`,
84
+ description: "Creates a new smart account with json params"
85
+ },
86
+ {
87
+ command: "namera schema smart-account.create",
88
+ description: "Get the schema for the create command"
89
+ }
90
+ ]));
91
+ //#endregion
92
+ export { createSmartAccountCommand };
93
+
94
+ //# sourceMappingURL=create.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.mjs","names":["PromptManager.PromptManager","KeystoreManager.KeystoreManager","SmartAccountManager.SmartAccountManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/smart-account/create.ts"],"sourcesContent":["import { Console, Effect, type Option, Redacted, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { CreateSmartAccountParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport {\n KeystoreManager,\n OutputFormatter,\n PromptManager,\n SmartAccountManager,\n} from \"@/layers\";\n\nconst handler = (\n flagAlias: Option.Option<string>,\n flagOwnerAlias: Option.Option<string>,\n flagOwnerPassword: Option.Option<Redacted.Redacted<string>>,\n flagIndex: Option.Option<number>,\n) =>\n Effect.gen(function* () {\n const promptManager = yield* PromptManager.PromptManager;\n const keystoreManager = yield* KeystoreManager.KeystoreManager;\n const smartAccountManager = yield* SmartAccountManager.SmartAccountManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n let params: CreateSmartAccountParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(CreateSmartAccountParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n let ownerAlias: string;\n let ownerPassword: Redacted.Redacted<string>;\n let index: bigint;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n alias = yield* promptManager.aliasPrompt({\n aliasType: \"new\",\n message: \"Enter alias for smart account:\",\n type: \"smart-account\",\n });\n }\n\n if (flagOwnerAlias._tag === \"Some\") {\n ownerAlias = flagOwnerAlias.value;\n } else {\n ownerAlias = (yield* keystoreManager.selectKeystore({\n message: \"Select owner keystore:\",\n })).alias;\n }\n\n if (flagOwnerPassword._tag === \"Some\") {\n ownerPassword = flagOwnerPassword.value;\n } else {\n ownerPassword = yield* keystoreManager.getKeystorePassword({\n alias: ownerAlias,\n message: `Enter password for owner (${ownerAlias}):`,\n });\n }\n\n if (flagIndex._tag === \"Some\") {\n index = BigInt(flagIndex.value);\n } else {\n index = 0n;\n }\n\n params = {\n alias,\n ownerAlias,\n index,\n ownerPassword: Redacted.value(ownerPassword),\n };\n }\n\n const res = yield* smartAccountManager.createSmartAccount(params);\n\n const data = {\n address: res.data.smartAccountAddress,\n kernelVersion: res.data.kernelVersion,\n index: Number(res.data.index),\n owner: res.data.ownerAlias,\n };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the smart account to create\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nconst ownerAlias = Flag.string(\"owner-alias\").pipe(\n Flag.withDescription(\"The alias of the owner keystore\"),\n Flag.withAlias(\"oa\"),\n Flag.optional,\n);\n\nconst ownerPassword = Flag.redacted(\"owner-password\").pipe(\n Flag.withDescription(\"The password of the owner keystore\"),\n Flag.withAlias(\"op\"),\n Flag.optional,\n);\n\nconst index = Flag.integer(\"index\").pipe(\n Flag.withDescription(\"The index of the smart account\"),\n Flag.withAlias(\"i\"),\n Flag.optional,\n);\n\n/**\n * Command that creates a new smart account and stores it locally.\n *\n * Accepts alias, owner alias, and index via flags or JSON params.\n */\nexport const createSmartAccountCommand = Command.make(\n \"create\",\n { alias, ownerAlias, ownerPassword, index },\n ({ alias, ownerAlias, ownerPassword, index }) =>\n handler(alias, ownerAlias, ownerPassword, index),\n).pipe(\n Command.withAlias(\"c\"),\n Command.withDescription(\"Creates a new smart account\"),\n Command.withExamples([\n {\n command: \"namera smart-account create\",\n description: \"Creates a new smart account with interactive prompts\",\n },\n {\n command:\n \"namera smart-account create --alias my-smart --owner-alias my-owner --index 0\",\n description:\n \"Creates a new smart account with alias 'my-smart', owner alias 'my-owner', and index 0\",\n },\n {\n command: `namera smart-account create --params '{\"alias\":\"my-smart\",\"owner-alias\":\"my-owner\",\"index\":0}'`,\n description: \"Creates a new smart account with json params\",\n },\n {\n command: \"namera schema smart-account.create\",\n description: \"Get the schema for the create command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,WACJ,WACA,gBACA,mBACA,cAEA,OAAO,IAAI,aAAa;CACtB,MAAM,gBAAgB,OAAOA;CAC7B,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,sBAAsB,OAAOC;CACnC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,yBAAyB,CAChD,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;AAEJ,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAElB,SAAQ,OAAO,cAAc,YAAY;GACvC,WAAW;GACX,SAAS;GACT,MAAM;GACP,CAAC;AAGJ,MAAI,eAAe,SAAS,OAC1B,cAAa,eAAe;MAE5B,eAAc,OAAO,gBAAgB,eAAe,EAClD,SAAS,0BACV,CAAC,EAAE;AAGN,MAAI,kBAAkB,SAAS,OAC7B,iBAAgB,kBAAkB;MAElC,iBAAgB,OAAO,gBAAgB,oBAAoB;GACzD,OAAO;GACP,SAAS,6BAA6B,WAAW;GAClD,CAAC;AAGJ,MAAI,UAAU,SAAS,OACrB,SAAQ,OAAO,UAAU,MAAM;MAE/B,SAAQ;AAGV,WAAS;GACP;GACA;GACA;GACA,eAAe,SAAS,MAAM,cAAc;GAC7C;;CAGH,MAAM,MAAM,OAAO,oBAAoB,mBAAmB,OAAO;CAEjE,MAAM,OAAO;EACX,SAAS,IAAI,KAAK;EAClB,eAAe,IAAI,KAAK;EACxB,OAAO,OAAO,IAAI,KAAK,MAAM;EAC7B,OAAO,IAAI,KAAK;EACjB;AAED,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,2CAA2C,EAChE,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAM,aAAa,KAAK,OAAO,cAAc,CAAC,KAC5C,KAAK,gBAAgB,kCAAkC,EACvD,KAAK,UAAU,KAAK,EACpB,KAAK,SACN;AAED,MAAM,gBAAgB,KAAK,SAAS,iBAAiB,CAAC,KACpD,KAAK,gBAAgB,qCAAqC,EAC1D,KAAK,UAAU,KAAK,EACpB,KAAK,SACN;AAED,MAAM,QAAQ,KAAK,QAAQ,QAAQ,CAAC,KAClC,KAAK,gBAAgB,iCAAiC,EACtD,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;;;;;;AAOD,MAAa,4BAA4B,QAAQ,KAC/C,UACA;CAAE;CAAO;CAAY;CAAe;CAAO,GAC1C,EAAE,OAAO,YAAY,eAAe,YACnC,QAAQ,OAAO,YAAY,eAAe,MAAM,CACnD,CAAC,KACA,QAAQ,UAAU,IAAI,EACtB,QAAQ,gBAAgB,8BAA8B,EACtD,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SACE;EACF,aACE;EACH;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ import { ImportSmartAccountParams } from "../../dto/smart-account.mjs";
3
+ import "../../dto/index.mjs";
4
+ import { getGlobalFlags } from "../../flags/global.mjs";
5
+ import { SmartAccountManager, SmartAccountManagerError } from "../../layers/smart-account.mjs";
6
+ import { OutputFormatter } from "../../layers/output.mjs";
7
+ import "../../layers/index.mjs";
8
+ import { Console, Effect, Schema } from "effect";
9
+ import { Command } from "effect/unstable/cli";
10
+ //#region src/commands/smart-account/import.ts
11
+ const handler = () => Effect.gen(function* () {
12
+ const smartAccountManager = yield* SmartAccountManager;
13
+ const outputFormatter = yield* OutputFormatter;
14
+ const globalFlags = yield* getGlobalFlags();
15
+ if (globalFlags.params._tag === "None") return yield* Effect.fail(new SmartAccountManagerError({
16
+ code: "SmartAccountImportError",
17
+ message: "Smart Account import is only supported via JSON params"
18
+ }));
19
+ const params = Schema.decodeUnknownSync(Schema.fromJsonString(ImportSmartAccountParams))(globalFlags.params.value);
20
+ const res = yield* smartAccountManager.importSmartAccount(params);
21
+ const data = {
22
+ alias: res.alias,
23
+ address: res.data.smartAccountAddress,
24
+ owner: res.data.ownerAlias,
25
+ index: Number(res.data.index),
26
+ kernelVersion: res.data.kernelVersion
27
+ };
28
+ if (globalFlags.quiet) return;
29
+ const output = yield* outputFormatter.format(data, globalFlags.out);
30
+ yield* Console.log(output);
31
+ });
32
+ /**
33
+ * Command that imports a smart account using JSON params only.
34
+ */
35
+ const importSmartAccountCommand = Command.make("import", {}, () => handler()).pipe(Command.withAlias("i"), Command.withDescription("Import a smart account"), Command.withExamples([{
36
+ command: `namera smart-account import --params '{"alias":"my-smart","ownerAlias":"my-owner","index":0,"kernelVersion":"0.3.2","smartAccountAddress":"0x1bC710cbA70f8Ce638dC5c8F50FDb05d87a7D652","entryPointVersion":"0.7","ownerType":"ecdsa"}'`,
37
+ description: "Import a smart account with json params"
38
+ }, {
39
+ command: "namera schema smart-account.import",
40
+ description: "Get the schema for the smart account import command"
41
+ }]));
42
+ //#endregion
43
+ export { importSmartAccountCommand };
44
+
45
+ //# sourceMappingURL=import.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.mjs","names":["SmartAccountManager.SmartAccountManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/smart-account/import.ts"],"sourcesContent":["import { Console, Effect, Schema } from \"effect\";\nimport { Command } from \"effect/unstable/cli\";\n\nimport { ImportSmartAccountParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { OutputFormatter, SmartAccountManager } from \"@/layers\";\nimport { SmartAccountManagerError } from \"@/layers/smart-account\";\n\nconst handler = () =>\n Effect.gen(function* () {\n const smartAccountManager = yield* SmartAccountManager.SmartAccountManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n\n const globalFlags = yield* getGlobalFlags();\n\n if (globalFlags.params._tag === \"None\") {\n return yield* Effect.fail(\n new SmartAccountManagerError({\n code: \"SmartAccountImportError\",\n message: \"Smart Account import is only supported via JSON params\",\n }),\n );\n }\n\n const params = Schema.decodeUnknownSync(\n Schema.fromJsonString(ImportSmartAccountParams),\n )(globalFlags.params.value);\n\n const res = yield* smartAccountManager.importSmartAccount(params);\n\n const data = {\n alias: res.alias,\n address: res.data.smartAccountAddress,\n owner: res.data.ownerAlias,\n index: Number(res.data.index),\n kernelVersion: res.data.kernelVersion,\n };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\n/**\n * Command that imports a smart account using JSON params only.\n */\nexport const importSmartAccountCommand = Command.make(\"import\", {}, () =>\n handler(),\n).pipe(\n Command.withAlias(\"i\"),\n Command.withDescription(\"Import a smart account\"),\n Command.withExamples([\n {\n command: `namera smart-account import --params '{\"alias\":\"my-smart\",\"ownerAlias\":\"my-owner\",\"index\":0,\"kernelVersion\":\"0.3.2\",\"smartAccountAddress\":\"0x1bC710cbA70f8Ce638dC5c8F50FDb05d87a7D652\",\"entryPointVersion\":\"0.7\",\"ownerType\":\"ecdsa\"}'`,\n description: \"Import a smart account with json params\",\n },\n {\n command: \"namera schema smart-account.import\",\n description: \"Get the schema for the smart account import command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;AAQA,MAAM,gBACJ,OAAO,IAAI,aAAa;CACtB,MAAM,sBAAsB,OAAOA;CACnC,MAAM,kBAAkB,OAAOC;CAE/B,MAAM,cAAc,OAAO,gBAAgB;AAE3C,KAAI,YAAY,OAAO,SAAS,OAC9B,QAAO,OAAO,OAAO,KACnB,IAAI,yBAAyB;EAC3B,MAAM;EACN,SAAS;EACV,CAAC,CACH;CAGH,MAAM,SAAS,OAAO,kBACpB,OAAO,eAAe,yBAAyB,CAChD,CAAC,YAAY,OAAO,MAAM;CAE3B,MAAM,MAAM,OAAO,oBAAoB,mBAAmB,OAAO;CAEjE,MAAM,OAAO;EACX,OAAO,IAAI;EACX,SAAS,IAAI,KAAK;EAClB,OAAO,IAAI,KAAK;EAChB,OAAO,OAAO,IAAI,KAAK,MAAM;EAC7B,eAAe,IAAI,KAAK;EACzB;AAED,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;;;;AAKJ,MAAa,4BAA4B,QAAQ,KAAK,UAAU,EAAE,QAChE,SAAS,CACV,CAAC,KACA,QAAQ,UAAU,IAAI,EACtB,QAAQ,gBAAgB,yBAAyB,EACjD,QAAQ,aAAa,CACnB;CACE,SAAS;CACT,aAAa;CACd,EACD;CACE,SAAS;CACT,aAAa;CACd,CACF,CAAC,CACH"}
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ import { createSmartAccountCommand } from "./create.mjs";
3
+ import { importSmartAccountCommand } from "./import.mjs";
4
+ import { getSmartAccountInfoCommand } from "./info.mjs";
5
+ import { listSmartAccountsCommand } from "./list.mjs";
6
+ import { removeSmartAccountCommand } from "./remove.mjs";
7
+ import { getSmartAccountStatus } from "./status.mjs";
8
+ import { Effect } from "effect";
9
+ import { CliError, Command } from "effect/unstable/cli";
10
+ //#region src/commands/smart-account/index.ts
11
+ /**
12
+ * Root command group for smart-account lifecycle actions.
13
+ *
14
+ * Includes create, list, info, remove, status, and import subcommands.
15
+ */
16
+ const smartAccountCommands = Command.make("smart-account", {}, () => Effect.fail(new CliError.ShowHelp({
17
+ commandPath: ["namera", "smart-account"],
18
+ errors: []
19
+ }))).pipe(Command.withAlias("sa"), Command.withDescription("Smart Account management utilities."), Command.withSubcommands([
20
+ createSmartAccountCommand,
21
+ listSmartAccountsCommand,
22
+ getSmartAccountInfoCommand,
23
+ removeSmartAccountCommand,
24
+ getSmartAccountStatus,
25
+ importSmartAccountCommand
26
+ ]));
27
+ //#endregion
28
+ export { smartAccountCommands };
29
+
30
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/commands/smart-account/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { CliError, Command } from \"effect/unstable/cli\";\n\nimport { createSmartAccountCommand } from \"./create\";\nimport { importSmartAccountCommand } from \"./import\";\nimport { getSmartAccountInfoCommand } from \"./info\";\nimport { listSmartAccountsCommand } from \"./list\";\nimport { removeSmartAccountCommand } from \"./remove\";\nimport { getSmartAccountStatus } from \"./status\";\n\n/**\n * Root command group for smart-account lifecycle actions.\n *\n * Includes create, list, info, remove, status, and import subcommands.\n */\nexport const smartAccountCommands = Command.make(\"smart-account\", {}, () =>\n Effect.fail(\n new CliError.ShowHelp({\n commandPath: [\"namera\", \"smart-account\"],\n errors: [],\n }),\n ),\n).pipe(\n Command.withAlias(\"sa\"),\n Command.withDescription(\"Smart Account management utilities.\"),\n Command.withSubcommands([\n createSmartAccountCommand,\n listSmartAccountsCommand,\n getSmartAccountInfoCommand,\n removeSmartAccountCommand,\n getSmartAccountStatus,\n importSmartAccountCommand,\n ]),\n);\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,uBAAuB,QAAQ,KAAK,iBAAiB,EAAE,QAClE,OAAO,KACL,IAAI,SAAS,SAAS;CACpB,aAAa,CAAC,UAAU,gBAAgB;CACxC,QAAQ,EAAE;CACX,CAAC,CACH,CACF,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,sCAAsC,EAC9D,QAAQ,gBAAgB;CACtB;CACA;CACA;CACA;CACA;CACA;CACD,CAAC,CACH"}
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env node
2
+ import { GetKeystoreParams } from "../../dto/keystore.mjs";
3
+ import "../../dto/index.mjs";
4
+ import { getGlobalFlags } from "../../flags/global.mjs";
5
+ import { SmartAccountManager } from "../../layers/smart-account.mjs";
6
+ import { OutputFormatter } from "../../layers/output.mjs";
7
+ import "../../layers/index.mjs";
8
+ import { Console, Effect, Schema } from "effect";
9
+ import { Command, Flag } from "effect/unstable/cli";
10
+ //#region src/commands/smart-account/info.ts
11
+ const handler = (flagAlias) => Effect.gen(function* () {
12
+ const smartAccountManager = yield* SmartAccountManager;
13
+ const outputFormatter = yield* OutputFormatter;
14
+ const globalFlags = yield* getGlobalFlags();
15
+ let params;
16
+ if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(GetKeystoreParams))(globalFlags.params.value);
17
+ else {
18
+ let alias;
19
+ if (flagAlias._tag === "Some") alias = flagAlias.value;
20
+ else alias = (yield* smartAccountManager.selectSmartAccount({ message: "Select Smart Account:" })).alias;
21
+ params = { alias };
22
+ }
23
+ const res = yield* smartAccountManager.getSmartAccount(params);
24
+ const data = {
25
+ alias: res.alias,
26
+ address: res.data.smartAccountAddress,
27
+ owner: res.data.ownerAlias,
28
+ index: Number(res.data.index),
29
+ kernelVersion: res.data.kernelVersion
30
+ };
31
+ if (globalFlags.quiet) return;
32
+ const output = yield* outputFormatter.format(data, globalFlags.out);
33
+ yield* Console.log(output);
34
+ });
35
+ const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the smart account to retrieve"), Flag.withAlias("a"), Flag.optional);
36
+ /**
37
+ * Command that returns stored metadata for a smart account.
38
+ *
39
+ * Accepts alias via flag or JSON params, otherwise prompts for selection.
40
+ */
41
+ const getSmartAccountInfoCommand = Command.make("info", { alias }, ({ alias }) => handler(alias)).pipe(Command.withDescription("Get information about a smart account"), Command.withExamples([
42
+ {
43
+ command: "namera smart-account info",
44
+ description: "Get information about a smart account with alias prompt"
45
+ },
46
+ {
47
+ command: "namera smart-account info --alias my-smart",
48
+ description: "Get information about a smart account with alias 'my-smart'"
49
+ },
50
+ {
51
+ command: `namera smart-account info --params '{"alias":"my-smart"}'`,
52
+ description: "Get information about a smart account with json params"
53
+ },
54
+ {
55
+ command: "namera smart-account info --alias my-wallet --output json",
56
+ description: "Get information about a smart account in json format"
57
+ },
58
+ {
59
+ command: "namera schema smart-account.info",
60
+ description: "Get the schema for the smart account info command"
61
+ }
62
+ ]));
63
+ //#endregion
64
+ export { getSmartAccountInfoCommand };
65
+
66
+ //# sourceMappingURL=info.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.mjs","names":["SmartAccountManager.SmartAccountManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/smart-account/info.ts"],"sourcesContent":["import { Console, Effect, type Option, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { GetKeystoreParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { OutputFormatter, SmartAccountManager } from \"@/layers\";\n\nconst handler = (flagAlias: Option.Option<string>) =>\n Effect.gen(function* () {\n const smartAccountManager = yield* SmartAccountManager.SmartAccountManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n\n const globalFlags = yield* getGlobalFlags();\n\n let params: GetKeystoreParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(GetKeystoreParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n const res = yield* smartAccountManager.selectSmartAccount({\n message: \"Select Smart Account:\",\n });\n alias = res.alias;\n }\n\n params = { alias };\n }\n\n const res = yield* smartAccountManager.getSmartAccount(params);\n\n const data = {\n alias: res.alias,\n address: res.data.smartAccountAddress,\n owner: res.data.ownerAlias,\n index: Number(res.data.index),\n kernelVersion: res.data.kernelVersion,\n };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the smart account to retrieve\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\n/**\n * Command that returns stored metadata for a smart account.\n *\n * Accepts alias via flag or JSON params, otherwise prompts for selection.\n */\nexport const getSmartAccountInfoCommand = Command.make(\n \"info\",\n { alias },\n ({ alias }) => handler(alias),\n).pipe(\n Command.withDescription(\"Get information about a smart account\"),\n Command.withExamples([\n {\n command: \"namera smart-account info\",\n description: \"Get information about a smart account with alias prompt\",\n },\n {\n command: \"namera smart-account info --alias my-smart\",\n description:\n \"Get information about a smart account with alias 'my-smart'\",\n },\n {\n command: `namera smart-account info --params '{\"alias\":\"my-smart\"}'`,\n description: \"Get information about a smart account with json params\",\n },\n {\n command: \"namera smart-account info --alias my-wallet --output json\",\n description: \"Get information about a smart account in json format\",\n },\n {\n command: \"namera schema smart-account.info\",\n description: \"Get the schema for the smart account info command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;AAOA,MAAM,WAAW,cACf,OAAO,IAAI,aAAa;CACtB,MAAM,sBAAsB,OAAOA;CACnC,MAAM,kBAAkB,OAAOC;CAE/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,kBAAkB,CACzC,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;AAEJ,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAKlB,UAAQ,OAHW,oBAAoB,mBAAmB,EACxD,SAAS,yBACV,CAAC,EACU;AAGd,WAAS,EAAE,OAAO;;CAGpB,MAAM,MAAM,OAAO,oBAAoB,gBAAgB,OAAO;CAE9D,MAAM,OAAO;EACX,OAAO,IAAI;EACX,SAAS,IAAI,KAAK;EAClB,OAAO,IAAI,KAAK;EAChB,OAAO,OAAO,IAAI,KAAK,MAAM;EAC7B,eAAe,IAAI,KAAK;EACzB;AAED,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,6CAA6C,EAClE,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;;;;;;AAOD,MAAa,6BAA6B,QAAQ,KAChD,QACA,EAAE,OAAO,GACR,EAAE,YAAY,QAAQ,MAAM,CAC9B,CAAC,KACA,QAAQ,gBAAgB,wCAAwC,EAChE,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aACE;EACH;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env node
2
+ import { getGlobalFlags } from "../../flags/global.mjs";
3
+ import { SmartAccountManager } from "../../layers/smart-account.mjs";
4
+ import { OutputFormatter } from "../../layers/output.mjs";
5
+ import "../../layers/index.mjs";
6
+ import { Console, Effect } from "effect";
7
+ import { Command } from "effect/unstable/cli";
8
+ //#region src/commands/smart-account/list.ts
9
+ const handler = () => Effect.gen(function* () {
10
+ const smartAccountManager = yield* SmartAccountManager;
11
+ const outputFormatter = yield* OutputFormatter;
12
+ const globalFlags = yield* getGlobalFlags();
13
+ const data = (yield* smartAccountManager.listSmartAccounts()).map((d) => ({
14
+ alias: d.alias,
15
+ address: d.data.smartAccountAddress,
16
+ owner: d.data.ownerAlias,
17
+ index: Number(d.data.index),
18
+ kernelVersion: d.data.kernelVersion
19
+ }));
20
+ if (globalFlags.quiet) return;
21
+ const output = yield* outputFormatter.format(data, globalFlags.out);
22
+ yield* Console.log(output);
23
+ });
24
+ /**
25
+ * Command that lists all locally stored smart accounts.
26
+ */
27
+ const listSmartAccountsCommand = Command.make("list", {}, () => handler()).pipe(Command.withAlias("ls"), Command.withDescription("List all smart accounts"), Command.withExamples([
28
+ {
29
+ command: "namera smart-account list",
30
+ description: "List all smart accounts"
31
+ },
32
+ {
33
+ command: "namera smart-account list --output json",
34
+ description: "List all smart accounts in json format"
35
+ },
36
+ {
37
+ command: "namera smart-account list --output ndjson",
38
+ description: "List all smart accounts in ndjson format"
39
+ },
40
+ {
41
+ command: "namera schema smart-account.list",
42
+ description: "Get the schema for the list smart account command"
43
+ }
44
+ ]));
45
+ //#endregion
46
+ export { listSmartAccountsCommand };
47
+
48
+ //# sourceMappingURL=list.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.mjs","names":["SmartAccountManager.SmartAccountManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/smart-account/list.ts"],"sourcesContent":["import { Console, Effect } from \"effect\";\nimport { Command } from \"effect/unstable/cli\";\n\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { OutputFormatter, SmartAccountManager } from \"@/layers\";\n\nconst handler = () =>\n Effect.gen(function* () {\n const smartAccountManager = yield* SmartAccountManager.SmartAccountManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n const res = yield* smartAccountManager.listSmartAccounts();\n\n const data = res.map((d) => ({\n alias: d.alias,\n address: d.data.smartAccountAddress,\n owner: d.data.ownerAlias,\n index: Number(d.data.index),\n kernelVersion: d.data.kernelVersion,\n }));\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\n/**\n * Command that lists all locally stored smart accounts.\n */\nexport const listSmartAccountsCommand = Command.make(\"list\", {}, () =>\n handler(),\n).pipe(\n Command.withAlias(\"ls\"),\n Command.withDescription(\"List all smart accounts\"),\n Command.withExamples([\n {\n command: \"namera smart-account list\",\n description: \"List all smart accounts\",\n },\n {\n command: \"namera smart-account list --output json\",\n description: \"List all smart accounts in json format\",\n },\n {\n command: \"namera smart-account list --output ndjson\",\n description: \"List all smart accounts in ndjson format\",\n },\n {\n command: \"namera schema smart-account.list\",\n description: \"Get the schema for the list smart account command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;AAMA,MAAM,gBACJ,OAAO,IAAI,aAAa;CACtB,MAAM,sBAAsB,OAAOA;CACnC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAI3C,MAAM,QAAO,OAFM,oBAAoB,mBAAmB,EAEzC,KAAK,OAAO;EAC3B,OAAO,EAAE;EACT,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,KAAK;EACd,OAAO,OAAO,EAAE,KAAK,MAAM;EAC3B,eAAe,EAAE,KAAK;EACvB,EAAE;AAEH,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;;;;AAKJ,MAAa,2BAA2B,QAAQ,KAAK,QAAQ,EAAE,QAC7D,SAAS,CACV,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,0BAA0B,EAClD,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}