arc402-cli 0.7.5 → 0.8.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.
Files changed (264) hide show
  1. package/MIGRATION-SPEC.md +108 -0
  2. package/dist/abis.js +14 -17
  3. package/dist/abis.js.map +1 -1
  4. package/dist/bundler.d.ts +1 -1
  5. package/dist/bundler.d.ts.map +1 -1
  6. package/dist/bundler.js +27 -61
  7. package/dist/bundler.js.map +1 -1
  8. package/dist/client.d.ts +1 -1
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +5 -9
  11. package/dist/client.js.map +1 -1
  12. package/dist/coinbase-smart-wallet.js +1 -4
  13. package/dist/coinbase-smart-wallet.js.map +1 -1
  14. package/dist/commands/accept.js +25 -28
  15. package/dist/commands/accept.js.map +1 -1
  16. package/dist/commands/agent-handshake.js +15 -18
  17. package/dist/commands/agent-handshake.js.map +1 -1
  18. package/dist/commands/agent.js +98 -104
  19. package/dist/commands/agent.js.map +1 -1
  20. package/dist/commands/agreements.js +62 -98
  21. package/dist/commands/agreements.js.map +1 -1
  22. package/dist/commands/arbitrator.js +45 -81
  23. package/dist/commands/arbitrator.js.map +1 -1
  24. package/dist/commands/arena-handshake.js +27 -30
  25. package/dist/commands/arena-handshake.js.map +1 -1
  26. package/dist/commands/arena.js +12 -18
  27. package/dist/commands/arena.js.map +1 -1
  28. package/dist/commands/backup.js +30 -36
  29. package/dist/commands/backup.js.map +1 -1
  30. package/dist/commands/cancel.js +15 -18
  31. package/dist/commands/cancel.js.map +1 -1
  32. package/dist/commands/channel.js +45 -81
  33. package/dist/commands/channel.js.map +1 -1
  34. package/dist/commands/coldstart.js +31 -34
  35. package/dist/commands/coldstart.js.map +1 -1
  36. package/dist/commands/config.js +23 -29
  37. package/dist/commands/config.js.map +1 -1
  38. package/dist/commands/contract-interaction.js +12 -15
  39. package/dist/commands/contract-interaction.js.map +1 -1
  40. package/dist/commands/daemon.d.ts.map +1 -1
  41. package/dist/commands/daemon.js +98 -135
  42. package/dist/commands/daemon.js.map +1 -1
  43. package/dist/commands/deliver.js +37 -76
  44. package/dist/commands/deliver.js.map +1 -1
  45. package/dist/commands/discover.js +24 -27
  46. package/dist/commands/discover.js.map +1 -1
  47. package/dist/commands/dispute.js +104 -110
  48. package/dist/commands/dispute.js.map +1 -1
  49. package/dist/commands/doctor.js +16 -55
  50. package/dist/commands/doctor.js.map +1 -1
  51. package/dist/commands/endpoint.js +56 -95
  52. package/dist/commands/endpoint.js.map +1 -1
  53. package/dist/commands/feed.js +11 -18
  54. package/dist/commands/feed.js.map +1 -1
  55. package/dist/commands/hire.js +37 -40
  56. package/dist/commands/hire.js.map +1 -1
  57. package/dist/commands/migrate.js +30 -33
  58. package/dist/commands/migrate.js.map +1 -1
  59. package/dist/commands/negotiate.d.ts.map +1 -1
  60. package/dist/commands/negotiate.js +34 -36
  61. package/dist/commands/negotiate.js.map +1 -1
  62. package/dist/commands/openshell.js +68 -104
  63. package/dist/commands/openshell.js.map +1 -1
  64. package/dist/commands/owner.js +17 -20
  65. package/dist/commands/owner.js.map +1 -1
  66. package/dist/commands/policy.js +41 -43
  67. package/dist/commands/policy.js.map +1 -1
  68. package/dist/commands/relay.d.ts.map +1 -1
  69. package/dist/commands/relay.js +18 -51
  70. package/dist/commands/relay.js.map +1 -1
  71. package/dist/commands/remediate.js +20 -23
  72. package/dist/commands/remediate.js.map +1 -1
  73. package/dist/commands/reputation.js +25 -27
  74. package/dist/commands/reputation.js.map +1 -1
  75. package/dist/commands/setup.js +65 -104
  76. package/dist/commands/setup.js.map +1 -1
  77. package/dist/commands/trust.js +17 -20
  78. package/dist/commands/trust.js.map +1 -1
  79. package/dist/commands/verify.js +18 -21
  80. package/dist/commands/verify.js.map +1 -1
  81. package/dist/commands/wallet.js +619 -625
  82. package/dist/commands/wallet.js.map +1 -1
  83. package/dist/commands/watch.js +33 -36
  84. package/dist/commands/watch.js.map +1 -1
  85. package/dist/commands/watchtower.js +37 -73
  86. package/dist/commands/watchtower.js.map +1 -1
  87. package/dist/commands/workroom.d.ts.map +1 -1
  88. package/dist/commands/workroom.js +138 -171
  89. package/dist/commands/workroom.js.map +1 -1
  90. package/dist/config.js +21 -65
  91. package/dist/config.js.map +1 -1
  92. package/dist/daemon/config.d.ts.map +1 -1
  93. package/dist/daemon/config.js +16 -53
  94. package/dist/daemon/config.js.map +1 -1
  95. package/dist/daemon/hire-listener.d.ts +3 -3
  96. package/dist/daemon/hire-listener.d.ts.map +1 -1
  97. package/dist/daemon/hire-listener.js +13 -47
  98. package/dist/daemon/hire-listener.js.map +1 -1
  99. package/dist/daemon/index.d.ts +1 -1
  100. package/dist/daemon/index.d.ts.map +1 -1
  101. package/dist/daemon/index.js +50 -88
  102. package/dist/daemon/index.js.map +1 -1
  103. package/dist/daemon/job-lifecycle.d.ts +1 -1
  104. package/dist/daemon/job-lifecycle.d.ts.map +1 -1
  105. package/dist/daemon/job-lifecycle.js +11 -51
  106. package/dist/daemon/job-lifecycle.js.map +1 -1
  107. package/dist/daemon/notify.d.ts +1 -1
  108. package/dist/daemon/notify.d.ts.map +1 -1
  109. package/dist/daemon/notify.js +19 -53
  110. package/dist/daemon/notify.js.map +1 -1
  111. package/dist/daemon/token-metering.js +8 -47
  112. package/dist/daemon/token-metering.js.map +1 -1
  113. package/dist/daemon/userops.d.ts +2 -2
  114. package/dist/daemon/userops.d.ts.map +1 -1
  115. package/dist/daemon/userops.js +23 -27
  116. package/dist/daemon/userops.js.map +1 -1
  117. package/dist/daemon/wallet-monitor.d.ts +1 -1
  118. package/dist/daemon/wallet-monitor.d.ts.map +1 -1
  119. package/dist/daemon/wallet-monitor.js +8 -12
  120. package/dist/daemon/wallet-monitor.js.map +1 -1
  121. package/dist/drain-v4.js +26 -64
  122. package/dist/drain-v4.js.map +1 -1
  123. package/dist/endpoint-config.js +20 -63
  124. package/dist/endpoint-config.js.map +1 -1
  125. package/dist/endpoint-notify.js +9 -48
  126. package/dist/endpoint-notify.js.map +1 -1
  127. package/dist/index.js +16 -50
  128. package/dist/index.js.map +1 -1
  129. package/dist/openshell-runtime.d.ts.map +1 -1
  130. package/dist/openshell-runtime.js +38 -82
  131. package/dist/openshell-runtime.js.map +1 -1
  132. package/dist/program.d.ts.map +1 -1
  133. package/dist/program.js +77 -83
  134. package/dist/program.js.map +1 -1
  135. package/dist/repl.js +25 -31
  136. package/dist/repl.js.map +1 -1
  137. package/dist/signing.js +3 -6
  138. package/dist/signing.js.map +1 -1
  139. package/dist/telegram-notify.js +3 -40
  140. package/dist/telegram-notify.js.map +1 -1
  141. package/dist/tui/App.d.ts +1 -9
  142. package/dist/tui/App.d.ts.map +1 -1
  143. package/dist/tui/App.js +47 -65
  144. package/dist/tui/App.js.map +1 -1
  145. package/dist/tui/Footer.js +4 -7
  146. package/dist/tui/Footer.js.map +1 -1
  147. package/dist/tui/Header.d.ts +1 -2
  148. package/dist/tui/Header.d.ts.map +1 -1
  149. package/dist/tui/Header.js +8 -14
  150. package/dist/tui/Header.js.map +1 -1
  151. package/dist/tui/InputLine.js +17 -23
  152. package/dist/tui/InputLine.js.map +1 -1
  153. package/dist/tui/Viewport.d.ts +5 -4
  154. package/dist/tui/Viewport.d.ts.map +1 -1
  155. package/dist/tui/Viewport.js +20 -13
  156. package/dist/tui/Viewport.js.map +1 -1
  157. package/dist/tui/WalletConnectPairing.d.ts +23 -0
  158. package/dist/tui/WalletConnectPairing.d.ts.map +1 -0
  159. package/dist/tui/WalletConnectPairing.js +75 -0
  160. package/dist/tui/WalletConnectPairing.js.map +1 -0
  161. package/dist/tui/index.d.ts.map +1 -1
  162. package/dist/tui/index.js +14 -21
  163. package/dist/tui/index.js.map +1 -1
  164. package/dist/tui/useChat.js +13 -19
  165. package/dist/tui/useChat.js.map +1 -1
  166. package/dist/tui/useCommand.d.ts +2 -7
  167. package/dist/tui/useCommand.d.ts.map +1 -1
  168. package/dist/tui/useCommand.js +77 -165
  169. package/dist/tui/useCommand.js.map +1 -1
  170. package/dist/tui/useScroll.js +9 -12
  171. package/dist/tui/useScroll.js.map +1 -1
  172. package/dist/ui/banner.js +12 -19
  173. package/dist/ui/banner.js.map +1 -1
  174. package/dist/ui/colors.js +13 -19
  175. package/dist/ui/colors.js.map +1 -1
  176. package/dist/ui/format.js +6 -14
  177. package/dist/ui/format.js.map +1 -1
  178. package/dist/ui/spinner.js +6 -12
  179. package/dist/ui/spinner.js.map +1 -1
  180. package/dist/ui/tree.js +3 -6
  181. package/dist/ui/tree.js.map +1 -1
  182. package/dist/utils/format.js +27 -41
  183. package/dist/utils/format.js.map +1 -1
  184. package/dist/utils/hash.js +4 -42
  185. package/dist/utils/hash.js.map +1 -1
  186. package/dist/utils/time.js +2 -6
  187. package/dist/utils/time.js.map +1 -1
  188. package/dist/wallet-router.d.ts +1 -1
  189. package/dist/wallet-router.d.ts.map +1 -1
  190. package/dist/wallet-router.js +12 -19
  191. package/dist/wallet-router.js.map +1 -1
  192. package/dist/walletconnect-session.d.ts +1 -1
  193. package/dist/walletconnect-session.d.ts.map +1 -1
  194. package/dist/walletconnect-session.js +6 -11
  195. package/dist/walletconnect-session.js.map +1 -1
  196. package/dist/walletconnect.d.ts +6 -1
  197. package/dist/walletconnect.d.ts.map +1 -1
  198. package/dist/walletconnect.js +32 -35
  199. package/dist/walletconnect.js.map +1 -1
  200. package/package.json +7 -6
  201. package/src/bundler.ts +1 -1
  202. package/src/client.ts +1 -1
  203. package/src/commands/accept.ts +7 -7
  204. package/src/commands/agent-handshake.ts +4 -4
  205. package/src/commands/agent.ts +9 -9
  206. package/src/commands/agreements.ts +8 -8
  207. package/src/commands/arbitrator.ts +5 -5
  208. package/src/commands/arena-handshake.ts +6 -6
  209. package/src/commands/arena.ts +2 -2
  210. package/src/commands/backup.ts +1 -1
  211. package/src/commands/cancel.ts +6 -6
  212. package/src/commands/channel.ts +6 -6
  213. package/src/commands/coldstart.ts +5 -5
  214. package/src/commands/config.ts +2 -2
  215. package/src/commands/contract-interaction.ts +2 -2
  216. package/src/commands/daemon.ts +14 -11
  217. package/src/commands/deliver.ts +9 -9
  218. package/src/commands/discover.ts +5 -5
  219. package/src/commands/dispute.ts +7 -7
  220. package/src/commands/doctor.ts +2 -2
  221. package/src/commands/endpoint.ts +6 -6
  222. package/src/commands/feed.ts +1 -1
  223. package/src/commands/hire.ts +10 -10
  224. package/src/commands/migrate.ts +7 -7
  225. package/src/commands/negotiate.ts +6 -5
  226. package/src/commands/openshell.ts +4 -4
  227. package/src/commands/owner.ts +5 -5
  228. package/src/commands/policy.ts +5 -5
  229. package/src/commands/relay.ts +5 -1
  230. package/src/commands/remediate.ts +5 -5
  231. package/src/commands/reputation.ts +6 -6
  232. package/src/commands/setup.ts +1 -1
  233. package/src/commands/trust.ts +6 -6
  234. package/src/commands/verify.ts +6 -6
  235. package/src/commands/wallet.ts +15 -15
  236. package/src/commands/watch.ts +3 -3
  237. package/src/commands/watchtower.ts +6 -6
  238. package/src/commands/workroom.ts +14 -10
  239. package/src/daemon/config.ts +2 -1
  240. package/src/daemon/hire-listener.ts +3 -3
  241. package/src/daemon/index.ts +10 -9
  242. package/src/daemon/job-lifecycle.ts +1 -1
  243. package/src/daemon/notify.ts +4 -4
  244. package/src/daemon/userops.ts +4 -4
  245. package/src/daemon/wallet-monitor.ts +2 -2
  246. package/src/endpoint-notify.ts +1 -1
  247. package/src/index.ts +8 -7
  248. package/src/openshell-runtime.ts +5 -1
  249. package/src/program.ts +36 -36
  250. package/src/repl.ts +3 -3
  251. package/src/tui/App.tsx +26 -47
  252. package/src/tui/Header.tsx +3 -10
  253. package/src/tui/InputLine.tsx +1 -1
  254. package/src/tui/Viewport.tsx +22 -18
  255. package/src/tui/WalletConnectPairing.tsx +131 -0
  256. package/src/tui/index.tsx +7 -8
  257. package/src/tui/useChat.ts +1 -1
  258. package/src/tui/useCommand.ts +86 -183
  259. package/src/ui/banner.ts +2 -2
  260. package/src/ui/tree.ts +1 -1
  261. package/src/wallet-router.ts +2 -2
  262. package/src/walletconnect-session.ts +1 -1
  263. package/src/walletconnect.ts +20 -5
  264. package/tsconfig.json +16 -7
