@namera-ai/cli 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/index.mjs +21 -0
- package/dist/commands/index.mjs.map +1 -0
- package/dist/commands/keystore/create.mjs +74 -0
- package/dist/commands/keystore/create.mjs.map +1 -0
- package/dist/commands/keystore/decrypt.mjs +71 -0
- package/dist/commands/keystore/decrypt.mjs.map +1 -0
- package/dist/commands/keystore/import.mjs +84 -0
- package/dist/commands/keystore/import.mjs.map +1 -0
- package/dist/commands/keystore/index.mjs +28 -0
- package/dist/commands/keystore/index.mjs.map +1 -0
- package/dist/commands/keystore/info.mjs +62 -0
- package/dist/commands/keystore/info.mjs.map +1 -0
- package/dist/commands/keystore/list.mjs +46 -0
- package/dist/commands/keystore/list.mjs.map +1 -0
- package/dist/commands/keystore/remove.mjs +51 -0
- package/dist/commands/keystore/remove.mjs.map +1 -0
- package/dist/commands/mcp/index.mjs +13 -0
- package/dist/commands/mcp/index.mjs.map +1 -0
- package/dist/commands/mcp/start.mjs +82 -0
- package/dist/commands/mcp/start.mjs.map +1 -0
- package/dist/commands/schema/index.mjs +53 -0
- package/dist/commands/schema/index.mjs.map +1 -0
- package/dist/commands/session-key/create/index.mjs +87 -0
- package/dist/commands/session-key/create/index.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/base.mjs +52 -0
- package/dist/commands/session-key/create/prompts/base.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/call.mjs +85 -0
- package/dist/commands/session-key/create/prompts/call.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/common.mjs +27 -0
- package/dist/commands/session-key/create/prompts/common.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/gas.mjs +19 -0
- package/dist/commands/session-key/create/prompts/gas.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/index.mjs +44 -0
- package/dist/commands/session-key/create/prompts/index.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/rate-limit.mjs +40 -0
- package/dist/commands/session-key/create/prompts/rate-limit.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/signature-caller.mjs +26 -0
- package/dist/commands/session-key/create/prompts/signature-caller.mjs.map +1 -0
- package/dist/commands/session-key/create/prompts/timestamp.mjs +32 -0
- package/dist/commands/session-key/create/prompts/timestamp.mjs.map +1 -0
- package/dist/commands/session-key/index.mjs +26 -0
- package/dist/commands/session-key/index.mjs.map +1 -0
- package/dist/commands/session-key/info.mjs +64 -0
- package/dist/commands/session-key/info.mjs.map +1 -0
- package/dist/commands/session-key/list.mjs +54 -0
- package/dist/commands/session-key/list.mjs.map +1 -0
- package/dist/commands/session-key/remove.mjs +51 -0
- package/dist/commands/session-key/remove.mjs.map +1 -0
- package/dist/commands/session-key/status.mjs +64 -0
- package/dist/commands/session-key/status.mjs.map +1 -0
- package/dist/commands/smart-account/create.mjs +94 -0
- package/dist/commands/smart-account/create.mjs.map +1 -0
- package/dist/commands/smart-account/import.mjs +45 -0
- package/dist/commands/smart-account/import.mjs.map +1 -0
- package/dist/commands/smart-account/index.mjs +30 -0
- package/dist/commands/smart-account/index.mjs.map +1 -0
- package/dist/commands/smart-account/info.mjs +66 -0
- package/dist/commands/smart-account/info.mjs.map +1 -0
- package/dist/commands/smart-account/list.mjs +48 -0
- package/dist/commands/smart-account/list.mjs.map +1 -0
- package/dist/commands/smart-account/remove.mjs +54 -0
- package/dist/commands/smart-account/remove.mjs.map +1 -0
- package/dist/commands/smart-account/status.mjs +63 -0
- package/dist/commands/smart-account/status.mjs.map +1 -0
- package/dist/dto/index.mjs +6 -0
- package/dist/dto/keystore.mjs +44 -0
- package/dist/dto/keystore.mjs.map +1 -0
- package/dist/dto/mcp.mjs +13 -0
- package/dist/dto/mcp.mjs.map +1 -0
- package/dist/dto/session-key.mjs +54 -0
- package/dist/dto/session-key.mjs.map +1 -0
- package/dist/dto/smart-account.mjs +45 -0
- package/dist/dto/smart-account.mjs.map +1 -0
- package/dist/flags/global.mjs +29 -0
- package/dist/flags/global.mjs.map +1 -0
- package/dist/flags/shared.mjs +11 -0
- package/dist/flags/shared.mjs.map +1 -0
- package/dist/helpers/humanize.mjs +153 -0
- package/dist/helpers/humanize.mjs.map +1 -0
- package/dist/helpers/paths.mjs +31 -0
- package/dist/helpers/paths.mjs.map +1 -0
- package/dist/helpers/policy.mjs +89 -0
- package/dist/helpers/policy.mjs.map +1 -0
- package/dist/helpers/pretty.mjs +71 -0
- package/dist/helpers/pretty.mjs.map +1 -0
- package/dist/index.mjs +15 -3264
- package/dist/index.mjs.map +1 -1
- package/dist/layers/config.mjs +124 -0
- package/dist/layers/config.mjs.map +1 -0
- package/dist/layers/index.mjs +11 -0
- package/dist/layers/keystore.mjs +225 -0
- package/dist/layers/keystore.mjs.map +1 -0
- package/dist/layers/mcp-context.mjs +8 -0
- package/dist/layers/mcp-context.mjs.map +1 -0
- package/dist/layers/mcp.mjs +31 -0
- package/dist/layers/mcp.mjs.map +1 -0
- package/dist/layers/output.mjs +21 -0
- package/dist/layers/output.mjs.map +1 -0
- package/dist/layers/prompt.mjs +78 -0
- package/dist/layers/prompt.mjs.map +1 -0
- package/dist/layers/session-key.mjs +218 -0
- package/dist/layers/session-key.mjs.map +1 -0
- package/dist/layers/smart-account.mjs +175 -0
- package/dist/layers/smart-account.mjs.map +1 -0
- package/dist/layers/web3.mjs +83 -0
- package/dist/layers/web3.mjs.map +1 -0
- package/dist/mcp/helpers/common.mjs +9 -0
- package/dist/mcp/helpers/common.mjs.map +1 -0
- package/dist/mcp/helpers/index.mjs +4 -0
- package/dist/mcp/helpers/session-key.mjs +129 -0
- package/dist/mcp/helpers/session-key.mjs.map +1 -0
- package/dist/mcp/index.mjs +43 -0
- package/dist/mcp/index.mjs.map +1 -0
- package/dist/mcp/mcp.mjs +15 -0
- package/dist/mcp/mcp.mjs.map +1 -0
- package/dist/mcp/tools/account/address.mjs +20 -0
- package/dist/mcp/tools/account/address.mjs.map +1 -0
- package/dist/mcp/tools/account/get-balance.mjs +54 -0
- package/dist/mcp/tools/account/get-balance.mjs.map +1 -0
- package/dist/mcp/tools/account/index.mjs +15 -0
- package/dist/mcp/tools/account/index.mjs.map +1 -0
- package/dist/mcp/tools/read/index.mjs +11 -0
- package/dist/mcp/tools/read/index.mjs.map +1 -0
- package/dist/mcp/tools/read/read-contract.mjs +49 -0
- package/dist/mcp/tools/read/read-contract.mjs.map +1 -0
- package/dist/mcp/tools/transaction/execute-transaction.mjs +38 -0
- package/dist/mcp/tools/transaction/execute-transaction.mjs.map +1 -0
- package/dist/mcp/tools/transaction/index.mjs +15 -0
- package/dist/mcp/tools/transaction/index.mjs.map +1 -0
- package/dist/mcp/tools/transaction/native-transfer.mjs +59 -0
- package/dist/mcp/tools/transaction/native-transfer.mjs.map +1 -0
- package/dist/schema/chain.mjs +124 -0
- package/dist/schema/chain.mjs.map +1 -0
- package/dist/schema/common.mjs +29 -0
- package/dist/schema/common.mjs.map +1 -0
- package/dist/schema/index.mjs +5 -0
- package/dist/schema/policy.mjs +114 -0
- package/dist/schema/policy.mjs.map +1 -0
- package/dist/schema/tx.mjs +19 -0
- package/dist/schema/tx.mjs.map +1 -0
- package/dist/types/index.mjs +11 -0
- package/dist/types/index.mjs.map +1 -0
- package/package.json +10 -11
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
import { arbitrum, arbitrumSepolia, arcTestnet, avalanche, avalancheFuji, base, baseSepolia, celo, celoSepolia, mainnet, monad, monadTestnet, optimism, optimismSepolia, polygon, polygonAmoy, scroll, scrollSepolia, sepolia, tempoModerato, unichain, unichainSepolia, zora, zoraSepolia } from "viem/chains";
|
|
4
|
+
//#region src/schema/chain.ts
|
|
5
|
+
const supportedMainnetChains = {
|
|
6
|
+
"eth-mainnet": {
|
|
7
|
+
...mainnet,
|
|
8
|
+
key: "eth-mainnet"
|
|
9
|
+
},
|
|
10
|
+
"opt-mainnet": {
|
|
11
|
+
...optimism,
|
|
12
|
+
key: "opt-mainnet"
|
|
13
|
+
},
|
|
14
|
+
"polygon-mainnet": {
|
|
15
|
+
...polygon,
|
|
16
|
+
key: "polygon-mainnet"
|
|
17
|
+
},
|
|
18
|
+
"arb-mainnet": {
|
|
19
|
+
...arbitrum,
|
|
20
|
+
key: "arb-mainnet"
|
|
21
|
+
},
|
|
22
|
+
"zora-mainnet": {
|
|
23
|
+
...zora,
|
|
24
|
+
key: "zora-mainnet"
|
|
25
|
+
},
|
|
26
|
+
"base-mainnet": {
|
|
27
|
+
...base,
|
|
28
|
+
key: "base-mainnet"
|
|
29
|
+
},
|
|
30
|
+
"avax-mainnet": {
|
|
31
|
+
...avalanche,
|
|
32
|
+
key: "avax-mainnet"
|
|
33
|
+
},
|
|
34
|
+
"unichain-mainnet": {
|
|
35
|
+
...unichain,
|
|
36
|
+
key: "unichain-mainnet"
|
|
37
|
+
},
|
|
38
|
+
"celo-mainnet": {
|
|
39
|
+
...celo,
|
|
40
|
+
key: "celo-mainnet"
|
|
41
|
+
},
|
|
42
|
+
"scroll-mainnet": {
|
|
43
|
+
...scroll,
|
|
44
|
+
key: "scroll-mainnet"
|
|
45
|
+
},
|
|
46
|
+
"monad-mainnet": {
|
|
47
|
+
...monad,
|
|
48
|
+
key: "monad-mainnet"
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const supportedTestnetChains = {
|
|
52
|
+
"eth-sepolia": {
|
|
53
|
+
...sepolia,
|
|
54
|
+
key: "eth-sepolia"
|
|
55
|
+
},
|
|
56
|
+
"opt-sepolia": {
|
|
57
|
+
...optimismSepolia,
|
|
58
|
+
key: "opt-sepolia"
|
|
59
|
+
},
|
|
60
|
+
"polygon-amoy": {
|
|
61
|
+
...polygonAmoy,
|
|
62
|
+
key: "polygon-amoy"
|
|
63
|
+
},
|
|
64
|
+
"arb-sepolia": {
|
|
65
|
+
...arbitrumSepolia,
|
|
66
|
+
key: "arb-sepolia"
|
|
67
|
+
},
|
|
68
|
+
"zora-sepolia": {
|
|
69
|
+
...zoraSepolia,
|
|
70
|
+
key: "zora-sepolia"
|
|
71
|
+
},
|
|
72
|
+
"base-sepolia": {
|
|
73
|
+
...baseSepolia,
|
|
74
|
+
key: "base-sepolia"
|
|
75
|
+
},
|
|
76
|
+
"tempo-moderato": {
|
|
77
|
+
...tempoModerato,
|
|
78
|
+
key: "tempo-moderato"
|
|
79
|
+
},
|
|
80
|
+
"avax-fuji": {
|
|
81
|
+
...avalancheFuji,
|
|
82
|
+
key: "avax-fuji"
|
|
83
|
+
},
|
|
84
|
+
"unichain-sepolia": {
|
|
85
|
+
...unichainSepolia,
|
|
86
|
+
key: "unichain-sepolia"
|
|
87
|
+
},
|
|
88
|
+
"monad-testnet": {
|
|
89
|
+
...monadTestnet,
|
|
90
|
+
key: "monad-testnet"
|
|
91
|
+
},
|
|
92
|
+
"celo-sepolia": {
|
|
93
|
+
...celoSepolia,
|
|
94
|
+
key: "celo-sepolia"
|
|
95
|
+
},
|
|
96
|
+
"scroll-sepolia": {
|
|
97
|
+
...scrollSepolia,
|
|
98
|
+
key: "scroll-sepolia"
|
|
99
|
+
},
|
|
100
|
+
"arc-testnet": {
|
|
101
|
+
...arcTestnet,
|
|
102
|
+
key: "arc-testnet"
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
const SupportedChain = Schema.Literals([...Object.keys(supportedMainnetChains), ...Object.keys(supportedTestnetChains)]);
|
|
106
|
+
const supportedChains = {
|
|
107
|
+
...supportedMainnetChains,
|
|
108
|
+
...supportedTestnetChains
|
|
109
|
+
};
|
|
110
|
+
const getChain = (chain) => {
|
|
111
|
+
return supportedChains[chain];
|
|
112
|
+
};
|
|
113
|
+
const getChainFromId = (chainId) => {
|
|
114
|
+
return Object.values(supportedChains).find((c) => c.id === chainId);
|
|
115
|
+
};
|
|
116
|
+
const chainIdToChainName = (chainId) => {
|
|
117
|
+
const chain = getChainFromId(chainId);
|
|
118
|
+
if (!chain) throw new Error(`Chain with id ${chainId} not found`);
|
|
119
|
+
return chain.key;
|
|
120
|
+
};
|
|
121
|
+
//#endregion
|
|
122
|
+
export { SupportedChain, chainIdToChainName, getChain, getChainFromId, supportedChains };
|
|
123
|
+
|
|
124
|
+
//# sourceMappingURL=chain.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.mjs","names":[],"sources":["../../src/schema/chain.ts"],"sourcesContent":["import { Schema } from \"effect\";\nimport {\n arbitrum,\n arbitrumSepolia,\n arcTestnet,\n avalanche,\n avalancheFuji,\n base,\n baseSepolia,\n type Chain,\n celo,\n celoSepolia,\n mainnet,\n monad,\n monadTestnet,\n optimism,\n optimismSepolia,\n polygon,\n polygonAmoy,\n scroll,\n scrollSepolia,\n sepolia,\n tempoModerato,\n unichain,\n unichainSepolia,\n zora,\n zoraSepolia,\n} from \"viem/chains\";\n\nexport type ChainWithMetadata = Chain & {\n key: string;\n};\n\nconst supportedMainnetChains = {\n \"eth-mainnet\": {\n ...mainnet,\n key: \"eth-mainnet\",\n },\n \"opt-mainnet\": {\n ...optimism,\n key: \"opt-mainnet\",\n },\n \"polygon-mainnet\": {\n ...polygon,\n key: \"polygon-mainnet\",\n },\n \"arb-mainnet\": {\n ...arbitrum,\n key: \"arb-mainnet\",\n },\n \"zora-mainnet\": {\n ...zora,\n key: \"zora-mainnet\",\n },\n \"base-mainnet\": {\n ...base,\n key: \"base-mainnet\",\n },\n \"avax-mainnet\": {\n ...avalanche,\n key: \"avax-mainnet\",\n },\n \"unichain-mainnet\": {\n ...unichain,\n key: \"unichain-mainnet\",\n },\n \"celo-mainnet\": {\n ...celo,\n key: \"celo-mainnet\",\n },\n \"scroll-mainnet\": {\n ...scroll,\n key: \"scroll-mainnet\",\n },\n \"monad-mainnet\": {\n ...monad,\n key: \"monad-mainnet\",\n },\n} as const;\n\nconst supportedTestnetChains = {\n \"eth-sepolia\": {\n ...sepolia,\n key: \"eth-sepolia\",\n },\n \"opt-sepolia\": {\n ...optimismSepolia,\n key: \"opt-sepolia\",\n },\n \"polygon-amoy\": {\n ...polygonAmoy,\n key: \"polygon-amoy\",\n },\n \"arb-sepolia\": {\n ...arbitrumSepolia,\n key: \"arb-sepolia\",\n },\n \"zora-sepolia\": {\n ...zoraSepolia,\n key: \"zora-sepolia\",\n },\n \"base-sepolia\": {\n ...baseSepolia,\n key: \"base-sepolia\",\n },\n \"tempo-moderato\": {\n ...tempoModerato,\n key: \"tempo-moderato\",\n },\n \"avax-fuji\": {\n ...avalancheFuji,\n key: \"avax-fuji\",\n },\n \"unichain-sepolia\": {\n ...unichainSepolia,\n key: \"unichain-sepolia\",\n },\n \"monad-testnet\": {\n ...monadTestnet,\n key: \"monad-testnet\",\n },\n \"celo-sepolia\": {\n ...celoSepolia,\n key: \"celo-sepolia\",\n },\n \"scroll-sepolia\": {\n ...scrollSepolia,\n key: \"scroll-sepolia\",\n },\n \"arc-testnet\": {\n ...arcTestnet,\n key: \"arc-testnet\",\n },\n} as const;\n\ntype SupportedTestnetChain = keyof typeof supportedMainnetChains;\ntype SupportedMainnetChain = keyof typeof supportedTestnetChains;\n\nexport const SupportedChain = Schema.Literals([\n ...(Object.keys(supportedMainnetChains) as SupportedMainnetChain[]),\n ...(Object.keys(supportedTestnetChains) as SupportedTestnetChain[]),\n]);\n\nexport type SupportedChain = typeof SupportedChain.Type;\n\nexport const supportedChains = {\n ...supportedMainnetChains,\n ...supportedTestnetChains,\n} as Record<SupportedChain, ChainWithMetadata>;\n\nexport const getChain = (chain: SupportedChain): ChainWithMetadata => {\n return supportedChains[chain];\n};\n\nexport const getChainFromId = (\n chainId: number,\n): ChainWithMetadata | undefined => {\n return Object.values(supportedChains).find((c) => c.id === chainId);\n};\n\nexport const chainIdToChainName = (chainId: number) => {\n const chain = getChainFromId(chainId);\n\n if (!chain) {\n throw new Error(`Chain with id ${chainId} not found`);\n }\n\n return chain.key as SupportedChain;\n};\n"],"mappings":";;;;AAiCA,MAAM,yBAAyB;CAC7B,eAAe;EACb,GAAG;EACH,KAAK;EACN;CACD,eAAe;EACb,GAAG;EACH,KAAK;EACN;CACD,mBAAmB;EACjB,GAAG;EACH,KAAK;EACN;CACD,eAAe;EACb,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,oBAAoB;EAClB,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,kBAAkB;EAChB,GAAG;EACH,KAAK;EACN;CACD,iBAAiB;EACf,GAAG;EACH,KAAK;EACN;CACF;AAED,MAAM,yBAAyB;CAC7B,eAAe;EACb,GAAG;EACH,KAAK;EACN;CACD,eAAe;EACb,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,eAAe;EACb,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,kBAAkB;EAChB,GAAG;EACH,KAAK;EACN;CACD,aAAa;EACX,GAAG;EACH,KAAK;EACN;CACD,oBAAoB;EAClB,GAAG;EACH,KAAK;EACN;CACD,iBAAiB;EACf,GAAG;EACH,KAAK;EACN;CACD,gBAAgB;EACd,GAAG;EACH,KAAK;EACN;CACD,kBAAkB;EAChB,GAAG;EACH,KAAK;EACN;CACD,eAAe;EACb,GAAG;EACH,KAAK;EACN;CACF;AAKD,MAAa,iBAAiB,OAAO,SAAS,CAC5C,GAAI,OAAO,KAAK,uBAAuB,EACvC,GAAI,OAAO,KAAK,uBAAuB,CACxC,CAAC;AAIF,MAAa,kBAAkB;CAC7B,GAAG;CACH,GAAG;CACJ;AAED,MAAa,YAAY,UAA6C;AACpE,QAAO,gBAAgB;;AAGzB,MAAa,kBACX,YACkC;AAClC,QAAO,OAAO,OAAO,gBAAgB,CAAC,MAAM,MAAM,EAAE,OAAO,QAAQ;;AAGrE,MAAa,sBAAsB,YAAoB;CACrD,MAAM,QAAQ,eAAe,QAAQ;AAErC,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,iBAAiB,QAAQ,YAAY;AAGvD,QAAO,MAAM"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Schema, SchemaTransformation } from "effect";
|
|
3
|
+
//#region src/schema/common.ts
|
|
4
|
+
const BigIntFromString = Schema.String.pipe(Schema.decodeTo(Schema.BigInt, SchemaTransformation.transform({
|
|
5
|
+
encode: (v) => v.toString(),
|
|
6
|
+
decode: (v) => BigInt(v)
|
|
7
|
+
})));
|
|
8
|
+
const EthereumAddress = Schema.TemplateLiteral(["0x", Schema.String.check(Schema.isPattern(/^[0-9a-fA-F]{40}$/))]);
|
|
9
|
+
const Hex = Schema.TemplateLiteral(["0x", Schema.String.check(Schema.isPattern(/^[0-9a-fA-F]*$/))]);
|
|
10
|
+
const EntrypointVersion = Schema.Literals([
|
|
11
|
+
"0.7",
|
|
12
|
+
"0.8",
|
|
13
|
+
"0.9"
|
|
14
|
+
]);
|
|
15
|
+
const KernelVersion = Schema.Literals([
|
|
16
|
+
"0.3.0",
|
|
17
|
+
"0.3.1",
|
|
18
|
+
"0.3.2",
|
|
19
|
+
"0.3.3"
|
|
20
|
+
]);
|
|
21
|
+
const OwnerType = Schema.Literals([
|
|
22
|
+
"ecdsa",
|
|
23
|
+
"passkey",
|
|
24
|
+
"multisig"
|
|
25
|
+
]);
|
|
26
|
+
//#endregion
|
|
27
|
+
export { BigIntFromString, EntrypointVersion, EthereumAddress, Hex, KernelVersion, OwnerType };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=common.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.mjs","names":[],"sources":["../../src/schema/common.ts"],"sourcesContent":["import { Schema, SchemaTransformation } from \"effect\";\n\nexport const BigIntFromString = Schema.String.pipe(\n Schema.decodeTo(\n Schema.BigInt,\n SchemaTransformation.transform({\n encode: (v) => v.toString(),\n decode: (v) => BigInt(v),\n }),\n ),\n);\n\nexport const EthereumAddress = Schema.TemplateLiteral([\n \"0x\",\n Schema.String.check(Schema.isPattern(/^[0-9a-fA-F]{40}$/)),\n]);\n\nexport const Hex = Schema.TemplateLiteral([\n \"0x\",\n Schema.String.check(Schema.isPattern(/^[0-9a-fA-F]*$/)),\n]);\n\nexport const EntrypointVersion = Schema.Literals([\"0.7\", \"0.8\", \"0.9\"]);\nexport const KernelVersion = Schema.Literals([\n \"0.3.0\",\n \"0.3.1\",\n \"0.3.2\",\n \"0.3.3\",\n]);\nexport const OwnerType = Schema.Literals([\"ecdsa\", \"passkey\", \"multisig\"]);\n\nexport type EntrypointVersion = typeof EntrypointVersion.Type;\nexport type KernelVersion = typeof KernelVersion.Type;\nexport type OwnerType = typeof OwnerType.Type;\nexport type Hex = typeof Hex.Type;\nexport type EthereumAddress = typeof EthereumAddress.Type;\n"],"mappings":";;;AAEA,MAAa,mBAAmB,OAAO,OAAO,KAC5C,OAAO,SACL,OAAO,QACP,qBAAqB,UAAU;CAC7B,SAAS,MAAM,EAAE,UAAU;CAC3B,SAAS,MAAM,OAAO,EAAE;CACzB,CAAC,CACH,CACF;AAED,MAAa,kBAAkB,OAAO,gBAAgB,CACpD,MACA,OAAO,OAAO,MAAM,OAAO,UAAU,oBAAoB,CAAC,CAC3D,CAAC;AAEF,MAAa,MAAM,OAAO,gBAAgB,CACxC,MACA,OAAO,OAAO,MAAM,OAAO,UAAU,iBAAiB,CAAC,CACxD,CAAC;AAEF,MAAa,oBAAoB,OAAO,SAAS;CAAC;CAAO;CAAO;CAAM,CAAC;AACvE,MAAa,gBAAgB,OAAO,SAAS;CAC3C;CACA;CACA;CACA;CACD,CAAC;AACF,MAAa,YAAY,OAAO,SAAS;CAAC;CAAS;CAAW;CAAW,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { BigIntFromString, EthereumAddress, Hex } from "./common.mjs";
|
|
3
|
+
import { Effect, Schema, Struct } from "effect";
|
|
4
|
+
//#region src/schema/policy.ts
|
|
5
|
+
const SudoPolicyParams = Schema.Struct({ type: Schema.Literal("sudo") });
|
|
6
|
+
const TimestampPolicyParams = Schema.Struct({
|
|
7
|
+
type: Schema.Literal("timestamp"),
|
|
8
|
+
validAfter: Schema.optional(Schema.Number).pipe(Schema.withDecodingDefault(Effect.succeed(0))).annotate({ description: "The timestamp in seconds after which signer is valid. If not provided, the signer is valid immediately." }),
|
|
9
|
+
validUntil: Schema.optional(Schema.Number).pipe(Schema.withDecodingDefault(Effect.succeed(0))).annotate({ description: "The timestamp in seconds until which signer is valid. If not provided, the signer is valid indefinitely." })
|
|
10
|
+
});
|
|
11
|
+
const SignatureCallerPolicyParams = Schema.Struct({
|
|
12
|
+
type: Schema.Literal("signature-caller"),
|
|
13
|
+
allowedCallers: Schema.mutable(Schema.Array(EthereumAddress)).annotate({ description: "List of addresses that are allowed to validate messages signed by the signer." })
|
|
14
|
+
});
|
|
15
|
+
const RateLimitPolicyParams = Schema.Struct({
|
|
16
|
+
type: Schema.Literal("rate-limit"),
|
|
17
|
+
interval: Schema.optional(Schema.Number).annotate({ description: "Length of interval in seconds" }),
|
|
18
|
+
count: Schema.Number.annotate({ description: "The number of calls allowed within the interval" }),
|
|
19
|
+
startAt: Schema.optional(Schema.Number).annotate({ description: "The timestamp in seconds at which the rate limit starts. Before this signer cannot sign any UserOperations" })
|
|
20
|
+
});
|
|
21
|
+
const GasPolicyParams = Schema.Struct({
|
|
22
|
+
type: Schema.Literal("gas"),
|
|
23
|
+
amount: Schema.optional(BigIntFromString).annotate({ description: "Amount, in wei that the signer can spend on gas, in total across all UserOps it sends." }),
|
|
24
|
+
enforcePaymaster: Schema.optional(Schema.Boolean).annotate({
|
|
25
|
+
description: "If set to true, enforce that a paymaster must be used.",
|
|
26
|
+
default: false
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
const CallPolicyVersion = Schema.Literals([
|
|
30
|
+
"0.0.1",
|
|
31
|
+
"0.0.2",
|
|
32
|
+
"0.0.3",
|
|
33
|
+
"0.0.4",
|
|
34
|
+
"0.0.5"
|
|
35
|
+
]);
|
|
36
|
+
const CallType = Schema.Literals([
|
|
37
|
+
"call",
|
|
38
|
+
"delegatecall",
|
|
39
|
+
"batch-call"
|
|
40
|
+
]);
|
|
41
|
+
const ParamCondition = Schema.Literals([
|
|
42
|
+
"EQUAL",
|
|
43
|
+
"GREATER_THAN",
|
|
44
|
+
"LESS_THAN",
|
|
45
|
+
"GREATER_THAN_OR_EQUAL",
|
|
46
|
+
"LESS_THAN_OR_EQUAL",
|
|
47
|
+
"NOT_EQUAL",
|
|
48
|
+
"ONE_OF",
|
|
49
|
+
"SLICE_EQUAL"
|
|
50
|
+
]);
|
|
51
|
+
const ConditionValue = Schema.Union([
|
|
52
|
+
Schema.Struct({
|
|
53
|
+
condition: ParamCondition.pick(["ONE_OF"]),
|
|
54
|
+
value: Schema.mutable(Schema.Array(Schema.Any)).annotate({ description: "The value of the argument to use with the operator." })
|
|
55
|
+
}),
|
|
56
|
+
Schema.Struct({
|
|
57
|
+
condition: ParamCondition.pick(["SLICE_EQUAL"]),
|
|
58
|
+
value: Schema.Any.annotate({ description: "The value of the argument to use with the operator." }),
|
|
59
|
+
start: Schema.Number,
|
|
60
|
+
length: Schema.Number
|
|
61
|
+
}),
|
|
62
|
+
Schema.Struct({
|
|
63
|
+
condition: ParamCondition.pick([
|
|
64
|
+
"EQUAL",
|
|
65
|
+
"GREATER_THAN",
|
|
66
|
+
"LESS_THAN",
|
|
67
|
+
"GREATER_THAN_OR_EQUAL",
|
|
68
|
+
"LESS_THAN_OR_EQUAL",
|
|
69
|
+
"NOT_EQUAL",
|
|
70
|
+
"SLICE_EQUAL"
|
|
71
|
+
]),
|
|
72
|
+
value: Schema.Any.annotate({ description: "The value of the argument to use with the operator." })
|
|
73
|
+
}),
|
|
74
|
+
Schema.Null
|
|
75
|
+
]);
|
|
76
|
+
const ParamRule = Schema.Struct({
|
|
77
|
+
condition: ParamCondition,
|
|
78
|
+
offset: Schema.Number,
|
|
79
|
+
params: Schema.Union([Hex, Schema.mutable(Schema.Array(Hex))])
|
|
80
|
+
});
|
|
81
|
+
const PermissionCore = Schema.Struct({
|
|
82
|
+
callType: Schema.optional(CallType).pipe(Schema.withDecodingDefault(Effect.succeed("call"))).annotate({
|
|
83
|
+
description: "The type of call to make",
|
|
84
|
+
default: "call"
|
|
85
|
+
}),
|
|
86
|
+
target: EthereumAddress.annotate({ description: "The target contract to call or address to send ETH to. If this is zeroAddress, then the target can be any contract as long as the ABI matches (or it can be any address if no ABI is specified)" }),
|
|
87
|
+
selector: Schema.optional(Hex).annotate({ description: "The function selector if the target is a contract" }),
|
|
88
|
+
valueLimit: Schema.optional(BigIntFromString).annotate({ description: "The maximum value in wei that can be sent to the target" }),
|
|
89
|
+
rules: Schema.optional(Schema.Array(ParamRule))
|
|
90
|
+
});
|
|
91
|
+
const PermissionManual = PermissionCore;
|
|
92
|
+
const PermissionWithABI = PermissionCore.mapFields(Struct.omit(["rules"])).mapFields(Struct.assign({
|
|
93
|
+
abi: Schema.mutable(Schema.Array(Schema.Any)).annotate({ description: "The ABI of the target contract" }),
|
|
94
|
+
functionName: Schema.String.annotate({ description: "The function name" }),
|
|
95
|
+
args: Schema.optional(Schema.Array(ConditionValue)).annotate({ description: "An array of conditions, each corresponding to an argument, in the order that the arguments are laid out. use null to skip an argument." })
|
|
96
|
+
}));
|
|
97
|
+
const Permission = Schema.Union([PermissionManual, PermissionWithABI]);
|
|
98
|
+
const CallPolicyParams = Schema.Struct({
|
|
99
|
+
type: Schema.Literal("call"),
|
|
100
|
+
policyVersion: CallPolicyVersion,
|
|
101
|
+
permissions: Schema.optional(Schema.Array(Permission))
|
|
102
|
+
});
|
|
103
|
+
const PolicyParams = Schema.Union([
|
|
104
|
+
SudoPolicyParams,
|
|
105
|
+
TimestampPolicyParams,
|
|
106
|
+
SignatureCallerPolicyParams,
|
|
107
|
+
RateLimitPolicyParams,
|
|
108
|
+
GasPolicyParams,
|
|
109
|
+
CallPolicyParams
|
|
110
|
+
]);
|
|
111
|
+
//#endregion
|
|
112
|
+
export { CallPolicyParams, CallPolicyVersion, GasPolicyParams, ParamCondition, Permission, PermissionManual, PermissionWithABI, PolicyParams, RateLimitPolicyParams, SignatureCallerPolicyParams, SudoPolicyParams, TimestampPolicyParams };
|
|
113
|
+
|
|
114
|
+
//# sourceMappingURL=policy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.mjs","names":[],"sources":["../../src/schema/policy.ts"],"sourcesContent":["import { Effect, Schema, Struct } from \"effect\";\n\nimport { BigIntFromString, EthereumAddress, Hex } from \"./common\";\n\nexport const SudoPolicyParams = Schema.Struct({\n type: Schema.Literal(\"sudo\"),\n});\n\nexport const TimestampPolicyParams = Schema.Struct({\n type: Schema.Literal(\"timestamp\"),\n validAfter: Schema.optional(Schema.Number)\n .pipe(Schema.withDecodingDefault(Effect.succeed(0)))\n .annotate({\n description:\n \"The timestamp in seconds after which signer is valid. If not provided, the signer is valid immediately.\",\n }),\n validUntil: Schema.optional(Schema.Number)\n .pipe(Schema.withDecodingDefault(Effect.succeed(0)))\n .annotate({\n description:\n \"The timestamp in seconds until which signer is valid. If not provided, the signer is valid indefinitely.\",\n }),\n});\n\nexport const SignatureCallerPolicyParams = Schema.Struct({\n type: Schema.Literal(\"signature-caller\"),\n allowedCallers: Schema.mutable(Schema.Array(EthereumAddress)).annotate({\n description:\n \"List of addresses that are allowed to validate messages signed by the signer.\",\n }),\n});\n\nexport const RateLimitPolicyParams = Schema.Struct({\n type: Schema.Literal(\"rate-limit\"),\n interval: Schema.optional(Schema.Number).annotate({\n description: \"Length of interval in seconds\",\n }),\n count: Schema.Number.annotate({\n description: \"The number of calls allowed within the interval\",\n }),\n startAt: Schema.optional(Schema.Number).annotate({\n description:\n \"The timestamp in seconds at which the rate limit starts. Before this signer cannot sign any UserOperations\",\n }),\n});\n\nexport const GasPolicyParams = Schema.Struct({\n type: Schema.Literal(\"gas\"),\n amount: Schema.optional(BigIntFromString).annotate({\n description:\n \"Amount, in wei that the signer can spend on gas, in total across all UserOps it sends.\",\n }),\n enforcePaymaster: Schema.optional(Schema.Boolean).annotate({\n description: \"If set to true, enforce that a paymaster must be used.\",\n default: false,\n }),\n});\n\nexport const CallPolicyVersion = Schema.Literals([\n \"0.0.1\",\n \"0.0.2\",\n \"0.0.3\",\n \"0.0.4\",\n \"0.0.5\",\n]);\n\nexport type CallPolicyVersion = typeof CallPolicyVersion.Type;\n\nconst CallType = Schema.Literals([\"call\", \"delegatecall\", \"batch-call\"]);\n\nexport const ParamCondition = Schema.Literals([\n \"EQUAL\",\n \"GREATER_THAN\",\n \"LESS_THAN\",\n \"GREATER_THAN_OR_EQUAL\",\n \"LESS_THAN_OR_EQUAL\",\n \"NOT_EQUAL\",\n \"ONE_OF\",\n \"SLICE_EQUAL\",\n]);\n\nexport type ParamCondition = typeof ParamCondition.Type;\n\nconst ConditionValue = Schema.Union([\n Schema.Struct({\n condition: ParamCondition.pick([\"ONE_OF\"]),\n value: Schema.mutable(Schema.Array(Schema.Any)).annotate({\n description: \"The value of the argument to use with the operator.\",\n }),\n }),\n Schema.Struct({\n condition: ParamCondition.pick([\"SLICE_EQUAL\"]),\n value: Schema.Any.annotate({\n description: \"The value of the argument to use with the operator.\",\n }),\n start: Schema.Number,\n length: Schema.Number,\n }),\n Schema.Struct({\n condition: ParamCondition.pick([\n \"EQUAL\",\n \"GREATER_THAN\",\n \"LESS_THAN\",\n \"GREATER_THAN_OR_EQUAL\",\n \"LESS_THAN_OR_EQUAL\",\n \"NOT_EQUAL\",\n \"SLICE_EQUAL\",\n ]),\n value: Schema.Any.annotate({\n description: \"The value of the argument to use with the operator.\",\n }),\n }),\n Schema.Null,\n]);\n\nconst ParamRule = Schema.Struct({\n condition: ParamCondition,\n offset: Schema.Number,\n params: Schema.Union([Hex, Schema.mutable(Schema.Array(Hex))]),\n});\n\nconst PermissionCore = Schema.Struct({\n callType: Schema.optional(CallType)\n .pipe(Schema.withDecodingDefault(Effect.succeed(\"call\")))\n .annotate({\n description: \"The type of call to make\",\n default: \"call\",\n }),\n target: EthereumAddress.annotate({\n description:\n \"The target contract to call or address to send ETH to. If this is zeroAddress, then the target can be any contract as long as the ABI matches (or it can be any address if no ABI is specified)\",\n }),\n selector: Schema.optional(Hex).annotate({\n description: \"The function selector if the target is a contract\",\n }),\n valueLimit: Schema.optional(BigIntFromString).annotate({\n description: \"The maximum value in wei that can be sent to the target\",\n }),\n rules: Schema.optional(Schema.Array(ParamRule)),\n});\n\nexport const PermissionManual = PermissionCore;\n\nexport const PermissionWithABI = PermissionCore.mapFields(\n Struct.omit([\"rules\"]),\n).mapFields(\n Struct.assign({\n abi: Schema.mutable(Schema.Array(Schema.Any)).annotate({\n description: \"The ABI of the target contract\",\n }),\n functionName: Schema.String.annotate({\n description: \"The function name\",\n }),\n args: Schema.optional(Schema.Array(ConditionValue)).annotate({\n description:\n \"An array of conditions, each corresponding to an argument, in the order that the arguments are laid out. use null to skip an argument.\",\n }),\n }),\n);\n\nexport const Permission = Schema.Union([PermissionManual, PermissionWithABI]);\n\nexport type PermissionManual = typeof PermissionManual.Type;\nexport type PermissionWithABI = typeof PermissionWithABI.Type;\nexport type Permission = typeof Permission.Type;\n\nexport const CallPolicyParams = Schema.Struct({\n type: Schema.Literal(\"call\"),\n policyVersion: CallPolicyVersion,\n permissions: Schema.optional(Schema.Array(Permission)),\n});\n\nexport const PolicyParams = Schema.Union([\n SudoPolicyParams,\n TimestampPolicyParams,\n SignatureCallerPolicyParams,\n RateLimitPolicyParams,\n GasPolicyParams,\n CallPolicyParams,\n]);\n\nexport type SudoPolicyParams = typeof SudoPolicyParams.Type;\nexport type TimestampPolicyParams = typeof TimestampPolicyParams.Type;\nexport type SignatureCallerPolicyParams =\n typeof SignatureCallerPolicyParams.Type;\nexport type RateLimitPolicyParams = typeof RateLimitPolicyParams.Type;\nexport type GasPolicyParams = typeof GasPolicyParams.Type;\nexport type CallPolicyParams = typeof CallPolicyParams.Type;\nexport type PolicyParams = typeof PolicyParams.Type;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { BigIntFromString, EthereumAddress, Hex } from "./common.mjs";
|
|
3
|
+
import { Schema } from "effect";
|
|
4
|
+
//#region src/schema/tx.ts
|
|
5
|
+
const Call = Schema.Struct({
|
|
6
|
+
to: EthereumAddress.annotate({ description: "The target address to call" }),
|
|
7
|
+
data: Hex.annotate({ description: "The data to send with the call" }),
|
|
8
|
+
value: Schema.optional(BigIntFromString).annotate({ description: "The value to send with the call" })
|
|
9
|
+
});
|
|
10
|
+
const Batch = Schema.Struct({
|
|
11
|
+
chainId: Schema.Int.annotate({ description: "The chain ID to execute the transaction on" }),
|
|
12
|
+
nonceKey: Schema.optional(Schema.String).annotate({ description: "The nonce key to use, for 2D Parallel transactions." }),
|
|
13
|
+
calls: Schema.mutable(Schema.Array(Call))
|
|
14
|
+
});
|
|
15
|
+
Schema.Struct({ batches: Schema.mutable(Schema.Array(Batch)) });
|
|
16
|
+
//#endregion
|
|
17
|
+
export { Batch };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=tx.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx.mjs","names":[],"sources":["../../src/schema/tx.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport { BigIntFromString, EthereumAddress, Hex } from \"./common\";\n\nexport const Call = Schema.Struct({\n to: EthereumAddress.annotate({\n description: \"The target address to call\",\n }),\n data: Hex.annotate({\n description: \"The data to send with the call\",\n }),\n value: Schema.optional(BigIntFromString).annotate({\n description: \"The value to send with the call\",\n }),\n});\n\nexport const Batch = Schema.Struct({\n chainId: Schema.Int.annotate({\n description: \"The chain ID to execute the transaction on\",\n }),\n nonceKey: Schema.optional(Schema.String).annotate({\n description: \"The nonce key to use, for 2D Parallel transactions.\",\n }),\n calls: Schema.mutable(Schema.Array(Call)),\n});\n\nexport const ExecuteTransactionParams = Schema.Struct({\n batches: Schema.mutable(Schema.Array(Batch)),\n});\n\nexport type Call = typeof Call.Type;\nexport type Batch = typeof Batch.Type;\nexport type ExecuteTransactionParams = typeof ExecuteTransactionParams.Type;\n"],"mappings":";;;;AAIA,MAAa,OAAO,OAAO,OAAO;CAChC,IAAI,gBAAgB,SAAS,EAC3B,aAAa,8BACd,CAAC;CACF,MAAM,IAAI,SAAS,EACjB,aAAa,kCACd,CAAC;CACF,OAAO,OAAO,SAAS,iBAAiB,CAAC,SAAS,EAChD,aAAa,mCACd,CAAC;CACH,CAAC;AAEF,MAAa,QAAQ,OAAO,OAAO;CACjC,SAAS,OAAO,IAAI,SAAS,EAC3B,aAAa,8CACd,CAAC;CACF,UAAU,OAAO,SAAS,OAAO,OAAO,CAAC,SAAS,EAChD,aAAa,uDACd,CAAC;CACF,OAAO,OAAO,QAAQ,OAAO,MAAM,KAAK,CAAC;CAC1C,CAAC;AAEsC,OAAO,OAAO,EACpD,SAAS,OAAO,QAAQ,OAAO,MAAM,MAAM,CAAC,EAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["import type { Schema } from \"effect\";\n\nexport type EntityType = \"smart-account\" | \"session-key\" | \"keystore\";\n\nexport const entityName: Record<EntityType, string> = {\n keystore: \"Keystore\",\n \"session-key\": \"Session Key\",\n \"smart-account\": \"Smart Account\",\n};\n\nexport type Entity<TEntityType extends EntityType> = {\n path: string;\n content: string;\n alias: string;\n type: TEntityType;\n};\n\nexport type DeepPaths<T> = {\n [K in keyof T & string]: T[K] extends Schema.Top\n ? K\n : // biome-ignore lint/suspicious/noExplicitAny: safe\n T[K] extends Record<string, any>\n ? `${K}.${DeepPaths<T[K]>}`\n : never;\n}[keyof T & string];\n"],"mappings":";;AAIA,MAAa,aAAyC;CACpD,UAAU;CACV,eAAe;CACf,iBAAiB;CAClB"}
|
package/package.json
CHANGED
|
@@ -7,20 +7,19 @@
|
|
|
7
7
|
"url": "https://github.com/thenamespace/namera/issues"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@effect/platform-node": "4.0.0-beta.
|
|
11
|
-
"@ethereumjs/wallet": "
|
|
12
|
-
"dotenv": "
|
|
13
|
-
"effect": "4.0.0-beta.
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"viem": "^2.47.5",
|
|
10
|
+
"@effect/platform-node": "4.0.0-beta.60",
|
|
11
|
+
"@ethereumjs/wallet": "10.0.0",
|
|
12
|
+
"dotenv": "17.4.2",
|
|
13
|
+
"effect": "4.0.0-beta.60",
|
|
14
|
+
"tslib": "2.8.1",
|
|
15
|
+
"viem": "2.48.8",
|
|
17
16
|
"@namera-ai/sdk": "0.1.0"
|
|
18
17
|
},
|
|
19
18
|
"description": "Agent-first smart account interface with session keys and scoped permissions, enabling fully local multichain automation.",
|
|
20
19
|
"devDependencies": {
|
|
21
|
-
"@types/node": "
|
|
22
|
-
"tsdown": "
|
|
23
|
-
"typescript": "
|
|
20
|
+
"@types/node": "25.6.0",
|
|
21
|
+
"tsdown": "0.21.10",
|
|
22
|
+
"typescript": "6.0.3",
|
|
24
23
|
"@namera-ai/config": "1.0.0"
|
|
25
24
|
},
|
|
26
25
|
"files": [
|
|
@@ -54,7 +53,7 @@
|
|
|
54
53
|
},
|
|
55
54
|
"sideEffects": false,
|
|
56
55
|
"type": "module",
|
|
57
|
-
"version": "0.1.
|
|
56
|
+
"version": "0.1.4",
|
|
58
57
|
"scripts": {
|
|
59
58
|
"build": "tsdown",
|
|
60
59
|
"dev": "tsdown --watch",
|