@catp-protocol/cli 0.1.0 → 0.2.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/dist/audit/logger.d.ts +3 -2
- package/dist/audit/logger.d.ts.map +1 -1
- package/dist/audit/logger.js +37 -10
- package/dist/audit/logger.js.map +1 -1
- package/dist/audit/paths.d.ts +4 -0
- package/dist/audit/paths.d.ts.map +1 -0
- package/dist/audit/paths.js +12 -0
- package/dist/audit/paths.js.map +1 -0
- package/dist/audit/verifier.d.ts.map +1 -1
- package/dist/audit/verifier.js +1 -1
- package/dist/audit/verifier.js.map +1 -1
- package/dist/cli.js +49 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/anchor.d.ts +7 -0
- package/dist/commands/anchor.d.ts.map +1 -0
- package/dist/commands/anchor.js +122 -0
- package/dist/commands/anchor.js.map +1 -0
- package/dist/commands/authorization.d.ts +68 -0
- package/dist/commands/authorization.d.ts.map +1 -0
- package/dist/commands/authorization.js +342 -0
- package/dist/commands/authorization.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +22 -11
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/witness.d.ts +39 -0
- package/dist/commands/witness.d.ts.map +1 -0
- package/dist/commands/witness.js +164 -0
- package/dist/commands/witness.js.map +1 -0
- package/dist/policy/loader.d.ts.map +1 -1
- package/dist/policy/loader.js +36 -1
- package/dist/policy/loader.js.map +1 -1
- package/dist/policy/types.d.ts +19 -0
- package/dist/policy/types.d.ts.map +1 -1
- package/package.json +20 -9
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { auditRoot } from "../audit/paths.js";
|
|
4
|
+
import { findPolicyFile, loadPolicy } from "../policy/loader.js";
|
|
5
|
+
const MAX_U64 = (1n << 64n) - 1n;
|
|
6
|
+
const ACTION_TYPE = {
|
|
7
|
+
swap: "0",
|
|
8
|
+
transfer: "1",
|
|
9
|
+
deposit: "2",
|
|
10
|
+
withdraw: "3",
|
|
11
|
+
};
|
|
12
|
+
export function buildGroth16Witness(policy, action, opts = {}) {
|
|
13
|
+
if (!policy.authorization) {
|
|
14
|
+
throw new Error("catp-policy.toml is missing [authorization]");
|
|
15
|
+
}
|
|
16
|
+
const auth = normalizeAuthorization(policy.authorization);
|
|
17
|
+
const actionType = normalizeActionType(action.actionType, "actionType");
|
|
18
|
+
const value = normalizeU64(action.value, "value");
|
|
19
|
+
const currentTimestamp = normalizeU64(opts.currentTimestamp ?? action.currentTimestamp ?? Math.floor(Date.now() / 1000), "currentTimestamp");
|
|
20
|
+
const cumulativeSpend = normalizeU64(opts.cumulativeSpend ?? action.cumulativeSpend ?? "0", "cumulativeSpend");
|
|
21
|
+
const protocol = normalizeBytes32(action.protocol, "protocol");
|
|
22
|
+
const token = normalizeBytes32(action.token, "token");
|
|
23
|
+
if (actionType !== auth.allowedAction) {
|
|
24
|
+
throw new Error("actionType must match authorization.allowed_action");
|
|
25
|
+
}
|
|
26
|
+
if (protocol.toLowerCase() !== auth.allowedProtocol.toLowerCase()) {
|
|
27
|
+
throw new Error("protocol must match authorization.allowed_protocol");
|
|
28
|
+
}
|
|
29
|
+
if (token.toLowerCase() !== auth.allowedToken.toLowerCase()) {
|
|
30
|
+
throw new Error("token must match authorization.allowed_token");
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
actionType,
|
|
34
|
+
protocol,
|
|
35
|
+
token,
|
|
36
|
+
value,
|
|
37
|
+
currentTimestamp,
|
|
38
|
+
cumulativeSpend,
|
|
39
|
+
allowedAction: auth.allowedAction,
|
|
40
|
+
allowedProtocol: auth.allowedProtocol,
|
|
41
|
+
allowedToken: auth.allowedToken,
|
|
42
|
+
maxValuePerTx: auth.maxValuePerTx,
|
|
43
|
+
maxValueTotal: auth.maxValueTotal,
|
|
44
|
+
validFrom: auth.validFrom,
|
|
45
|
+
validUntil: auth.validUntil,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function cmdWitness(opts) {
|
|
49
|
+
const witness = buildGroth16WitnessFromSources(opts);
|
|
50
|
+
const encoded = `${JSON.stringify(witness, null, 2)}\n`;
|
|
51
|
+
if (opts.out) {
|
|
52
|
+
writeFileSync(opts.out, encoded, "utf8");
|
|
53
|
+
process.stdout.write(`Wrote Groth16 witness to ${opts.out}\n`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
process.stdout.write(encoded);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export function buildGroth16WitnessFromSources(opts) {
|
|
60
|
+
if (!opts.action && !opts.auditCommitment) {
|
|
61
|
+
throw new Error("missing --action <path> or --audit-commitment <hex>");
|
|
62
|
+
}
|
|
63
|
+
if (opts.action && opts.auditCommitment) {
|
|
64
|
+
throw new Error("use only one of --action or --audit-commitment");
|
|
65
|
+
}
|
|
66
|
+
const policyPath = opts.file ?? findPolicyFile();
|
|
67
|
+
if (!policyPath) {
|
|
68
|
+
throw new Error("Could not find catp-policy.toml. Specify --file <path>.");
|
|
69
|
+
}
|
|
70
|
+
const policy = loadPolicy(policyPath);
|
|
71
|
+
const action = opts.action
|
|
72
|
+
? JSON.parse(readFileSync(opts.action, "utf8"))
|
|
73
|
+
: readAuthorizationActionFromAudit(resolveAgentId(policy, opts.agent), opts.auditCommitment);
|
|
74
|
+
return buildGroth16Witness(policy, action, {
|
|
75
|
+
currentTimestamp: opts.currentTimestamp,
|
|
76
|
+
cumulativeSpend: opts.cumulativeSpend,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function resolveAgentId(policy, agent) {
|
|
80
|
+
return agent ?? policy.agent.id;
|
|
81
|
+
}
|
|
82
|
+
function readAuthorizationActionFromAudit(agentId, commitment) {
|
|
83
|
+
if (!/^[0-9a-fA-F]{64}$/.test(commitment)) {
|
|
84
|
+
throw new Error("--audit-commitment must be a 64-character hex commitment");
|
|
85
|
+
}
|
|
86
|
+
const entry = findAuditEntry(agentId, commitment);
|
|
87
|
+
if (!entry) {
|
|
88
|
+
throw new Error(`No audit entry found for commitment ${commitment}`);
|
|
89
|
+
}
|
|
90
|
+
if (!entry.authorization) {
|
|
91
|
+
throw new Error(`Audit entry ${commitment} does not contain authorization action data`);
|
|
92
|
+
}
|
|
93
|
+
return entry.authorization;
|
|
94
|
+
}
|
|
95
|
+
function findAuditEntry(agentId, commitment) {
|
|
96
|
+
const root = auditRoot(agentId);
|
|
97
|
+
if (!existsSync(root))
|
|
98
|
+
return null;
|
|
99
|
+
for (const date of readdirSync(root).sort()) {
|
|
100
|
+
const file = join(root, date, "actions.jsonl");
|
|
101
|
+
if (!existsSync(file))
|
|
102
|
+
continue;
|
|
103
|
+
const lines = readFileSync(file, "utf8").trimEnd().split("\n").filter(Boolean);
|
|
104
|
+
for (const line of lines) {
|
|
105
|
+
try {
|
|
106
|
+
const entry = JSON.parse(line);
|
|
107
|
+
if (entry.commitment.toLowerCase() === commitment.toLowerCase()) {
|
|
108
|
+
return entry;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// skip malformed audit lines
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
function normalizeAuthorization(auth) {
|
|
119
|
+
return {
|
|
120
|
+
allowedAction: normalizeActionType(auth.allowed_action, "authorization.allowed_action"),
|
|
121
|
+
allowedProtocol: normalizeBytes32(auth.allowed_protocol, "authorization.allowed_protocol"),
|
|
122
|
+
allowedToken: normalizeBytes32(auth.allowed_token, "authorization.allowed_token"),
|
|
123
|
+
maxValuePerTx: normalizeU64(auth.max_value_per_tx, "authorization.max_value_per_tx"),
|
|
124
|
+
maxValueTotal: normalizeU64(auth.max_value_total, "authorization.max_value_total"),
|
|
125
|
+
validFrom: normalizeU64(auth.valid_from, "authorization.valid_from"),
|
|
126
|
+
validUntil: normalizeU64(auth.valid_until, "authorization.valid_until"),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function normalizeActionType(value, field) {
|
|
130
|
+
if (typeof value === "string" && ACTION_TYPE[value.toLowerCase()] !== undefined) {
|
|
131
|
+
return ACTION_TYPE[value.toLowerCase()];
|
|
132
|
+
}
|
|
133
|
+
const parsed = normalizeU64(value, field);
|
|
134
|
+
if (!["0", "1", "2", "3"].includes(parsed)) {
|
|
135
|
+
throw new Error(`${field} must be Swap, Transfer, Deposit, Withdraw, or 0..3`);
|
|
136
|
+
}
|
|
137
|
+
return parsed;
|
|
138
|
+
}
|
|
139
|
+
function normalizeBytes32(value, field) {
|
|
140
|
+
if (!/^0x[0-9a-fA-F]{64}$/.test(value)) {
|
|
141
|
+
throw new Error(`${field} must be a 0x-prefixed 32-byte hex string`);
|
|
142
|
+
}
|
|
143
|
+
return value;
|
|
144
|
+
}
|
|
145
|
+
function normalizeU64(value, field) {
|
|
146
|
+
let parsed;
|
|
147
|
+
if (typeof value === "number") {
|
|
148
|
+
if (!Number.isSafeInteger(value)) {
|
|
149
|
+
throw new Error(`${field} must be a safe integer`);
|
|
150
|
+
}
|
|
151
|
+
parsed = BigInt(value);
|
|
152
|
+
}
|
|
153
|
+
else if (/^0x[0-9a-fA-F]+$/.test(value) || /^[0-9]+$/.test(value)) {
|
|
154
|
+
parsed = BigInt(value);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
throw new Error(`${field} must be an integer string`);
|
|
158
|
+
}
|
|
159
|
+
if (parsed < 0n || parsed > MAX_U64) {
|
|
160
|
+
throw new Error(`${field} must fit in u64`);
|
|
161
|
+
}
|
|
162
|
+
return parsed.toString();
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=witness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"witness.js","sourceRoot":"","sources":["../../src/commands/witness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/policy/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/policy/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,YAAY,CAAC;AAIlE,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAS9E;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAIzD"}
|
package/dist/policy/loader.js
CHANGED
|
@@ -57,7 +57,11 @@ function validate(raw, path) {
|
|
|
57
57
|
reason: typeof rule.reason === "string" ? rule.reason : undefined,
|
|
58
58
|
};
|
|
59
59
|
});
|
|
60
|
-
return {
|
|
60
|
+
return {
|
|
61
|
+
agent: { id: agent.id, version: agent.version },
|
|
62
|
+
rules,
|
|
63
|
+
authorization: validateAuthorization(obj.authorization, path),
|
|
64
|
+
};
|
|
61
65
|
}
|
|
62
66
|
function toStringArray(v) {
|
|
63
67
|
if (v === undefined || v === null)
|
|
@@ -66,4 +70,35 @@ function toStringArray(v) {
|
|
|
66
70
|
return undefined;
|
|
67
71
|
return v.filter((x) => typeof x === "string");
|
|
68
72
|
}
|
|
73
|
+
function validateAuthorization(raw, path) {
|
|
74
|
+
if (raw === undefined || raw === null)
|
|
75
|
+
return undefined;
|
|
76
|
+
if (typeof raw !== "object") {
|
|
77
|
+
throw new Error(`${path}: [authorization] must be an object`);
|
|
78
|
+
}
|
|
79
|
+
const auth = raw;
|
|
80
|
+
const required = [
|
|
81
|
+
"allowed_action",
|
|
82
|
+
"allowed_protocol",
|
|
83
|
+
"allowed_token",
|
|
84
|
+
"max_value_per_tx",
|
|
85
|
+
"max_value_total",
|
|
86
|
+
"valid_from",
|
|
87
|
+
"valid_until",
|
|
88
|
+
];
|
|
89
|
+
for (const field of required) {
|
|
90
|
+
if (typeof auth[field] !== "string" || auth[field] === "") {
|
|
91
|
+
throw new Error(`${path}: authorization.${field} must be a non-empty string`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
allowed_action: auth.allowed_action,
|
|
96
|
+
allowed_protocol: auth.allowed_protocol,
|
|
97
|
+
allowed_token: auth.allowed_token,
|
|
98
|
+
max_value_per_tx: auth.max_value_per_tx,
|
|
99
|
+
max_value_total: auth.max_value_total,
|
|
100
|
+
valid_from: auth.valid_from,
|
|
101
|
+
valid_until: auth.valid_until,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
69
104
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/policy/loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/policy/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/policy/types.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export interface Rule {
|
|
|
13
13
|
export interface CatpPolicy {
|
|
14
14
|
agent: AgentMeta;
|
|
15
15
|
rules: Rule[];
|
|
16
|
+
authorization?: AuthorizationConfig;
|
|
16
17
|
}
|
|
17
18
|
export interface HookInput {
|
|
18
19
|
session_id?: string;
|
|
@@ -26,5 +27,23 @@ export interface AuditEntry {
|
|
|
26
27
|
rule_matched: string | null;
|
|
27
28
|
commitment: string;
|
|
28
29
|
input_summary: string;
|
|
30
|
+
authorization?: AuthorizationAction;
|
|
31
|
+
}
|
|
32
|
+
export interface AuthorizationConfig {
|
|
33
|
+
allowed_action: string;
|
|
34
|
+
allowed_protocol: string;
|
|
35
|
+
allowed_token: string;
|
|
36
|
+
max_value_per_tx: string;
|
|
37
|
+
max_value_total: string;
|
|
38
|
+
valid_from: string;
|
|
39
|
+
valid_until: string;
|
|
40
|
+
}
|
|
41
|
+
export interface AuthorizationAction {
|
|
42
|
+
actionType: string | number;
|
|
43
|
+
protocol: string;
|
|
44
|
+
token: string;
|
|
45
|
+
value: string | number;
|
|
46
|
+
currentTimestamp?: string | number;
|
|
47
|
+
cumulativeSpend?: string | number;
|
|
29
48
|
}
|
|
30
49
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC"}
|
package/package.json
CHANGED
|
@@ -1,37 +1,48 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@catp-protocol/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Cryptographic Agent Trust Protocol — local enforcement plugin for Claude Code with TOML policy and tamper-evident audit log",
|
|
5
|
-
"keywords": [
|
|
5
|
+
"keywords": [
|
|
6
|
+
"claude-code",
|
|
7
|
+
"ai-agents",
|
|
8
|
+
"policy",
|
|
9
|
+
"audit",
|
|
10
|
+
"hooks",
|
|
11
|
+
"trust",
|
|
12
|
+
"zk"
|
|
13
|
+
],
|
|
6
14
|
"license": "MIT",
|
|
7
15
|
"homepage": "https://github.com/lfzkoala/catp#readme",
|
|
8
16
|
"bugs": "https://github.com/lfzkoala/catp/issues",
|
|
9
17
|
"repository": {
|
|
10
18
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/lfzkoala/catp.git"
|
|
19
|
+
"url": "git+https://github.com/lfzkoala/catp.git"
|
|
12
20
|
},
|
|
13
21
|
"type": "module",
|
|
14
22
|
"bin": {
|
|
15
|
-
"catp": "
|
|
23
|
+
"catp": "dist/cli.js"
|
|
16
24
|
},
|
|
17
|
-
"files": [
|
|
25
|
+
"files": [
|
|
26
|
+
"dist"
|
|
27
|
+
],
|
|
18
28
|
"engines": {
|
|
19
29
|
"node": ">=20"
|
|
20
30
|
},
|
|
21
31
|
"scripts": {
|
|
22
32
|
"build": "tsc",
|
|
23
33
|
"typecheck": "tsc --noEmit",
|
|
24
|
-
"test": "node --experimental-vm-modules node_modules/.bin/jest",
|
|
25
|
-
"test:coverage": "node --experimental-vm-modules node_modules/.bin/jest --coverage --ci"
|
|
34
|
+
"test": "node --experimental-vm-modules ../node_modules/.bin/jest --config jest.config.cjs",
|
|
35
|
+
"test:coverage": "node --experimental-vm-modules ../node_modules/.bin/jest --config jest.config.cjs --coverage --ci"
|
|
26
36
|
},
|
|
27
37
|
"dependencies": {
|
|
28
38
|
"commander": "^12.0.0",
|
|
29
39
|
"micromatch": "^4.0.5",
|
|
30
|
-
"smol-toml": "^1.3.0"
|
|
40
|
+
"smol-toml": "^1.3.0",
|
|
41
|
+
"viem": "^2"
|
|
31
42
|
},
|
|
32
43
|
"devDependencies": {
|
|
33
44
|
"@types/micromatch": "^4.0.6",
|
|
34
|
-
"@types/node": "^20.
|
|
45
|
+
"@types/node": "^20.19.39",
|
|
35
46
|
"jest": "^29.0.0",
|
|
36
47
|
"ts-jest": "^29.0.0",
|
|
37
48
|
"typescript": "^5.4.0"
|