@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":"session-key.mjs","names":[],"sources":["../../src/dto/session-key.ts"],"sourcesContent":["import { Schema, Struct } from \"effect\";\n\nimport { EthereumAddress, PolicyParams, SupportedChain } from \"@/schema\";\n\nimport { Keystore } from \"./keystore\";\n\nconst BaseSessionKey = Schema.Struct({\n smartAccountAlias: Schema.String,\n serializedAccounts: Schema.Array(\n Schema.Struct({\n chain: SupportedChain,\n serializedAccount: Schema.String,\n }),\n ),\n}).mapFields(Struct.assign(Keystore.fields));\n\nconst EcdsaSessionKey = Schema.Struct({\n sessionKeyType: Schema.Literal(\"ecdsa\"),\n sessionKeyAddress: EthereumAddress,\n smartAccountAlias: Schema.String,\n}).mapFields(Struct.assign(BaseSessionKey.fields));\n\nconst PasskeySessionKey = Schema.Struct({\n sessionKeyType: Schema.Literal(\"passkey\"),\n passKeyName: Schema.String,\n}).mapFields(Struct.assign(BaseSessionKey.fields));\n\nexport const SessionKey = Schema.Union([EcdsaSessionKey, PasskeySessionKey]);\n\nexport const SessionKeyData = Schema.Struct({\n alias: Schema.String,\n data: SessionKey,\n path: Schema.String,\n});\n\nexport const CreateSessionKeyParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the session key to create\",\n }),\n chains: Schema.mutable(Schema.Array(SupportedChain)).annotate({\n description: \"The chains to create the session key for\",\n }),\n policyParams: Schema.mutable(Schema.Array(PolicyParams)),\n smartAccountAlias: Schema.String.annotate({\n description: \"The alias of the smart account to create the session key for\",\n }),\n ownerKeystorePassword: Schema.redact(Schema.String).annotate({\n description: \"The password to decrypt the owner keystore with\",\n }),\n sessionKeyPassword: Schema.redact(Schema.String).annotate({\n description: \"The password to encrypt the session key with\",\n }),\n});\n\nexport const GetSessionKeyParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the session key to retrieve\",\n }),\n});\n\nexport const ListSessionKeysParams = Schema.Struct({\n smartAccount: Schema.optional(Schema.String).annotate({\n description: \"The alias of the smart account to list session keys for\",\n }),\n});\n\nexport const GetSessionKeyInfoParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the session key to retrieve\",\n }),\n});\n\nexport const GetSessionKeyStatusParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the session key to retrieve\",\n }),\n chain: SupportedChain.annotate({\n description: \"The chain to retrieve the session key status for\",\n }),\n rpcUrl: Schema.redact(Schema.String.pipe(Schema.optional)).annotate({\n description: \"The RPC URL to use for the chain\",\n default: \"Public RPC URL\",\n }),\n});\n\nexport const RemoveSessionKeyParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the session key to remove\",\n }),\n});\n\nexport type SessionKey = typeof SessionKey.Type;\nexport type SessionKeyData = typeof SessionKeyData.Type;\nexport type CreateSessionKeyParams = typeof CreateSessionKeyParams.Type;\nexport type GetSessionKeyParams = typeof GetSessionKeyParams.Type;\nexport type ListSessionKeysParams = typeof ListSessionKeysParams.Type;\nexport type GetSessionKeyInfoParams = typeof GetSessionKeyInfoParams.Type;\nexport type GetSessionKeyStatusParams = typeof GetSessionKeyStatusParams.Type;\nexport type RemoveSessionKeyParams = typeof RemoveSessionKeyParams.Type;\n"],"mappings":";;;;;;;;AAMA,MAAM,iBAAiB,OAAO,OAAO;CACnC,mBAAmB,OAAO;CAC1B,oBAAoB,OAAO,MACzB,OAAO,OAAO;EACZ,OAAO;EACP,mBAAmB,OAAO;EAC3B,CAAC,CACH;CACF,CAAC,CAAC,UAAU,OAAO,OAAO,SAAS,OAAO,CAAC;AAE5C,MAAM,kBAAkB,OAAO,OAAO;CACpC,gBAAgB,OAAO,QAAQ,QAAQ;CACvC,mBAAmB;CACnB,mBAAmB,OAAO;CAC3B,CAAC,CAAC,UAAU,OAAO,OAAO,eAAe,OAAO,CAAC;AAElD,MAAM,oBAAoB,OAAO,OAAO;CACtC,gBAAgB,OAAO,QAAQ,UAAU;CACzC,aAAa,OAAO;CACrB,CAAC,CAAC,UAAU,OAAO,OAAO,eAAe,OAAO,CAAC;AAElD,MAAa,aAAa,OAAO,MAAM,CAAC,iBAAiB,kBAAkB,CAAC;AAE9C,OAAO,OAAO;CAC1C,OAAO,OAAO;CACd,MAAM;CACN,MAAM,OAAO;CACd,CAAC;AAEF,MAAa,yBAAyB,OAAO,OAAO;CAClD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,0CACd,CAAC;CACF,QAAQ,OAAO,QAAQ,OAAO,MAAM,eAAe,CAAC,CAAC,SAAS,EAC5D,aAAa,4CACd,CAAC;CACF,cAAc,OAAO,QAAQ,OAAO,MAAM,aAAa,CAAC;CACxD,mBAAmB,OAAO,OAAO,SAAS,EACxC,aAAa,gEACd,CAAC;CACF,uBAAuB,OAAO,OAAO,OAAO,OAAO,CAAC,SAAS,EAC3D,aAAa,mDACd,CAAC;CACF,oBAAoB,OAAO,OAAO,OAAO,OAAO,CAAC,SAAS,EACxD,aAAa,gDACd,CAAC;CACH,CAAC;AAEiC,OAAO,OAAO,EAC/C,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,4CACd,CAAC,EACH,CAAC;AAEF,MAAa,wBAAwB,OAAO,OAAO,EACjD,cAAc,OAAO,SAAS,OAAO,OAAO,CAAC,SAAS,EACpD,aAAa,2DACd,CAAC,EACH,CAAC;AAEF,MAAa,0BAA0B,OAAO,OAAO,EACnD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,4CACd,CAAC,EACH,CAAC;AAEF,MAAa,4BAA4B,OAAO,OAAO;CACrD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,4CACd,CAAC;CACF,OAAO,eAAe,SAAS,EAC7B,aAAa,oDACd,CAAC;CACF,QAAQ,OAAO,OAAO,OAAO,OAAO,KAAK,OAAO,SAAS,CAAC,CAAC,SAAS;EAClE,aAAa;EACb,SAAS;EACV,CAAC;CACH,CAAC;AAEF,MAAa,yBAAyB,OAAO,OAAO,EAClD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,0CACd,CAAC,EACH,CAAC"}
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env node
2
- import { SupportedChain } from "../schema/chain.mjs";
3
- import { EntrypointVersion, EthereumAddress, KernelVersion, OwnerType } from "../schema/common.mjs";
4
- import "../schema/index.mjs";
5
- import { Schema } from "effect";
6
- //#region src/dto/smart-account.ts
7
- const LocalSmartAccount = Schema.Struct({
8
- entryPointVersion: EntrypointVersion,
9
- index: Schema.BigIntFromString,
10
- kernelVersion: KernelVersion,
11
- ownerAlias: Schema.String,
12
- ownerType: OwnerType,
13
- smartAccountAddress: EthereumAddress
14
- });
15
- Schema.Struct({
16
- data: LocalSmartAccount,
17
- path: Schema.String,
18
- alias: Schema.String
19
- });
20
- const CreateSmartAccountParams = Schema.Struct({
21
- alias: Schema.String.annotate({ description: "The alias of the smart account to create" }),
22
- ownerAlias: Schema.String.annotate({ description: "The alias of the owner keystore" }),
23
- ownerPassword: Schema.redact(Schema.String).annotate({ description: "The password of the owner keystore" }),
24
- index: Schema.optional(Schema.BigIntFromString.check(Schema.makeFilter((v) => v >= 0n))).annotate({
25
- description: "The index of the smart account",
26
- default: 0n
27
- })
28
- });
29
- Schema.Struct({ alias: Schema.String.annotate({ description: "The alias of the smart account to retrieve" }) });
30
- const ListSmartAccountParams = Schema.Void;
31
- const GetSmartAccountInfoParams = Schema.Struct({ alias: Schema.String.annotate({ description: "The alias of the smart account to retrieve" }) });
32
- const RemoveSmartAccountParams = Schema.Struct({ alias: Schema.String.annotate({ description: "The alias of the smart account to remove" }) });
33
- const GetSmartAccountStatusParams = Schema.Struct({
34
- alias: Schema.String.annotate({ description: "The alias of the smart account" }),
35
- chain: SupportedChain.annotate({ description: "The chain to get the status for" }),
36
- rpcUrl: Schema.redact(Schema.String.pipe(Schema.optional)).annotate({
37
- description: "The RPC URL to use for the chain",
38
- default: "Public RPC URL"
39
- })
40
- });
41
- const ImportSmartAccountParams = LocalSmartAccount.pipe(Schema.fieldsAssign({ alias: Schema.String.annotate({ description: "The alias of the smart account to import" }) }));
42
- //#endregion
43
- export { CreateSmartAccountParams, GetSmartAccountInfoParams, GetSmartAccountStatusParams, ImportSmartAccountParams, ListSmartAccountParams, LocalSmartAccount, RemoveSmartAccountParams };
44
-
45
- //# sourceMappingURL=smart-account.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-account.mjs","names":[],"sources":["../../src/dto/smart-account.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport {\n EntrypointVersion,\n EthereumAddress,\n KernelVersion,\n OwnerType,\n} from \"@/schema\";\nimport { SupportedChain } from \"@/schema/chain\";\n\nexport const LocalSmartAccount = Schema.Struct({\n entryPointVersion: EntrypointVersion,\n index: Schema.BigIntFromString,\n kernelVersion: KernelVersion,\n ownerAlias: Schema.String,\n ownerType: OwnerType,\n smartAccountAddress: EthereumAddress,\n});\n\nexport const LocalSmartAccountData = Schema.Struct({\n data: LocalSmartAccount,\n path: Schema.String,\n alias: Schema.String,\n});\n\nexport const CreateSmartAccountParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the smart account to create\",\n }),\n ownerAlias: Schema.String.annotate({\n description: \"The alias of the owner keystore\",\n }),\n ownerPassword: Schema.redact(Schema.String).annotate({\n description: \"The password of the owner keystore\",\n }),\n index: Schema.optional(\n Schema.BigIntFromString.check(Schema.makeFilter((v) => v >= 0n)),\n ).annotate({\n description: \"The index of the smart account\",\n default: 0n,\n }),\n});\n\nexport const GetSmartAccountParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the smart account to retrieve\",\n }),\n});\nexport const ListSmartAccountParams = Schema.Void;\n\nexport const GetSmartAccountInfoParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the smart account to retrieve\",\n }),\n});\n\nexport const RemoveSmartAccountParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the smart account to remove\",\n }),\n});\n\nexport const GetSmartAccountStatusParams = Schema.Struct({\n alias: Schema.String.annotate({\n description: \"The alias of the smart account\",\n }),\n chain: SupportedChain.annotate({\n description: \"The chain to get the status for\",\n }),\n rpcUrl: Schema.redact(Schema.String.pipe(Schema.optional)).annotate({\n description: \"The RPC URL to use for the chain\",\n default: \"Public RPC URL\",\n }),\n});\n\nexport const ImportSmartAccountParams = LocalSmartAccount.pipe(\n Schema.fieldsAssign({\n alias: Schema.String.annotate({\n description: \"The alias of the smart account to import\",\n }),\n }),\n);\n\nexport type LocalSmartAccount = typeof LocalSmartAccount.Type;\nexport type LocalSmartAccountData = typeof LocalSmartAccountData.Type;\nexport type CreateSmartAccountParams = typeof CreateSmartAccountParams.Type;\nexport type GetSmartAccountParams = typeof GetSmartAccountParams.Type;\nexport type ListSmartAccountParams = typeof ListSmartAccountParams.Type;\nexport type GetSmartAccountInfoParams = typeof GetSmartAccountInfoParams.Type;\nexport type RemoveSmartAccountParams = typeof RemoveSmartAccountParams.Type;\nexport type GetSmartAccountStatusParams =\n typeof GetSmartAccountStatusParams.Type;\n\nexport type ImportSmartAccountParams = typeof ImportSmartAccountParams.Type;\n"],"mappings":";;;;;;AAUA,MAAa,oBAAoB,OAAO,OAAO;CAC7C,mBAAmB;CACnB,OAAO,OAAO;CACd,eAAe;CACf,YAAY,OAAO;CACnB,WAAW;CACX,qBAAqB;CACtB,CAAC;AAEmC,OAAO,OAAO;CACjD,MAAM;CACN,MAAM,OAAO;CACb,OAAO,OAAO;CACf,CAAC;AAEF,MAAa,2BAA2B,OAAO,OAAO;CACpD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,4CACd,CAAC;CACF,YAAY,OAAO,OAAO,SAAS,EACjC,aAAa,mCACd,CAAC;CACF,eAAe,OAAO,OAAO,OAAO,OAAO,CAAC,SAAS,EACnD,aAAa,sCACd,CAAC;CACF,OAAO,OAAO,SACZ,OAAO,iBAAiB,MAAM,OAAO,YAAY,MAAM,KAAK,GAAG,CAAC,CACjE,CAAC,SAAS;EACT,aAAa;EACb,SAAS;EACV,CAAC;CACH,CAAC;AAEmC,OAAO,OAAO,EACjD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,8CACd,CAAC,EACH,CAAC;AACF,MAAa,yBAAyB,OAAO;AAE7C,MAAa,4BAA4B,OAAO,OAAO,EACrD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,8CACd,CAAC,EACH,CAAC;AAEF,MAAa,2BAA2B,OAAO,OAAO,EACpD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,4CACd,CAAC,EACH,CAAC;AAEF,MAAa,8BAA8B,OAAO,OAAO;CACvD,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,kCACd,CAAC;CACF,OAAO,eAAe,SAAS,EAC7B,aAAa,mCACd,CAAC;CACF,QAAQ,OAAO,OAAO,OAAO,OAAO,KAAK,OAAO,SAAS,CAAC,CAAC,SAAS;EAClE,aAAa;EACb,SAAS;EACV,CAAC;CACH,CAAC;AAEF,MAAa,2BAA2B,kBAAkB,KACxD,OAAO,aAAa,EAClB,OAAO,OAAO,OAAO,SAAS,EAC5B,aAAa,4CACd,CAAC,EACH,CAAC,CACH"}
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Effect } from "effect";
3
- import { Flag, GlobalFlag } from "effect/unstable/cli";
4
- //#region src/flags/global.ts
5
- const globalOutput = GlobalFlag.setting("output")({ flag: Flag.choice("output", [
6
- "pretty",
7
- "json",
8
- "ndjson"
9
- ]).pipe(Flag.withAlias("o"), Flag.withDefault("pretty"), Flag.withDescription("Output format (pretty, json, ndjson)")) });
10
- const globalQuiet = GlobalFlag.setting("quiet")({ flag: Flag.boolean("quiet").pipe(Flag.withAlias("q"), Flag.withDefault(false), Flag.withDescription("Do not print output")) });
11
- const globalParams = GlobalFlag.setting("params")({ flag: Flag.string("params").pipe(Flag.optional, Flag.withDescription("JSON Parameters to pass to the command")) });
12
- const getGlobalFlags = () => Effect.gen(function* () {
13
- const out = yield* globalOutput;
14
- const quiet = yield* globalQuiet;
15
- return {
16
- out,
17
- params: yield* globalParams,
18
- quiet
19
- };
20
- });
21
- const globalFlags = [
22
- globalOutput,
23
- globalQuiet,
24
- globalParams
25
- ];
26
- //#endregion
27
- export { getGlobalFlags, globalFlags };
28
-
29
- //# sourceMappingURL=global.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global.mjs","names":[],"sources":["../../src/flags/global.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { Flag, GlobalFlag } from \"effect/unstable/cli\";\n\nexport const globalOutput = GlobalFlag.setting(\"output\")({\n flag: Flag.choice(\"output\", [\"pretty\", \"json\", \"ndjson\"]).pipe(\n Flag.withAlias(\"o\"),\n Flag.withDefault(\"pretty\"),\n Flag.withDescription(\"Output format (pretty, json, ndjson)\"),\n ),\n});\n\nexport const globalQuiet = GlobalFlag.setting(\"quiet\")({\n flag: Flag.boolean(\"quiet\").pipe(\n Flag.withAlias(\"q\"),\n Flag.withDefault(false),\n Flag.withDescription(\"Do not print output\"),\n ),\n});\n\nexport const globalParams = GlobalFlag.setting(\"params\")({\n flag: Flag.string(\"params\").pipe(\n Flag.optional,\n Flag.withDescription(\"JSON Parameters to pass to the command\"),\n ),\n});\n\nexport const getGlobalFlags = () =>\n Effect.gen(function* () {\n const out = yield* globalOutput;\n const quiet = yield* globalQuiet;\n const params = yield* globalParams;\n\n return { out, params, quiet };\n });\n\nexport const globalFlags = [globalOutput, globalQuiet, globalParams];\n"],"mappings":";;;;AAGA,MAAa,eAAe,WAAW,QAAQ,SAAS,CAAC,EACvD,MAAM,KAAK,OAAO,UAAU;CAAC;CAAU;CAAQ;CAAS,CAAC,CAAC,KACxD,KAAK,UAAU,IAAI,EACnB,KAAK,YAAY,SAAS,EAC1B,KAAK,gBAAgB,uCAAuC,CAC7D,EACF,CAAC;AAEF,MAAa,cAAc,WAAW,QAAQ,QAAQ,CAAC,EACrD,MAAM,KAAK,QAAQ,QAAQ,CAAC,KAC1B,KAAK,UAAU,IAAI,EACnB,KAAK,YAAY,MAAM,EACvB,KAAK,gBAAgB,sBAAsB,CAC5C,EACF,CAAC;AAEF,MAAa,eAAe,WAAW,QAAQ,SAAS,CAAC,EACvD,MAAM,KAAK,OAAO,SAAS,CAAC,KAC1B,KAAK,UACL,KAAK,gBAAgB,yCAAyC,CAC/D,EACF,CAAC;AAEF,MAAa,uBACX,OAAO,IAAI,aAAa;CACtB,MAAM,MAAM,OAAO;CACnB,MAAM,QAAQ,OAAO;AAGrB,QAAO;EAAE;EAAK,eAFQ;EAEA;EAAO;EAC7B;AAEJ,MAAa,cAAc;CAAC;CAAc;CAAa;CAAa"}
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env node
2
- import { supportedChains } from "../schema/chain.mjs";
3
- import { Flag } from "effect/unstable/cli";
4
- const chainAndRpcUrl = {
5
- chain: Flag.choice("chain", Object.keys(supportedChains)).pipe(Flag.withDescription("Chain Name"), Flag.optional),
6
- rpcUrl: Flag.string("rpc-url").pipe(Flag.withDescription("RPC URL"), Flag.optional)
7
- };
8
- //#endregion
9
- export { chainAndRpcUrl };
10
-
11
- //# sourceMappingURL=shared.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.mjs","names":[],"sources":["../../src/flags/shared.ts"],"sourcesContent":["import { Flag } from \"effect/unstable/cli\";\n\nimport { type SupportedChain, supportedChains } from \"@/schema/chain\";\n\nconst chain = Flag.choice(\n \"chain\",\n Object.keys(supportedChains) as SupportedChain[],\n).pipe(Flag.withDescription(\"Chain Name\"), Flag.optional);\n\nconst rpcUrl = Flag.string(\"rpc-url\").pipe(\n Flag.withDescription(\"RPC URL\"),\n Flag.optional,\n);\n\nexport const chainAndRpcUrl = { chain, rpcUrl };\n"],"mappings":";;;AAcA,MAAa,iBAAiB;CAAE,OAVlB,KAAK,OACjB,SACA,OAAO,KAAK,gBAAgB,CAC7B,CAAC,KAAK,KAAK,gBAAgB,aAAa,EAAE,KAAK,SAOhB;CAAO,QALxB,KAAK,OAAO,UAAU,CAAC,KACpC,KAAK,gBAAgB,UAAU,EAC/B,KAAK,SAGgC;CAAQ"}
@@ -1,153 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Duration } from "effect";
3
- import { formatEther, zeroAddress } from "viem";
4
- import { deserializePermissionAccountParams } from "@namera-ai/sdk/session-key";
5
- //#region src/helpers/humanize.ts
6
- const humanizeDuration = (input) => {
7
- const millis = Duration.toMillis(Duration.fromInputUnsafe(input));
8
- let seconds = Math.floor(millis / 1e3);
9
- const units = [
10
- {
11
- label: "year",
12
- value: 3600 * 24 * 365
13
- },
14
- {
15
- label: "month",
16
- value: 3600 * 24 * 30
17
- },
18
- {
19
- label: "day",
20
- value: 3600 * 24
21
- },
22
- {
23
- label: "hour",
24
- value: 3600
25
- },
26
- {
27
- label: "minute",
28
- value: 60
29
- },
30
- {
31
- label: "second",
32
- value: 1
33
- }
34
- ];
35
- const parts = [];
36
- for (const unit of units) if (seconds >= unit.value) {
37
- const count = Math.floor(seconds / unit.value);
38
- seconds %= unit.value;
39
- parts.push(`${count} ${unit.label}${count > 1 ? "s" : ""}`);
40
- }
41
- return parts.length > 0 ? parts.join(" ") : "0 seconds";
42
- };
43
- const humanizeRelativeTime = (target) => {
44
- const now = Date.now();
45
- const diff = (target instanceof Date ? target.getTime() : target * 1e3) - now;
46
- const seconds = Math.floor(Math.abs(diff) / 1e3);
47
- for (const unit of [
48
- {
49
- label: "year",
50
- value: 31536e3
51
- },
52
- {
53
- label: "month",
54
- value: 2592e3
55
- },
56
- {
57
- label: "day",
58
- value: 86400
59
- },
60
- {
61
- label: "hour",
62
- value: 3600
63
- },
64
- {
65
- label: "minute",
66
- value: 60
67
- },
68
- {
69
- label: "second",
70
- value: 1
71
- }
72
- ]) if (seconds >= unit.value) {
73
- const count = Math.floor(seconds / unit.value);
74
- const formatted = `${count} ${unit.label}${count > 1 ? "s" : ""}`;
75
- return diff > 0 ? `in ${formatted}` : `${formatted} ago`;
76
- }
77
- return "just now";
78
- };
79
- const humanizePolicyParams = (serializedAccount) => {
80
- const params = deserializePermissionAccountParams(serializedAccount);
81
- const result = {};
82
- result.permissionId = params.permissionParams.permissionId;
83
- for (const policy of params.permissionParams.policies ?? []) {
84
- const params = policy.policyParams;
85
- if (params.type === "sudo") result.sudoPolicy = { enabled: true };
86
- else if (params.type === "gas") result.gasPolicy = {
87
- enabled: true,
88
- allowed: `${formatEther(params.allowed ?? 0n)} ETH`,
89
- ...params.enforcePaymaster && { enforcePaymaster: params.enforcePaymaster },
90
- ...params.allowedPaymaster !== zeroAddress && { allowedPaymaster: params.allowedPaymaster }
91
- };
92
- else if (params.type === "timestamp") {
93
- const validAfter = params.validAfter ?? 0;
94
- const validUntil = params.validUntil ?? 0;
95
- result.timestampPolicy = {
96
- enabled: true,
97
- starts: humanizeRelativeTime(validAfter),
98
- ends: humanizeRelativeTime(validUntil)
99
- };
100
- } else if (params.type === "rate-limit") {
101
- const formattedInterval = humanizeDuration(params.interval ?? 0);
102
- result.rateLimitPolicy = {
103
- enabled: true,
104
- count: params.count,
105
- interval: formattedInterval,
106
- starts: humanizeRelativeTime(params.startAt ?? 0)
107
- };
108
- } else if (params.type === "signature-caller") result.signatureCallerPolicy = {
109
- enabled: true,
110
- allowedCallers: params.allowedCallers
111
- };
112
- else if (params.type === "call") {
113
- result.callPolicy = {
114
- enabled: true,
115
- policyVersion: params.policyVersion
116
- };
117
- if (!params.permissions || params.permissions.length === 0) continue;
118
- for (const permission of params.permissions) {
119
- result.callPolicy.permissions = result.callPolicy.permissions ?? [];
120
- if ("abi" in permission) {
121
- const formattedValue = formatEther(permission.valueLimit ?? 0n);
122
- const abiFn = permission.abi?.find((f) => f.type === "function" && f.name === permission.functionName);
123
- const cyan = "\x1B[36m";
124
- const yellow = "\x1B[33m";
125
- const magenta = "\x1B[35m";
126
- const reset = "\x1B[0m";
127
- let fnName = `${magenta}${permission.functionName ?? "unknown"}${reset}(`;
128
- if (abiFn) abiFn.inputs.forEach((input, i) => {
129
- if (i > 0) fnName += ", ";
130
- fnName += `${cyan}${input.type}${reset}${input.name ? ` ${yellow}${input.name}${reset}` : ""}`;
131
- });
132
- fnName += ")";
133
- result.callPolicy.permissions.push({
134
- targetAddress: permission.target,
135
- valueLimit: `${formattedValue} ETH`,
136
- functionName: fnName
137
- });
138
- } else {
139
- const formattedValue = formatEther(permission.valueLimit ?? 0n);
140
- result.callPolicy.permissions.push({
141
- targetAddress: permission.target,
142
- valueLimit: `${formattedValue} ETH`
143
- });
144
- }
145
- }
146
- }
147
- }
148
- return result;
149
- };
150
- //#endregion
151
- export { humanizePolicyParams };
152
-
153
- //# sourceMappingURL=humanize.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"humanize.mjs","names":[],"sources":["../../src/helpers/humanize.ts"],"sourcesContent":["import { deserializePermissionAccountParams } from \"@namera-ai/sdk/session-key\";\nimport { Duration } from \"effect\";\nimport { type AbiFunction, formatEther, zeroAddress } from \"viem\";\n\nexport const humanizeDuration = (input: Duration.Input): string => {\n const millis = Duration.toMillis(Duration.fromInputUnsafe(input));\n let seconds = Math.floor(millis / 1000);\n\n const units = [\n { label: \"year\", value: 60 * 60 * 24 * 365 },\n { label: \"month\", value: 60 * 60 * 24 * 30 },\n { label: \"day\", value: 60 * 60 * 24 },\n { label: \"hour\", value: 60 * 60 },\n { label: \"minute\", value: 60 },\n { label: \"second\", value: 1 },\n ];\n\n const parts: string[] = [];\n\n for (const unit of units) {\n if (seconds >= unit.value) {\n const count = Math.floor(seconds / unit.value);\n seconds %= unit.value;\n\n parts.push(`${count} ${unit.label}${count > 1 ? \"s\" : \"\"}`);\n }\n }\n\n return parts.length > 0 ? parts.join(\" \") : \"0 seconds\";\n};\n\nexport const humanizeRelativeTime = (target: Date | number): string => {\n const now = Date.now();\n const targetMs = target instanceof Date ? target.getTime() : target * 1000;\n\n const diff = targetMs - now;\n const abs = Math.abs(diff);\n\n const seconds = Math.floor(abs / 1000);\n\n const units = [\n { label: \"year\", value: 31_536_000 },\n { label: \"month\", value: 2_592_000 },\n { label: \"day\", value: 86_400 },\n { label: \"hour\", value: 3600 },\n { label: \"minute\", value: 60 },\n { label: \"second\", value: 1 },\n ];\n\n for (const unit of units) {\n if (seconds >= unit.value) {\n const count = Math.floor(seconds / unit.value);\n\n const formatted = `${count} ${unit.label}${count > 1 ? \"s\" : \"\"}`;\n\n return diff > 0 ? `in ${formatted}` : `${formatted} ago`;\n }\n }\n\n return \"just now\";\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: safe\nexport const humanizePolicyParams = (serializedAccount: string) => {\n const params = deserializePermissionAccountParams(serializedAccount);\n\n // biome-ignore lint/suspicious/noExplicitAny: safe\n const result: Record<string, any> = {};\n\n // Permission Id\n result.permissionId = params.permissionParams.permissionId;\n\n for (const policy of params.permissionParams.policies ?? []) {\n const params = policy.policyParams;\n if (params.type === \"sudo\") {\n result.sudoPolicy = {\n enabled: true,\n };\n } else if (params.type === \"gas\") {\n const allowed = formatEther(params.allowed ?? 0n);\n result.gasPolicy = {\n enabled: true,\n allowed: `${allowed} ETH`,\n ...(params.enforcePaymaster && {\n enforcePaymaster: params.enforcePaymaster,\n }),\n ...(params.allowedPaymaster !== zeroAddress && {\n allowedPaymaster: params.allowedPaymaster,\n }),\n };\n } else if (params.type === \"timestamp\") {\n const validAfter = params.validAfter ?? 0;\n const validUntil = params.validUntil ?? 0;\n\n result.timestampPolicy = {\n enabled: true,\n starts: humanizeRelativeTime(validAfter),\n ends: humanizeRelativeTime(validUntil),\n };\n } else if (params.type === \"rate-limit\") {\n const formattedInterval = humanizeDuration(params.interval ?? 0);\n result.rateLimitPolicy = {\n enabled: true,\n count: params.count,\n interval: formattedInterval,\n starts: humanizeRelativeTime(params.startAt ?? 0),\n };\n } else if (params.type === \"signature-caller\") {\n result.signatureCallerPolicy = {\n enabled: true,\n allowedCallers: params.allowedCallers,\n };\n } else if (params.type === \"call\") {\n result.callPolicy = {\n enabled: true,\n policyVersion: params.policyVersion,\n };\n\n if (!params.permissions || params.permissions.length === 0) continue;\n\n for (const permission of params.permissions) {\n result.callPolicy.permissions = result.callPolicy.permissions ?? [];\n\n if (\"abi\" in permission) {\n const formattedValue = formatEther(permission.valueLimit ?? 0n);\n\n const abiFn = permission.abi?.find(\n (f) => f.type === \"function\" && f.name === permission.functionName,\n ) as AbiFunction | undefined;\n\n const cyan = \"\\x1b[36m\";\n const yellow = \"\\x1b[33m\";\n const magenta = \"\\x1b[35m\";\n const reset = \"\\x1b[0m\";\n\n let fnName = `${magenta}${permission.functionName ?? \"unknown\"}${reset}(`;\n\n if (abiFn) {\n abiFn.inputs.forEach((input, i) => {\n if (i > 0) fnName += \", \";\n fnName += `${cyan}${input.type}${reset}${input.name ? ` ${yellow}${input.name}${reset}` : \"\"}`;\n });\n }\n\n fnName += \")\";\n\n result.callPolicy.permissions.push({\n targetAddress: permission.target,\n valueLimit: `${formattedValue} ETH`,\n functionName: fnName,\n });\n } else {\n const formattedValue = formatEther(permission.valueLimit ?? 0n);\n result.callPolicy.permissions.push({\n targetAddress: permission.target,\n valueLimit: `${formattedValue} ETH`,\n });\n }\n }\n }\n }\n\n return result;\n};\n"],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Schema } from "effect";
3
- //#region src/helpers/paths.ts
4
- /** biome-ignore-all lint/suspicious/noExplicitAny: safe */
5
- /**
6
- * Returns the value at a dot-delimited path within a nested object.
7
- *
8
- * @param obj - Object to traverse.
9
- * @param path - Dot-delimited lookup path.
10
- */
11
- const getSchema = (obj, path) => {
12
- return path.split(".").reduce((acc, key) => acc[key], obj);
13
- };
14
- /**
15
- * Extracts all dot-delimited paths that terminate at Effect schemas.
16
- *
17
- * @param obj - Object tree to scan.
18
- * @param prefix - Internal prefix used to build nested paths.
19
- */
20
- const extractPaths = (obj, prefix = "") => {
21
- return Object.entries(obj).flatMap(([key, value]) => {
22
- const newPath = prefix ? `${prefix}.${key}` : key;
23
- if (Schema.isSchema(value)) return [newPath];
24
- if (typeof value === "object" && value !== null) return extractPaths(value, newPath);
25
- return [];
26
- });
27
- };
28
- //#endregion
29
- export { extractPaths, getSchema };
30
-
31
- //# sourceMappingURL=paths.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.mjs","names":[],"sources":["../../src/helpers/paths.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: safe */\nimport { Schema } from \"effect\";\n\nimport type { DeepPaths } from \"@/types\";\n\n/**\n * Returns the value at a dot-delimited path within a nested object.\n *\n * @param obj - Object to traverse.\n * @param path - Dot-delimited lookup path.\n */\nexport const getSchema = <\n T extends Record<string, any>,\n P extends DeepPaths<T>,\n>(\n obj: T,\n path: P,\n): any => {\n return path.split(\".\").reduce((acc, key) => acc[key], obj);\n};\n\n/**\n * Extracts all dot-delimited paths that terminate at Effect schemas.\n *\n * @param obj - Object tree to scan.\n * @param prefix - Internal prefix used to build nested paths.\n */\nexport const extractPaths = <T extends Record<string, any>>(\n obj: T,\n prefix = \"\",\n): DeepPaths<T>[] => {\n return Object.entries(obj).flatMap(([key, value]) => {\n const newPath = prefix ? `${prefix}.${key}` : key;\n\n if (Schema.isSchema(value)) {\n return [newPath];\n }\n\n if (typeof value === \"object\" && value !== null) {\n return extractPaths(value, newPath);\n }\n\n return [];\n }) as DeepPaths<T>[];\n};\n"],"mappings":";;;;;;;;;;AAWA,MAAa,aAIX,KACA,SACQ;AACR,QAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAI;;;;;;;;AAS5D,MAAa,gBACX,KACA,SAAS,OACU;AACnB,QAAO,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,WAAW;EACnD,MAAM,UAAU,SAAS,GAAG,OAAO,GAAG,QAAQ;AAE9C,MAAI,OAAO,SAAS,MAAM,CACxB,QAAO,CAAC,QAAQ;AAGlB,MAAI,OAAO,UAAU,YAAY,UAAU,KACzC,QAAO,aAAa,OAAO,QAAQ;AAGrC,SAAO,EAAE;GACT"}
@@ -1,89 +0,0 @@
1
- #!/usr/bin/env node
2
- import { CallPolicyVersion, CallType, ParamCondition, toCallPolicy, toGasPolicy, toRateLimitPolicy, toSignatureCallerPolicy, toSudoPolicy, toTimestampPolicy } from "@namera-ai/sdk/policy";
3
- //#region src/helpers/policy.ts
4
- /** biome-ignore-all lint/complexity/noExcessiveCognitiveComplexity: safe */
5
- const toCallPolicyVersion = (version) => {
6
- switch (version) {
7
- case "0.0.1": return CallPolicyVersion.V0_0_1;
8
- case "0.0.2": return CallPolicyVersion.V0_0_2;
9
- case "0.0.3": return CallPolicyVersion.V0_0_3;
10
- case "0.0.4": return CallPolicyVersion.V0_0_4;
11
- case "0.0.5": return CallPolicyVersion.V0_0_5;
12
- default: throw new Error("Invalid call policy version");
13
- }
14
- };
15
- const conditionToParamCondition = (condition) => {
16
- if (condition === "EQUAL") return ParamCondition.EQUAL;
17
- if (condition === "GREATER_THAN") return ParamCondition.GREATER_THAN;
18
- if (condition === "LESS_THAN") return ParamCondition.LESS_THAN;
19
- if (condition === "GREATER_THAN_OR_EQUAL") return ParamCondition.GREATER_THAN_OR_EQUAL;
20
- if (condition === "LESS_THAN_OR_EQUAL") return ParamCondition.LESS_THAN_OR_EQUAL;
21
- if (condition === "NOT_EQUAL") return ParamCondition.NOT_EQUAL;
22
- if (condition === "ONE_OF") return ParamCondition.ONE_OF;
23
- if (condition === "SLICE_EQUAL") return ParamCondition.SLICE_EQUAL;
24
- return ParamCondition.EQUAL;
25
- };
26
- const policyParamsToPolicies = (params) => {
27
- const policies = [];
28
- for (const param of params) if (param.type === "sudo") policies.push(toSudoPolicy({}));
29
- else if (param.type === "timestamp") policies.push(toTimestampPolicy(param));
30
- else if (param.type === "gas") policies.push(toGasPolicy(param));
31
- else if (param.type === "rate-limit") policies.push(toRateLimitPolicy(param));
32
- else if (param.type === "signature-caller") policies.push(toSignatureCallerPolicy(param));
33
- else if (param.type === "call") policies.push(toCallPolicy({
34
- policyVersion: toCallPolicyVersion(param.policyVersion),
35
- permissions: !param.permissions ? void 0 : param.permissions.map((p) => {
36
- const callType = (() => {
37
- if (!p.callType) return CallType.CALL;
38
- if (p.callType === "call") return CallType.CALL;
39
- if (p.callType === "delegatecall") return CallType.DELEGATE_CALL;
40
- return CallType.BATCH_CALL;
41
- })();
42
- if ("abi" in p) return {
43
- callType,
44
- target: p.target,
45
- valueLimit: p.valueLimit,
46
- abi: p.abi,
47
- functionName: p.functionName,
48
- selector: p.selector,
49
- args: !p.args ? void 0 : p.args.map((a) => {
50
- if (a === null) return null;
51
- const c = a.condition;
52
- if (c === "ONE_OF") return {
53
- condition: ParamCondition.ONE_OF,
54
- value: a.value
55
- };
56
- if (c === "SLICE_EQUAL" && "start" in a) return {
57
- condition: ParamCondition.SLICE_EQUAL,
58
- value: a.value,
59
- start: a.start,
60
- length: a.length
61
- };
62
- return {
63
- condition: conditionToParamCondition(c),
64
- value: a.value
65
- };
66
- })
67
- };
68
- return {
69
- callType,
70
- target: p.target,
71
- selector: p.selector,
72
- valueLimit: p.valueLimit,
73
- rules: p.rules ? p.rules.map((r) => {
74
- return {
75
- offset: r.offset,
76
- params: r.params,
77
- condition: conditionToParamCondition(r.condition)
78
- };
79
- }) : void 0
80
- };
81
- })
82
- }));
83
- else throw new Error("Invalid policy type");
84
- return policies;
85
- };
86
- //#endregion
87
- export { policyParamsToPolicies };
88
-
89
- //# sourceMappingURL=policy.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.mjs","names":["ParamConditionCore"],"sources":["../../src/helpers/policy.ts"],"sourcesContent":["/** biome-ignore-all lint/complexity/noExcessiveCognitiveComplexity: safe */\nimport {\n CallPolicyVersion,\n CallType,\n ParamCondition as ParamConditionCore,\n type Policy,\n toCallPolicy,\n toGasPolicy,\n toRateLimitPolicy,\n toSignatureCallerPolicy,\n toSudoPolicy,\n toTimestampPolicy,\n} from \"@namera-ai/sdk/policy\";\n\nimport type { CallPolicyParams, PolicyParams } from \"@/schema\";\nimport type { ParamCondition } from \"@/schema/policy\";\n\nconst toCallPolicyVersion = (\n version: CallPolicyParams[\"policyVersion\"],\n): CallPolicyVersion => {\n switch (version) {\n case \"0.0.1\":\n return CallPolicyVersion.V0_0_1;\n case \"0.0.2\":\n return CallPolicyVersion.V0_0_2;\n case \"0.0.3\":\n return CallPolicyVersion.V0_0_3;\n case \"0.0.4\":\n return CallPolicyVersion.V0_0_4;\n case \"0.0.5\":\n return CallPolicyVersion.V0_0_5;\n default:\n throw new Error(\"Invalid call policy version\");\n }\n};\n\nconst conditionToParamCondition = (\n condition: ParamCondition,\n): ParamConditionCore => {\n if (condition === \"EQUAL\") return ParamConditionCore.EQUAL;\n if (condition === \"GREATER_THAN\") return ParamConditionCore.GREATER_THAN;\n if (condition === \"LESS_THAN\") return ParamConditionCore.LESS_THAN;\n if (condition === \"GREATER_THAN_OR_EQUAL\")\n return ParamConditionCore.GREATER_THAN_OR_EQUAL;\n if (condition === \"LESS_THAN_OR_EQUAL\")\n return ParamConditionCore.LESS_THAN_OR_EQUAL;\n if (condition === \"NOT_EQUAL\") return ParamConditionCore.NOT_EQUAL;\n if (condition === \"ONE_OF\") return ParamConditionCore.ONE_OF;\n if (condition === \"SLICE_EQUAL\") return ParamConditionCore.SLICE_EQUAL;\n return ParamConditionCore.EQUAL;\n};\n\nexport const policyParamsToPolicies = (params: PolicyParams[]) => {\n const policies: Policy[] = [];\n\n for (const param of params) {\n if (param.type === \"sudo\") {\n policies.push(toSudoPolicy({}));\n } else if (param.type === \"timestamp\") {\n policies.push(toTimestampPolicy(param));\n } else if (param.type === \"gas\") {\n policies.push(toGasPolicy(param));\n } else if (param.type === \"rate-limit\") {\n policies.push(toRateLimitPolicy(param));\n } else if (param.type === \"signature-caller\") {\n policies.push(toSignatureCallerPolicy(param));\n } else if (param.type === \"call\") {\n policies.push(\n toCallPolicy({\n policyVersion: toCallPolicyVersion(param.policyVersion),\n permissions: !param.permissions\n ? undefined\n : param.permissions.map((p) => {\n const callType = (() => {\n if (!p.callType) return CallType.CALL;\n if (p.callType === \"call\") return CallType.CALL;\n if (p.callType === \"delegatecall\")\n return CallType.DELEGATE_CALL;\n return CallType.BATCH_CALL;\n })();\n\n if (\"abi\" in p) {\n return {\n callType,\n target: p.target,\n valueLimit: p.valueLimit,\n abi: p.abi,\n functionName: p.functionName,\n selector: p.selector,\n args: !p.args\n ? undefined\n : p.args.map((a) => {\n if (a === null) return null;\n const c = a.condition;\n if (c === \"ONE_OF\") {\n return {\n condition: ParamConditionCore.ONE_OF,\n value: a.value,\n };\n }\n\n if (c === \"SLICE_EQUAL\" && \"start\" in a) {\n return {\n condition: ParamConditionCore.SLICE_EQUAL,\n value: a.value,\n start: a.start,\n length: a.length,\n };\n }\n\n return {\n condition: conditionToParamCondition(c) as Exclude<\n ParamConditionCore,\n ParamConditionCore.ONE_OF\n >,\n value: a.value,\n };\n }),\n };\n }\n\n return {\n callType,\n target: p.target,\n selector: p.selector,\n valueLimit: p.valueLimit,\n rules: p.rules\n ? p.rules.map((r) => {\n return {\n offset: r.offset,\n params: r.params,\n condition: conditionToParamCondition(r.condition),\n };\n })\n : undefined,\n };\n }),\n }),\n );\n } else {\n throw new Error(\"Invalid policy type\");\n }\n }\n\n return policies;\n};\n"],"mappings":";;;;AAiBA,MAAM,uBACJ,YACsB;AACtB,SAAQ,SAAR;EACE,KAAK,QACH,QAAO,kBAAkB;EAC3B,KAAK,QACH,QAAO,kBAAkB;EAC3B,KAAK,QACH,QAAO,kBAAkB;EAC3B,KAAK,QACH,QAAO,kBAAkB;EAC3B,KAAK,QACH,QAAO,kBAAkB;EAC3B,QACE,OAAM,IAAI,MAAM,8BAA8B;;;AAIpD,MAAM,6BACJ,cACuB;AACvB,KAAI,cAAc,QAAS,QAAOA,eAAmB;AACrD,KAAI,cAAc,eAAgB,QAAOA,eAAmB;AAC5D,KAAI,cAAc,YAAa,QAAOA,eAAmB;AACzD,KAAI,cAAc,wBAChB,QAAOA,eAAmB;AAC5B,KAAI,cAAc,qBAChB,QAAOA,eAAmB;AAC5B,KAAI,cAAc,YAAa,QAAOA,eAAmB;AACzD,KAAI,cAAc,SAAU,QAAOA,eAAmB;AACtD,KAAI,cAAc,cAAe,QAAOA,eAAmB;AAC3D,QAAOA,eAAmB;;AAG5B,MAAa,0BAA0B,WAA2B;CAChE,MAAM,WAAqB,EAAE;AAE7B,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,SAAS,OACjB,UAAS,KAAK,aAAa,EAAE,CAAC,CAAC;UACtB,MAAM,SAAS,YACxB,UAAS,KAAK,kBAAkB,MAAM,CAAC;UAC9B,MAAM,SAAS,MACxB,UAAS,KAAK,YAAY,MAAM,CAAC;UACxB,MAAM,SAAS,aACxB,UAAS,KAAK,kBAAkB,MAAM,CAAC;UAC9B,MAAM,SAAS,mBACxB,UAAS,KAAK,wBAAwB,MAAM,CAAC;UACpC,MAAM,SAAS,OACxB,UAAS,KACP,aAAa;EACX,eAAe,oBAAoB,MAAM,cAAc;EACvD,aAAa,CAAC,MAAM,cAChB,SACA,MAAM,YAAY,KAAK,MAAM;GAC3B,MAAM,kBAAkB;AACtB,QAAI,CAAC,EAAE,SAAU,QAAO,SAAS;AACjC,QAAI,EAAE,aAAa,OAAQ,QAAO,SAAS;AAC3C,QAAI,EAAE,aAAa,eACjB,QAAO,SAAS;AAClB,WAAO,SAAS;OACd;AAEJ,OAAI,SAAS,EACX,QAAO;IACL;IACA,QAAQ,EAAE;IACV,YAAY,EAAE;IACd,KAAK,EAAE;IACP,cAAc,EAAE;IAChB,UAAU,EAAE;IACZ,MAAM,CAAC,EAAE,OACL,SACA,EAAE,KAAK,KAAK,MAAM;AAChB,SAAI,MAAM,KAAM,QAAO;KACvB,MAAM,IAAI,EAAE;AACZ,SAAI,MAAM,SACR,QAAO;MACL,WAAWA,eAAmB;MAC9B,OAAO,EAAE;MACV;AAGH,SAAI,MAAM,iBAAiB,WAAW,EACpC,QAAO;MACL,WAAWA,eAAmB;MAC9B,OAAO,EAAE;MACT,OAAO,EAAE;MACT,QAAQ,EAAE;MACX;AAGH,YAAO;MACL,WAAW,0BAA0B,EAAE;MAIvC,OAAO,EAAE;MACV;MACD;IACP;AAGH,UAAO;IACL;IACA,QAAQ,EAAE;IACV,UAAU,EAAE;IACZ,YAAY,EAAE;IACd,OAAO,EAAE,QACL,EAAE,MAAM,KAAK,MAAM;AACjB,YAAO;MACL,QAAQ,EAAE;MACV,QAAQ,EAAE;MACV,WAAW,0BAA0B,EAAE,UAAU;MAClD;MACD,GACF;IACL;IACD;EACP,CAAC,CACH;KAED,OAAM,IAAI,MAAM,sBAAsB;AAI1C,QAAO"}
@@ -1,71 +0,0 @@
1
- #!/usr/bin/env node
2
- //#region src/helpers/pretty.ts
3
- /** biome-ignore-all lint/suspicious/noExplicitAny: safe */
4
- const keyColors = [
5
- "\x1B[36m",
6
- "\x1B[35m",
7
- "\x1B[34m",
8
- "\x1B[32m",
9
- "\x1B[33m"
10
- ];
11
- const reset = "\x1B[0m";
12
- const bold = "\x1B[1m";
13
- /**
14
- * Returns a shallow copy of an object with humanized key names.
15
- */
16
- const transformKeys = (obj) => {
17
- return Object.fromEntries(Object.entries(obj).map(([k, v]) => [formatKey(k), v]));
18
- };
19
- /**
20
- * Humanizes a key by spacing words and title-casing tokens.
21
- */
22
- const formatKey = (key) => key.replace(/[_-]/g, " ").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\b\w/g, (c) => c.toUpperCase());
23
- /**
24
- * Formats a primitive-like value for display.
25
- */
26
- const formatValue = (value) => {
27
- if (value === null) return "null";
28
- if (typeof value === "bigint") return `${value}n`;
29
- if (value instanceof Date) return value.toISOString();
30
- if (typeof value === "string") return value;
31
- if (typeof value === "number" || typeof value === "boolean") return String(value);
32
- return String(value);
33
- };
34
- /**
35
- * Returns true when a value is a display-friendly primitive.
36
- */
37
- const isPrimitive = (v) => v === null || typeof v !== "object" || v instanceof Date;
38
- /**
39
- * Determines whether an array contains only flat objects of primitives.
40
- */
41
- const isFlatObjectArray = (arr) => arr.length > 0 && arr.every((item) => item && typeof item === "object" && !Array.isArray(item) && Object.values(item).every(isPrimitive));
42
- /**
43
- * Formats objects or arrays into a human-friendly CLI display string.
44
- *
45
- * Uses colorized keys when printing objects, and falls back to tabular
46
- * output for flat object arrays at the root level.
47
- */
48
- const prettyFormat = (input, depth = 0, isRoot = true) => {
49
- const indent = 2;
50
- const maxDepth = 6;
51
- const space = " ".repeat(indent * depth);
52
- if (depth > maxDepth) return `${space}…`;
53
- if (isRoot && Array.isArray(input) && isFlatObjectArray(input)) {
54
- const transformed = input.map(transformKeys);
55
- console.table(transformed);
56
- return "";
57
- }
58
- if (Array.isArray(input)) return input.map((item, i) => {
59
- if (isPrimitive(item)) return `${space}${formatValue(item)}`;
60
- return `${space}[${i}]\n${prettyFormat(item, depth + 1, false)}`;
61
- }).join("\n");
62
- return Object.entries(input).map(([key, value]) => {
63
- const k = `${bold}${keyColors[depth % keyColors.length]}${formatKey(key)}${reset}`;
64
- if (isPrimitive(value)) return `${space}${k}: ${formatValue(value)}`;
65
- return `${space}${k}:\n${prettyFormat(value, depth + 1, false)}`;
66
- }).join("\n");
67
- };
68
- //#endregion
69
- export { prettyFormat };
70
-
71
- //# sourceMappingURL=pretty.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pretty.mjs","names":[],"sources":["../../src/helpers/pretty.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: safe */\nconst keyColors = [\n \"\\x1b[36m\", // cyan\n \"\\x1b[35m\", // magenta\n \"\\x1b[34m\", // blue\n \"\\x1b[32m\", // green\n \"\\x1b[33m\", // yellow\n];\n\nconst reset = \"\\x1b[0m\";\nconst bold = \"\\x1b[1m\";\n\n/**\n * Returns a shallow copy of an object with humanized key names.\n */\nconst transformKeys = (obj: Record<string, any>) => {\n return Object.fromEntries(\n Object.entries(obj).map(([k, v]) => [formatKey(k), v]),\n );\n};\n\n/**\n * Humanizes a key by spacing words and title-casing tokens.\n */\nconst formatKey = (key: string) =>\n key\n .replace(/[_-]/g, \" \")\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .replace(/\\b\\w/g, (c) => c.toUpperCase());\n\n/**\n * Formats a primitive-like value for display.\n */\nconst formatValue = (value: any): string => {\n if (value === null) return \"null\";\n\n if (typeof value === \"bigint\") {\n return `${value}n`;\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n return String(value);\n};\n\n/**\n * Returns true when a value is a display-friendly primitive.\n */\nconst isPrimitive = (v: any) =>\n v === null || typeof v !== \"object\" || v instanceof Date;\n\n/**\n * Determines whether an array contains only flat objects of primitives.\n */\nconst isFlatObjectArray = (arr: Record<string, any>[]) =>\n arr.length > 0 &&\n arr.every(\n (item) =>\n item &&\n typeof item === \"object\" &&\n !Array.isArray(item) &&\n Object.values(item).every(isPrimitive),\n );\n\n/**\n * Formats objects or arrays into a human-friendly CLI display string.\n *\n * Uses colorized keys when printing objects, and falls back to tabular\n * output for flat object arrays at the root level.\n */\nexport const prettyFormat = (\n input: Record<string, any> | Record<string, any>[],\n depth = 0,\n isRoot = true,\n): string => {\n const colors = true;\n const indent = 2;\n const maxDepth = 6;\n const space = \" \".repeat(indent * depth);\n\n if (depth > maxDepth) return `${space}…`;\n\n if (isRoot && Array.isArray(input) && isFlatObjectArray(input)) {\n const transformed = input.map(transformKeys);\n console.table(transformed);\n return \"\";\n }\n\n // Array\n if (Array.isArray(input)) {\n return input\n .map((item, i) => {\n if (isPrimitive(item)) {\n return `${space}${formatValue(item)}`;\n }\n\n return `${space}[${i}]\\n${prettyFormat(item, depth + 1, false)}`;\n })\n .join(\"\\n\");\n }\n\n // Object\n return Object.entries(input)\n .map(([key, value]) => {\n const color = keyColors[depth % keyColors.length];\n const k = colors\n ? `${bold}${color}${formatKey(key)}${reset}`\n : formatKey(key);\n\n if (isPrimitive(value)) {\n return `${space}${k}: ${formatValue(value)}`;\n }\n\n return `${space}${k}:\\n${prettyFormat(value, depth + 1, false)}`;\n })\n .join(\"\\n\");\n};\n"],"mappings":";;;AACA,MAAM,YAAY;CAChB;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,QAAQ;AACd,MAAM,OAAO;;;;AAKb,MAAM,iBAAiB,QAA6B;AAClD,QAAO,OAAO,YACZ,OAAO,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CACvD;;;;;AAMH,MAAM,aAAa,QACjB,IACG,QAAQ,SAAS,IAAI,CACrB,QAAQ,mBAAmB,QAAQ,CACnC,QAAQ,UAAU,MAAM,EAAE,aAAa,CAAC;;;;AAK7C,MAAM,eAAe,UAAuB;AAC1C,KAAI,UAAU,KAAM,QAAO;AAE3B,KAAI,OAAO,UAAU,SACnB,QAAO,GAAG,MAAM;AAGlB,KAAI,iBAAiB,KACnB,QAAO,MAAM,aAAa;AAG5B,KAAI,OAAO,UAAU,SACnB,QAAO;AAGT,KAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAChD,QAAO,OAAO,MAAM;AAGtB,QAAO,OAAO,MAAM;;;;;AAMtB,MAAM,eAAe,MACnB,MAAM,QAAQ,OAAO,MAAM,YAAY,aAAa;;;;AAKtD,MAAM,qBAAqB,QACzB,IAAI,SAAS,KACb,IAAI,OACD,SACC,QACA,OAAO,SAAS,YAChB,CAAC,MAAM,QAAQ,KAAK,IACpB,OAAO,OAAO,KAAK,CAAC,MAAM,YAAY,CACzC;;;;;;;AAQH,MAAa,gBACX,OACA,QAAQ,GACR,SAAS,SACE;CAEX,MAAM,SAAS;CACf,MAAM,WAAW;CACjB,MAAM,QAAQ,IAAI,OAAO,SAAS,MAAM;AAExC,KAAI,QAAQ,SAAU,QAAO,GAAG,MAAM;AAEtC,KAAI,UAAU,MAAM,QAAQ,MAAM,IAAI,kBAAkB,MAAM,EAAE;EAC9D,MAAM,cAAc,MAAM,IAAI,cAAc;AAC5C,UAAQ,MAAM,YAAY;AAC1B,SAAO;;AAIT,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MACJ,KAAK,MAAM,MAAM;AAChB,MAAI,YAAY,KAAK,CACnB,QAAO,GAAG,QAAQ,YAAY,KAAK;AAGrC,SAAO,GAAG,MAAM,GAAG,EAAE,KAAK,aAAa,MAAM,QAAQ,GAAG,MAAM;GAC9D,CACD,KAAK,KAAK;AAIf,QAAO,OAAO,QAAQ,MAAM,CACzB,KAAK,CAAC,KAAK,WAAW;EAErB,MAAM,IACF,GAAG,OAFO,UAAU,QAAQ,UAAU,UAEpB,UAAU,IAAI,GAAG;AAGvC,MAAI,YAAY,MAAM,CACpB,QAAO,GAAG,QAAQ,EAAE,IAAI,YAAY,MAAM;AAG5C,SAAO,GAAG,QAAQ,EAAE,KAAK,aAAa,OAAO,QAAQ,GAAG,MAAM;GAC9D,CACD,KAAK,KAAK"}
package/dist/index.d.mts DELETED
@@ -1,2 +0,0 @@
1
-
2
- export { };
package/dist/index.mjs DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env node
2
- import { globalFlags } from "./flags/global.mjs";
3
- import { ConfigManager, layer } from "./layers/config.mjs";
4
- import { layer as layer$1 } from "./layers/prompt.mjs";
5
- import { layer as layer$2 } from "./layers/keystore.mjs";
6
- import { layer as layer$3 } from "./layers/web3.mjs";
7
- import { layer as layer$4 } from "./layers/smart-account.mjs";
8
- import { layer as layer$5 } from "./layers/session-key.mjs";
9
- import { layer as layer$6 } from "./layers/mcp.mjs";
10
- import { layer as layer$7 } from "./layers/output.mjs";
11
- import "./layers/index.mjs";
12
- import { commands } from "./commands/index.mjs";
13
- import { createRequire } from "node:module";
14
- import "dotenv/config";
15
- import { NodeRuntime, NodeServices } from "@effect/platform-node";
16
- import { ConfigProvider, Console, Effect, Layer } from "effect";
17
- import { CliError, Command } from "effect/unstable/cli";
18
- const packageJson = createRequire(import.meta.url)("../package.json");
19
- const command = Command.make("namera", {}, () => Effect.fail(new CliError.ShowHelp({
20
- commandPath: ["namera"],
21
- errors: []
22
- }))).pipe(Command.withDescription("Programmable Session keys for Smart Contracts Accounts."), Command.withGlobalFlags(globalFlags), Command.withSubcommands(commands), Command.withExamples([{
23
- command: "namera --help",
24
- description: "Print help"
25
- }, {
26
- command: "namera --version",
27
- description: "Print version"
28
- }]));
29
- const Layers = layer$6.pipe(Layer.provideMerge(layer$5), Layer.provideMerge(layer$4), Layer.provideMerge(layer$2), Layer.provideMerge(layer$3), Layer.provideMerge(layer$1), Layer.provideMerge(layer), Layer.provideMerge(layer$7), Layer.provideMerge(NodeServices.layer));
30
- Effect.gen(function* () {
31
- yield* (yield* ConfigManager).ensureConfigDirExists();
32
- yield* Command.run(command, { version: packageJson.version });
33
- }).pipe(Effect.provide(Layers), Effect.provideService(ConfigProvider.ConfigProvider, ConfigProvider.fromEnv()), Effect.catchTag("ShowHelp", () => Effect.succeed(void 0)), Effect.catch((e) => Console.error(e.message))).pipe(NodeRuntime.runMain);
34
- //#endregion
35
- export {};
36
-
37
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":["SessionKeyManager.layer","SmartAccountManager.layer","KeystoreManager.layer","Web3Service.layer","PromptManager.layer","ConfigManager.layer","OutputFormatter.layer","ConfigManager.ConfigManager"],"sources":["../src/index.ts"],"sourcesContent":["import \"dotenv/config\";\n\nimport { createRequire } from \"node:module\";\n\nimport { NodeRuntime, NodeServices } from \"@effect/platform-node\";\nimport { ConfigProvider, Console, Effect, Layer } from \"effect\";\nimport { CliError, Command } from \"effect/unstable/cli\";\n\nimport { commands } from \"./commands\";\nimport { globalFlags } from \"./flags/global\";\nimport {\n ConfigManager,\n KeystoreManager,\n McpManager,\n OutputFormatter,\n PromptManager,\n SessionKeyManager,\n SmartAccountManager,\n Web3Service,\n} from \"./layers\";\n\nconst require = createRequire(import.meta.url);\nconst packageJson = require(\"../package.json\");\n\nconst command = Command.make(\"namera\", {}, () =>\n Effect.fail(\n new CliError.ShowHelp({\n commandPath: [\"namera\"],\n errors: [],\n }),\n ),\n).pipe(\n Command.withDescription(\n \"Programmable Session keys for Smart Contracts Accounts.\",\n ),\n Command.withGlobalFlags(globalFlags),\n Command.withSubcommands(commands),\n Command.withExamples([\n {\n command: \"namera --help\",\n description: \"Print help\",\n },\n {\n command: \"namera --version\",\n description: \"Print version\",\n },\n ]),\n);\n\nconst Layers = McpManager.layer.pipe(\n Layer.provideMerge(SessionKeyManager.layer),\n Layer.provideMerge(SmartAccountManager.layer),\n Layer.provideMerge(KeystoreManager.layer),\n Layer.provideMerge(Web3Service.layer),\n Layer.provideMerge(PromptManager.layer),\n Layer.provideMerge(ConfigManager.layer),\n Layer.provideMerge(OutputFormatter.layer),\n Layer.provideMerge(NodeServices.layer),\n);\n\nconst cli = Effect.gen(function* () {\n const configManager = yield* ConfigManager.ConfigManager;\n yield* configManager.ensureConfigDirExists();\n\n yield* Command.run(command, {\n version: packageJson.version,\n });\n}).pipe(\n Effect.provide(Layers),\n Effect.provideService(\n ConfigProvider.ConfigProvider,\n ConfigProvider.fromEnv(),\n ),\n Effect.catchTag(\"ShowHelp\", () => Effect.succeed(void 0)),\n Effect.catch((e) => Console.error(e.message)),\n);\n\n// @ts-expect-error - TODO: fix this\ncli.pipe(NodeRuntime.runMain);\n"],"mappings":";;;;;;;;;;;;;;;;;AAsBA,MAAM,cADU,cAAc,OAAO,KAAK,IACtB,CAAQ,kBAAkB;AAE9C,MAAM,UAAU,QAAQ,KAAK,UAAU,EAAE,QACvC,OAAO,KACL,IAAI,SAAS,SAAS;CACpB,aAAa,CAAC,SAAS;CACvB,QAAQ,EAAE;CACX,CAAC,CACH,CACF,CAAC,KACA,QAAQ,gBACN,0DACD,EACD,QAAQ,gBAAgB,YAAY,EACpC,QAAQ,gBAAgB,SAAS,EACjC,QAAQ,aAAa,CACnB;CACE,SAAS;CACT,aAAa;CACd,EACD;CACE,SAAS;CACT,aAAa;CACd,CACF,CAAC,CACH;AAED,MAAM,SAAA,QAA0B,KAC9B,MAAM,aAAaA,QAAwB,EAC3C,MAAM,aAAaC,QAA0B,EAC7C,MAAM,aAAaC,QAAsB,EACzC,MAAM,aAAaC,QAAkB,EACrC,MAAM,aAAaC,QAAoB,EACvC,MAAM,aAAaC,MAAoB,EACvC,MAAM,aAAaC,QAAsB,EACzC,MAAM,aAAa,aAAa,MAAM,CACvC;AAEW,OAAO,IAAI,aAAa;AAElC,SAAO,OADsBC,eACR,uBAAuB;AAE5C,QAAO,QAAQ,IAAI,SAAS,EAC1B,SAAS,YAAY,SACtB,CAAC;EACF,CAAC,KACD,OAAO,QAAQ,OAAO,EACtB,OAAO,eACL,eAAe,gBACf,eAAe,SAAS,CACzB,EACD,OAAO,SAAS,kBAAkB,OAAO,QAAQ,KAAK,EAAE,CAAC,EACzD,OAAO,OAAO,MAAM,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAI/C,CAAI,KAAK,YAAY,QAAQ"}