@namera-ai/cli 0.1.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +94 -220
  2. package/dist/index.js +1660 -0
  3. package/dist/index.js.map +1 -0
  4. package/npm-shrinkwrap.json +666 -0
  5. package/package.json +57 -49
  6. package/LICENSE +0 -201
  7. package/dist/commands/index.mjs +0 -21
  8. package/dist/commands/index.mjs.map +0 -1
  9. package/dist/commands/keystore/create.mjs +0 -74
  10. package/dist/commands/keystore/create.mjs.map +0 -1
  11. package/dist/commands/keystore/decrypt.mjs +0 -71
  12. package/dist/commands/keystore/decrypt.mjs.map +0 -1
  13. package/dist/commands/keystore/import.mjs +0 -84
  14. package/dist/commands/keystore/import.mjs.map +0 -1
  15. package/dist/commands/keystore/index.mjs +0 -28
  16. package/dist/commands/keystore/index.mjs.map +0 -1
  17. package/dist/commands/keystore/info.mjs +0 -62
  18. package/dist/commands/keystore/info.mjs.map +0 -1
  19. package/dist/commands/keystore/list.mjs +0 -46
  20. package/dist/commands/keystore/list.mjs.map +0 -1
  21. package/dist/commands/keystore/remove.mjs +0 -51
  22. package/dist/commands/keystore/remove.mjs.map +0 -1
  23. package/dist/commands/mcp/index.mjs +0 -13
  24. package/dist/commands/mcp/index.mjs.map +0 -1
  25. package/dist/commands/mcp/start.mjs +0 -82
  26. package/dist/commands/mcp/start.mjs.map +0 -1
  27. package/dist/commands/schema/index.mjs +0 -55
  28. package/dist/commands/schema/index.mjs.map +0 -1
  29. package/dist/commands/session-key/create/index.mjs +0 -87
  30. package/dist/commands/session-key/create/index.mjs.map +0 -1
  31. package/dist/commands/session-key/create/prompts/base.mjs +0 -52
  32. package/dist/commands/session-key/create/prompts/base.mjs.map +0 -1
  33. package/dist/commands/session-key/create/prompts/call.mjs +0 -85
  34. package/dist/commands/session-key/create/prompts/call.mjs.map +0 -1
  35. package/dist/commands/session-key/create/prompts/common.mjs +0 -27
  36. package/dist/commands/session-key/create/prompts/common.mjs.map +0 -1
  37. package/dist/commands/session-key/create/prompts/gas.mjs +0 -19
  38. package/dist/commands/session-key/create/prompts/gas.mjs.map +0 -1
  39. package/dist/commands/session-key/create/prompts/index.mjs +0 -44
  40. package/dist/commands/session-key/create/prompts/index.mjs.map +0 -1
  41. package/dist/commands/session-key/create/prompts/rate-limit.mjs +0 -40
  42. package/dist/commands/session-key/create/prompts/rate-limit.mjs.map +0 -1
  43. package/dist/commands/session-key/create/prompts/signature-caller.mjs +0 -26
  44. package/dist/commands/session-key/create/prompts/signature-caller.mjs.map +0 -1
  45. package/dist/commands/session-key/create/prompts/timestamp.mjs +0 -32
  46. package/dist/commands/session-key/create/prompts/timestamp.mjs.map +0 -1
  47. package/dist/commands/session-key/index.mjs +0 -26
  48. package/dist/commands/session-key/index.mjs.map +0 -1
  49. package/dist/commands/session-key/info.mjs +0 -64
  50. package/dist/commands/session-key/info.mjs.map +0 -1
  51. package/dist/commands/session-key/list.mjs +0 -54
  52. package/dist/commands/session-key/list.mjs.map +0 -1
  53. package/dist/commands/session-key/remove.mjs +0 -51
  54. package/dist/commands/session-key/remove.mjs.map +0 -1
  55. package/dist/commands/session-key/status.mjs +0 -64
  56. package/dist/commands/session-key/status.mjs.map +0 -1
  57. package/dist/commands/smart-account/create.mjs +0 -94
  58. package/dist/commands/smart-account/create.mjs.map +0 -1
  59. package/dist/commands/smart-account/import.mjs +0 -45
  60. package/dist/commands/smart-account/import.mjs.map +0 -1
  61. package/dist/commands/smart-account/index.mjs +0 -30
  62. package/dist/commands/smart-account/index.mjs.map +0 -1
  63. package/dist/commands/smart-account/info.mjs +0 -66
  64. package/dist/commands/smart-account/info.mjs.map +0 -1
  65. package/dist/commands/smart-account/list.mjs +0 -48
  66. package/dist/commands/smart-account/list.mjs.map +0 -1
  67. package/dist/commands/smart-account/remove.mjs +0 -54
  68. package/dist/commands/smart-account/remove.mjs.map +0 -1
  69. package/dist/commands/smart-account/status.mjs +0 -63
  70. package/dist/commands/smart-account/status.mjs.map +0 -1
  71. package/dist/dto/index.mjs +0 -6
  72. package/dist/dto/keystore.mjs +0 -44
  73. package/dist/dto/keystore.mjs.map +0 -1
  74. package/dist/dto/mcp.mjs +0 -13
  75. package/dist/dto/mcp.mjs.map +0 -1
  76. package/dist/dto/session-key.mjs +0 -54
  77. package/dist/dto/session-key.mjs.map +0 -1
  78. package/dist/dto/smart-account.mjs +0 -45
  79. package/dist/dto/smart-account.mjs.map +0 -1
  80. package/dist/flags/global.mjs +0 -29
  81. package/dist/flags/global.mjs.map +0 -1
  82. package/dist/flags/shared.mjs +0 -11
  83. package/dist/flags/shared.mjs.map +0 -1
  84. package/dist/helpers/humanize.mjs +0 -153
  85. package/dist/helpers/humanize.mjs.map +0 -1
  86. package/dist/helpers/paths.mjs +0 -31
  87. package/dist/helpers/paths.mjs.map +0 -1
  88. package/dist/helpers/policy.mjs +0 -89
  89. package/dist/helpers/policy.mjs.map +0 -1
  90. package/dist/helpers/pretty.mjs +0 -71
  91. package/dist/helpers/pretty.mjs.map +0 -1
  92. package/dist/index.d.mts +0 -2
  93. package/dist/index.mjs +0 -37
  94. package/dist/index.mjs.map +0 -1
  95. package/dist/layers/config.mjs +0 -124
  96. package/dist/layers/config.mjs.map +0 -1
  97. package/dist/layers/index.mjs +0 -11
  98. package/dist/layers/keystore.mjs +0 -225
  99. package/dist/layers/keystore.mjs.map +0 -1
  100. package/dist/layers/mcp-context.mjs +0 -8
  101. package/dist/layers/mcp-context.mjs.map +0 -1
  102. package/dist/layers/mcp.mjs +0 -31
  103. package/dist/layers/mcp.mjs.map +0 -1
  104. package/dist/layers/output.mjs +0 -21
  105. package/dist/layers/output.mjs.map +0 -1
  106. package/dist/layers/prompt.mjs +0 -78
  107. package/dist/layers/prompt.mjs.map +0 -1
  108. package/dist/layers/session-key.mjs +0 -218
  109. package/dist/layers/session-key.mjs.map +0 -1
  110. package/dist/layers/smart-account.mjs +0 -172
  111. package/dist/layers/smart-account.mjs.map +0 -1
  112. package/dist/layers/web3.mjs +0 -83
  113. package/dist/layers/web3.mjs.map +0 -1
  114. package/dist/mcp/helpers/common.mjs +0 -9
  115. package/dist/mcp/helpers/common.mjs.map +0 -1
  116. package/dist/mcp/helpers/index.mjs +0 -4
  117. package/dist/mcp/helpers/session-key.mjs +0 -129
  118. package/dist/mcp/helpers/session-key.mjs.map +0 -1
  119. package/dist/mcp/index.mjs +0 -60
  120. package/dist/mcp/index.mjs.map +0 -1
  121. package/dist/mcp/mcp.mjs +0 -15
  122. package/dist/mcp/mcp.mjs.map +0 -1
  123. package/dist/mcp/tools/account/address.mjs +0 -20
  124. package/dist/mcp/tools/account/address.mjs.map +0 -1
  125. package/dist/mcp/tools/account/get-balance.mjs +0 -54
  126. package/dist/mcp/tools/account/get-balance.mjs.map +0 -1
  127. package/dist/mcp/tools/account/index.mjs +0 -15
  128. package/dist/mcp/tools/account/index.mjs.map +0 -1
  129. package/dist/mcp/tools/read/index.mjs +0 -11
  130. package/dist/mcp/tools/read/index.mjs.map +0 -1
  131. package/dist/mcp/tools/read/read-contract.mjs +0 -49
  132. package/dist/mcp/tools/read/read-contract.mjs.map +0 -1
  133. package/dist/mcp/tools/transaction/execute-transaction.mjs +0 -38
  134. package/dist/mcp/tools/transaction/execute-transaction.mjs.map +0 -1
  135. package/dist/mcp/tools/transaction/index.mjs +0 -15
  136. package/dist/mcp/tools/transaction/index.mjs.map +0 -1
  137. package/dist/mcp/tools/transaction/native-transfer.mjs +0 -59
  138. package/dist/mcp/tools/transaction/native-transfer.mjs.map +0 -1
  139. package/dist/schema/chain.mjs +0 -124
  140. package/dist/schema/chain.mjs.map +0 -1
  141. package/dist/schema/common.mjs +0 -29
  142. package/dist/schema/common.mjs.map +0 -1
  143. package/dist/schema/index.mjs +0 -5
  144. package/dist/schema/policy.mjs +0 -114
  145. package/dist/schema/policy.mjs.map +0 -1
  146. package/dist/schema/tx.mjs +0 -19
  147. package/dist/schema/tx.mjs.map +0 -1
  148. package/dist/types/index.mjs +0 -11
  149. package/dist/types/index.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"call.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/call.ts"],"sourcesContent":["import { Effect, FileSystem } from \"effect\";\nimport type { QuitError } from \"effect/Terminal\";\nimport { Prompt } from \"effect/unstable/cli\";\nimport type { SelectChoice } from \"effect/unstable/cli/Prompt\";\nimport {\n type Abi,\n type AbiFunction,\n type Address,\n parseEther,\n toFunctionSelector,\n} from \"viem\";\n\nimport type {\n CallPolicyParams,\n Permission,\n PermissionManual,\n PermissionWithABI,\n} from \"@/schema\";\n\nimport { addressPrompt, etherPrompt } from \"./common\";\n\nconst getEOAPermission = () =>\n Effect.gen(function* () {\n const target = yield* addressPrompt(\"Enter target address:\");\n const valueLimit = yield* etherPrompt(\n \"Max value that can be transferred (in ETH units):\",\n );\n const weiUnits = parseEther(valueLimit, \"wei\");\n\n return [\n {\n target: target as Address,\n valueLimit: weiUnits,\n },\n ] satisfies PermissionManual[];\n });\n\nconst getSmartContractPermission = () =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const address = yield* addressPrompt(\"Enter smart contract address:\");\n const maxLimit = yield* etherPrompt(\n \"Max value that can be transferred (in ETH units)\",\n );\n\n // 1. Get Abi File\n // TODO: Add Abi Validation\n const abiFilePath = yield* Prompt.file({\n message: \"Select the ABI file for the smart contract\",\n });\n\n const abiString = yield* fs.readFileString(abiFilePath).pipe(Effect.orDie);\n const abi = JSON.parse(abiString) as Abi;\n\n const functions = abi.filter((e) => e.type === \"function\");\n\n const allowedFunctions = yield* Prompt.multiSelect({\n choices: functions.map((f) => {\n let signature = `${f.name}(`;\n for (let i = 0; i < f.inputs.length; i++) {\n const sep =\n f.inputs.length === 0 || i === f.inputs.length - 1 ? \"\" : \", \";\n // biome-ignore lint/style/noNonNullAssertion: safe\n const input = f.inputs[i]!;\n signature += `${input.type}${input.name ? ` ${input.name}` : \"\"}${sep}`;\n }\n signature += \")\";\n return {\n description: signature,\n title: f.name,\n value: f,\n } as SelectChoice<AbiFunction>;\n }),\n message: \"Select the functions you want to allow\",\n min: 1,\n });\n\n const weiUnits = parseEther(maxLimit);\n\n const res: PermissionWithABI[] = allowedFunctions.map((f) => {\n return {\n abi: [f],\n functionName: f.name,\n selector: toFunctionSelector(f),\n target: address as Address,\n valueLimit: weiUnits,\n };\n });\n\n return res;\n });\n\nconst getPermissions = () =>\n Effect.gen(function* () {\n const permissions: Permission[] = [];\n\n const targetAddressPrompt = Prompt.select({\n choices: [\n {\n title: \"EOA\",\n value: \"eoa\",\n },\n {\n title: \"Smart Contract\",\n value: \"smart-contract\",\n },\n ],\n message: \"Select target address type\",\n });\n\n while (true) {\n if (permissions.length > 0) {\n const addMore = yield* Prompt.confirm({\n message: \"Do you want to add another call permission?\",\n });\n if (!addMore) break;\n }\n\n const targetAddress = yield* targetAddressPrompt;\n\n if (targetAddress === \"eoa\") {\n const res = yield* getEOAPermission();\n permissions.push(...res);\n } else {\n const res = yield* getSmartContractPermission();\n permissions.push(...res);\n }\n }\n\n return permissions;\n });\n\nexport const getCallPolicyParams: Effect.Effect<\n CallPolicyParams,\n QuitError,\n Prompt.Environment\n> = Effect.gen(function* () {\n const permissions = yield* getPermissions();\n\n return {\n permissions,\n policyVersion: \"0.0.4\",\n type: \"call\",\n };\n});\n"],"mappings":";;;;;;AAqBA,MAAM,yBACJ,OAAO,IAAI,aAAa;AAOtB,QAAO,CACL;EACU,eARU,cAAc,wBAAwB;EASxD,YALa,WAAW,OAHF,YACxB,oDACD,EACuC,MAKxB;EACb,CACF;EACD;AAEJ,MAAM,mCACJ,OAAO,IAAI,aAAa;CACtB,MAAM,KAAK,OAAO,WAAW;CAC7B,MAAM,UAAU,OAAO,cAAc,gCAAgC;CACrE,MAAM,WAAW,OAAO,YACtB,mDACD;CAID,MAAM,cAAc,OAAO,OAAO,KAAK,EACrC,SAAS,8CACV,CAAC;CAEF,MAAM,YAAY,OAAO,GAAG,eAAe,YAAY,CAAC,KAAK,OAAO,MAAM;CAG1E,MAAM,YAFM,KAAK,MAAM,UAEL,CAAI,QAAQ,MAAM,EAAE,SAAS,WAAW;CAE1D,MAAM,mBAAmB,OAAO,OAAO,YAAY;EACjD,SAAS,UAAU,KAAK,MAAM;GAC5B,IAAI,YAAY,GAAG,EAAE,KAAK;AAC1B,QAAK,IAAI,IAAI,GAAG,IAAI,EAAE,OAAO,QAAQ,KAAK;IACxC,MAAM,MACJ,EAAE,OAAO,WAAW,KAAK,MAAM,EAAE,OAAO,SAAS,IAAI,KAAK;IAE5D,MAAM,QAAQ,EAAE,OAAO;AACvB,iBAAa,GAAG,MAAM,OAAO,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;;AAEpE,gBAAa;AACb,UAAO;IACL,aAAa;IACb,OAAO,EAAE;IACT,OAAO;IACR;IACD;EACF,SAAS;EACT,KAAK;EACN,CAAC;CAEF,MAAM,WAAW,WAAW,SAAS;AAYrC,QAViC,iBAAiB,KAAK,MAAM;AAC3D,SAAO;GACL,KAAK,CAAC,EAAE;GACR,cAAc,EAAE;GAChB,UAAU,mBAAmB,EAAE;GAC/B,QAAQ;GACR,YAAY;GACb;GAGI;EACP;AAEJ,MAAM,uBACJ,OAAO,IAAI,aAAa;CACtB,MAAM,cAA4B,EAAE;CAEpC,MAAM,sBAAsB,OAAO,OAAO;EACxC,SAAS,CACP;GACE,OAAO;GACP,OAAO;GACR,EACD;GACE,OAAO;GACP,OAAO;GACR,CACF;EACD,SAAS;EACV,CAAC;AAEF,QAAO,MAAM;AACX,MAAI,YAAY,SAAS,GAIvB;OAAI,EAAC,OAHkB,OAAO,QAAQ,EACpC,SAAS,+CACV,CAAC,EACY;;AAKhB,OAAI,OAFyB,yBAEP,OAAO;GAC3B,MAAM,MAAM,OAAO,kBAAkB;AACrC,eAAY,KAAK,GAAG,IAAI;SACnB;GACL,MAAM,MAAM,OAAO,4BAA4B;AAC/C,eAAY,KAAK,GAAG,IAAI;;;AAI5B,QAAO;EACP;AAEJ,MAAa,sBAIT,OAAO,IAAI,aAAa;AAG1B,QAAO;EACL,oBAHyB,gBAAgB;EAIzC,eAAe;EACf,MAAM;EACP;EACD"}
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env node
2
- import { EthereumAddress } from "../../../../schema/common.mjs";
3
- import "../../../../schema/index.mjs";
4
- import { Effect, Option, Schema } from "effect";
5
- import { Prompt } from "effect/unstable/cli";
6
- //#region src/commands/session-key/create/prompts/common.ts
7
- const addressPrompt = (message) => Prompt.text({
8
- message,
9
- validate: (value) => Effect.gen(function* () {
10
- const res = Schema.decodeUnknownOption(EthereumAddress)(value);
11
- if (Option.isNone(res)) return yield* Effect.fail("Invalid Ethereum Address");
12
- return value;
13
- })
14
- });
15
- const etherPrompt = (message) => Prompt.text({
16
- message,
17
- validate: (val) => Effect.gen(function* () {
18
- const schema = Schema.NumberFromString.check(Schema.isGreaterThanOrEqualTo(0));
19
- const res = Schema.decodeOption(schema)(val);
20
- if (Option.isNone(res)) return yield* Effect.fail("Invalid Number");
21
- return res.value.toString();
22
- })
23
- });
24
- //#endregion
25
- export { addressPrompt, etherPrompt };
26
-
27
- //# sourceMappingURL=common.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/common.ts"],"sourcesContent":["import { Effect, Option, Schema } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport { EthereumAddress } from \"@/schema\";\n\nexport const addressPrompt = (message: string) =>\n Prompt.text({\n message,\n validate: (value) =>\n Effect.gen(function* () {\n const res = Schema.decodeUnknownOption(EthereumAddress)(value);\n if (Option.isNone(res))\n return yield* Effect.fail(\"Invalid Ethereum Address\");\n return value;\n }),\n });\n\nexport const etherPrompt = (message: string) =>\n Prompt.text({\n message,\n validate: (val) =>\n Effect.gen(function* () {\n const schema = Schema.NumberFromString.check(\n Schema.isGreaterThanOrEqualTo(0),\n );\n const res = Schema.decodeOption(schema)(val);\n if (Option.isNone(res)) return yield* Effect.fail(\"Invalid Number\");\n return res.value.toString();\n }),\n });\n"],"mappings":";;;;;;AAKA,MAAa,iBAAiB,YAC5B,OAAO,KAAK;CACV;CACA,WAAW,UACT,OAAO,IAAI,aAAa;EACtB,MAAM,MAAM,OAAO,oBAAoB,gBAAgB,CAAC,MAAM;AAC9D,MAAI,OAAO,OAAO,IAAI,CACpB,QAAO,OAAO,OAAO,KAAK,2BAA2B;AACvD,SAAO;GACP;CACL,CAAC;AAEJ,MAAa,eAAe,YAC1B,OAAO,KAAK;CACV;CACA,WAAW,QACT,OAAO,IAAI,aAAa;EACtB,MAAM,SAAS,OAAO,iBAAiB,MACrC,OAAO,uBAAuB,EAAE,CACjC;EACD,MAAM,MAAM,OAAO,aAAa,OAAO,CAAC,IAAI;AAC5C,MAAI,OAAO,OAAO,IAAI,CAAE,QAAO,OAAO,OAAO,KAAK,iBAAiB;AACnE,SAAO,IAAI,MAAM,UAAU;GAC3B;CACL,CAAC"}
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env node
2
- import { etherPrompt } from "./common.mjs";
3
- import { Effect } from "effect";
4
- import { Prompt } from "effect/unstable/cli";
5
- import { parseEther } from "viem";
6
- //#region src/commands/session-key/create/prompts/gas.ts
7
- const getGasPolicyParams = Effect.gen(function* () {
8
- const allowed = yield* etherPrompt("Total amount of gas allowed (in ETH units)");
9
- const enforcePaymaster = yield* Prompt.confirm({ message: "Should UserOperations require Paymaster?" });
10
- return {
11
- amount: parseEther(allowed),
12
- type: "gas",
13
- enforcePaymaster
14
- };
15
- });
16
- //#endregion
17
- export { getGasPolicyParams };
18
-
19
- //# sourceMappingURL=gas.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gas.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/gas.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\nimport { parseEther } from \"viem\";\n\nimport type { GasPolicyParams } from \"@/schema\";\n\nimport { etherPrompt } from \"./common\";\n\nexport const getGasPolicyParams = Effect.gen(function* () {\n const allowed = yield* etherPrompt(\n \"Total amount of gas allowed (in ETH units)\",\n );\n\n const enforcePaymaster = yield* Prompt.confirm({\n message: \"Should UserOperations require Paymaster?\",\n });\n\n const weiUnits = parseEther(allowed);\n\n return {\n amount: weiUnits,\n type: \"gas\",\n enforcePaymaster,\n } satisfies GasPolicyParams;\n});\n"],"mappings":";;;;;;AAQA,MAAa,qBAAqB,OAAO,IAAI,aAAa;CACxD,MAAM,UAAU,OAAO,YACrB,6CACD;CAED,MAAM,mBAAmB,OAAO,OAAO,QAAQ,EAC7C,SAAS,4CACV,CAAC;AAIF,QAAO;EACL,QAHe,WAAW,QAGlB;EACR,MAAM;EACN;EACD;EACD"}
@@ -1,44 +0,0 @@
1
- #!/usr/bin/env node
2
- import { policyChoicePrompt } from "./base.mjs";
3
- import { getCallPolicyParams } from "./call.mjs";
4
- import { getGasPolicyParams } from "./gas.mjs";
5
- import { getRateLimitPolicyParams } from "./rate-limit.mjs";
6
- import { getSignatureCallerPolicyParams } from "./signature-caller.mjs";
7
- import { getTimestampPolicyParams } from "./timestamp.mjs";
8
- import { Effect } from "effect";
9
- import { Prompt } from "effect/unstable/cli";
10
- //#region src/commands/session-key/create/prompts/index.ts
11
- const getPoliciesFromUser = () => Effect.gen(function* () {
12
- const policyParams = [];
13
- while (true) {
14
- if (policyParams.length > 0) {
15
- if (!(yield* Prompt.confirm({ message: "Do you want to add another policy?" }))) break;
16
- }
17
- const policyType = yield* policyChoicePrompt(policyParams);
18
- if (policyType === "sudo") {
19
- policyParams.push({ type: "sudo" });
20
- break;
21
- }
22
- if (policyType === "timestamp") {
23
- const res = yield* getTimestampPolicyParams;
24
- policyParams.push(res);
25
- } else if (policyType === "call") {
26
- const res = yield* getCallPolicyParams;
27
- policyParams.push(res);
28
- } else if (policyType === "gas") {
29
- const res = yield* getGasPolicyParams;
30
- policyParams.push(res);
31
- } else if (policyType === "rate-limit") {
32
- const res = yield* getRateLimitPolicyParams;
33
- policyParams.push(res);
34
- } else if (policyType === "signature-caller") {
35
- const res = yield* getSignatureCallerPolicyParams;
36
- policyParams.push(res);
37
- } else break;
38
- }
39
- return policyParams;
40
- });
41
- //#endregion
42
- export { getPoliciesFromUser };
43
-
44
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport type { PolicyParams } from \"@/schema\";\n\nimport { policyChoicePrompt } from \"./base\";\nimport { getCallPolicyParams } from \"./call\";\nimport { getGasPolicyParams } from \"./gas\";\nimport { getRateLimitPolicyParams } from \"./rate-limit\";\nimport { getSignatureCallerPolicyParams } from \"./signature-caller\";\nimport { getTimestampPolicyParams } from \"./timestamp\";\n\nexport const getPoliciesFromUser = () =>\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ok\n Effect.gen(function* () {\n const policyParams: PolicyParams[] = [];\n\n while (true) {\n if (policyParams.length > 0) {\n const addMore = yield* Prompt.confirm({\n message: \"Do you want to add another policy?\",\n });\n if (!addMore) break;\n }\n\n const policyType = yield* policyChoicePrompt(policyParams);\n\n if (policyType === \"sudo\") {\n policyParams.push({ type: \"sudo\" });\n // If sudo is selected, no need to ask for other policies\n break;\n }\n\n if (policyType === \"timestamp\") {\n const res = yield* getTimestampPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"call\") {\n const res = yield* getCallPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"gas\") {\n const res = yield* getGasPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"rate-limit\") {\n const res = yield* getRateLimitPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"signature-caller\") {\n const res = yield* getSignatureCallerPolicyParams;\n policyParams.push(res);\n } else {\n break;\n }\n }\n\n return policyParams;\n });\n"],"mappings":";;;;;;;;;;AAYA,MAAa,4BAEX,OAAO,IAAI,aAAa;CACtB,MAAM,eAA+B,EAAE;AAEvC,QAAO,MAAM;AACX,MAAI,aAAa,SAAS,GAIxB;OAAI,EAAC,OAHkB,OAAO,QAAQ,EACpC,SAAS,sCACV,CAAC,EACY;;EAGhB,MAAM,aAAa,OAAO,mBAAmB,aAAa;AAE1D,MAAI,eAAe,QAAQ;AACzB,gBAAa,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEnC;;AAGF,MAAI,eAAe,aAAa;GAC9B,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,QAAQ;GAChC,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,OAAO;GAC/B,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,cAAc;GACtC,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,oBAAoB;GAC5C,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;QAEtB;;AAIJ,QAAO;EACP"}
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Duration, Effect } from "effect";
3
- import { Prompt } from "effect/unstable/cli";
4
- //#region src/commands/session-key/create/prompts/rate-limit.ts
5
- /** biome-ignore-all lint/suspicious/noExplicitAny: safe */
6
- const getRateLimitPolicyParams = Effect.gen(function* () {
7
- const interval = yield* Prompt.text({
8
- message: "Duration for which rate limit is enforced? (e.g. 1 hour, 1 day, 1 week)",
9
- validate: (v) => Effect.gen(function* () {
10
- if (Duration.fromInput(v)._tag === "None") return yield* Effect.fail("Invalid duration");
11
- return v;
12
- })
13
- });
14
- const intervalDuration = Duration.fromInputUnsafe(interval);
15
- const count = yield* Prompt.integer({
16
- message: "Number of requests allowed per interval.",
17
- validate: (v) => Effect.gen(function* () {
18
- if (v < 1) return yield* Effect.fail("Count must be greater than 0");
19
- return v;
20
- })
21
- });
22
- const startAt = yield* Prompt.date({
23
- initial: /* @__PURE__ */ new Date(),
24
- message: "Date at which the rate limit is enforced.",
25
- validate: (d) => Effect.gen(function* () {
26
- if (d < /* @__PURE__ */ new Date()) return yield* Effect.fail("Date must be in the future");
27
- return d;
28
- })
29
- });
30
- return {
31
- type: "rate-limit",
32
- count,
33
- interval: Duration.toMillis(intervalDuration),
34
- startAt: Math.floor(startAt.getTime() / 1e3)
35
- };
36
- });
37
- //#endregion
38
- export { getRateLimitPolicyParams };
39
-
40
- //# sourceMappingURL=rate-limit.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate-limit.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/rate-limit.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: safe */\nimport { Duration, Effect } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport type { RateLimitPolicyParams } from \"@/schema\";\n\nexport const getRateLimitPolicyParams = Effect.gen(function* () {\n const interval = yield* Prompt.text({\n message:\n \"Duration for which rate limit is enforced? (e.g. 1 hour, 1 day, 1 week)\",\n validate: (v) =>\n Effect.gen(function* () {\n const valid = Duration.fromInput(v as any);\n if (valid._tag === \"None\") {\n return yield* Effect.fail(\"Invalid duration\");\n }\n\n return v;\n }),\n });\n\n const intervalDuration = Duration.fromInputUnsafe(interval as any);\n\n const count = yield* Prompt.integer({\n message: \"Number of requests allowed per interval.\",\n validate: (v) =>\n Effect.gen(function* () {\n if (v < 1) return yield* Effect.fail(\"Count must be greater than 0\");\n return v;\n }),\n });\n\n const startAt = yield* Prompt.date({\n initial: new Date(),\n message: \"Date at which the rate limit is enforced.\",\n validate: (d) =>\n Effect.gen(function* () {\n if (d < new Date())\n return yield* Effect.fail(\"Date must be in the future\");\n return d;\n }),\n });\n\n return {\n type: \"rate-limit\",\n count,\n interval: Duration.toMillis(intervalDuration),\n startAt: Math.floor(startAt.getTime() / 1000),\n } satisfies RateLimitPolicyParams;\n});\n"],"mappings":";;;;;AAMA,MAAa,2BAA2B,OAAO,IAAI,aAAa;CAC9D,MAAM,WAAW,OAAO,OAAO,KAAK;EAClC,SACE;EACF,WAAW,MACT,OAAO,IAAI,aAAa;AAEtB,OADc,SAAS,UAAU,EAC7B,CAAM,SAAS,OACjB,QAAO,OAAO,OAAO,KAAK,mBAAmB;AAG/C,UAAO;IACP;EACL,CAAC;CAEF,MAAM,mBAAmB,SAAS,gBAAgB,SAAgB;CAElE,MAAM,QAAQ,OAAO,OAAO,QAAQ;EAClC,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,IAAI,EAAG,QAAO,OAAO,OAAO,KAAK,+BAA+B;AACpE,UAAO;IACP;EACL,CAAC;CAEF,MAAM,UAAU,OAAO,OAAO,KAAK;EACjC,yBAAS,IAAI,MAAM;EACnB,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,oBAAI,IAAI,MAAM,CAChB,QAAO,OAAO,OAAO,KAAK,6BAA6B;AACzD,UAAO;IACP;EACL,CAAC;AAEF,QAAO;EACL,MAAM;EACN;EACA,UAAU,SAAS,SAAS,iBAAiB;EAC7C,SAAS,KAAK,MAAM,QAAQ,SAAS,GAAG,IAAK;EAC9C;EACD"}
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env node
2
- import { EthereumAddress } from "../../../../schema/common.mjs";
3
- import "../../../../schema/index.mjs";
4
- import { Effect, Schema } from "effect";
5
- import { Prompt } from "effect/unstable/cli";
6
- //#region src/commands/session-key/create/prompts/signature-caller.ts
7
- const getSignatureCallerPolicyParams = Effect.gen(function* () {
8
- return {
9
- type: "signature-caller",
10
- allowedCallers: (yield* Prompt.text({
11
- message: "Comma-separated list of allowed callers:",
12
- validate: (v) => Effect.gen(function* () {
13
- const address = v.split(",").map((a) => a.trim());
14
- for (let i = 0; i < address.length; i++) {
15
- const a = address[i];
16
- if (Schema.decodeUnknownOption(EthereumAddress)(a)._tag === "None") return yield* Effect.fail(`Invalid Ethereum Address at index ${i}`);
17
- }
18
- return v;
19
- })
20
- })).split(",").map((a) => a.trim()).map((a) => Schema.decodeUnknownSync(EthereumAddress)(a))
21
- };
22
- });
23
- //#endregion
24
- export { getSignatureCallerPolicyParams };
25
-
26
- //# sourceMappingURL=signature-caller.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature-caller.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/signature-caller.ts"],"sourcesContent":["import { Effect, Schema } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport { EthereumAddress, type SignatureCallerPolicyParams } from \"@/schema\";\n\nexport const getSignatureCallerPolicyParams = Effect.gen(function* () {\n const allowed = yield* Prompt.text({\n message: \"Comma-separated list of allowed callers:\",\n validate: (v) =>\n Effect.gen(function* () {\n const address = v.split(\",\").map((a) => a.trim());\n\n for (let i = 0; i < address.length; i++) {\n const a = address[i] as string;\n const res = Schema.decodeUnknownOption(EthereumAddress)(a);\n if (res._tag === \"None\") {\n return yield* Effect.fail(`Invalid Ethereum Address at index ${i}`);\n }\n }\n\n return v;\n }),\n });\n\n const allowedCallers = allowed\n .split(\",\")\n .map((a) => a.trim())\n .map((a) => Schema.decodeUnknownSync(EthereumAddress)(a));\n\n return {\n type: \"signature-caller\",\n allowedCallers,\n } satisfies SignatureCallerPolicyParams;\n});\n"],"mappings":";;;;;;AAKA,MAAa,iCAAiC,OAAO,IAAI,aAAa;AAwBpE,QAAO;EACL,MAAM;EACN,iBAPqB,OAlBA,OAAO,KAAK;GACjC,SAAS;GACT,WAAW,MACT,OAAO,IAAI,aAAa;IACtB,MAAM,UAAU,EAAE,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;AAEjD,SAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;KACvC,MAAM,IAAI,QAAQ;AAElB,SADY,OAAO,oBAAoB,gBAAgB,CAAC,EACpD,CAAI,SAAS,OACf,QAAO,OAAO,OAAO,KAAK,qCAAqC,IAAI;;AAIvE,WAAO;KACP;GACL,CAAC,EAGC,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,KAAK,MAAM,OAAO,kBAAkB,gBAAgB,CAAC,EAAE,CAIxD;EACD;EACD"}
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Effect } from "effect";
3
- import { Prompt } from "effect/unstable/cli";
4
- //#region src/commands/session-key/create/prompts/timestamp.ts
5
- const getTimestampPolicyParams = Effect.gen(function* () {
6
- const validAfter = yield* Prompt.date({
7
- initial: /* @__PURE__ */ new Date(),
8
- message: "Time after which the key becomes valid.",
9
- validate: (d) => Effect.gen(function* () {
10
- if (d < /* @__PURE__ */ new Date()) return yield* Effect.fail("Date must be in the future");
11
- return d;
12
- })
13
- });
14
- const validUntil = yield* Prompt.date({
15
- initial: /* @__PURE__ */ new Date(),
16
- message: "Time until which the key becomes valid.",
17
- validate: (d) => Effect.gen(function* () {
18
- if (d < /* @__PURE__ */ new Date()) return yield* Effect.fail("Date must be in the future");
19
- if (d < validAfter) return yield* Effect.fail("Valid until must be after valid after");
20
- return d;
21
- })
22
- });
23
- return {
24
- type: "timestamp",
25
- validAfter: Math.floor(validAfter.getTime() / 1e3),
26
- validUntil: Math.floor(validUntil.getTime() / 1e3)
27
- };
28
- });
29
- //#endregion
30
- export { getTimestampPolicyParams };
31
-
32
- //# sourceMappingURL=timestamp.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timestamp.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/timestamp.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport type { TimestampPolicyParams } from \"@/schema\";\n\nexport const getTimestampPolicyParams = Effect.gen(function* () {\n const validAfter = yield* Prompt.date({\n initial: new Date(),\n message: \"Time after which the key becomes valid.\",\n validate: (d) =>\n Effect.gen(function* () {\n if (d < new Date())\n return yield* Effect.fail(\"Date must be in the future\");\n return d;\n }),\n });\n\n const validUntil = yield* Prompt.date({\n initial: new Date(),\n message: \"Time until which the key becomes valid.\",\n validate: (d) =>\n Effect.gen(function* () {\n if (d < new Date())\n return yield* Effect.fail(\"Date must be in the future\");\n if (d < validAfter)\n return yield* Effect.fail(\"Valid until must be after valid after\");\n return d;\n }),\n });\n\n return {\n type: \"timestamp\",\n validAfter: Math.floor(validAfter.getTime() / 1000),\n validUntil: Math.floor(validUntil.getTime() / 1000),\n } satisfies TimestampPolicyParams;\n});\n"],"mappings":";;;;AAKA,MAAa,2BAA2B,OAAO,IAAI,aAAa;CAC9D,MAAM,aAAa,OAAO,OAAO,KAAK;EACpC,yBAAS,IAAI,MAAM;EACnB,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,oBAAI,IAAI,MAAM,CAChB,QAAO,OAAO,OAAO,KAAK,6BAA6B;AACzD,UAAO;IACP;EACL,CAAC;CAEF,MAAM,aAAa,OAAO,OAAO,KAAK;EACpC,yBAAS,IAAI,MAAM;EACnB,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,oBAAI,IAAI,MAAM,CAChB,QAAO,OAAO,OAAO,KAAK,6BAA6B;AACzD,OAAI,IAAI,WACN,QAAO,OAAO,OAAO,KAAK,wCAAwC;AACpE,UAAO;IACP;EACL,CAAC;AAEF,QAAO;EACL,MAAM;EACN,YAAY,KAAK,MAAM,WAAW,SAAS,GAAG,IAAK;EACnD,YAAY,KAAK,MAAM,WAAW,SAAS,GAAG,IAAK;EACpD;EACD"}
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createSessionKeyCommand } from "./create/index.mjs";
3
- import { getSessionKeyInfoCommand } from "./info.mjs";
4
- import { listSessionKeysCommand } from "./list.mjs";
5
- import { removeSessionKeyCommand } from "./remove.mjs";
6
- import { getSessionKeyStatusCommand } from "./status.mjs";
7
- import { Effect } from "effect";
8
- import { CliError, Command } from "effect/unstable/cli";
9
- //#region src/commands/session-key/index.ts
10
- /**
11
- * Command group for session-key related operations.
12
- */
13
- const sessionKeyCommands = Command.make("session-key", {}, () => Effect.fail(new CliError.ShowHelp({
14
- commandPath: ["namera", "session-key"],
15
- errors: []
16
- }))).pipe(Command.withAlias("sk"), Command.withDescription("Session Key management commands."), Command.withSubcommands([
17
- createSessionKeyCommand,
18
- listSessionKeysCommand,
19
- getSessionKeyInfoCommand,
20
- getSessionKeyStatusCommand,
21
- removeSessionKeyCommand
22
- ]));
23
- //#endregion
24
- export { sessionKeyCommands };
25
-
26
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/commands/session-key/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { CliError, Command } from \"effect/unstable/cli\";\n\nimport { createSessionKeyCommand } from \"./create\";\nimport { getSessionKeyInfoCommand } from \"./info\";\nimport { listSessionKeysCommand } from \"./list\";\nimport { removeSessionKeyCommand } from \"./remove\";\nimport { getSessionKeyStatusCommand } from \"./status\";\n\n/**\n * Command group for session-key related operations.\n */\nexport const sessionKeyCommands = Command.make(\"session-key\", {}, () =>\n Effect.fail(\n new CliError.ShowHelp({\n commandPath: [\"namera\", \"session-key\"],\n errors: [],\n }),\n ),\n).pipe(\n Command.withAlias(\"sk\"),\n Command.withDescription(\"Session Key management commands.\"),\n Command.withSubcommands([\n createSessionKeyCommand,\n listSessionKeysCommand,\n getSessionKeyInfoCommand,\n getSessionKeyStatusCommand,\n removeSessionKeyCommand,\n ]),\n);\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,qBAAqB,QAAQ,KAAK,eAAe,EAAE,QAC9D,OAAO,KACL,IAAI,SAAS,SAAS;CACpB,aAAa,CAAC,UAAU,cAAc;CACtC,QAAQ,EAAE;CACX,CAAC,CACH,CACF,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,mCAAmC,EAC3D,QAAQ,gBAAgB;CACtB;CACA;CACA;CACA;CACA;CACD,CAAC,CACH"}
@@ -1,64 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,54 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,51 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,64 +0,0 @@
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
@@ -1 +0,0 @@
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"}