@namera-ai/cli 0.1.4 → 1.0.0
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/README.md +91 -221
- package/dist/index.js +1660 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -50
- package/LICENSE +0 -201
- package/dist/commands/index.mjs +0 -21
- package/dist/commands/index.mjs.map +0 -1
- package/dist/commands/keystore/create.mjs +0 -74
- package/dist/commands/keystore/create.mjs.map +0 -1
- package/dist/commands/keystore/decrypt.mjs +0 -71
- package/dist/commands/keystore/decrypt.mjs.map +0 -1
- package/dist/commands/keystore/import.mjs +0 -84
- package/dist/commands/keystore/import.mjs.map +0 -1
- package/dist/commands/keystore/index.mjs +0 -28
- package/dist/commands/keystore/index.mjs.map +0 -1
- package/dist/commands/keystore/info.mjs +0 -62
- package/dist/commands/keystore/info.mjs.map +0 -1
- package/dist/commands/keystore/list.mjs +0 -46
- package/dist/commands/keystore/list.mjs.map +0 -1
- package/dist/commands/keystore/remove.mjs +0 -51
- package/dist/commands/keystore/remove.mjs.map +0 -1
- package/dist/commands/mcp/index.mjs +0 -13
- package/dist/commands/mcp/index.mjs.map +0 -1
- package/dist/commands/mcp/start.mjs +0 -82
- package/dist/commands/mcp/start.mjs.map +0 -1
- package/dist/commands/schema/index.mjs +0 -53
- package/dist/commands/schema/index.mjs.map +0 -1
- package/dist/commands/session-key/create/index.mjs +0 -87
- package/dist/commands/session-key/create/index.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/base.mjs +0 -52
- package/dist/commands/session-key/create/prompts/base.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/call.mjs +0 -85
- package/dist/commands/session-key/create/prompts/call.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/common.mjs +0 -27
- package/dist/commands/session-key/create/prompts/common.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/gas.mjs +0 -19
- package/dist/commands/session-key/create/prompts/gas.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/index.mjs +0 -44
- package/dist/commands/session-key/create/prompts/index.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/rate-limit.mjs +0 -40
- package/dist/commands/session-key/create/prompts/rate-limit.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/signature-caller.mjs +0 -26
- package/dist/commands/session-key/create/prompts/signature-caller.mjs.map +0 -1
- package/dist/commands/session-key/create/prompts/timestamp.mjs +0 -32
- package/dist/commands/session-key/create/prompts/timestamp.mjs.map +0 -1
- package/dist/commands/session-key/index.mjs +0 -26
- package/dist/commands/session-key/index.mjs.map +0 -1
- package/dist/commands/session-key/info.mjs +0 -64
- package/dist/commands/session-key/info.mjs.map +0 -1
- package/dist/commands/session-key/list.mjs +0 -54
- package/dist/commands/session-key/list.mjs.map +0 -1
- package/dist/commands/session-key/remove.mjs +0 -51
- package/dist/commands/session-key/remove.mjs.map +0 -1
- package/dist/commands/session-key/status.mjs +0 -64
- package/dist/commands/session-key/status.mjs.map +0 -1
- package/dist/commands/smart-account/create.mjs +0 -94
- package/dist/commands/smart-account/create.mjs.map +0 -1
- package/dist/commands/smart-account/import.mjs +0 -45
- package/dist/commands/smart-account/import.mjs.map +0 -1
- package/dist/commands/smart-account/index.mjs +0 -30
- package/dist/commands/smart-account/index.mjs.map +0 -1
- package/dist/commands/smart-account/info.mjs +0 -66
- package/dist/commands/smart-account/info.mjs.map +0 -1
- package/dist/commands/smart-account/list.mjs +0 -48
- package/dist/commands/smart-account/list.mjs.map +0 -1
- package/dist/commands/smart-account/remove.mjs +0 -54
- package/dist/commands/smart-account/remove.mjs.map +0 -1
- package/dist/commands/smart-account/status.mjs +0 -63
- package/dist/commands/smart-account/status.mjs.map +0 -1
- package/dist/dto/index.mjs +0 -6
- package/dist/dto/keystore.mjs +0 -44
- package/dist/dto/keystore.mjs.map +0 -1
- package/dist/dto/mcp.mjs +0 -13
- package/dist/dto/mcp.mjs.map +0 -1
- package/dist/dto/session-key.mjs +0 -54
- package/dist/dto/session-key.mjs.map +0 -1
- package/dist/dto/smart-account.mjs +0 -45
- package/dist/dto/smart-account.mjs.map +0 -1
- package/dist/flags/global.mjs +0 -29
- package/dist/flags/global.mjs.map +0 -1
- package/dist/flags/shared.mjs +0 -11
- package/dist/flags/shared.mjs.map +0 -1
- package/dist/helpers/humanize.mjs +0 -153
- package/dist/helpers/humanize.mjs.map +0 -1
- package/dist/helpers/paths.mjs +0 -31
- package/dist/helpers/paths.mjs.map +0 -1
- package/dist/helpers/policy.mjs +0 -89
- package/dist/helpers/policy.mjs.map +0 -1
- package/dist/helpers/pretty.mjs +0 -71
- package/dist/helpers/pretty.mjs.map +0 -1
- package/dist/index.d.mts +0 -2
- package/dist/index.mjs +0 -36
- package/dist/index.mjs.map +0 -1
- package/dist/layers/config.mjs +0 -124
- package/dist/layers/config.mjs.map +0 -1
- package/dist/layers/index.mjs +0 -11
- package/dist/layers/keystore.mjs +0 -225
- package/dist/layers/keystore.mjs.map +0 -1
- package/dist/layers/mcp-context.mjs +0 -8
- package/dist/layers/mcp-context.mjs.map +0 -1
- package/dist/layers/mcp.mjs +0 -31
- package/dist/layers/mcp.mjs.map +0 -1
- package/dist/layers/output.mjs +0 -21
- package/dist/layers/output.mjs.map +0 -1
- package/dist/layers/prompt.mjs +0 -78
- package/dist/layers/prompt.mjs.map +0 -1
- package/dist/layers/session-key.mjs +0 -218
- package/dist/layers/session-key.mjs.map +0 -1
- package/dist/layers/smart-account.mjs +0 -175
- package/dist/layers/smart-account.mjs.map +0 -1
- package/dist/layers/web3.mjs +0 -83
- package/dist/layers/web3.mjs.map +0 -1
- package/dist/mcp/helpers/common.mjs +0 -9
- package/dist/mcp/helpers/common.mjs.map +0 -1
- package/dist/mcp/helpers/index.mjs +0 -4
- package/dist/mcp/helpers/session-key.mjs +0 -129
- package/dist/mcp/helpers/session-key.mjs.map +0 -1
- package/dist/mcp/index.mjs +0 -43
- package/dist/mcp/index.mjs.map +0 -1
- package/dist/mcp/mcp.mjs +0 -15
- package/dist/mcp/mcp.mjs.map +0 -1
- package/dist/mcp/tools/account/address.mjs +0 -20
- package/dist/mcp/tools/account/address.mjs.map +0 -1
- package/dist/mcp/tools/account/get-balance.mjs +0 -54
- package/dist/mcp/tools/account/get-balance.mjs.map +0 -1
- package/dist/mcp/tools/account/index.mjs +0 -15
- package/dist/mcp/tools/account/index.mjs.map +0 -1
- package/dist/mcp/tools/read/index.mjs +0 -11
- package/dist/mcp/tools/read/index.mjs.map +0 -1
- package/dist/mcp/tools/read/read-contract.mjs +0 -49
- package/dist/mcp/tools/read/read-contract.mjs.map +0 -1
- package/dist/mcp/tools/transaction/execute-transaction.mjs +0 -38
- package/dist/mcp/tools/transaction/execute-transaction.mjs.map +0 -1
- package/dist/mcp/tools/transaction/index.mjs +0 -15
- package/dist/mcp/tools/transaction/index.mjs.map +0 -1
- package/dist/mcp/tools/transaction/native-transfer.mjs +0 -59
- package/dist/mcp/tools/transaction/native-transfer.mjs.map +0 -1
- package/dist/schema/chain.mjs +0 -124
- package/dist/schema/chain.mjs.map +0 -1
- package/dist/schema/common.mjs +0 -29
- package/dist/schema/common.mjs.map +0 -1
- package/dist/schema/index.mjs +0 -5
- package/dist/schema/policy.mjs +0 -114
- package/dist/schema/policy.mjs.map +0 -1
- package/dist/schema/tx.mjs +0 -19
- package/dist/schema/tx.mjs.map +0 -1
- package/dist/types/index.mjs +0 -11
- package/dist/types/index.mjs.map +0 -1
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { policyChoicePrompt } from "./base.mjs";
|
|
3
|
-
import { getCallPolicyParams } from "./call.mjs";
|
|
4
|
-
import { getGasPolicyParams } from "./gas.mjs";
|
|
5
|
-
import { getRateLimitPolicyParams } from "./rate-limit.mjs";
|
|
6
|
-
import { getSignatureCallerPolicyParams } from "./signature-caller.mjs";
|
|
7
|
-
import { getTimestampPolicyParams } from "./timestamp.mjs";
|
|
8
|
-
import { Effect } from "effect";
|
|
9
|
-
import { Prompt } from "effect/unstable/cli";
|
|
10
|
-
//#region src/commands/session-key/create/prompts/index.ts
|
|
11
|
-
const getPoliciesFromUser = () => Effect.gen(function* () {
|
|
12
|
-
const policyParams = [];
|
|
13
|
-
while (true) {
|
|
14
|
-
if (policyParams.length > 0) {
|
|
15
|
-
if (!(yield* Prompt.confirm({ message: "Do you want to add another policy?" }))) break;
|
|
16
|
-
}
|
|
17
|
-
const policyType = yield* policyChoicePrompt(policyParams);
|
|
18
|
-
if (policyType === "sudo") {
|
|
19
|
-
policyParams.push({ type: "sudo" });
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
if (policyType === "timestamp") {
|
|
23
|
-
const res = yield* getTimestampPolicyParams;
|
|
24
|
-
policyParams.push(res);
|
|
25
|
-
} else if (policyType === "call") {
|
|
26
|
-
const res = yield* getCallPolicyParams;
|
|
27
|
-
policyParams.push(res);
|
|
28
|
-
} else if (policyType === "gas") {
|
|
29
|
-
const res = yield* getGasPolicyParams;
|
|
30
|
-
policyParams.push(res);
|
|
31
|
-
} else if (policyType === "rate-limit") {
|
|
32
|
-
const res = yield* getRateLimitPolicyParams;
|
|
33
|
-
policyParams.push(res);
|
|
34
|
-
} else if (policyType === "signature-caller") {
|
|
35
|
-
const res = yield* getSignatureCallerPolicyParams;
|
|
36
|
-
policyParams.push(res);
|
|
37
|
-
} else break;
|
|
38
|
-
}
|
|
39
|
-
return policyParams;
|
|
40
|
-
});
|
|
41
|
-
//#endregion
|
|
42
|
-
export { getPoliciesFromUser };
|
|
43
|
-
|
|
44
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport type { PolicyParams } from \"@/schema\";\n\nimport { policyChoicePrompt } from \"./base\";\nimport { getCallPolicyParams } from \"./call\";\nimport { getGasPolicyParams } from \"./gas\";\nimport { getRateLimitPolicyParams } from \"./rate-limit\";\nimport { getSignatureCallerPolicyParams } from \"./signature-caller\";\nimport { getTimestampPolicyParams } from \"./timestamp\";\n\nexport const getPoliciesFromUser = () =>\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ok\n Effect.gen(function* () {\n const policyParams: PolicyParams[] = [];\n\n while (true) {\n if (policyParams.length > 0) {\n const addMore = yield* Prompt.confirm({\n message: \"Do you want to add another policy?\",\n });\n if (!addMore) break;\n }\n\n const policyType = yield* policyChoicePrompt(policyParams);\n\n if (policyType === \"sudo\") {\n policyParams.push({ type: \"sudo\" });\n // If sudo is selected, no need to ask for other policies\n break;\n }\n\n if (policyType === \"timestamp\") {\n const res = yield* getTimestampPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"call\") {\n const res = yield* getCallPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"gas\") {\n const res = yield* getGasPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"rate-limit\") {\n const res = yield* getRateLimitPolicyParams;\n policyParams.push(res);\n } else if (policyType === \"signature-caller\") {\n const res = yield* getSignatureCallerPolicyParams;\n policyParams.push(res);\n } else {\n break;\n }\n }\n\n return policyParams;\n });\n"],"mappings":";;;;;;;;;;AAYA,MAAa,4BAEX,OAAO,IAAI,aAAa;CACtB,MAAM,eAA+B,EAAE;AAEvC,QAAO,MAAM;AACX,MAAI,aAAa,SAAS,GAIxB;OAAI,EAAC,OAHkB,OAAO,QAAQ,EACpC,SAAS,sCACV,CAAC,EACY;;EAGhB,MAAM,aAAa,OAAO,mBAAmB,aAAa;AAE1D,MAAI,eAAe,QAAQ;AACzB,gBAAa,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEnC;;AAGF,MAAI,eAAe,aAAa;GAC9B,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,QAAQ;GAChC,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,OAAO;GAC/B,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,cAAc;GACtC,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;aACb,eAAe,oBAAoB;GAC5C,MAAM,MAAM,OAAO;AACnB,gBAAa,KAAK,IAAI;QAEtB;;AAIJ,QAAO;EACP"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Duration, Effect } from "effect";
|
|
3
|
-
import { Prompt } from "effect/unstable/cli";
|
|
4
|
-
//#region src/commands/session-key/create/prompts/rate-limit.ts
|
|
5
|
-
/** biome-ignore-all lint/suspicious/noExplicitAny: safe */
|
|
6
|
-
const getRateLimitPolicyParams = Effect.gen(function* () {
|
|
7
|
-
const interval = yield* Prompt.text({
|
|
8
|
-
message: "Duration for which rate limit is enforced? (e.g. 1 hour, 1 day, 1 week)",
|
|
9
|
-
validate: (v) => Effect.gen(function* () {
|
|
10
|
-
if (Duration.fromInput(v)._tag === "None") return yield* Effect.fail("Invalid duration");
|
|
11
|
-
return v;
|
|
12
|
-
})
|
|
13
|
-
});
|
|
14
|
-
const intervalDuration = Duration.fromInputUnsafe(interval);
|
|
15
|
-
const count = yield* Prompt.integer({
|
|
16
|
-
message: "Number of requests allowed per interval.",
|
|
17
|
-
validate: (v) => Effect.gen(function* () {
|
|
18
|
-
if (v < 1) return yield* Effect.fail("Count must be greater than 0");
|
|
19
|
-
return v;
|
|
20
|
-
})
|
|
21
|
-
});
|
|
22
|
-
const startAt = yield* Prompt.date({
|
|
23
|
-
initial: /* @__PURE__ */ new Date(),
|
|
24
|
-
message: "Date at which the rate limit is enforced.",
|
|
25
|
-
validate: (d) => Effect.gen(function* () {
|
|
26
|
-
if (d < /* @__PURE__ */ new Date()) return yield* Effect.fail("Date must be in the future");
|
|
27
|
-
return d;
|
|
28
|
-
})
|
|
29
|
-
});
|
|
30
|
-
return {
|
|
31
|
-
type: "rate-limit",
|
|
32
|
-
count,
|
|
33
|
-
interval: Duration.toMillis(intervalDuration),
|
|
34
|
-
startAt: Math.floor(startAt.getTime() / 1e3)
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
//#endregion
|
|
38
|
-
export { getRateLimitPolicyParams };
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=rate-limit.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/rate-limit.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: safe */\nimport { Duration, Effect } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport type { RateLimitPolicyParams } from \"@/schema\";\n\nexport const getRateLimitPolicyParams = Effect.gen(function* () {\n const interval = yield* Prompt.text({\n message:\n \"Duration for which rate limit is enforced? (e.g. 1 hour, 1 day, 1 week)\",\n validate: (v) =>\n Effect.gen(function* () {\n const valid = Duration.fromInput(v as any);\n if (valid._tag === \"None\") {\n return yield* Effect.fail(\"Invalid duration\");\n }\n\n return v;\n }),\n });\n\n const intervalDuration = Duration.fromInputUnsafe(interval as any);\n\n const count = yield* Prompt.integer({\n message: \"Number of requests allowed per interval.\",\n validate: (v) =>\n Effect.gen(function* () {\n if (v < 1) return yield* Effect.fail(\"Count must be greater than 0\");\n return v;\n }),\n });\n\n const startAt = yield* Prompt.date({\n initial: new Date(),\n message: \"Date at which the rate limit is enforced.\",\n validate: (d) =>\n Effect.gen(function* () {\n if (d < new Date())\n return yield* Effect.fail(\"Date must be in the future\");\n return d;\n }),\n });\n\n return {\n type: \"rate-limit\",\n count,\n interval: Duration.toMillis(intervalDuration),\n startAt: Math.floor(startAt.getTime() / 1000),\n } satisfies RateLimitPolicyParams;\n});\n"],"mappings":";;;;;AAMA,MAAa,2BAA2B,OAAO,IAAI,aAAa;CAC9D,MAAM,WAAW,OAAO,OAAO,KAAK;EAClC,SACE;EACF,WAAW,MACT,OAAO,IAAI,aAAa;AAEtB,OADc,SAAS,UAAU,EAC7B,CAAM,SAAS,OACjB,QAAO,OAAO,OAAO,KAAK,mBAAmB;AAG/C,UAAO;IACP;EACL,CAAC;CAEF,MAAM,mBAAmB,SAAS,gBAAgB,SAAgB;CAElE,MAAM,QAAQ,OAAO,OAAO,QAAQ;EAClC,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,IAAI,EAAG,QAAO,OAAO,OAAO,KAAK,+BAA+B;AACpE,UAAO;IACP;EACL,CAAC;CAEF,MAAM,UAAU,OAAO,OAAO,KAAK;EACjC,yBAAS,IAAI,MAAM;EACnB,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,oBAAI,IAAI,MAAM,CAChB,QAAO,OAAO,OAAO,KAAK,6BAA6B;AACzD,UAAO;IACP;EACL,CAAC;AAEF,QAAO;EACL,MAAM;EACN;EACA,UAAU,SAAS,SAAS,iBAAiB;EAC7C,SAAS,KAAK,MAAM,QAAQ,SAAS,GAAG,IAAK;EAC9C;EACD"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { EthereumAddress } from "../../../../schema/common.mjs";
|
|
3
|
-
import "../../../../schema/index.mjs";
|
|
4
|
-
import { Effect, Schema } from "effect";
|
|
5
|
-
import { Prompt } from "effect/unstable/cli";
|
|
6
|
-
//#region src/commands/session-key/create/prompts/signature-caller.ts
|
|
7
|
-
const getSignatureCallerPolicyParams = Effect.gen(function* () {
|
|
8
|
-
return {
|
|
9
|
-
type: "signature-caller",
|
|
10
|
-
allowedCallers: (yield* Prompt.text({
|
|
11
|
-
message: "Comma-separated list of allowed callers:",
|
|
12
|
-
validate: (v) => Effect.gen(function* () {
|
|
13
|
-
const address = v.split(",").map((a) => a.trim());
|
|
14
|
-
for (let i = 0; i < address.length; i++) {
|
|
15
|
-
const a = address[i];
|
|
16
|
-
if (Schema.decodeUnknownOption(EthereumAddress)(a)._tag === "None") return yield* Effect.fail(`Invalid Ethereum Address at index ${i}`);
|
|
17
|
-
}
|
|
18
|
-
return v;
|
|
19
|
-
})
|
|
20
|
-
})).split(",").map((a) => a.trim()).map((a) => Schema.decodeUnknownSync(EthereumAddress)(a))
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
//#endregion
|
|
24
|
-
export { getSignatureCallerPolicyParams };
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=signature-caller.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signature-caller.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/signature-caller.ts"],"sourcesContent":["import { Effect, Schema } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport { EthereumAddress, type SignatureCallerPolicyParams } from \"@/schema\";\n\nexport const getSignatureCallerPolicyParams = Effect.gen(function* () {\n const allowed = yield* Prompt.text({\n message: \"Comma-separated list of allowed callers:\",\n validate: (v) =>\n Effect.gen(function* () {\n const address = v.split(\",\").map((a) => a.trim());\n\n for (let i = 0; i < address.length; i++) {\n const a = address[i] as string;\n const res = Schema.decodeUnknownOption(EthereumAddress)(a);\n if (res._tag === \"None\") {\n return yield* Effect.fail(`Invalid Ethereum Address at index ${i}`);\n }\n }\n\n return v;\n }),\n });\n\n const allowedCallers = allowed\n .split(\",\")\n .map((a) => a.trim())\n .map((a) => Schema.decodeUnknownSync(EthereumAddress)(a));\n\n return {\n type: \"signature-caller\",\n allowedCallers,\n } satisfies SignatureCallerPolicyParams;\n});\n"],"mappings":";;;;;;AAKA,MAAa,iCAAiC,OAAO,IAAI,aAAa;AAwBpE,QAAO;EACL,MAAM;EACN,iBAPqB,OAlBA,OAAO,KAAK;GACjC,SAAS;GACT,WAAW,MACT,OAAO,IAAI,aAAa;IACtB,MAAM,UAAU,EAAE,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;AAEjD,SAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;KACvC,MAAM,IAAI,QAAQ;AAElB,SADY,OAAO,oBAAoB,gBAAgB,CAAC,EACpD,CAAI,SAAS,OACf,QAAO,OAAO,OAAO,KAAK,qCAAqC,IAAI;;AAIvE,WAAO;KACP;GACL,CAAC,EAGC,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,KAAK,MAAM,OAAO,kBAAkB,gBAAgB,CAAC,EAAE,CAIxD;EACD;EACD"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Effect } from "effect";
|
|
3
|
-
import { Prompt } from "effect/unstable/cli";
|
|
4
|
-
//#region src/commands/session-key/create/prompts/timestamp.ts
|
|
5
|
-
const getTimestampPolicyParams = Effect.gen(function* () {
|
|
6
|
-
const validAfter = yield* Prompt.date({
|
|
7
|
-
initial: /* @__PURE__ */ new Date(),
|
|
8
|
-
message: "Time after which the key becomes valid.",
|
|
9
|
-
validate: (d) => Effect.gen(function* () {
|
|
10
|
-
if (d < /* @__PURE__ */ new Date()) return yield* Effect.fail("Date must be in the future");
|
|
11
|
-
return d;
|
|
12
|
-
})
|
|
13
|
-
});
|
|
14
|
-
const validUntil = yield* Prompt.date({
|
|
15
|
-
initial: /* @__PURE__ */ new Date(),
|
|
16
|
-
message: "Time until which the key becomes valid.",
|
|
17
|
-
validate: (d) => Effect.gen(function* () {
|
|
18
|
-
if (d < /* @__PURE__ */ new Date()) return yield* Effect.fail("Date must be in the future");
|
|
19
|
-
if (d < validAfter) return yield* Effect.fail("Valid until must be after valid after");
|
|
20
|
-
return d;
|
|
21
|
-
})
|
|
22
|
-
});
|
|
23
|
-
return {
|
|
24
|
-
type: "timestamp",
|
|
25
|
-
validAfter: Math.floor(validAfter.getTime() / 1e3),
|
|
26
|
-
validUntil: Math.floor(validUntil.getTime() / 1e3)
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
//#endregion
|
|
30
|
-
export { getTimestampPolicyParams };
|
|
31
|
-
|
|
32
|
-
//# sourceMappingURL=timestamp.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timestamp.mjs","names":[],"sources":["../../../../../src/commands/session-key/create/prompts/timestamp.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { Prompt } from \"effect/unstable/cli\";\n\nimport type { TimestampPolicyParams } from \"@/schema\";\n\nexport const getTimestampPolicyParams = Effect.gen(function* () {\n const validAfter = yield* Prompt.date({\n initial: new Date(),\n message: \"Time after which the key becomes valid.\",\n validate: (d) =>\n Effect.gen(function* () {\n if (d < new Date())\n return yield* Effect.fail(\"Date must be in the future\");\n return d;\n }),\n });\n\n const validUntil = yield* Prompt.date({\n initial: new Date(),\n message: \"Time until which the key becomes valid.\",\n validate: (d) =>\n Effect.gen(function* () {\n if (d < new Date())\n return yield* Effect.fail(\"Date must be in the future\");\n if (d < validAfter)\n return yield* Effect.fail(\"Valid until must be after valid after\");\n return d;\n }),\n });\n\n return {\n type: \"timestamp\",\n validAfter: Math.floor(validAfter.getTime() / 1000),\n validUntil: Math.floor(validUntil.getTime() / 1000),\n } satisfies TimestampPolicyParams;\n});\n"],"mappings":";;;;AAKA,MAAa,2BAA2B,OAAO,IAAI,aAAa;CAC9D,MAAM,aAAa,OAAO,OAAO,KAAK;EACpC,yBAAS,IAAI,MAAM;EACnB,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,oBAAI,IAAI,MAAM,CAChB,QAAO,OAAO,OAAO,KAAK,6BAA6B;AACzD,UAAO;IACP;EACL,CAAC;CAEF,MAAM,aAAa,OAAO,OAAO,KAAK;EACpC,yBAAS,IAAI,MAAM;EACnB,SAAS;EACT,WAAW,MACT,OAAO,IAAI,aAAa;AACtB,OAAI,oBAAI,IAAI,MAAM,CAChB,QAAO,OAAO,OAAO,KAAK,6BAA6B;AACzD,OAAI,IAAI,WACN,QAAO,OAAO,OAAO,KAAK,wCAAwC;AACpE,UAAO;IACP;EACL,CAAC;AAEF,QAAO;EACL,MAAM;EACN,YAAY,KAAK,MAAM,WAAW,SAAS,GAAG,IAAK;EACnD,YAAY,KAAK,MAAM,WAAW,SAAS,GAAG,IAAK;EACpD;EACD"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createSessionKeyCommand } from "./create/index.mjs";
|
|
3
|
-
import { getSessionKeyInfoCommand } from "./info.mjs";
|
|
4
|
-
import { listSessionKeysCommand } from "./list.mjs";
|
|
5
|
-
import { removeSessionKeyCommand } from "./remove.mjs";
|
|
6
|
-
import { getSessionKeyStatusCommand } from "./status.mjs";
|
|
7
|
-
import { Effect } from "effect";
|
|
8
|
-
import { CliError, Command } from "effect/unstable/cli";
|
|
9
|
-
//#region src/commands/session-key/index.ts
|
|
10
|
-
/**
|
|
11
|
-
* Command group for session-key related operations.
|
|
12
|
-
*/
|
|
13
|
-
const sessionKeyCommands = Command.make("session-key", {}, () => Effect.fail(new CliError.ShowHelp({
|
|
14
|
-
commandPath: ["namera", "session-key"],
|
|
15
|
-
errors: []
|
|
16
|
-
}))).pipe(Command.withAlias("sk"), Command.withDescription("Session Key management commands."), Command.withSubcommands([
|
|
17
|
-
createSessionKeyCommand,
|
|
18
|
-
listSessionKeysCommand,
|
|
19
|
-
getSessionKeyInfoCommand,
|
|
20
|
-
getSessionKeyStatusCommand,
|
|
21
|
-
removeSessionKeyCommand
|
|
22
|
-
]));
|
|
23
|
-
//#endregion
|
|
24
|
-
export { sessionKeyCommands };
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/commands/session-key/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport { CliError, Command } from \"effect/unstable/cli\";\n\nimport { createSessionKeyCommand } from \"./create\";\nimport { getSessionKeyInfoCommand } from \"./info\";\nimport { listSessionKeysCommand } from \"./list\";\nimport { removeSessionKeyCommand } from \"./remove\";\nimport { getSessionKeyStatusCommand } from \"./status\";\n\n/**\n * Command group for session-key related operations.\n */\nexport const sessionKeyCommands = Command.make(\"session-key\", {}, () =>\n Effect.fail(\n new CliError.ShowHelp({\n commandPath: [\"namera\", \"session-key\"],\n errors: [],\n }),\n ),\n).pipe(\n Command.withAlias(\"sk\"),\n Command.withDescription(\"Session Key management commands.\"),\n Command.withSubcommands([\n createSessionKeyCommand,\n listSessionKeysCommand,\n getSessionKeyInfoCommand,\n getSessionKeyStatusCommand,\n removeSessionKeyCommand,\n ]),\n);\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,qBAAqB,QAAQ,KAAK,eAAe,EAAE,QAC9D,OAAO,KACL,IAAI,SAAS,SAAS;CACpB,aAAa,CAAC,UAAU,cAAc;CACtC,QAAQ,EAAE;CACX,CAAC,CACH,CACF,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,mCAAmC,EAC3D,QAAQ,gBAAgB;CACtB;CACA;CACA;CACA;CACA;CACD,CAAC,CACH"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { getChain } from "../../schema/chain.mjs";
|
|
3
|
-
import "../../schema/index.mjs";
|
|
4
|
-
import { GetSessionKeyInfoParams } from "../../dto/session-key.mjs";
|
|
5
|
-
import "../../dto/index.mjs";
|
|
6
|
-
import { getGlobalFlags } from "../../flags/global.mjs";
|
|
7
|
-
import { SessionKeyManager } from "../../layers/session-key.mjs";
|
|
8
|
-
import { OutputFormatter } from "../../layers/output.mjs";
|
|
9
|
-
import "../../layers/index.mjs";
|
|
10
|
-
import { humanizePolicyParams } from "../../helpers/humanize.mjs";
|
|
11
|
-
import { Console, Effect, Schema } from "effect";
|
|
12
|
-
import { Command, Flag } from "effect/unstable/cli";
|
|
13
|
-
//#region src/commands/session-key/info.ts
|
|
14
|
-
const handler = (flagAlias) => Effect.gen(function* () {
|
|
15
|
-
const sessionKeyManager = yield* SessionKeyManager;
|
|
16
|
-
const outputFormatter = yield* OutputFormatter;
|
|
17
|
-
const globalFlags = yield* getGlobalFlags();
|
|
18
|
-
let params;
|
|
19
|
-
if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(GetSessionKeyInfoParams))(globalFlags.params.value);
|
|
20
|
-
else {
|
|
21
|
-
let alias;
|
|
22
|
-
if (flagAlias._tag === "Some") alias = flagAlias.value;
|
|
23
|
-
else alias = (yield* sessionKeyManager.selectSessionKey({ message: "Select Session Key:" })).alias;
|
|
24
|
-
params = { alias };
|
|
25
|
-
}
|
|
26
|
-
const res = yield* sessionKeyManager.getSessionKey(params);
|
|
27
|
-
const data = {
|
|
28
|
-
alias: res.alias,
|
|
29
|
-
...res.data.sessionKeyType === "ecdsa" ? { address: res.data.sessionKeyAddress } : { passKeyName: res.data.passKeyName },
|
|
30
|
-
smartAccount: res.data.smartAccountAlias,
|
|
31
|
-
chains: res.data.serializedAccounts.map((a) => getChain(a.chain).name).join(", "),
|
|
32
|
-
policies: humanizePolicyParams(res.data.serializedAccounts[0]?.serializedAccount ?? "")
|
|
33
|
-
};
|
|
34
|
-
if (globalFlags.quiet) return;
|
|
35
|
-
const output = yield* outputFormatter.format(data, globalFlags.out);
|
|
36
|
-
yield* Console.log(output);
|
|
37
|
-
});
|
|
38
|
-
const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the session key to get info for"), Flag.withAlias("a"), Flag.optional);
|
|
39
|
-
const getSessionKeyInfoCommand = Command.make("info", { alias }, ({ alias }) => handler(alias)).pipe(Command.withDescription("Get information about a session key"), Command.withExamples([
|
|
40
|
-
{
|
|
41
|
-
command: "namera session-key info",
|
|
42
|
-
description: "Get information about a session key with alias prompt"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
command: "namera session-key info --alias my-session-key",
|
|
46
|
-
description: "Get information about a session key with alias 'my-session-key'"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
command: `namera session-key info --params '{"alias":"my-session-key"}'`,
|
|
50
|
-
description: "Get information about a session key with json params"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
command: "namera session-key info --alias my-wallet --output json",
|
|
54
|
-
description: "Get information about a session key in json format"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
command: "namera schema session-key.info",
|
|
58
|
-
description: "Get the schema for the session key info command"
|
|
59
|
-
}
|
|
60
|
-
]));
|
|
61
|
-
//#endregion
|
|
62
|
-
export { getSessionKeyInfoCommand };
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=info.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.mjs","names":["SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/info.ts"],"sourcesContent":["import { Console, Effect, type Option, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { GetSessionKeyInfoParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { humanizePolicyParams } from \"@/helpers/humanize\";\nimport { OutputFormatter, SessionKeyManager } from \"@/layers\";\nimport { getChain } from \"@/schema\";\n\nconst handler = (flagAlias: Option.Option<string>) =>\n Effect.gen(function* () {\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n\n const globalFlags = yield* getGlobalFlags();\n\n let params: GetSessionKeyInfoParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(GetSessionKeyInfoParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n const res = yield* sessionKeyManager.selectSessionKey({\n message: \"Select Session Key:\",\n });\n alias = res.alias;\n }\n\n params = { alias };\n }\n\n const res = yield* sessionKeyManager.getSessionKey(params);\n\n const data = {\n alias: res.alias,\n ...(res.data.sessionKeyType === \"ecdsa\"\n ? {\n address: res.data.sessionKeyAddress,\n }\n : {\n passKeyName: res.data.passKeyName,\n }),\n smartAccount: res.data.smartAccountAlias,\n chains: res.data.serializedAccounts\n .map((a) => getChain(a.chain).name)\n .join(\", \"),\n policies: humanizePolicyParams(\n res.data.serializedAccounts[0]?.serializedAccount ?? \"\",\n ),\n };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the session key to get info for\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nexport const getSessionKeyInfoCommand = Command.make(\n \"info\",\n { alias },\n ({ alias }) => handler(alias),\n).pipe(\n Command.withDescription(\"Get information about a session key\"),\n Command.withExamples([\n {\n command: \"namera session-key info\",\n description: \"Get information about a session key with alias prompt\",\n },\n {\n command: \"namera session-key info --alias my-session-key\",\n description:\n \"Get information about a session key with alias 'my-session-key'\",\n },\n {\n command: `namera session-key info --params '{\"alias\":\"my-session-key\"}'`,\n description: \"Get information about a session key with json params\",\n },\n {\n command: \"namera session-key info --alias my-wallet --output json\",\n description: \"Get information about a session key in json format\",\n },\n {\n command: \"namera schema session-key.info\",\n description: \"Get the schema for the session key info command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;;;;AASA,MAAM,WAAW,cACf,OAAO,IAAI,aAAa;CACtB,MAAM,oBAAoB,OAAOA;CACjC,MAAM,kBAAkB,OAAOC;CAE/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,wBAAwB,CAC/C,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;AAEJ,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAKlB,UAAQ,OAHW,kBAAkB,iBAAiB,EACpD,SAAS,uBACV,CAAC,EACU;AAGd,WAAS,EAAE,OAAO;;CAGpB,MAAM,MAAM,OAAO,kBAAkB,cAAc,OAAO;CAE1D,MAAM,OAAO;EACX,OAAO,IAAI;EACX,GAAI,IAAI,KAAK,mBAAmB,UAC5B,EACE,SAAS,IAAI,KAAK,mBACnB,GACD,EACE,aAAa,IAAI,KAAK,aACvB;EACL,cAAc,IAAI,KAAK;EACvB,QAAQ,IAAI,KAAK,mBACd,KAAK,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,CAClC,KAAK,KAAK;EACb,UAAU,qBACR,IAAI,KAAK,mBAAmB,IAAI,qBAAqB,GACtD;EACF;AAED,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,+CAA+C,EACpE,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAa,2BAA2B,QAAQ,KAC9C,QACA,EAAE,OAAO,GACR,EAAE,YAAY,QAAQ,MAAM,CAC9B,CAAC,KACA,QAAQ,gBAAgB,sCAAsC,EAC9D,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aACE;EACH;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { getChain } from "../../schema/chain.mjs";
|
|
3
|
-
import "../../schema/index.mjs";
|
|
4
|
-
import { getGlobalFlags } from "../../flags/global.mjs";
|
|
5
|
-
import { SessionKeyManager } from "../../layers/session-key.mjs";
|
|
6
|
-
import { OutputFormatter } from "../../layers/output.mjs";
|
|
7
|
-
import "../../layers/index.mjs";
|
|
8
|
-
import { Console, Effect } from "effect";
|
|
9
|
-
import { Command, Flag } from "effect/unstable/cli";
|
|
10
|
-
//#region src/commands/session-key/list.ts
|
|
11
|
-
const handler = (flagSmartAccountAlias) => Effect.gen(function* () {
|
|
12
|
-
const sessionKeyManager = yield* SessionKeyManager;
|
|
13
|
-
const outputFormatter = yield* OutputFormatter;
|
|
14
|
-
const globalFlags = yield* getGlobalFlags();
|
|
15
|
-
const data = (yield* sessionKeyManager.listSessionKeys({ smartAccount: flagSmartAccountAlias._tag === "Some" ? flagSmartAccountAlias.value : void 0 })).map((d) => ({
|
|
16
|
-
alias: d.alias,
|
|
17
|
-
...d.data.sessionKeyType === "ecdsa" ? { address: d.data.sessionKeyAddress } : { passKeyName: d.data.passKeyName },
|
|
18
|
-
smartAccount: d.data.smartAccountAlias,
|
|
19
|
-
chains: d.data.serializedAccounts.map((a) => getChain(a.chain).name).join(", ")
|
|
20
|
-
}));
|
|
21
|
-
if (globalFlags.quiet) return;
|
|
22
|
-
const output = yield* outputFormatter.format(data, globalFlags.out);
|
|
23
|
-
yield* Console.log(output);
|
|
24
|
-
});
|
|
25
|
-
const smartAccountAlias = Flag.string("smart-account").pipe(Flag.withDescription("The alias of the smart account to list session keys for"), Flag.withAlias("sa"), Flag.optional);
|
|
26
|
-
/**
|
|
27
|
-
* Command that lists all locally stored session keys.
|
|
28
|
-
*/
|
|
29
|
-
const listSessionKeysCommand = Command.make("list", { smartAccountAlias }, ({ smartAccountAlias }) => handler(smartAccountAlias)).pipe(Command.withAlias("ls"), Command.withDescription("List session keys"), Command.withExamples([
|
|
30
|
-
{
|
|
31
|
-
command: "namera session-key list",
|
|
32
|
-
description: "List all session keys"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
command: "namera session-key list --smart-account my-smart",
|
|
36
|
-
description: "List all session keys for smart account 'my-smart'"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
command: `namera session-key list --params '{"smartAccount":"my-smart"}'`,
|
|
40
|
-
description: "List all session keys for smart account 'my-smart'"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
command: "namera session-key list --output json",
|
|
44
|
-
description: "List all session keys in json format"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
command: "namera schema session-key.list",
|
|
48
|
-
description: "Get the schema for the list session key command"
|
|
49
|
-
}
|
|
50
|
-
]));
|
|
51
|
-
//#endregion
|
|
52
|
-
export { listSessionKeysCommand };
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=list.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.mjs","names":["SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/list.ts"],"sourcesContent":["import { Console, Effect, type Option } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { OutputFormatter, SessionKeyManager } from \"@/layers\";\nimport { getChain } from \"@/schema\";\n\nconst handler = (flagSmartAccountAlias: Option.Option<string>) =>\n Effect.gen(function* () {\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n const res = yield* sessionKeyManager.listSessionKeys({\n smartAccount:\n flagSmartAccountAlias._tag === \"Some\"\n ? flagSmartAccountAlias.value\n : undefined,\n });\n\n const data = res.map((d) => ({\n alias: d.alias,\n ...(d.data.sessionKeyType === \"ecdsa\"\n ? {\n address: d.data.sessionKeyAddress,\n }\n : {\n passKeyName: d.data.passKeyName,\n }),\n smartAccount: d.data.smartAccountAlias,\n chains: d.data.serializedAccounts\n .map((a) => getChain(a.chain).name)\n .join(\", \"),\n }));\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst smartAccountAlias = Flag.string(\"smart-account\").pipe(\n Flag.withDescription(\n \"The alias of the smart account to list session keys for\",\n ),\n Flag.withAlias(\"sa\"),\n Flag.optional,\n);\n/**\n * Command that lists all locally stored session keys.\n */\nexport const listSessionKeysCommand = Command.make(\n \"list\",\n { smartAccountAlias },\n ({ smartAccountAlias }) => handler(smartAccountAlias),\n).pipe(\n Command.withAlias(\"ls\"),\n Command.withDescription(\"List session keys\"),\n Command.withExamples([\n {\n command: \"namera session-key list\",\n description: \"List all session keys\",\n },\n {\n command: \"namera session-key list --smart-account my-smart\",\n description: \"List all session keys for smart account 'my-smart'\",\n },\n {\n command: `namera session-key list --params '{\"smartAccount\":\"my-smart\"}'`,\n description: \"List all session keys for smart account 'my-smart'\",\n },\n {\n command: \"namera session-key list --output json\",\n description: \"List all session keys in json format\",\n },\n {\n command: \"namera schema session-key.list\",\n description: \"Get the schema for the list session key command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;AAOA,MAAM,WAAW,0BACf,OAAO,IAAI,aAAa;CACtB,MAAM,oBAAoB,OAAOA;CACjC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAS3C,MAAM,QAAO,OAPM,kBAAkB,gBAAgB,EACnD,cACE,sBAAsB,SAAS,SAC3B,sBAAsB,QACtB,QACP,CAAC,EAEe,KAAK,OAAO;EAC3B,OAAO,EAAE;EACT,GAAI,EAAE,KAAK,mBAAmB,UAC1B,EACE,SAAS,EAAE,KAAK,mBACjB,GACD,EACE,aAAa,EAAE,KAAK,aACrB;EACL,cAAc,EAAE,KAAK;EACrB,QAAQ,EAAE,KAAK,mBACZ,KAAK,MAAM,SAAS,EAAE,MAAM,CAAC,KAAK,CAClC,KAAK,KAAK;EACd,EAAE;AAEH,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,oBAAoB,KAAK,OAAO,gBAAgB,CAAC,KACrD,KAAK,gBACH,0DACD,EACD,KAAK,UAAU,KAAK,EACpB,KAAK,SACN;;;;AAID,MAAa,yBAAyB,QAAQ,KAC5C,QACA,EAAE,mBAAmB,GACpB,EAAE,wBAAwB,QAAQ,kBAAkB,CACtD,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,oBAAoB,EAC5C,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { RemoveSessionKeyParams } from "../../dto/session-key.mjs";
|
|
3
|
-
import "../../dto/index.mjs";
|
|
4
|
-
import { getGlobalFlags } from "../../flags/global.mjs";
|
|
5
|
-
import { SessionKeyManager } from "../../layers/session-key.mjs";
|
|
6
|
-
import { OutputFormatter } from "../../layers/output.mjs";
|
|
7
|
-
import "../../layers/index.mjs";
|
|
8
|
-
import { Console, Effect, Schema } from "effect";
|
|
9
|
-
import { Command, Flag } from "effect/unstable/cli";
|
|
10
|
-
//#region src/commands/session-key/remove.ts
|
|
11
|
-
const handler = (flagAlias) => Effect.gen(function* () {
|
|
12
|
-
const sessionKeyManager = yield* SessionKeyManager;
|
|
13
|
-
const outputFormatter = yield* OutputFormatter;
|
|
14
|
-
const globalFlags = yield* getGlobalFlags();
|
|
15
|
-
let params;
|
|
16
|
-
if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(RemoveSessionKeyParams))(globalFlags.params.value);
|
|
17
|
-
else {
|
|
18
|
-
let alias;
|
|
19
|
-
if (flagAlias._tag === "Some") alias = flagAlias.value;
|
|
20
|
-
else alias = (yield* sessionKeyManager.selectSessionKey({ message: "Select Session Key:" })).alias;
|
|
21
|
-
params = { alias };
|
|
22
|
-
}
|
|
23
|
-
yield* sessionKeyManager.removeSessionKey(params);
|
|
24
|
-
const data = { success: true };
|
|
25
|
-
if (globalFlags.quiet) return;
|
|
26
|
-
const output = yield* outputFormatter.format(data, globalFlags.out);
|
|
27
|
-
yield* Console.log(output);
|
|
28
|
-
});
|
|
29
|
-
const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the session key to remove"), Flag.withAlias("a"), Flag.optional);
|
|
30
|
-
const removeSessionKeyCommand = Command.make("remove", { alias }, ({ alias }) => handler(alias)).pipe(Command.withAlias("rm"), Command.withDescription("Remove a Session Key"), Command.withExamples([
|
|
31
|
-
{
|
|
32
|
-
command: "namera session-key remove",
|
|
33
|
-
description: "Remove a session key with alias prompt"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
command: "namera session-key remove --alias my-session-key",
|
|
37
|
-
description: "Remove a session key with alias 'my-session-key'"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
command: `namera session-key remove --params '{"alias":"my-session-key"}'`,
|
|
41
|
-
description: "Remove a session key with json params"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
command: "namera schema session-key.remove",
|
|
45
|
-
description: "Get the schema for the remove session key command"
|
|
46
|
-
}
|
|
47
|
-
]));
|
|
48
|
-
//#endregion
|
|
49
|
-
export { removeSessionKeyCommand };
|
|
50
|
-
|
|
51
|
-
//# sourceMappingURL=remove.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remove.mjs","names":["SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/remove.ts"],"sourcesContent":["import { Console, Effect, type Option, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { RemoveSessionKeyParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { OutputFormatter, SessionKeyManager } from \"@/layers\";\n\nconst handler = (flagAlias: Option.Option<string>) =>\n Effect.gen(function* () {\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n let params: RemoveSessionKeyParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(RemoveSessionKeyParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n const res = yield* sessionKeyManager.selectSessionKey({\n message: \"Select Session Key:\",\n });\n alias = res.alias;\n }\n\n params = { alias };\n }\n\n yield* sessionKeyManager.removeSessionKey(params);\n\n const data = { success: true };\n\n if (globalFlags.quiet) return;\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the session key to remove\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nexport const removeSessionKeyCommand = Command.make(\n \"remove\",\n { alias },\n ({ alias }) => handler(alias),\n).pipe(\n Command.withAlias(\"rm\"),\n Command.withDescription(\"Remove a Session Key\"),\n Command.withExamples([\n {\n command: \"namera session-key remove\",\n description: \"Remove a session key with alias prompt\",\n },\n {\n command: \"namera session-key remove --alias my-session-key\",\n description: \"Remove a session key with alias 'my-session-key'\",\n },\n {\n command: `namera session-key remove --params '{\"alias\":\"my-session-key\"}'`,\n description: \"Remove a session key with json params\",\n },\n {\n command: \"namera schema session-key.remove\",\n description: \"Get the schema for the remove session key command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;AAOA,MAAM,WAAW,cACf,OAAO,IAAI,aAAa;CACtB,MAAM,oBAAoB,OAAOA;CACjC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,uBAAuB,CAC9C,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;AAEJ,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAKlB,UAAQ,OAHW,kBAAkB,iBAAiB,EACpD,SAAS,uBACV,CAAC,EACU;AAGd,WAAS,EAAE,OAAO;;AAGpB,QAAO,kBAAkB,iBAAiB,OAAO;CAEjD,MAAM,OAAO,EAAE,SAAS,MAAM;AAE9B,KAAI,YAAY,MAAO;CACvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,yCAAyC,EAC9D,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAa,0BAA0B,QAAQ,KAC7C,UACA,EAAE,OAAO,GACR,EAAE,YAAY,QAAQ,MAAM,CAC9B,CAAC,KACA,QAAQ,UAAU,KAAK,EACvB,QAAQ,gBAAgB,uBAAuB,EAC/C,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { GetSessionKeyStatusParams } from "../../dto/session-key.mjs";
|
|
3
|
-
import "../../dto/index.mjs";
|
|
4
|
-
import { getGlobalFlags } from "../../flags/global.mjs";
|
|
5
|
-
import { Web3Service } from "../../layers/web3.mjs";
|
|
6
|
-
import { SessionKeyManager } from "../../layers/session-key.mjs";
|
|
7
|
-
import { OutputFormatter } from "../../layers/output.mjs";
|
|
8
|
-
import "../../layers/index.mjs";
|
|
9
|
-
import { chainAndRpcUrl } from "../../flags/shared.mjs";
|
|
10
|
-
import { Console, Effect, Schema } from "effect";
|
|
11
|
-
import { Command, Flag } from "effect/unstable/cli";
|
|
12
|
-
//#region src/commands/session-key/status.ts
|
|
13
|
-
const handler = (flagAlias, flagChain, flagRpcUrl) => Effect.gen(function* () {
|
|
14
|
-
const web3Service = yield* Web3Service;
|
|
15
|
-
const sessionKeyManager = yield* SessionKeyManager;
|
|
16
|
-
const outputFormatter = yield* OutputFormatter;
|
|
17
|
-
const globalFlags = yield* getGlobalFlags();
|
|
18
|
-
let params;
|
|
19
|
-
if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(GetSessionKeyStatusParams))(globalFlags.params.value);
|
|
20
|
-
else {
|
|
21
|
-
let alias;
|
|
22
|
-
let chain;
|
|
23
|
-
const rpcUrl = flagRpcUrl._tag === "Some" ? flagRpcUrl.value : void 0;
|
|
24
|
-
if (flagAlias._tag === "Some") alias = flagAlias.value;
|
|
25
|
-
else alias = (yield* sessionKeyManager.selectSessionKey({ message: "Select Session Key:" })).alias;
|
|
26
|
-
if (flagChain._tag === "Some") chain = flagChain.value;
|
|
27
|
-
else chain = yield* web3Service.selectChain({ message: "Select Chain:" });
|
|
28
|
-
params = {
|
|
29
|
-
alias,
|
|
30
|
-
chain,
|
|
31
|
-
rpcUrl
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const data = { installed: yield* sessionKeyManager.getSessionKeyStatus(params) };
|
|
35
|
-
if (globalFlags.quiet) return;
|
|
36
|
-
const output = yield* outputFormatter.format(data, globalFlags.out);
|
|
37
|
-
yield* Console.log(output);
|
|
38
|
-
});
|
|
39
|
-
const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the session key"), Flag.withAlias("a"), Flag.optional);
|
|
40
|
-
const getSessionKeyStatusCommand = Command.make("status", {
|
|
41
|
-
alias,
|
|
42
|
-
...chainAndRpcUrl
|
|
43
|
-
}, ({ alias, chain, rpcUrl }) => handler(alias, chain, rpcUrl)).pipe(Command.withDescription("Get Session key status for a given chain"), Command.withExamples([
|
|
44
|
-
{
|
|
45
|
-
command: "namera session-key status -a my-smart --chain eth-mainnet",
|
|
46
|
-
description: "Get Session key status for a given chain"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
command: "namera session-key status --alias my-smart --chain eth-mainnet --rpc-url https://rpc.ankr.com/eth",
|
|
50
|
-
description: "Get Session key status for a given chain with custom RPC URL"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
command: `namera session-key status --params '{"alias":"my-session-key","chain":"eth-mainnet"}'`,
|
|
54
|
-
description: "Get Session key status for a given chain with json params"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
command: "namera schema session-key.status",
|
|
58
|
-
description: "Get the schema for the session key status command"
|
|
59
|
-
}
|
|
60
|
-
]));
|
|
61
|
-
//#endregion
|
|
62
|
-
export { getSessionKeyStatusCommand };
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=status.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.mjs","names":["Web3Service.Web3Service","SessionKeyManager.SessionKeyManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/session-key/status.ts"],"sourcesContent":["import { Console, Effect, type Option, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { GetSessionKeyStatusParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport { chainAndRpcUrl } from \"@/flags/shared\";\nimport { OutputFormatter, SessionKeyManager, Web3Service } from \"@/layers\";\nimport type { SupportedChain } from \"@/schema/chain\";\n\nconst handler = (\n flagAlias: Option.Option<string>,\n flagChain: Option.Option<SupportedChain>,\n flagRpcUrl: Option.Option<string>,\n) =>\n Effect.gen(function* () {\n const web3Service = yield* Web3Service.Web3Service;\n const sessionKeyManager = yield* SessionKeyManager.SessionKeyManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n let params: GetSessionKeyStatusParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(GetSessionKeyStatusParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n let chain: SupportedChain;\n const rpcUrl = flagRpcUrl._tag === \"Some\" ? flagRpcUrl.value : undefined;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n const res = yield* sessionKeyManager.selectSessionKey({\n message: \"Select Session Key:\",\n });\n alias = res.alias;\n }\n\n if (flagChain._tag === \"Some\") {\n chain = flagChain.value;\n } else {\n chain = yield* web3Service.selectChain({\n message: \"Select Chain:\",\n });\n }\n\n params = { alias, chain, rpcUrl };\n }\n\n const installed = yield* sessionKeyManager.getSessionKeyStatus(params);\n\n const data = { installed };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the session key\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nexport const getSessionKeyStatusCommand = Command.make(\n \"status\",\n {\n alias,\n ...chainAndRpcUrl,\n },\n ({ alias, chain, rpcUrl }) => handler(alias, chain, rpcUrl),\n).pipe(\n Command.withDescription(\"Get Session key status for a given chain\"),\n Command.withExamples([\n {\n command: \"namera session-key status -a my-smart --chain eth-mainnet\",\n description: \"Get Session key status for a given chain\",\n },\n {\n command:\n \"namera session-key status --alias my-smart --chain eth-mainnet --rpc-url https://rpc.ankr.com/eth\",\n description:\n \"Get Session key status for a given chain with custom RPC URL\",\n },\n {\n command: `namera session-key status --params '{\"alias\":\"my-session-key\",\"chain\":\"eth-mainnet\"}'`,\n description: \"Get Session key status for a given chain with json params\",\n },\n {\n command: \"namera schema session-key.status\",\n description: \"Get the schema for the session key status command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;;;AASA,MAAM,WACJ,WACA,WACA,eAEA,OAAO,IAAI,aAAa;CACtB,MAAM,cAAc,OAAOA;CAC3B,MAAM,oBAAoB,OAAOC;CACjC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,0BAA0B,CACjD,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;EACJ,IAAI;EACJ,MAAM,SAAS,WAAW,SAAS,SAAS,WAAW,QAAQ;AAE/D,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAKlB,UAAQ,OAHW,kBAAkB,iBAAiB,EACpD,SAAS,uBACV,CAAC,EACU;AAGd,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAElB,SAAQ,OAAO,YAAY,YAAY,EACrC,SAAS,iBACV,CAAC;AAGJ,WAAS;GAAE;GAAO;GAAO;GAAQ;;CAKnC,MAAM,OAAO,EAAE,kBAFU,kBAAkB,oBAAoB,OAAO,EAE5C;AAE1B,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,+BAA+B,EACpD,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAa,6BAA6B,QAAQ,KAChD,UACA;CACE;CACA,GAAG;CACJ,GACA,EAAE,OAAO,OAAO,aAAa,QAAQ,OAAO,OAAO,OAAO,CAC5D,CAAC,KACA,QAAQ,gBAAgB,2CAA2C,EACnE,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SACE;EACF,aACE;EACH;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { CreateSmartAccountParams } from "../../dto/smart-account.mjs";
|
|
3
|
-
import "../../dto/index.mjs";
|
|
4
|
-
import { getGlobalFlags } from "../../flags/global.mjs";
|
|
5
|
-
import { PromptManager } from "../../layers/prompt.mjs";
|
|
6
|
-
import { KeystoreManager } from "../../layers/keystore.mjs";
|
|
7
|
-
import { SmartAccountManager } from "../../layers/smart-account.mjs";
|
|
8
|
-
import { OutputFormatter } from "../../layers/output.mjs";
|
|
9
|
-
import "../../layers/index.mjs";
|
|
10
|
-
import { Console, Effect, Redacted, Schema } from "effect";
|
|
11
|
-
import { Command, Flag } from "effect/unstable/cli";
|
|
12
|
-
//#region src/commands/smart-account/create.ts
|
|
13
|
-
const handler = (flagAlias, flagOwnerAlias, flagOwnerPassword, flagIndex) => Effect.gen(function* () {
|
|
14
|
-
const promptManager = yield* PromptManager;
|
|
15
|
-
const keystoreManager = yield* KeystoreManager;
|
|
16
|
-
const smartAccountManager = yield* SmartAccountManager;
|
|
17
|
-
const outputFormatter = yield* OutputFormatter;
|
|
18
|
-
const globalFlags = yield* getGlobalFlags();
|
|
19
|
-
let params;
|
|
20
|
-
if (globalFlags.params._tag === "Some") params = Schema.decodeUnknownSync(Schema.fromJsonString(CreateSmartAccountParams))(globalFlags.params.value);
|
|
21
|
-
else {
|
|
22
|
-
let alias;
|
|
23
|
-
let ownerAlias;
|
|
24
|
-
let ownerPassword;
|
|
25
|
-
let index;
|
|
26
|
-
if (flagAlias._tag === "Some") alias = flagAlias.value;
|
|
27
|
-
else alias = yield* promptManager.aliasPrompt({
|
|
28
|
-
aliasType: "new",
|
|
29
|
-
message: "Enter alias for smart account:",
|
|
30
|
-
type: "smart-account"
|
|
31
|
-
});
|
|
32
|
-
if (flagOwnerAlias._tag === "Some") ownerAlias = flagOwnerAlias.value;
|
|
33
|
-
else ownerAlias = (yield* keystoreManager.selectKeystore({ message: "Select owner keystore:" })).alias;
|
|
34
|
-
if (flagOwnerPassword._tag === "Some") ownerPassword = flagOwnerPassword.value;
|
|
35
|
-
else ownerPassword = yield* keystoreManager.getKeystorePassword({
|
|
36
|
-
alias: ownerAlias,
|
|
37
|
-
message: `Enter password for owner (${ownerAlias}):`
|
|
38
|
-
});
|
|
39
|
-
if (flagIndex._tag === "Some") index = BigInt(flagIndex.value);
|
|
40
|
-
else index = 0n;
|
|
41
|
-
params = {
|
|
42
|
-
alias,
|
|
43
|
-
ownerAlias,
|
|
44
|
-
index,
|
|
45
|
-
ownerPassword: Redacted.value(ownerPassword)
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
const res = yield* smartAccountManager.createSmartAccount(params);
|
|
49
|
-
const data = {
|
|
50
|
-
address: res.data.smartAccountAddress,
|
|
51
|
-
kernelVersion: res.data.kernelVersion,
|
|
52
|
-
index: Number(res.data.index),
|
|
53
|
-
owner: res.data.ownerAlias
|
|
54
|
-
};
|
|
55
|
-
if (globalFlags.quiet) return;
|
|
56
|
-
const output = yield* outputFormatter.format(data, globalFlags.out);
|
|
57
|
-
yield* Console.log(output);
|
|
58
|
-
});
|
|
59
|
-
const alias = Flag.string("alias").pipe(Flag.withDescription("The alias of the smart account to create"), Flag.withAlias("a"), Flag.optional);
|
|
60
|
-
const ownerAlias = Flag.string("owner-alias").pipe(Flag.withDescription("The alias of the owner keystore"), Flag.withAlias("oa"), Flag.optional);
|
|
61
|
-
const ownerPassword = Flag.redacted("owner-password").pipe(Flag.withDescription("The password of the owner keystore"), Flag.withAlias("op"), Flag.optional);
|
|
62
|
-
const index = Flag.integer("index").pipe(Flag.withDescription("The index of the smart account"), Flag.withAlias("i"), Flag.optional);
|
|
63
|
-
/**
|
|
64
|
-
* Command that creates a new smart account and stores it locally.
|
|
65
|
-
*
|
|
66
|
-
* Accepts alias, owner alias, and index via flags or JSON params.
|
|
67
|
-
*/
|
|
68
|
-
const createSmartAccountCommand = Command.make("create", {
|
|
69
|
-
alias,
|
|
70
|
-
ownerAlias,
|
|
71
|
-
ownerPassword,
|
|
72
|
-
index
|
|
73
|
-
}, ({ alias, ownerAlias, ownerPassword, index }) => handler(alias, ownerAlias, ownerPassword, index)).pipe(Command.withAlias("c"), Command.withDescription("Creates a new smart account"), Command.withExamples([
|
|
74
|
-
{
|
|
75
|
-
command: "namera smart-account create",
|
|
76
|
-
description: "Creates a new smart account with interactive prompts"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
command: "namera smart-account create --alias my-smart --owner-alias my-owner --index 0",
|
|
80
|
-
description: "Creates a new smart account with alias 'my-smart', owner alias 'my-owner', and index 0"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
command: `namera smart-account create --params '{"alias":"my-smart","owner-alias":"my-owner","index":0}'`,
|
|
84
|
-
description: "Creates a new smart account with json params"
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
command: "namera schema smart-account.create",
|
|
88
|
-
description: "Get the schema for the create command"
|
|
89
|
-
}
|
|
90
|
-
]));
|
|
91
|
-
//#endregion
|
|
92
|
-
export { createSmartAccountCommand };
|
|
93
|
-
|
|
94
|
-
//# sourceMappingURL=create.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.mjs","names":["PromptManager.PromptManager","KeystoreManager.KeystoreManager","SmartAccountManager.SmartAccountManager","OutputFormatter.OutputFormatter"],"sources":["../../../src/commands/smart-account/create.ts"],"sourcesContent":["import { Console, Effect, type Option, Redacted, Schema } from \"effect\";\nimport { Command, Flag } from \"effect/unstable/cli\";\n\nimport { CreateSmartAccountParams } from \"@/dto\";\nimport { getGlobalFlags } from \"@/flags/global\";\nimport {\n KeystoreManager,\n OutputFormatter,\n PromptManager,\n SmartAccountManager,\n} from \"@/layers\";\n\nconst handler = (\n flagAlias: Option.Option<string>,\n flagOwnerAlias: Option.Option<string>,\n flagOwnerPassword: Option.Option<Redacted.Redacted<string>>,\n flagIndex: Option.Option<number>,\n) =>\n Effect.gen(function* () {\n const promptManager = yield* PromptManager.PromptManager;\n const keystoreManager = yield* KeystoreManager.KeystoreManager;\n const smartAccountManager = yield* SmartAccountManager.SmartAccountManager;\n const outputFormatter = yield* OutputFormatter.OutputFormatter;\n const globalFlags = yield* getGlobalFlags();\n\n let params: CreateSmartAccountParams;\n\n if (globalFlags.params._tag === \"Some\") {\n params = Schema.decodeUnknownSync(\n Schema.fromJsonString(CreateSmartAccountParams),\n )(globalFlags.params.value);\n } else {\n let alias: string;\n let ownerAlias: string;\n let ownerPassword: Redacted.Redacted<string>;\n let index: bigint;\n\n if (flagAlias._tag === \"Some\") {\n alias = flagAlias.value;\n } else {\n alias = yield* promptManager.aliasPrompt({\n aliasType: \"new\",\n message: \"Enter alias for smart account:\",\n type: \"smart-account\",\n });\n }\n\n if (flagOwnerAlias._tag === \"Some\") {\n ownerAlias = flagOwnerAlias.value;\n } else {\n ownerAlias = (yield* keystoreManager.selectKeystore({\n message: \"Select owner keystore:\",\n })).alias;\n }\n\n if (flagOwnerPassword._tag === \"Some\") {\n ownerPassword = flagOwnerPassword.value;\n } else {\n ownerPassword = yield* keystoreManager.getKeystorePassword({\n alias: ownerAlias,\n message: `Enter password for owner (${ownerAlias}):`,\n });\n }\n\n if (flagIndex._tag === \"Some\") {\n index = BigInt(flagIndex.value);\n } else {\n index = 0n;\n }\n\n params = {\n alias,\n ownerAlias,\n index,\n ownerPassword: Redacted.value(ownerPassword),\n };\n }\n\n const res = yield* smartAccountManager.createSmartAccount(params);\n\n const data = {\n address: res.data.smartAccountAddress,\n kernelVersion: res.data.kernelVersion,\n index: Number(res.data.index),\n owner: res.data.ownerAlias,\n };\n\n if (globalFlags.quiet) return;\n\n const output = yield* outputFormatter.format(data, globalFlags.out);\n yield* Console.log(output);\n });\n\nconst alias = Flag.string(\"alias\").pipe(\n Flag.withDescription(\"The alias of the smart account to create\"),\n Flag.withAlias(\"a\"),\n Flag.optional,\n);\n\nconst ownerAlias = Flag.string(\"owner-alias\").pipe(\n Flag.withDescription(\"The alias of the owner keystore\"),\n Flag.withAlias(\"oa\"),\n Flag.optional,\n);\n\nconst ownerPassword = Flag.redacted(\"owner-password\").pipe(\n Flag.withDescription(\"The password of the owner keystore\"),\n Flag.withAlias(\"op\"),\n Flag.optional,\n);\n\nconst index = Flag.integer(\"index\").pipe(\n Flag.withDescription(\"The index of the smart account\"),\n Flag.withAlias(\"i\"),\n Flag.optional,\n);\n\n/**\n * Command that creates a new smart account and stores it locally.\n *\n * Accepts alias, owner alias, and index via flags or JSON params.\n */\nexport const createSmartAccountCommand = Command.make(\n \"create\",\n { alias, ownerAlias, ownerPassword, index },\n ({ alias, ownerAlias, ownerPassword, index }) =>\n handler(alias, ownerAlias, ownerPassword, index),\n).pipe(\n Command.withAlias(\"c\"),\n Command.withDescription(\"Creates a new smart account\"),\n Command.withExamples([\n {\n command: \"namera smart-account create\",\n description: \"Creates a new smart account with interactive prompts\",\n },\n {\n command:\n \"namera smart-account create --alias my-smart --owner-alias my-owner --index 0\",\n description:\n \"Creates a new smart account with alias 'my-smart', owner alias 'my-owner', and index 0\",\n },\n {\n command: `namera smart-account create --params '{\"alias\":\"my-smart\",\"owner-alias\":\"my-owner\",\"index\":0}'`,\n description: \"Creates a new smart account with json params\",\n },\n {\n command: \"namera schema smart-account.create\",\n description: \"Get the schema for the create command\",\n },\n ]),\n);\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,WACJ,WACA,gBACA,mBACA,cAEA,OAAO,IAAI,aAAa;CACtB,MAAM,gBAAgB,OAAOA;CAC7B,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,sBAAsB,OAAOC;CACnC,MAAM,kBAAkB,OAAOC;CAC/B,MAAM,cAAc,OAAO,gBAAgB;CAE3C,IAAI;AAEJ,KAAI,YAAY,OAAO,SAAS,OAC9B,UAAS,OAAO,kBACd,OAAO,eAAe,yBAAyB,CAChD,CAAC,YAAY,OAAO,MAAM;MACtB;EACL,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;AAEJ,MAAI,UAAU,SAAS,OACrB,SAAQ,UAAU;MAElB,SAAQ,OAAO,cAAc,YAAY;GACvC,WAAW;GACX,SAAS;GACT,MAAM;GACP,CAAC;AAGJ,MAAI,eAAe,SAAS,OAC1B,cAAa,eAAe;MAE5B,eAAc,OAAO,gBAAgB,eAAe,EAClD,SAAS,0BACV,CAAC,EAAE;AAGN,MAAI,kBAAkB,SAAS,OAC7B,iBAAgB,kBAAkB;MAElC,iBAAgB,OAAO,gBAAgB,oBAAoB;GACzD,OAAO;GACP,SAAS,6BAA6B,WAAW;GAClD,CAAC;AAGJ,MAAI,UAAU,SAAS,OACrB,SAAQ,OAAO,UAAU,MAAM;MAE/B,SAAQ;AAGV,WAAS;GACP;GACA;GACA;GACA,eAAe,SAAS,MAAM,cAAc;GAC7C;;CAGH,MAAM,MAAM,OAAO,oBAAoB,mBAAmB,OAAO;CAEjE,MAAM,OAAO;EACX,SAAS,IAAI,KAAK;EAClB,eAAe,IAAI,KAAK;EACxB,OAAO,OAAO,IAAI,KAAK,MAAM;EAC7B,OAAO,IAAI,KAAK;EACjB;AAED,KAAI,YAAY,MAAO;CAEvB,MAAM,SAAS,OAAO,gBAAgB,OAAO,MAAM,YAAY,IAAI;AACnE,QAAO,QAAQ,IAAI,OAAO;EAC1B;AAEJ,MAAM,QAAQ,KAAK,OAAO,QAAQ,CAAC,KACjC,KAAK,gBAAgB,2CAA2C,EAChE,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;AAED,MAAM,aAAa,KAAK,OAAO,cAAc,CAAC,KAC5C,KAAK,gBAAgB,kCAAkC,EACvD,KAAK,UAAU,KAAK,EACpB,KAAK,SACN;AAED,MAAM,gBAAgB,KAAK,SAAS,iBAAiB,CAAC,KACpD,KAAK,gBAAgB,qCAAqC,EAC1D,KAAK,UAAU,KAAK,EACpB,KAAK,SACN;AAED,MAAM,QAAQ,KAAK,QAAQ,QAAQ,CAAC,KAClC,KAAK,gBAAgB,iCAAiC,EACtD,KAAK,UAAU,IAAI,EACnB,KAAK,SACN;;;;;;AAOD,MAAa,4BAA4B,QAAQ,KAC/C,UACA;CAAE;CAAO;CAAY;CAAe;CAAO,GAC1C,EAAE,OAAO,YAAY,eAAe,YACnC,QAAQ,OAAO,YAAY,eAAe,MAAM,CACnD,CAAC,KACA,QAAQ,UAAU,IAAI,EACtB,QAAQ,gBAAgB,8BAA8B,EACtD,QAAQ,aAAa;CACnB;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SACE;EACF,aACE;EACH;CACD;EACE,SAAS;EACT,aAAa;EACd;CACD;EACE,SAAS;EACT,aAAa;EACd;CACF,CAAC,CACH"}
|