@@ -1,36 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerHandshakeCommand = registerHandshakeCommand;
4
- const ethers_1 = require("ethers");
5
- const config_1 = require("../config");
6
- const client_1 = require("../client");
7
- const colors_1 = require("../ui/colors");
8
- const tree_1 = require("../ui/tree");
1
+ import { ethers } from "ethers";
2
+ import { loadConfig } from "../config.js";
3
+ import { requireSigner } from "../client.js";
4
+ import { c } from "../ui/colors.js";
5
+ import { renderTree } from "../ui/tree.js";
9
6
  // Challenge-response: both agents sign a shared nonce with their agent key
10
7
  // and verify each other against AgentRegistry
11
8
  const AGENT_REGISTRY_ABI = [
12
9
  "function isRegistered(address wallet) view returns (bool)",
13
10
  "function getAgent(address wallet) view returns (tuple(address wallet, string endpoint, string serviceType, bool active, uint256 registeredAt))",
14
11
  ];
15
- function registerHandshakeCommand(program) {
12
+ export function registerHandshakeCommand(program) {
16
13
  program
17
14
  .command("handshake <agentAddress>")
18
15
  .description("Mutual challenge-response authentication with another ARC-402 agent. Verifies both parties are registered before any negotiation begins.")
19
16
  .option("--json", "Output as machine-parseable JSON")
20
17
  .action(async (agentAddress, opts) => {
21
- const config = (0, config_1.loadConfig)();
22
- const { signer, provider } = await (0, client_1.requireSigner)(config);
18
+ const config = loadConfig();
19
+ const { signer, provider } = await requireSigner(config);
23
20
  const myAddress = await signer.getAddress();
24
21
  // Generate shared challenge nonce
25
- const challengeNonce = ethers_1.ethers.hexlify(ethers_1.ethers.randomBytes(32));
22
+ const challengeNonce = ethers.hexlify(ethers.randomBytes(32));
26
23
  const timestamp = Math.floor(Date.now() / 1000);
27
24
  // Sign: keccak256(HANDSHAKE + myAddress + theirAddress + challengeNonce + timestamp)
28
- const digest = ethers_1.ethers.solidityPackedKeccak256(["string", "address", "address", "bytes32", "uint256"], ["HANDSHAKE", myAddress, agentAddress, challengeNonce, timestamp]);
29
- const mySig = await signer.signMessage(ethers_1.ethers.getBytes(digest));
25
+ const digest = ethers.solidityPackedKeccak256(["string", "address", "address", "bytes32", "uint256"], ["HANDSHAKE", myAddress, agentAddress, challengeNonce, timestamp]);
26
+ const mySig = await signer.signMessage(ethers.getBytes(digest));
30
27
  // Fetch their endpoint from AgentRegistry to send challenge
31
28
  if (!config.agentRegistryAddress)
32
29
  throw new Error("agentRegistryAddress not configured");
33
- const registry = new ethers_1.ethers.Contract(config.agentRegistryAddress, AGENT_REGISTRY_ABI, provider);
30
+ const registry = new ethers.Contract(config.agentRegistryAddress, AGENT_REGISTRY_ABI, provider);
34
31
  const myRegistered = await registry.isRegistered(myAddress);
35
32
  if (!myRegistered)
36
33
  throw new Error(`Your wallet ${myAddress} is not registered in AgentRegistry`);
@@ -52,13 +49,13 @@ function registerHandshakeCommand(program) {
52
49
  console.log(JSON.stringify(challenge));
53
50
  }
54
51
  else {
55
- console.log('\n ' + colors_1.c.mark + colors_1.c.white(' Handshake'));
56
- (0, tree_1.renderTree)([
52
+ console.log('\n ' + c.mark + c.white(' Handshake'));
53
+ renderTree([
57
54
  { label: 'Your identity', value: `${myAddress} (registered)` },
58
55
  { label: 'Their identity', value: `${agentAddress} (registered, active)` },
59
56
  { label: 'Their endpoint', value: theirAgent.endpoint, last: true },
60
57
  ]);
61
- console.log('\n ' + colors_1.c.dim('Signed challenge (send to their endpoint to complete handshake):'));
58
+ console.log('\n ' + c.dim('Signed challenge (send to their endpoint to complete handshake):'));
62
59
  console.log(JSON.stringify(challenge, null, 2));
63
60
  }
64
61
  });
@@ -1 +1 @@
1
- {"version":3,"file":"agent-handshake.js","sourceRoot":"","sources":["../../src/commands/agent-handshake.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-handshake.js","sourceRoot":"","sources":["../../src/commands/agent-handshake.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,27 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.registerAgentCommands = registerAgentCommands;
7
- const sdk_1 = require("@arc402/sdk");
8
- const sdk_2 = require("@arc402/sdk");
9
- const ethers_1 = require("ethers");
10
- const config_1 = require("../config");
11
- const client_1 = require("../client");
12
- const format_1 = require("../utils/format");
13
- const abis_1 = require("../abis");
14
- const wallet_router_1 = require("../wallet-router");
15
- const client_2 = require("../client");
16
- const prompts_1 = __importDefault(require("prompts"));
17
- const chalk_1 = __importDefault(require("chalk"));
18
- const spinner_1 = require("../ui/spinner");
19
- const tree_1 = require("../ui/tree");
1
+ import { AgentRegistryClient } from "@arc402/sdk";
2
+ import { buildMetadata, uploadMetadata, decodeMetadata } from "@arc402/sdk";
3
+ import { ethers } from "ethers";
4
+ import { loadConfig, NETWORK_DEFAULTS } from "../config.js";
5
+ import { requireSigner } from "../client.js";
6
+ import { formatDate, getTrustTier } from "../utils/format.js";
7
+ import { AGENT_REGISTRY_ABI } from "../abis.js";
8
+ import { executeContractWriteViaWallet } from "../wallet-router.js";
9
+ import { getClient } from "../client.js";
10
+ import prompts from "prompts";
11
+ import chalk from "chalk";
12
+ import { startSpinner } from "../ui/spinner.js";
13
+ import { renderTree } from "../ui/tree.js";
20
14
  // ─── helpers ──────────────────────────────────────────────────────────────────
21
15
  /** Resolve the real AgentRegistry address (agentRegistryV2Address > NETWORK_DEFAULTS fallback). */
22
16
  function getAgentRegistryAddress(config) {
23
17
  const addr = config.agentRegistryV2Address ??
24
- config_1.NETWORK_DEFAULTS[config.network]?.agentRegistryV2Address;
18
+ NETWORK_DEFAULTS[config.network]?.agentRegistryV2Address;
25
19
  if (!addr)
26
20
  throw new Error("agentRegistryV2Address missing in config — run `arc402 config set agentRegistryV2Address <address>`");
27
21
  return addr;
28
22
  }
29
23
  // ─── commands ─────────────────────────────────────────────────────────────────
30
- function registerAgentCommands(program) {
24
+ export function registerAgentCommands(program) {
31
25
  const agent = program
32
26
  .command("agent")
33
27
  .description("Agent registry operations");
@@ -43,7 +37,7 @@ function registerAgentCommands(program) {
43
37
  .option("--claim-subdomain <subdomain>", "Claim a <subdomain>.arc402.xyz after registration (launch default: host-managed public ingress outside the sandbox)")
44
38
  .option("--tunnel-target <url>", "Host ingress target URL for the claimed subdomain (required with --claim-subdomain)")
45
39
  .action(async (opts) => {
46
- const config = (0, config_1.loadConfig)();
40
+ const config = loadConfig();
47
41
  const registryAddress = getAgentRegistryAddress(config);
48
42
  let metadataUri = opts.metadataUri ?? "";
49
43
  if (opts.setMetadata) {
@@ -53,16 +47,16 @@ function registerAgentCommands(program) {
53
47
  ? opts.capability.split(",").map((v) => v.trim())
54
48
  : [];
55
49
  if (opts.endpoint) {
56
- console.log(chalk_1.default.dim(`ℹ Registering public endpoint: ${opts.endpoint}`));
57
- console.log(chalk_1.default.dim(" This publishes discovery / ingress metadata only. Sandbox outbound access remains controlled separately by OpenShell policy."));
50
+ console.log(chalk.dim(`ℹ Registering public endpoint: ${opts.endpoint}`));
51
+ console.log(chalk.dim(" This publishes discovery / ingress metadata only. Sandbox outbound access remains controlled separately by OpenShell policy."));
58
52
  }
59
53
  if (config.walletContractAddress) {
60
54
  // ── wallet contract path (machine key signs, wallet is msg.sender) ──
61
55
  // Pre-flight: check machine key is authorized (J5-03)
62
56
  if (config.privateKey) {
63
- const machineKeyAddr = new ethers_1.ethers.Wallet(config.privateKey).address;
64
- const { provider: agentProvider } = await (0, client_2.getClient)(config);
65
- const mkCheck = new ethers_1.ethers.Contract(config.walletContractAddress, ["function authorizedMachineKeys(address) external view returns (bool)"], agentProvider);
57
+ const machineKeyAddr = new ethers.Wallet(config.privateKey).address;
58
+ const { provider: agentProvider } = await getClient(config);
59
+ const mkCheck = new ethers.Contract(config.walletContractAddress, ["function authorizedMachineKeys(address) external view returns (bool)"], agentProvider);
66
60
  let isAuthorized = true;
67
61
  try {
68
62
  isAuthorized = await mkCheck.authorizedMachineKeys(machineKeyAddr);
@@ -75,18 +69,18 @@ function registerAgentCommands(program) {
75
69
  }
76
70
  }
77
71
  console.log(`Registering via ARC402Wallet: ${config.walletContractAddress}`);
78
- const { signer, provider: regProvider } = await (0, client_1.requireSigner)(config);
72
+ const { signer, provider: regProvider } = await requireSigner(config);
79
73
  {
80
74
  const walletBalance = await regProvider.getBalance(config.walletContractAddress);
81
- if (walletBalance < ethers_1.ethers.parseEther("0.0001")) {
82
- console.warn(chalk_1.default.yellow(`⚠️ Low wallet balance: ${ethers_1.ethers.formatEther(walletBalance)} ETH. Registration may fail due to insufficient gas. Fund your wallet with at least 0.0001 ETH first.`));
75
+ if (walletBalance < ethers.parseEther("0.0001")) {
76
+ console.warn(chalk.yellow(`⚠️ Low wallet balance: ${ethers.formatEther(walletBalance)} ETH. Registration may fail due to insufficient gas. Fund your wallet with at least 0.0001 ETH first.`));
83
77
  }
84
78
  }
85
- const regSpinner = (0, spinner_1.startSpinner)("Registering agent...");
86
- const tx = await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, registryAddress, abis_1.AGENT_REGISTRY_ABI, "register", [opts.name, capabilities, opts.serviceType, opts.endpoint ?? "", metadataUri]);
79
+ const regSpinner = startSpinner("Registering agent...");
80
+ const tx = await executeContractWriteViaWallet(config.walletContractAddress, signer, registryAddress, AGENT_REGISTRY_ABI, "register", [opts.name, capabilities, opts.serviceType, opts.endpoint ?? "", metadataUri]);
87
81
  const receipt = await tx.wait();
88
82
  regSpinner.succeed("Registered in AgentRegistry");
89
- (0, tree_1.renderTree)([
83
+ renderTree([
90
84
  { label: "Wallet", value: config.walletContractAddress },
91
85
  { label: "Tx", value: receipt?.hash ?? "", last: !metadataUri },
92
86
  ...(metadataUri ? [{ label: "Metadata", value: metadataUri, last: true }] : []),
@@ -94,29 +88,29 @@ function registerAgentCommands(program) {
94
88
  }
95
89
  else {
96
90
  // ── EOA fallback ──
97
- console.warn(chalk_1.default.yellow("⚠ No walletContractAddress in config — registering from EOA key (msg.sender = hot key)."));
98
- const { signer, address: regAddress, provider: regProvider } = await (0, client_1.requireSigner)(config);
91
+ console.warn(chalk.yellow("⚠ No walletContractAddress in config — registering from EOA key (msg.sender = hot key)."));
92
+ const { signer, address: regAddress, provider: regProvider } = await requireSigner(config);
99
93
  {
100
94
  const walletBalance = await regProvider.getBalance(regAddress);
101
- if (walletBalance < ethers_1.ethers.parseEther("0.0001")) {
102
- console.warn(chalk_1.default.yellow(`⚠️ Low wallet balance: ${ethers_1.ethers.formatEther(walletBalance)} ETH. Registration may fail due to insufficient gas. Fund your wallet with at least 0.0001 ETH first.`));
95
+ if (walletBalance < ethers.parseEther("0.0001")) {
96
+ console.warn(chalk.yellow(`⚠️ Low wallet balance: ${ethers.formatEther(walletBalance)} ETH. Registration may fail due to insufficient gas. Fund your wallet with at least 0.0001 ETH first.`));
103
97
  }
104
98
  }
105
- const client = new sdk_1.AgentRegistryClient(registryAddress, signer);
106
- const eoaSpinner = (0, spinner_1.startSpinner)("Registering agent...");
99
+ const client = new AgentRegistryClient(registryAddress, signer);
100
+ const eoaSpinner = startSpinner("Registering agent...");
107
101
  await client.register({ name: opts.name, serviceType: opts.serviceType, capabilities, endpoint: opts.endpoint ?? "", metadataURI: metadataUri });
108
102
  eoaSpinner.succeed("Registered in AgentRegistry");
109
103
  if (metadataUri) {
110
- (0, tree_1.renderTree)([{ label: "Metadata", value: metadataUri, last: true }]);
104
+ renderTree([{ label: "Metadata", value: metadataUri, last: true }]);
111
105
  }
112
106
  }
113
107
  // ── optional subdomain claim ──────────────────────────────────────────
114
108
  if (opts.claimSubdomain) {
115
109
  if (!opts.tunnelTarget) {
116
- console.error(chalk_1.default.red("--tunnel-target <url> is required with --claim-subdomain"));
110
+ console.error(chalk.red("--tunnel-target <url> is required with --claim-subdomain"));
117
111
  process.exit(1);
118
112
  }
119
- const walletAddress = config.walletContractAddress ?? new ethers_1.ethers.Wallet(config.privateKey).address;
113
+ const walletAddress = config.walletContractAddress ?? new ethers.Wallet(config.privateKey).address;
120
114
  await claimSubdomain(opts.claimSubdomain, walletAddress, opts.tunnelTarget);
121
115
  }
122
116
  });
@@ -129,21 +123,21 @@ function registerAgentCommands(program) {
129
123
  .option("--endpoint <url>", "Endpoint", "")
130
124
  .option("--metadata-uri <uri>", "Metadata URI", "")
131
125
  .action(async (opts) => {
132
- const config = (0, config_1.loadConfig)();
126
+ const config = loadConfig();
133
127
  const registryAddress = getAgentRegistryAddress(config);
134
128
  const capabilities = opts.capability
135
129
  ? opts.capability.split(",").map((v) => v.trim())
136
130
  : [];
137
131
  if (config.walletContractAddress) {
138
- const { signer } = await (0, client_1.requireSigner)(config);
139
- const tx = await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, registryAddress, abis_1.AGENT_REGISTRY_ABI, "update", [opts.name, capabilities, opts.serviceType, opts.endpoint ?? "", opts.metadataUri ?? ""]);
132
+ const { signer } = await requireSigner(config);
133
+ const tx = await executeContractWriteViaWallet(config.walletContractAddress, signer, registryAddress, AGENT_REGISTRY_ABI, "update", [opts.name, capabilities, opts.serviceType, opts.endpoint ?? "", opts.metadataUri ?? ""]);
140
134
  const receipt = await tx.wait();
141
- console.log(chalk_1.default.green(`✓ Agent updated`));
135
+ console.log(chalk.green(`✓ Agent updated`));
142
136
  console.log(` Tx: ${receipt?.hash}`);
143
137
  }
144
138
  else {
145
- const { signer } = await (0, client_1.requireSigner)(config);
146
- const client = new sdk_1.AgentRegistryClient(registryAddress, signer);
139
+ const { signer } = await requireSigner(config);
140
+ const client = new AgentRegistryClient(registryAddress, signer);
147
141
  await client.update({ name: opts.name, serviceType: opts.serviceType, capabilities, endpoint: opts.endpoint, metadataURI: opts.metadataUri });
148
142
  console.log("updated");
149
143
  }
@@ -154,8 +148,8 @@ function registerAgentCommands(program) {
154
148
  .description("Claim <subdomain>.arc402.xyz for this wallet (wallet must be registered in AgentRegistry)")
155
149
  .requiredOption("--tunnel-target <url>", "Tunnel target URL (must start with https://)")
156
150
  .action(async (subdomain, opts) => {
157
- const config = (0, config_1.loadConfig)();
158
- const walletAddress = config.walletContractAddress ?? new ethers_1.ethers.Wallet(config.privateKey).address;
151
+ const config = loadConfig();
152
+ const walletAddress = config.walletContractAddress ?? new ethers.Wallet(config.privateKey).address;
159
153
  await claimSubdomain(subdomain, walletAddress, opts.tunnelTarget);
160
154
  });
161
155
  // ─── transfer-subdomain ──────────────────────────────────────────────────────
@@ -167,10 +161,10 @@ function registerAgentCommands(program) {
167
161
  const normalized = subdomain.toLowerCase();
168
162
  let newWallet;
169
163
  try {
170
- newWallet = ethers_1.ethers.getAddress(opts.newWallet);
164
+ newWallet = ethers.getAddress(opts.newWallet);
171
165
  }
172
166
  catch {
173
- console.error(chalk_1.default.red(`Invalid address: ${opts.newWallet}`));
167
+ console.error(chalk.red(`Invalid address: ${opts.newWallet}`));
174
168
  process.exit(1);
175
169
  }
176
170
  console.log(`\nTransferring subdomain: ${normalized}.arc402.xyz`);
@@ -183,10 +177,10 @@ function registerAgentCommands(program) {
183
177
  });
184
178
  const body = await res.json();
185
179
  if (!res.ok) {
186
- console.error(chalk_1.default.red(`\n✗ Transfer failed (${res.status}): ${body["error"] ?? JSON.stringify(body)}`));
180
+ console.error(chalk.red(`\n✗ Transfer failed (${res.status}): ${body["error"] ?? JSON.stringify(body)}`));
187
181
  process.exit(1);
188
182
  }
189
- console.log(chalk_1.default.green(`\n✓ Subdomain transferred: ${body["subdomain"]}`));
183
+ console.log(chalk.green(`\n✓ Subdomain transferred: ${body["subdomain"]}`));
190
184
  console.log(` New owner: ${body["newWalletAddress"]}`);
191
185
  });
192
186
  // ─── set-metadata ───────────────────────────────────────────────────────────
@@ -194,10 +188,10 @@ function registerAgentCommands(program) {
194
188
  .command("set-metadata")
195
189
  .description("Interactively build and upload ARC-402 agent metadata, then update the registry")
196
190
  .action(async () => {
197
- const config = (0, config_1.loadConfig)();
191
+ const config = loadConfig();
198
192
  const registryAddress = getAgentRegistryAddress(config);
199
- const { signer, address } = await (0, client_1.requireSigner)(config);
200
- const client = new sdk_1.AgentRegistryClient(registryAddress, signer);
193
+ const { signer, address } = await requireSigner(config);
194
+ const client = new AgentRegistryClient(registryAddress, signer);
201
195
  // Resolve the on-chain identity (wallet contract or EOA)
202
196
  const agentAddress = config.walletContractAddress ?? address;
203
197
  let existingName = "";
@@ -222,15 +216,15 @@ function registerAgentCommands(program) {
222
216
  }
223
217
  catch { /* not yet registered */ }
224
218
  if (config.walletContractAddress) {
225
- const tx = await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, registryAddress, abis_1.AGENT_REGISTRY_ABI, "update", [name, existingCaps, serviceType, endpoint, uri]);
219
+ const tx = await executeContractWriteViaWallet(config.walletContractAddress, signer, registryAddress, AGENT_REGISTRY_ABI, "update", [name, existingCaps, serviceType, endpoint, uri]);
226
220
  const receipt = await tx.wait();
227
- console.log(chalk_1.default.green("✓ Metadata URI saved to registry"));
221
+ console.log(chalk.green("✓ Metadata URI saved to registry"));
228
222
  console.log(` ${uri}`);
229
223
  console.log(` Tx: ${receipt?.hash}`);
230
224
  }
231
225
  else {
232
226
  await client.update({ name, serviceType, capabilities: existingCaps, endpoint, metadataURI: uri });
233
- console.log(chalk_1.default.green("✓ Metadata URI saved to registry"));
227
+ console.log(chalk.green("✓ Metadata URI saved to registry"));
234
228
  console.log(` ${uri}`);
235
229
  }
236
230
  });
@@ -239,25 +233,25 @@ function registerAgentCommands(program) {
239
233
  .command("show-metadata <address>")
240
234
  .description("Fetch and display metadata for any registered agent")
241
235
  .action(async (address) => {
242
- const config = (0, config_1.loadConfig)();
236
+ const config = loadConfig();
243
237
  const registryAddress = getAgentRegistryAddress(config);
244
- const { provider } = await (0, client_2.getClient)(config);
245
- const client = new sdk_1.AgentRegistryClient(registryAddress, provider);
238
+ const { provider } = await getClient(config);
239
+ const client = new AgentRegistryClient(registryAddress, provider);
246
240
  const info = await client.getAgent(address);
247
241
  if (!info.metadataURI) {
248
- console.log(chalk_1.default.yellow("No metadata URI set for this agent."));
242
+ console.log(chalk.yellow("No metadata URI set for this agent."));
249
243
  return;
250
244
  }
251
- console.log(chalk_1.default.dim(`Fetching metadata from: ${info.metadataURI}\n`));
245
+ console.log(chalk.dim(`Fetching metadata from: ${info.metadataURI}\n`));
252
246
  let meta;
253
247
  try {
254
- meta = await (0, sdk_2.decodeMetadata)(info.metadataURI);
248
+ meta = await decodeMetadata(info.metadataURI);
255
249
  }
256
250
  catch (err) {
257
- console.error(chalk_1.default.red(`Failed to fetch or parse metadata: ${err instanceof Error ? err.message : String(err)}`));
251
+ console.error(chalk.red(`Failed to fetch or parse metadata: ${err instanceof Error ? err.message : String(err)}`));
258
252
  return;
259
253
  }
260
- console.log(chalk_1.default.bold("Agent Metadata") + chalk_1.default.dim(` (${meta.schema})`));
254
+ console.log(chalk.bold("Agent Metadata") + chalk.dim(` (${meta.schema})`));
261
255
  if (meta.name)
262
256
  console.log(` name: ${meta.name}`);
263
257
  if (meta.description)
@@ -306,10 +300,10 @@ function registerAgentCommands(program) {
306
300
  .command("deactivate")
307
301
  .description("Deactivate your agent registration (preserves history/trust)")
308
302
  .action(async () => {
309
- const config = (0, config_1.loadConfig)();
303
+ const config = loadConfig();
310
304
  const registryAddress = getAgentRegistryAddress(config);
311
- const { signer } = await (0, client_1.requireSigner)(config);
312
- const client = new sdk_1.AgentRegistryClient(registryAddress, signer);
305
+ const { signer } = await requireSigner(config);
306
+ const client = new AgentRegistryClient(registryAddress, signer);
313
307
  await client.deactivate();
314
308
  console.log("agent deactivated");
315
309
  });
@@ -317,10 +311,10 @@ function registerAgentCommands(program) {
317
311
  .command("reactivate")
318
312
  .description("Reactivate your agent registration")
319
313
  .action(async () => {
320
- const config = (0, config_1.loadConfig)();
314
+ const config = loadConfig();
321
315
  const registryAddress = getAgentRegistryAddress(config);
322
- const { signer } = await (0, client_1.requireSigner)(config);
323
- const client = new sdk_1.AgentRegistryClient(registryAddress, signer);
316
+ const { signer } = await requireSigner(config);
317
+ const client = new AgentRegistryClient(registryAddress, signer);
324
318
  await client.reactivate();
325
319
  console.log("agent reactivated");
326
320
  });
@@ -330,10 +324,10 @@ function registerAgentCommands(program) {
330
324
  .description("Submit self-reported heartbeat data")
331
325
  .option("--latency-ms <n>", "Observed latency", "0")
332
326
  .action(async (opts) => {
333
- const config = (0, config_1.loadConfig)();
327
+ const config = loadConfig();
334
328
  const registryAddress = getAgentRegistryAddress(config);
335
- const { signer } = await (0, client_1.requireSigner)(config);
336
- const client = new sdk_1.AgentRegistryClient(registryAddress, signer);
329
+ const { signer } = await requireSigner(config);
330
+ const client = new AgentRegistryClient(registryAddress, signer);
337
331
  await client.submitHeartbeat(Number(opts.latencyMs));
338
332
  console.log("heartbeat submitted");
339
333
  });
@@ -343,10 +337,10 @@ function registerAgentCommands(program) {
343
337
  .requiredOption("--interval <seconds>")
344
338
  .requiredOption("--grace <seconds>")
345
339
  .action(async (opts) => {
346
- const config = (0, config_1.loadConfig)();
340
+ const config = loadConfig();
347
341
  const registryAddress = getAgentRegistryAddress(config);
348
- const { signer } = await (0, client_1.requireSigner)(config);
349
- const client = new sdk_1.AgentRegistryClient(registryAddress, signer);
342
+ const { signer } = await requireSigner(config);
343
+ const client = new AgentRegistryClient(registryAddress, signer);
350
344
  await client.setHeartbeatPolicy(Number(opts.interval), Number(opts.grace));
351
345
  console.log("heartbeat policy updated");
352
346
  });
@@ -355,10 +349,10 @@ function registerAgentCommands(program) {
355
349
  .command("info <address>")
356
350
  .option("--json")
357
351
  .action(async (address, opts) => {
358
- const config = (0, config_1.loadConfig)();
352
+ const config = loadConfig();
359
353
  const registryAddress = getAgentRegistryAddress(config);
360
- const { provider } = await (0, client_2.getClient)(config);
361
- const client = new sdk_1.AgentRegistryClient(registryAddress, provider);
354
+ const { provider } = await getClient(config);
355
+ const client = new AgentRegistryClient(registryAddress, provider);
362
356
  const [info, ops] = await Promise.all([
363
357
  client.getAgent(address),
364
358
  client.getOperationalMetrics(address),
@@ -373,13 +367,13 @@ function registerAgentCommands(program) {
373
367
  operational: Object.fromEntries(Object.entries(ops).map(([k, v]) => [k, Number(v)])),
374
368
  }, null, 2));
375
369
  }
376
- console.log(`${info.name} ${info.wallet}\nservice=${info.serviceType}\ntrust=${Number(info.trustScore ?? 0n)} (${(0, format_1.getTrustTier)(Number(info.trustScore ?? 0n))})\nregistered=${(0, format_1.formatDate)(Number(info.registeredAt))}\nheartbeatCount=${Number(ops.heartbeatCount)} uptimeScore=${Number(ops.uptimeScore)} responseScore=${Number(ops.responseScore)}`);
370
+ console.log(`${info.name} ${info.wallet}\nservice=${info.serviceType}\ntrust=${Number(info.trustScore ?? 0n)} (${getTrustTier(Number(info.trustScore ?? 0n))})\nregistered=${formatDate(Number(info.registeredAt))}\nheartbeatCount=${Number(ops.heartbeatCount)} uptimeScore=${Number(ops.uptimeScore)} responseScore=${Number(ops.responseScore)}`);
377
371
  });
378
372
  agent
379
373
  .command("me")
380
374
  .action(async () => {
381
- const config = (0, config_1.loadConfig)();
382
- const address = config.walletContractAddress ?? (await (0, client_2.getClient)(config)).address;
375
+ const config = loadConfig();
376
+ const address = config.walletContractAddress ?? (await getClient(config)).address;
383
377
  if (!address)
384
378
  throw new Error("No wallet configured");
385
379
  await program.parseAsync([process.argv[0], process.argv[1], "agent", "info", address], { from: "user" });
@@ -423,7 +417,7 @@ function registerAgentCommands(program) {
423
417
  console.log(JSON.stringify({ error: "Agent not registered", address }));
424
418
  }
425
419
  else {
426
- console.log(chalk_1.default.red(`Agent not registered: ${address}`));
420
+ console.log(chalk.red(`Agent not registered: ${address}`));
427
421
  }
428
422
  process.exit(1);
429
423
  }
@@ -477,14 +471,14 @@ function registerAgentCommands(program) {
477
471
  const vouchedFor = data["vouchedFor"] ?? [];
478
472
  const vouchedBy = data["vouchedBy"] ?? [];
479
473
  const line = "═".repeat(43);
480
- console.log(chalk_1.default.bold(line));
481
- console.log(` ${chalk_1.default.bold(agentData["name"] || "(unnamed)")}`);
474
+ console.log(chalk.bold(line));
475
+ console.log(` ${chalk.bold(agentData["name"] || "(unnamed)")}`);
482
476
  console.log(` ${agentData["id"]}`);
483
- console.log(chalk_1.default.bold(line));
477
+ console.log(chalk.bold(line));
484
478
  console.log();
485
479
  console.log(` Service Type: ${agentData["serviceType"]}`);
486
- console.log(` Endpoint: ${agentData["endpoint"] || chalk_1.default.dim("(none)")}`);
487
- console.log(` Status: ${agentData["active"] ? chalk_1.default.green("✅ Active") : chalk_1.default.red("❌ Inactive")}`);
480
+ console.log(` Endpoint: ${agentData["endpoint"] || chalk.dim("(none)")}`);
481
+ console.log(` Status: ${agentData["active"] ? chalk.green("✅ Active") : chalk.red("❌ Inactive")}`);
488
482
  console.log(` Trust Score: ${trustScore}`);
489
483
  console.log();
490
484
  if (caps.length > 0) {
@@ -523,7 +517,7 @@ function registerAgentCommands(program) {
523
517
  console.log(JSON.stringify({ error: "Subgraph unavailable", details: msg }));
524
518
  }
525
519
  else {
526
- console.error(chalk_1.default.red(`Subgraph unavailable: ${msg}`));
520
+ console.error(chalk.red(`Subgraph unavailable: ${msg}`));
527
521
  }
528
522
  process.exit(1);
529
523
  }
@@ -564,15 +558,15 @@ async function claimSubdomain(subdomain, walletAddress, tunnelTarget) {
564
558
  });
565
559
  const body = await res.json();
566
560
  if (!res.ok) {
567
- console.error(chalk_1.default.red(`✗ Subdomain claim failed (${res.status}): ${body["error"] ?? JSON.stringify(body)}`));
561
+ console.error(chalk.red(`✗ Subdomain claim failed (${res.status}): ${body["error"] ?? JSON.stringify(body)}`));
568
562
  process.exit(1);
569
563
  }
570
- console.log(chalk_1.default.green(`✓ Subdomain claimed: ${body["subdomain"]}`));
564
+ console.log(chalk.green(`✓ Subdomain claimed: ${body["subdomain"]}`));
571
565
  }
572
566
  // ─── metadata wizard ──────────────────────────────────────────────────────────
573
567
  async function runSetMetadataWizard(defaultName, defaultCapabilities) {
574
- console.log(chalk_1.default.bold("\nARC-402 Agent Metadata Wizard\n"));
575
- const answers = await (0, prompts_1.default)([
568
+ console.log(chalk.bold("\nARC-402 Agent Metadata Wizard\n"));
569
+ const answers = await prompts([
576
570
  { type: "text", name: "name", message: "Agent name:", initial: defaultName },
577
571
  { type: "text", name: "description", message: "Short description (what does this agent do?):" },
578
572
  { type: "text", name: "capabilities", message: "Capabilities (comma-separated, e.g. legal.patent-analysis.us.v1):", initial: defaultCapabilities.join(", ") },
@@ -584,13 +578,13 @@ async function runSetMetadataWizard(defaultName, defaultCapabilities) {
584
578
  { type: "confirm", name: "envLeakProtection", message: "Does this agent have env/key leak protection in its instructions?", initial: false },
585
579
  ]);
586
580
  if (!answers.name) {
587
- console.log(chalk_1.default.dim("Cancelled."));
581
+ console.log(chalk.dim("Cancelled."));
588
582
  return "";
589
583
  }
590
584
  const capabilities = answers.capabilities
591
585
  ? answers.capabilities.split(",").map((v) => v.trim()).filter(Boolean)
592
586
  : [];
593
- const meta = (0, sdk_2.buildMetadata)({
587
+ const meta = buildMetadata({
594
588
  name: answers.name || undefined,
595
589
  description: answers.description || undefined,
596
590
  capabilities: capabilities.length ? capabilities : undefined,
@@ -607,14 +601,14 @@ async function runSetMetadataWizard(defaultName, defaultCapabilities) {
607
601
  });
608
602
  const pinataJwt = process.env["PINATA_JWT"];
609
603
  if (!pinataJwt) {
610
- console.log(chalk_1.default.dim("\nNo PINATA_JWT env var found — metadata will be stored as a data URI."));
611
- console.log(chalk_1.default.dim("To pin to IPFS: export PINATA_JWT=<your-jwt> and re-run.\n"));
604
+ console.log(chalk.dim("\nNo PINATA_JWT env var found — metadata will be stored as a data URI."));
605
+ console.log(chalk.dim("To pin to IPFS: export PINATA_JWT=<your-jwt> and re-run.\n"));
612
606
  }
613
607
  else {
614
- console.log(chalk_1.default.dim("\nUploading to IPFS via Pinata…"));
608
+ console.log(chalk.dim("\nUploading to IPFS via Pinata…"));
615
609
  }
616
- const uri = await (0, sdk_2.uploadMetadata)(meta, pinataJwt);
617
- console.log(chalk_1.default.green(`✓ Metadata URI: ${uri}`));
610
+ const uri = await uploadMetadata(meta, pinataJwt);
611
+ console.log(chalk.green(`✓ Metadata URI: ${uri}`));
618
612
  return uri;
619
613
  }
620
614
  //# sourceMappingURL=agent.js.map