@xylabs/aries 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/README.md +693 -0
  2. package/dist/actions/audit/auditPaths.mjs +22 -0
  3. package/dist/actions/audit/auditPaths.mjs.map +1 -0
  4. package/dist/actions/audit/index.mjs +739 -0
  5. package/dist/actions/audit/index.mjs.map +1 -0
  6. package/dist/actions/audit/installPlugin.mjs +298 -0
  7. package/dist/actions/audit/installPlugin.mjs.map +1 -0
  8. package/dist/actions/audit/listSessions.mjs +93 -0
  9. package/dist/actions/audit/listSessions.mjs.map +1 -0
  10. package/dist/actions/audit/openAuditDir.mjs +44 -0
  11. package/dist/actions/audit/openAuditDir.mjs.map +1 -0
  12. package/dist/actions/audit/searchAudit.mjs +77 -0
  13. package/dist/actions/audit/searchAudit.mjs.map +1 -0
  14. package/dist/actions/audit/showAiMeta.mjs +105 -0
  15. package/dist/actions/audit/showAiMeta.mjs.map +1 -0
  16. package/dist/actions/audit/showSession.mjs +105 -0
  17. package/dist/actions/audit/showSession.mjs.map +1 -0
  18. package/dist/actions/audit/statusAudit.mjs +98 -0
  19. package/dist/actions/audit/statusAudit.mjs.map +1 -0
  20. package/dist/actions/clamp/clampAudit.mjs +53 -0
  21. package/dist/actions/clamp/clampAudit.mjs.map +1 -0
  22. package/dist/actions/clamp/index.mjs +2258 -0
  23. package/dist/actions/clamp/index.mjs.map +1 -0
  24. package/dist/actions/clamp/ipcServer.mjs +55 -0
  25. package/dist/actions/clamp/ipcServer.mjs.map +1 -0
  26. package/dist/actions/clamp/policyManagement.mjs +144 -0
  27. package/dist/actions/clamp/policyManagement.mjs.map +1 -0
  28. package/dist/actions/clamp/promptUser.mjs +91 -0
  29. package/dist/actions/clamp/promptUser.mjs.map +1 -0
  30. package/dist/actions/clamp/runClamped.mjs +2107 -0
  31. package/dist/actions/clamp/runClamped.mjs.map +1 -0
  32. package/dist/actions/clamp/sandboxExec.mjs +1612 -0
  33. package/dist/actions/clamp/sandboxExec.mjs.map +1 -0
  34. package/dist/actions/clamp/shellEnvSetup.mjs +59 -0
  35. package/dist/actions/clamp/shellEnvSetup.mjs.map +1 -0
  36. package/dist/actions/clamp/shimGenerator.mjs +68 -0
  37. package/dist/actions/clamp/shimGenerator.mjs.map +1 -0
  38. package/dist/actions/clamp/terminalRenderer.mjs +145 -0
  39. package/dist/actions/clamp/terminalRenderer.mjs.map +1 -0
  40. package/dist/actions/datalake/audit/auditLog.mjs +191 -0
  41. package/dist/actions/datalake/audit/auditLog.mjs.map +1 -0
  42. package/dist/actions/datalake/createDatalake.mjs +127 -0
  43. package/dist/actions/datalake/createDatalake.mjs.map +1 -0
  44. package/dist/actions/datalake/describeDatalake.mjs +159 -0
  45. package/dist/actions/datalake/describeDatalake.mjs.map +1 -0
  46. package/dist/actions/datalake/destroyDatalake.mjs +34 -0
  47. package/dist/actions/datalake/destroyDatalake.mjs.map +1 -0
  48. package/dist/actions/datalake/dev/downDevServer.mjs +102 -0
  49. package/dist/actions/datalake/dev/downDevServer.mjs.map +1 -0
  50. package/dist/actions/datalake/dev/index.mjs +369 -0
  51. package/dist/actions/datalake/dev/index.mjs.map +1 -0
  52. package/dist/actions/datalake/dev/logsDevServer.mjs +44 -0
  53. package/dist/actions/datalake/dev/logsDevServer.mjs.map +1 -0
  54. package/dist/actions/datalake/dev/paths.mjs +25 -0
  55. package/dist/actions/datalake/dev/paths.mjs.map +1 -0
  56. package/dist/actions/datalake/dev/resetDevServer.mjs +118 -0
  57. package/dist/actions/datalake/dev/resetDevServer.mjs.map +1 -0
  58. package/dist/actions/datalake/dev/resolveServerBin.mjs +26 -0
  59. package/dist/actions/datalake/dev/resolveServerBin.mjs.map +1 -0
  60. package/dist/actions/datalake/dev/state.mjs +62 -0
  61. package/dist/actions/datalake/dev/state.mjs.map +1 -0
  62. package/dist/actions/datalake/dev/statusDevServer.mjs +101 -0
  63. package/dist/actions/datalake/dev/statusDevServer.mjs.map +1 -0
  64. package/dist/actions/datalake/dev/upDevServer.mjs +221 -0
  65. package/dist/actions/datalake/dev/upDevServer.mjs.map +1 -0
  66. package/dist/actions/datalake/dev/waitForHealth.mjs +22 -0
  67. package/dist/actions/datalake/dev/waitForHealth.mjs.map +1 -0
  68. package/dist/actions/datalake/formatters.mjs +90 -0
  69. package/dist/actions/datalake/formatters.mjs.map +1 -0
  70. package/dist/actions/datalake/grantAccess.mjs +116 -0
  71. package/dist/actions/datalake/grantAccess.mjs.map +1 -0
  72. package/dist/actions/datalake/index.mjs +361 -0
  73. package/dist/actions/datalake/index.mjs.map +1 -0
  74. package/dist/actions/datalake/listDatalakes.mjs +54 -0
  75. package/dist/actions/datalake/listDatalakes.mjs.map +1 -0
  76. package/dist/actions/datalake/login.mjs +20 -0
  77. package/dist/actions/datalake/login.mjs.map +1 -0
  78. package/dist/actions/datalake/logout.mjs +11 -0
  79. package/dist/actions/datalake/logout.mjs.map +1 -0
  80. package/dist/actions/datalake/mintToken.mjs +37 -0
  81. package/dist/actions/datalake/mintToken.mjs.map +1 -0
  82. package/dist/actions/datalake/parseSize.mjs +21 -0
  83. package/dist/actions/datalake/parseSize.mjs.map +1 -0
  84. package/dist/actions/datalake/payloads/fetchPayload.mjs +76 -0
  85. package/dist/actions/datalake/payloads/fetchPayload.mjs.map +1 -0
  86. package/dist/actions/datalake/payloads/index.mjs +271 -0
  87. package/dist/actions/datalake/payloads/index.mjs.map +1 -0
  88. package/dist/actions/datalake/payloads/mintAndConnect.mjs +46 -0
  89. package/dist/actions/datalake/payloads/mintAndConnect.mjs.map +1 -0
  90. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs +71 -0
  91. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs.map +1 -0
  92. package/dist/actions/datalake/payloads/pushPayloads.mjs +181 -0
  93. package/dist/actions/datalake/payloads/pushPayloads.mjs.map +1 -0
  94. package/dist/actions/datalake/payloads/tailPayloads.mjs +106 -0
  95. package/dist/actions/datalake/payloads/tailPayloads.mjs.map +1 -0
  96. package/dist/actions/datalake/resolveTarget.mjs +15 -0
  97. package/dist/actions/datalake/resolveTarget.mjs.map +1 -0
  98. package/dist/actions/datalake/revokeAccess.mjs +108 -0
  99. package/dist/actions/datalake/revokeAccess.mjs.map +1 -0
  100. package/dist/actions/datalake/useDatalake.mjs +22 -0
  101. package/dist/actions/datalake/useDatalake.mjs.map +1 -0
  102. package/dist/actions/detect/detectAiClients.mjs +405 -0
  103. package/dist/actions/detect/detectAiClients.mjs.map +1 -0
  104. package/dist/actions/detect/index.mjs +405 -0
  105. package/dist/actions/detect/index.mjs.map +1 -0
  106. package/dist/actions/hash/algorithms/blockhash.mjs +61 -0
  107. package/dist/actions/hash/algorithms/blockhash.mjs.map +1 -0
  108. package/dist/actions/hash/algorithms/chromaprint.mjs +205 -0
  109. package/dist/actions/hash/algorithms/chromaprint.mjs.map +1 -0
  110. package/dist/actions/hash/algorithms/dhash.mjs +75 -0
  111. package/dist/actions/hash/algorithms/dhash.mjs.map +1 -0
  112. package/dist/actions/hash/algorithms/index.mjs +818 -0
  113. package/dist/actions/hash/algorithms/index.mjs.map +1 -0
  114. package/dist/actions/hash/algorithms/nilsimsa.mjs +27 -0
  115. package/dist/actions/hash/algorithms/nilsimsa.mjs.map +1 -0
  116. package/dist/actions/hash/algorithms/pdq.mjs +83 -0
  117. package/dist/actions/hash/algorithms/pdq.mjs.map +1 -0
  118. package/dist/actions/hash/algorithms/phash.mjs +71 -0
  119. package/dist/actions/hash/algorithms/phash.mjs.map +1 -0
  120. package/dist/actions/hash/algorithms/sha256.mjs +24 -0
  121. package/dist/actions/hash/algorithms/sha256.mjs.map +1 -0
  122. package/dist/actions/hash/algorithms/ssdeep.mjs +203 -0
  123. package/dist/actions/hash/algorithms/ssdeep.mjs.map +1 -0
  124. package/dist/actions/hash/algorithms/tlsh.mjs +66 -0
  125. package/dist/actions/hash/algorithms/tlsh.mjs.map +1 -0
  126. package/dist/actions/hash/algorithms/types.mjs +1 -0
  127. package/dist/actions/hash/algorithms/types.mjs.map +1 -0
  128. package/dist/actions/hash/algorithms/videoFrames.mjs +404 -0
  129. package/dist/actions/hash/algorithms/videoFrames.mjs.map +1 -0
  130. package/dist/actions/hash/algorithms/xyo.mjs +30 -0
  131. package/dist/actions/hash/algorithms/xyo.mjs.map +1 -0
  132. package/dist/actions/hash/compareHashes.mjs +823 -0
  133. package/dist/actions/hash/compareHashes.mjs.map +1 -0
  134. package/dist/actions/hash/hashInput.mjs +868 -0
  135. package/dist/actions/hash/hashInput.mjs.map +1 -0
  136. package/dist/actions/hash/index.mjs +881 -0
  137. package/dist/actions/hash/index.mjs.map +1 -0
  138. package/dist/actions/hash/lib/hamming.mjs +44 -0
  139. package/dist/actions/hash/lib/hamming.mjs.map +1 -0
  140. package/dist/actions/hash/lib/levenshtein.mjs +36 -0
  141. package/dist/actions/hash/lib/levenshtein.mjs.map +1 -0
  142. package/dist/actions/hash/lib/runBinary.mjs +54 -0
  143. package/dist/actions/hash/lib/runBinary.mjs.map +1 -0
  144. package/dist/actions/hash/lib/which.mjs +36 -0
  145. package/dist/actions/hash/lib/which.mjs.map +1 -0
  146. package/dist/actions/hash/lib/withTempfile.mjs +19 -0
  147. package/dist/actions/hash/lib/withTempfile.mjs.map +1 -0
  148. package/dist/actions/index.mjs +4615 -0
  149. package/dist/actions/index.mjs.map +1 -0
  150. package/dist/actions/printVersion.mjs +12 -0
  151. package/dist/actions/printVersion.mjs.map +1 -0
  152. package/dist/actions/sync/index.mjs +51 -0
  153. package/dist/actions/sync/index.mjs.map +1 -0
  154. package/dist/actions/sync/syncAiConfig.mjs +51 -0
  155. package/dist/actions/sync/syncAiConfig.mjs.map +1 -0
  156. package/dist/actions/wallet/account/deriveAndAdd.mjs +394 -0
  157. package/dist/actions/wallet/account/deriveAndAdd.mjs.map +1 -0
  158. package/dist/actions/wallet/account/getActiveWallet.mjs +338 -0
  159. package/dist/actions/wallet/account/getActiveWallet.mjs.map +1 -0
  160. package/dist/actions/wallet/account/labelAccount.mjs +389 -0
  161. package/dist/actions/wallet/account/labelAccount.mjs.map +1 -0
  162. package/dist/actions/wallet/account/listAccounts.mjs +374 -0
  163. package/dist/actions/wallet/account/listAccounts.mjs.map +1 -0
  164. package/dist/actions/wallet/account/removeAccount.mjs +384 -0
  165. package/dist/actions/wallet/account/removeAccount.mjs.map +1 -0
  166. package/dist/actions/wallet/account/showAccount.mjs +368 -0
  167. package/dist/actions/wallet/account/showAccount.mjs.map +1 -0
  168. package/dist/actions/wallet/addressBook/storage.mjs +110 -0
  169. package/dist/actions/wallet/addressBook/storage.mjs.map +1 -0
  170. package/dist/actions/wallet/backup/exportBackup.mjs +93 -0
  171. package/dist/actions/wallet/backup/exportBackup.mjs.map +1 -0
  172. package/dist/actions/wallet/backup/importBackup.mjs +142 -0
  173. package/dist/actions/wallet/backup/importBackup.mjs.map +1 -0
  174. package/dist/actions/wallet/balance/getBalance.mjs +434 -0
  175. package/dist/actions/wallet/balance/getBalance.mjs.map +1 -0
  176. package/dist/actions/wallet/client/walletClient.mjs +64 -0
  177. package/dist/actions/wallet/client/walletClient.mjs.map +1 -0
  178. package/dist/actions/wallet/contact/contactActions.mjs +120 -0
  179. package/dist/actions/wallet/contact/contactActions.mjs.map +1 -0
  180. package/dist/actions/wallet/contact/storage.mjs +69 -0
  181. package/dist/actions/wallet/contact/storage.mjs.map +1 -0
  182. package/dist/actions/wallet/index.mjs +1439 -0
  183. package/dist/actions/wallet/index.mjs.map +1 -0
  184. package/dist/actions/wallet/network/networkActions.mjs +137 -0
  185. package/dist/actions/wallet/network/networkActions.mjs.map +1 -0
  186. package/dist/actions/wallet/network/storage.mjs +93 -0
  187. package/dist/actions/wallet/network/storage.mjs.map +1 -0
  188. package/dist/actions/wallet/password/changePassword.mjs +282 -0
  189. package/dist/actions/wallet/password/changePassword.mjs.map +1 -0
  190. package/dist/actions/wallet/password/getActiveKey.mjs +297 -0
  191. package/dist/actions/wallet/password/getActiveKey.mjs.map +1 -0
  192. package/dist/actions/wallet/password/initOrUnlock.mjs +337 -0
  193. package/dist/actions/wallet/password/initOrUnlock.mjs.map +1 -0
  194. package/dist/actions/wallet/password/passwordStorage.mjs +69 -0
  195. package/dist/actions/wallet/password/passwordStorage.mjs.map +1 -0
  196. package/dist/actions/wallet/password/setPassword.mjs +138 -0
  197. package/dist/actions/wallet/password/setPassword.mjs.map +1 -0
  198. package/dist/actions/wallet/password/validatePassword.mjs +123 -0
  199. package/dist/actions/wallet/password/validatePassword.mjs.map +1 -0
  200. package/dist/actions/wallet/passwordKey.mjs +87 -0
  201. package/dist/actions/wallet/passwordKey.mjs.map +1 -0
  202. package/dist/actions/wallet/paths.mjs +26 -0
  203. package/dist/actions/wallet/paths.mjs.map +1 -0
  204. package/dist/actions/wallet/prompt.mjs +93 -0
  205. package/dist/actions/wallet/prompt.mjs.map +1 -0
  206. package/dist/actions/wallet/seedPhrase/createPhrase.mjs +392 -0
  207. package/dist/actions/wallet/seedPhrase/createPhrase.mjs.map +1 -0
  208. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs +334 -0
  209. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs.map +1 -0
  210. package/dist/actions/wallet/seedPhrase/idGen.mjs +11 -0
  211. package/dist/actions/wallet/seedPhrase/idGen.mjs.map +1 -0
  212. package/dist/actions/wallet/seedPhrase/importPhrase.mjs +393 -0
  213. package/dist/actions/wallet/seedPhrase/importPhrase.mjs.map +1 -0
  214. package/dist/actions/wallet/seedPhrase/listPhrases.mjs +62 -0
  215. package/dist/actions/wallet/seedPhrase/listPhrases.mjs.map +1 -0
  216. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs +89 -0
  217. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs.map +1 -0
  218. package/dist/actions/wallet/seedPhrase/removePhrase.mjs +366 -0
  219. package/dist/actions/wallet/seedPhrase/removePhrase.mjs.map +1 -0
  220. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs +78 -0
  221. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs.map +1 -0
  222. package/dist/actions/wallet/seedPhrase/types.mjs +1 -0
  223. package/dist/actions/wallet/seedPhrase/types.mjs.map +1 -0
  224. package/dist/actions/wallet/seedPhrase/usePhrase.mjs +83 -0
  225. package/dist/actions/wallet/seedPhrase/usePhrase.mjs.map +1 -0
  226. package/dist/actions/wallet/session/machineId.mjs +145 -0
  227. package/dist/actions/wallet/session/machineId.mjs.map +1 -0
  228. package/dist/actions/wallet/session/sessionCache.mjs +221 -0
  229. package/dist/actions/wallet/session/sessionCache.mjs.map +1 -0
  230. package/dist/actions/wallet/session/unlock.mjs +307 -0
  231. package/dist/actions/wallet/session/unlock.mjs.map +1 -0
  232. package/dist/actions/wallet/sign/signPayload.mjs +637 -0
  233. package/dist/actions/wallet/sign/signPayload.mjs.map +1 -0
  234. package/dist/actions/wallet/storage.mjs +51 -0
  235. package/dist/actions/wallet/storage.mjs.map +1 -0
  236. package/dist/actions/wallet/transaction/broadcastTransaction.mjs +453 -0
  237. package/dist/actions/wallet/transaction/broadcastTransaction.mjs.map +1 -0
  238. package/dist/actions/wallet/transaction/sendTransaction.mjs +457 -0
  239. package/dist/actions/wallet/transaction/sendTransaction.mjs.map +1 -0
  240. package/dist/actions/wallet/transaction/signTransactionFile.mjs +378 -0
  241. package/dist/actions/wallet/transaction/signTransactionFile.mjs.map +1 -0
  242. package/dist/actions/xyo/index.mjs +138 -0
  243. package/dist/actions/xyo/index.mjs.map +1 -0
  244. package/dist/actions/xyo/transaction/index.mjs +138 -0
  245. package/dist/actions/xyo/transaction/index.mjs.map +1 -0
  246. package/dist/actions/xyo/transaction/validateTransactions.mjs +138 -0
  247. package/dist/actions/xyo/transaction/validateTransactions.mjs.map +1 -0
  248. package/dist/aries.mjs +8466 -0
  249. package/dist/aries.mjs.map +1 -0
  250. package/dist/bin/aries.mjs +8472 -0
  251. package/dist/bin/aries.mjs.map +1 -0
  252. package/dist/commands/aiCommand.mjs +492 -0
  253. package/dist/commands/aiCommand.mjs.map +1 -0
  254. package/dist/commands/auditAiCommand.mjs +119 -0
  255. package/dist/commands/auditAiCommand.mjs.map +1 -0
  256. package/dist/commands/auditCommand.mjs +857 -0
  257. package/dist/commands/auditCommand.mjs.map +1 -0
  258. package/dist/commands/auditInstallCommand.mjs +324 -0
  259. package/dist/commands/auditInstallCommand.mjs.map +1 -0
  260. package/dist/commands/auditListCommand.mjs +107 -0
  261. package/dist/commands/auditListCommand.mjs.map +1 -0
  262. package/dist/commands/auditOpenCommand.mjs +51 -0
  263. package/dist/commands/auditOpenCommand.mjs.map +1 -0
  264. package/dist/commands/auditSearchCommand.mjs +98 -0
  265. package/dist/commands/auditSearchCommand.mjs.map +1 -0
  266. package/dist/commands/auditShowCommand.mjs +123 -0
  267. package/dist/commands/auditShowCommand.mjs.map +1 -0
  268. package/dist/commands/auditStatusCommand.mjs +105 -0
  269. package/dist/commands/auditStatusCommand.mjs.map +1 -0
  270. package/dist/commands/clampCommand.mjs +2328 -0
  271. package/dist/commands/clampCommand.mjs.map +1 -0
  272. package/dist/commands/clampPolicyCommand.mjs +184 -0
  273. package/dist/commands/clampPolicyCommand.mjs.map +1 -0
  274. package/dist/commands/clampPolicyInitCommand.mjs +63 -0
  275. package/dist/commands/clampPolicyInitCommand.mjs.map +1 -0
  276. package/dist/commands/clampPolicyListCommand.mjs +56 -0
  277. package/dist/commands/clampPolicyListCommand.mjs.map +1 -0
  278. package/dist/commands/clampPolicyShowCommand.mjs +83 -0
  279. package/dist/commands/clampPolicyShowCommand.mjs.map +1 -0
  280. package/dist/commands/clampRunCommand.mjs +2137 -0
  281. package/dist/commands/clampRunCommand.mjs.map +1 -0
  282. package/dist/commands/datalakeAuditCommand.mjs +273 -0
  283. package/dist/commands/datalakeAuditCommand.mjs.map +1 -0
  284. package/dist/commands/datalakeCommand.mjs +1637 -0
  285. package/dist/commands/datalakeCommand.mjs.map +1 -0
  286. package/dist/commands/datalakeCreateCommand.mjs +189 -0
  287. package/dist/commands/datalakeCreateCommand.mjs.map +1 -0
  288. package/dist/commands/datalakeDescribeCommand.mjs +172 -0
  289. package/dist/commands/datalakeDescribeCommand.mjs.map +1 -0
  290. package/dist/commands/datalakeDestroyCommand.mjs +53 -0
  291. package/dist/commands/datalakeDestroyCommand.mjs.map +1 -0
  292. package/dist/commands/datalakeDevCommand.mjs +470 -0
  293. package/dist/commands/datalakeDevCommand.mjs.map +1 -0
  294. package/dist/commands/datalakeDevDownCommand.mjs +111 -0
  295. package/dist/commands/datalakeDevDownCommand.mjs.map +1 -0
  296. package/dist/commands/datalakeDevLogsCommand.mjs +65 -0
  297. package/dist/commands/datalakeDevLogsCommand.mjs.map +1 -0
  298. package/dist/commands/datalakeDevResetCommand.mjs +125 -0
  299. package/dist/commands/datalakeDevResetCommand.mjs.map +1 -0
  300. package/dist/commands/datalakeDevStatusCommand.mjs +110 -0
  301. package/dist/commands/datalakeDevStatusCommand.mjs.map +1 -0
  302. package/dist/commands/datalakeDevUpCommand.mjs +268 -0
  303. package/dist/commands/datalakeDevUpCommand.mjs.map +1 -0
  304. package/dist/commands/datalakeFetchCommand.mjs +106 -0
  305. package/dist/commands/datalakeFetchCommand.mjs.map +1 -0
  306. package/dist/commands/datalakeGrantCommand.mjs +147 -0
  307. package/dist/commands/datalakeGrantCommand.mjs.map +1 -0
  308. package/dist/commands/datalakeListCommand.mjs +61 -0
  309. package/dist/commands/datalakeListCommand.mjs.map +1 -0
  310. package/dist/commands/datalakeLoginCommand.mjs +39 -0
  311. package/dist/commands/datalakeLoginCommand.mjs.map +1 -0
  312. package/dist/commands/datalakeLogoutCommand.mjs +20 -0
  313. package/dist/commands/datalakeLogoutCommand.mjs.map +1 -0
  314. package/dist/commands/datalakePushCommand.mjs +214 -0
  315. package/dist/commands/datalakePushCommand.mjs.map +1 -0
  316. package/dist/commands/datalakeRevokeCommand.mjs +127 -0
  317. package/dist/commands/datalakeRevokeCommand.mjs.map +1 -0
  318. package/dist/commands/datalakeTailCommand.mjs +144 -0
  319. package/dist/commands/datalakeTailCommand.mjs.map +1 -0
  320. package/dist/commands/datalakeTokenCommand.mjs +61 -0
  321. package/dist/commands/datalakeTokenCommand.mjs.map +1 -0
  322. package/dist/commands/datalakeUseCommand.mjs +35 -0
  323. package/dist/commands/datalakeUseCommand.mjs.map +1 -0
  324. package/dist/commands/detectCommand.mjs +419 -0
  325. package/dist/commands/detectCommand.mjs.map +1 -0
  326. package/dist/commands/hashCommand.mjs +976 -0
  327. package/dist/commands/hashCommand.mjs.map +1 -0
  328. package/dist/commands/hashCompareCommand.mjs +865 -0
  329. package/dist/commands/hashCompareCommand.mjs.map +1 -0
  330. package/dist/commands/index.mjs +8461 -0
  331. package/dist/commands/index.mjs.map +1 -0
  332. package/dist/commands/syncCommand.mjs +66 -0
  333. package/dist/commands/syncCommand.mjs.map +1 -0
  334. package/dist/commands/versionCommand.mjs +24 -0
  335. package/dist/commands/versionCommand.mjs.map +1 -0
  336. package/dist/commands/walletAccountCommand.mjs +536 -0
  337. package/dist/commands/walletAccountCommand.mjs.map +1 -0
  338. package/dist/commands/walletAccountDeriveCommand.mjs +415 -0
  339. package/dist/commands/walletAccountDeriveCommand.mjs.map +1 -0
  340. package/dist/commands/walletAccountLabelCommand.mjs +405 -0
  341. package/dist/commands/walletAccountLabelCommand.mjs.map +1 -0
  342. package/dist/commands/walletAccountListCommand.mjs +381 -0
  343. package/dist/commands/walletAccountListCommand.mjs.map +1 -0
  344. package/dist/commands/walletAccountRemoveCommand.mjs +396 -0
  345. package/dist/commands/walletAccountRemoveCommand.mjs.map +1 -0
  346. package/dist/commands/walletAccountShowCommand.mjs +380 -0
  347. package/dist/commands/walletAccountShowCommand.mjs.map +1 -0
  348. package/dist/commands/walletBackupCommand.mjs +222 -0
  349. package/dist/commands/walletBackupCommand.mjs.map +1 -0
  350. package/dist/commands/walletBackupExportCommand.mjs +107 -0
  351. package/dist/commands/walletBackupExportCommand.mjs.map +1 -0
  352. package/dist/commands/walletBackupImportCommand.mjs +154 -0
  353. package/dist/commands/walletBackupImportCommand.mjs.map +1 -0
  354. package/dist/commands/walletBalanceCommand.mjs +448 -0
  355. package/dist/commands/walletBalanceCommand.mjs.map +1 -0
  356. package/dist/commands/walletCommand.mjs +1968 -0
  357. package/dist/commands/walletCommand.mjs.map +1 -0
  358. package/dist/commands/walletContactAddCommand.mjs +111 -0
  359. package/dist/commands/walletContactAddCommand.mjs.map +1 -0
  360. package/dist/commands/walletContactCommand.mjs +184 -0
  361. package/dist/commands/walletContactCommand.mjs.map +1 -0
  362. package/dist/commands/walletContactListCommand.mjs +66 -0
  363. package/dist/commands/walletContactListCommand.mjs.map +1 -0
  364. package/dist/commands/walletContactRemoveCommand.mjs +97 -0
  365. package/dist/commands/walletContactRemoveCommand.mjs.map +1 -0
  366. package/dist/commands/walletContactRenameCommand.mjs +114 -0
  367. package/dist/commands/walletContactRenameCommand.mjs.map +1 -0
  368. package/dist/commands/walletCreateCommand.mjs +407 -0
  369. package/dist/commands/walletCreateCommand.mjs.map +1 -0
  370. package/dist/commands/walletExportCommand.mjs +345 -0
  371. package/dist/commands/walletExportCommand.mjs.map +1 -0
  372. package/dist/commands/walletImportCommand.mjs +413 -0
  373. package/dist/commands/walletImportCommand.mjs.map +1 -0
  374. package/dist/commands/walletListCommand.mjs +69 -0
  375. package/dist/commands/walletListCommand.mjs.map +1 -0
  376. package/dist/commands/walletLockCommand.mjs +56 -0
  377. package/dist/commands/walletLockCommand.mjs.map +1 -0
  378. package/dist/commands/walletNetworkAddCommand.mjs +131 -0
  379. package/dist/commands/walletNetworkAddCommand.mjs.map +1 -0
  380. package/dist/commands/walletNetworkCommand.mjs +206 -0
  381. package/dist/commands/walletNetworkCommand.mjs.map +1 -0
  382. package/dist/commands/walletNetworkListCommand.mjs +104 -0
  383. package/dist/commands/walletNetworkListCommand.mjs.map +1 -0
  384. package/dist/commands/walletNetworkRemoveCommand.mjs +112 -0
  385. package/dist/commands/walletNetworkRemoveCommand.mjs.map +1 -0
  386. package/dist/commands/walletNetworkUseCommand.mjs +110 -0
  387. package/dist/commands/walletNetworkUseCommand.mjs.map +1 -0
  388. package/dist/commands/walletPasswordChangeCommand.mjs +291 -0
  389. package/dist/commands/walletPasswordChangeCommand.mjs.map +1 -0
  390. package/dist/commands/walletPasswordCommand.mjs +301 -0
  391. package/dist/commands/walletPasswordCommand.mjs.map +1 -0
  392. package/dist/commands/walletRemoveCommand.mjs +378 -0
  393. package/dist/commands/walletRemoveCommand.mjs.map +1 -0
  394. package/dist/commands/walletRenameCommand.mjs +94 -0
  395. package/dist/commands/walletRenameCommand.mjs.map +1 -0
  396. package/dist/commands/walletSignCommand.mjs +662 -0
  397. package/dist/commands/walletSignCommand.mjs.map +1 -0
  398. package/dist/commands/walletTxBroadcastCommand.mjs +473 -0
  399. package/dist/commands/walletTxBroadcastCommand.mjs.map +1 -0
  400. package/dist/commands/walletTxCommand.mjs +612 -0
  401. package/dist/commands/walletTxCommand.mjs.map +1 -0
  402. package/dist/commands/walletTxSendCommand.mjs +492 -0
  403. package/dist/commands/walletTxSendCommand.mjs.map +1 -0
  404. package/dist/commands/walletTxSignCommand.mjs +403 -0
  405. package/dist/commands/walletTxSignCommand.mjs.map +1 -0
  406. package/dist/commands/walletUnlockCommand.mjs +308 -0
  407. package/dist/commands/walletUnlockCommand.mjs.map +1 -0
  408. package/dist/commands/walletUseCommand.mjs +95 -0
  409. package/dist/commands/walletUseCommand.mjs.map +1 -0
  410. package/dist/commands/xyoCommand.mjs +188 -0
  411. package/dist/commands/xyoCommand.mjs.map +1 -0
  412. package/dist/commands/xyoTxCommand.mjs +178 -0
  413. package/dist/commands/xyoTxCommand.mjs.map +1 -0
  414. package/dist/commands/xyoTxValidateCommand.mjs +168 -0
  415. package/dist/commands/xyoTxValidateCommand.mjs.map +1 -0
  416. package/dist/index.d.ts +3 -0
  417. package/dist/index.mjs +8466 -0
  418. package/dist/index.mjs.map +1 -0
  419. package/dist/types/modules.d.mjs +1 -0
  420. package/dist/types/modules.d.mjs.map +1 -0
  421. package/package.json +197 -0
@@ -0,0 +1,131 @@
1
+ // src/actions/wallet/paths.ts
2
+ import OS from "os";
3
+ import PATH from "path";
4
+ function walletRoot() {
5
+ const override = process.env.ARIES_WALLET_HOME;
6
+ if (override) return override;
7
+ return PATH.join(OS.homedir(), ".aries", "wallet");
8
+ }
9
+ function walletPaths(root = walletRoot()) {
10
+ return {
11
+ root,
12
+ password: PATH.join(root, "password.json"),
13
+ phrases: PATH.join(root, "phrases.json"),
14
+ active: PATH.join(root, "active.json"),
15
+ addressBooks: PATH.join(root, "address-books.json"),
16
+ contacts: PATH.join(root, "contacts.json"),
17
+ networks: PATH.join(root, "networks.json"),
18
+ session: PATH.join(root, "session.json"),
19
+ machineId: PATH.join(root, ".machine-id")
20
+ };
21
+ }
22
+
23
+ // src/actions/wallet/storage.ts
24
+ import FS from "fs";
25
+ import PATH2 from "path";
26
+ function ensureWalletDir(root = walletRoot()) {
27
+ if (!FS.existsSync(root)) {
28
+ FS.mkdirSync(root, { recursive: true, mode: 448 });
29
+ return;
30
+ }
31
+ try {
32
+ FS.chmodSync(root, 448);
33
+ } catch {
34
+ }
35
+ }
36
+ function readJsonFile(file) {
37
+ if (!FS.existsSync(file)) return void 0;
38
+ const raw = FS.readFileSync(file, "utf8");
39
+ if (raw.trim().length === 0) return void 0;
40
+ return JSON.parse(raw);
41
+ }
42
+ function writeJsonFile(file, value) {
43
+ ensureWalletDir(PATH2.dirname(file));
44
+ const tmp = `${file}.tmp`;
45
+ FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}
46
+ `, { mode: 384 });
47
+ FS.renameSync(tmp, file);
48
+ try {
49
+ FS.chmodSync(file, 384);
50
+ } catch {
51
+ }
52
+ }
53
+
54
+ // src/actions/wallet/network/storage.ts
55
+ var DEFAULT_NETWORKS = [
56
+ {
57
+ id: "xl1-mainnet",
58
+ label: "XL1 Mainnet",
59
+ rpcUrl: "https://node.xyo.network",
60
+ isCustom: false
61
+ },
62
+ {
63
+ id: "xl1-testnet",
64
+ label: "XL1 Testnet",
65
+ rpcUrl: "https://testnet.node.xyo.network",
66
+ isCustom: false
67
+ }
68
+ ];
69
+ function readNetworks() {
70
+ const data = readJsonFile(walletPaths().networks);
71
+ if (data) return data;
72
+ const seeded = {
73
+ networks: DEFAULT_NETWORKS,
74
+ activeId: DEFAULT_NETWORKS[0].id
75
+ };
76
+ writeJsonFile(walletPaths().networks, seeded);
77
+ return seeded;
78
+ }
79
+ function writeNetworks(file) {
80
+ writeJsonFile(walletPaths().networks, file);
81
+ }
82
+
83
+ // src/actions/wallet/network/networkActions.ts
84
+ import chalk from "chalk";
85
+ function addNetwork(options) {
86
+ const file = readNetworks();
87
+ if (file.networks.some((n) => n.id === options.id)) {
88
+ throw new Error(`Network already exists: ${options.id}`);
89
+ }
90
+ const record = {
91
+ id: options.id,
92
+ label: options.label ?? options.id,
93
+ rpcUrl: options.rpcUrl,
94
+ chainId: options.chainId,
95
+ isCustom: true
96
+ };
97
+ file.networks.push(record);
98
+ writeNetworks(file);
99
+ console.log(chalk.green(`Added network ${chalk.cyan(options.id)} (${options.rpcUrl})`));
100
+ }
101
+
102
+ // src/commands/walletNetworkAddCommand.ts
103
+ var walletNetworkAddCommand = {
104
+ command: "add <id> <rpcUrl>",
105
+ describe: "Add a custom network",
106
+ builder: (yargs) => yargs.positional("id", {
107
+ type: "string",
108
+ demandOption: true,
109
+ describe: "Network id (unique)"
110
+ }).positional("rpcUrl", {
111
+ type: "string",
112
+ demandOption: true,
113
+ describe: "Gateway RPC URL"
114
+ }).option("label", {
115
+ alias: "l",
116
+ type: "string",
117
+ describe: "Friendly label"
118
+ }).option("chain-id", { type: "string", describe: "Chain id (hex)" }),
119
+ handler: (argv) => {
120
+ addNetwork({
121
+ id: argv.id,
122
+ rpcUrl: argv.rpcUrl,
123
+ label: argv.label,
124
+ chainId: argv["chain-id"]
125
+ });
126
+ }
127
+ };
128
+ export {
129
+ walletNetworkAddCommand
130
+ };
131
+ //# sourceMappingURL=walletNetworkAddCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/network/storage.ts","../../src/actions/wallet/network/networkActions.ts","../../src/commands/walletNetworkAddCommand.ts"],"sourcesContent":["import OS from 'node:os'\nimport PATH from 'node:path'\n\nexport interface WalletPaths {\n root: string\n password: string\n phrases: string\n active: string\n addressBooks: string\n contacts: string\n networks: string\n session: string\n machineId: string\n}\n\nexport function walletRoot(): string {\n const override = process.env.ARIES_WALLET_HOME\n if (override) return override\n return PATH.join(OS.homedir(), '.aries', 'wallet')\n}\n\nexport function walletPaths(root: string = walletRoot()): WalletPaths {\n return {\n root,\n password: PATH.join(root, 'password.json'),\n phrases: PATH.join(root, 'phrases.json'),\n active: PATH.join(root, 'active.json'),\n addressBooks: PATH.join(root, 'address-books.json'),\n contacts: PATH.join(root, 'contacts.json'),\n networks: PATH.join(root, 'networks.json'),\n session: PATH.join(root, 'session.json'),\n machineId: PATH.join(root, '.machine-id'),\n }\n}\n","import FS from 'node:fs'\nimport PATH from 'node:path'\n\nimport { walletRoot } from './paths.ts'\n\nexport function ensureWalletDir(root: string = walletRoot()): void {\n if (!FS.existsSync(root)) {\n FS.mkdirSync(root, { recursive: true, mode: 0o700 })\n return\n }\n try {\n FS.chmodSync(root, 0o700)\n } catch {\n // best-effort on platforms without chmod\n }\n}\n\nexport function readJsonFile<T>(file: string): T | undefined {\n if (!FS.existsSync(file)) return undefined\n const raw = FS.readFileSync(file, 'utf8')\n if (raw.trim().length === 0) return undefined\n return JSON.parse(raw) as T\n}\n\nexport function writeJsonFile(file: string, value: unknown): void {\n ensureWalletDir(PATH.dirname(file))\n const tmp = `${file}.tmp`\n FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}\\n`, { mode: 0o600 })\n FS.renameSync(tmp, file)\n try {\n FS.chmodSync(file, 0o600)\n } catch {\n // best-effort\n }\n}\n\nexport function deleteFile(file: string): void {\n if (FS.existsSync(file)) FS.unlinkSync(file)\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport interface NetworkRecord {\n id: string\n label: string\n rpcUrl: string\n chainId?: string\n isCustom: boolean\n}\n\nexport interface NetworksFile {\n networks: NetworkRecord[]\n activeId: string\n}\n\nconst DEFAULT_NETWORKS: NetworkRecord[] = [\n {\n id: 'xl1-mainnet',\n label: 'XL1 Mainnet',\n rpcUrl: 'https://node.xyo.network',\n isCustom: false,\n },\n {\n id: 'xl1-testnet',\n label: 'XL1 Testnet',\n rpcUrl: 'https://testnet.node.xyo.network',\n isCustom: false,\n },\n]\n\nexport function readNetworks(): NetworksFile {\n const data = readJsonFile<NetworksFile>(walletPaths().networks)\n if (data) return data\n const seeded: NetworksFile = {\n networks: DEFAULT_NETWORKS,\n activeId: DEFAULT_NETWORKS[0].id,\n }\n writeJsonFile(walletPaths().networks, seeded)\n return seeded\n}\n\nexport function writeNetworks(file: NetworksFile): void {\n writeJsonFile(walletPaths().networks, file)\n}\n\nexport function getActiveNetwork(): NetworkRecord {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === file.activeId)\n if (!found) throw new Error(`Active network ${file.activeId} not found.`)\n return found\n}\n","import chalk from 'chalk'\n\nimport type { NetworkRecord } from './storage.ts'\nimport { readNetworks, writeNetworks } from './storage.ts'\n\nexport function listNetworks(): void {\n const file = readNetworks()\n for (const network of file.networks) {\n const marker = network.id === file.activeId ? chalk.green('* ') : ' '\n const id = chalk.cyan(network.id.padEnd(20))\n const label = chalk.white(network.label.padEnd(20))\n const custom = network.isCustom ? chalk.gray('(custom)') : ''\n console.log(`${marker}${id} ${label} ${network.rpcUrl} ${custom}`)\n }\n}\n\nexport function useNetwork(id: string): void {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === id)\n if (!found) throw new Error(`Network not found: ${id}`)\n file.activeId = id\n writeNetworks(file)\n console.log(chalk.green(`Active network set to ${chalk.cyan(id)}`))\n}\n\nexport interface AddNetworkOptions {\n id: string\n rpcUrl: string\n label?: string\n chainId?: string\n}\n\nexport function addNetwork(options: AddNetworkOptions): void {\n const file = readNetworks()\n if (file.networks.some(n => n.id === options.id)) {\n throw new Error(`Network already exists: ${options.id}`)\n }\n const record: NetworkRecord = {\n id: options.id,\n label: options.label ?? options.id,\n rpcUrl: options.rpcUrl,\n chainId: options.chainId,\n isCustom: true,\n }\n file.networks.push(record)\n writeNetworks(file)\n console.log(chalk.green(`Added network ${chalk.cyan(options.id)} (${options.rpcUrl})`))\n}\n\nexport function removeNetwork(id: string): void {\n const file = readNetworks()\n const target = file.networks.find(n => n.id === id)\n if (!target) throw new Error(`Network not found: ${id}`)\n if (!target.isCustom) throw new Error(`Cannot remove built-in network: ${id}`)\n file.networks = file.networks.filter(n => n.id !== id)\n if (file.activeId === id) file.activeId = file.networks[0]?.id ?? ''\n writeNetworks(file)\n console.log(chalk.green(`Removed network ${chalk.cyan(id)}`))\n}\n","import type { CommandModule } from 'yargs'\n\nimport { addNetwork } from '../actions/wallet/index.ts'\n\nexport const walletNetworkAddCommand: CommandModule = {\n command: 'add <id> <rpcUrl>',\n describe: 'Add a custom network',\n builder: yargs =>\n yargs\n .positional('id', {\n type: 'string', demandOption: true, describe: 'Network id (unique)',\n })\n .positional('rpcUrl', {\n type: 'string', demandOption: true, describe: 'Gateway RPC URL',\n })\n .option('label', {\n alias: 'l', type: 'string', describe: 'Friendly label',\n })\n .option('chain-id', { type: 'string', describe: 'Chain id (hex)' }),\n handler: (argv) => {\n addNetwork({\n id: argv.id as string,\n rpcUrl: argv.rpcUrl as string,\n label: argv.label as string | undefined,\n chainId: argv['chain-id'] as string | undefined,\n })\n },\n}\n"],"mappings":"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","names":["PATH","PATH"]}
@@ -0,0 +1,206 @@
1
+ // src/actions/wallet/paths.ts
2
+ import OS from "os";
3
+ import PATH from "path";
4
+ function walletRoot() {
5
+ const override = process.env.ARIES_WALLET_HOME;
6
+ if (override) return override;
7
+ return PATH.join(OS.homedir(), ".aries", "wallet");
8
+ }
9
+ function walletPaths(root = walletRoot()) {
10
+ return {
11
+ root,
12
+ password: PATH.join(root, "password.json"),
13
+ phrases: PATH.join(root, "phrases.json"),
14
+ active: PATH.join(root, "active.json"),
15
+ addressBooks: PATH.join(root, "address-books.json"),
16
+ contacts: PATH.join(root, "contacts.json"),
17
+ networks: PATH.join(root, "networks.json"),
18
+ session: PATH.join(root, "session.json"),
19
+ machineId: PATH.join(root, ".machine-id")
20
+ };
21
+ }
22
+
23
+ // src/actions/wallet/storage.ts
24
+ import FS from "fs";
25
+ import PATH2 from "path";
26
+ function ensureWalletDir(root = walletRoot()) {
27
+ if (!FS.existsSync(root)) {
28
+ FS.mkdirSync(root, { recursive: true, mode: 448 });
29
+ return;
30
+ }
31
+ try {
32
+ FS.chmodSync(root, 448);
33
+ } catch {
34
+ }
35
+ }
36
+ function readJsonFile(file) {
37
+ if (!FS.existsSync(file)) return void 0;
38
+ const raw = FS.readFileSync(file, "utf8");
39
+ if (raw.trim().length === 0) return void 0;
40
+ return JSON.parse(raw);
41
+ }
42
+ function writeJsonFile(file, value) {
43
+ ensureWalletDir(PATH2.dirname(file));
44
+ const tmp = `${file}.tmp`;
45
+ FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}
46
+ `, { mode: 384 });
47
+ FS.renameSync(tmp, file);
48
+ try {
49
+ FS.chmodSync(file, 384);
50
+ } catch {
51
+ }
52
+ }
53
+
54
+ // src/actions/wallet/network/storage.ts
55
+ var DEFAULT_NETWORKS = [
56
+ {
57
+ id: "xl1-mainnet",
58
+ label: "XL1 Mainnet",
59
+ rpcUrl: "https://node.xyo.network",
60
+ isCustom: false
61
+ },
62
+ {
63
+ id: "xl1-testnet",
64
+ label: "XL1 Testnet",
65
+ rpcUrl: "https://testnet.node.xyo.network",
66
+ isCustom: false
67
+ }
68
+ ];
69
+ function readNetworks() {
70
+ const data = readJsonFile(walletPaths().networks);
71
+ if (data) return data;
72
+ const seeded = {
73
+ networks: DEFAULT_NETWORKS,
74
+ activeId: DEFAULT_NETWORKS[0].id
75
+ };
76
+ writeJsonFile(walletPaths().networks, seeded);
77
+ return seeded;
78
+ }
79
+ function writeNetworks(file) {
80
+ writeJsonFile(walletPaths().networks, file);
81
+ }
82
+
83
+ // src/actions/wallet/network/networkActions.ts
84
+ import chalk from "chalk";
85
+ function listNetworks() {
86
+ const file = readNetworks();
87
+ for (const network of file.networks) {
88
+ const marker = network.id === file.activeId ? chalk.green("* ") : " ";
89
+ const id = chalk.cyan(network.id.padEnd(20));
90
+ const label = chalk.white(network.label.padEnd(20));
91
+ const custom = network.isCustom ? chalk.gray("(custom)") : "";
92
+ console.log(`${marker}${id} ${label} ${network.rpcUrl} ${custom}`);
93
+ }
94
+ }
95
+ function useNetwork(id) {
96
+ const file = readNetworks();
97
+ const found = file.networks.find((n) => n.id === id);
98
+ if (!found) throw new Error(`Network not found: ${id}`);
99
+ file.activeId = id;
100
+ writeNetworks(file);
101
+ console.log(chalk.green(`Active network set to ${chalk.cyan(id)}`));
102
+ }
103
+ function addNetwork(options) {
104
+ const file = readNetworks();
105
+ if (file.networks.some((n) => n.id === options.id)) {
106
+ throw new Error(`Network already exists: ${options.id}`);
107
+ }
108
+ const record = {
109
+ id: options.id,
110
+ label: options.label ?? options.id,
111
+ rpcUrl: options.rpcUrl,
112
+ chainId: options.chainId,
113
+ isCustom: true
114
+ };
115
+ file.networks.push(record);
116
+ writeNetworks(file);
117
+ console.log(chalk.green(`Added network ${chalk.cyan(options.id)} (${options.rpcUrl})`));
118
+ }
119
+ function removeNetwork(id) {
120
+ const file = readNetworks();
121
+ const target = file.networks.find((n) => n.id === id);
122
+ if (!target) throw new Error(`Network not found: ${id}`);
123
+ if (!target.isCustom) throw new Error(`Cannot remove built-in network: ${id}`);
124
+ file.networks = file.networks.filter((n) => n.id !== id);
125
+ if (file.activeId === id) file.activeId = file.networks[0]?.id ?? "";
126
+ writeNetworks(file);
127
+ console.log(chalk.green(`Removed network ${chalk.cyan(id)}`));
128
+ }
129
+
130
+ // src/commands/walletNetworkAddCommand.ts
131
+ var walletNetworkAddCommand = {
132
+ command: "add <id> <rpcUrl>",
133
+ describe: "Add a custom network",
134
+ builder: (yargs) => yargs.positional("id", {
135
+ type: "string",
136
+ demandOption: true,
137
+ describe: "Network id (unique)"
138
+ }).positional("rpcUrl", {
139
+ type: "string",
140
+ demandOption: true,
141
+ describe: "Gateway RPC URL"
142
+ }).option("label", {
143
+ alias: "l",
144
+ type: "string",
145
+ describe: "Friendly label"
146
+ }).option("chain-id", { type: "string", describe: "Chain id (hex)" }),
147
+ handler: (argv) => {
148
+ addNetwork({
149
+ id: argv.id,
150
+ rpcUrl: argv.rpcUrl,
151
+ label: argv.label,
152
+ chainId: argv["chain-id"]
153
+ });
154
+ }
155
+ };
156
+
157
+ // src/commands/walletNetworkListCommand.ts
158
+ var walletNetworkListCommand = {
159
+ command: "list",
160
+ describe: "List configured networks",
161
+ handler: () => {
162
+ listNetworks();
163
+ }
164
+ };
165
+
166
+ // src/commands/walletNetworkRemoveCommand.ts
167
+ var walletNetworkRemoveCommand = {
168
+ command: "remove <id>",
169
+ describe: "Remove a custom network",
170
+ builder: (yargs) => yargs.positional("id", {
171
+ type: "string",
172
+ demandOption: true,
173
+ describe: "Network id"
174
+ }),
175
+ handler: (argv) => {
176
+ removeNetwork(argv.id);
177
+ }
178
+ };
179
+
180
+ // src/commands/walletNetworkUseCommand.ts
181
+ var walletNetworkUseCommand = {
182
+ command: "use <id>",
183
+ describe: "Set the active network",
184
+ builder: (yargs) => yargs.positional("id", {
185
+ type: "string",
186
+ demandOption: true,
187
+ describe: "Network id"
188
+ }),
189
+ handler: (argv) => {
190
+ useNetwork(argv.id);
191
+ }
192
+ };
193
+
194
+ // src/commands/walletNetworkCommand.ts
195
+ var walletNetworkCommand = {
196
+ command: "network",
197
+ describe: "Manage XL1 network configurations",
198
+ builder: (yargs) => yargs.command(walletNetworkListCommand).command(walletNetworkUseCommand).command(walletNetworkAddCommand).command(walletNetworkRemoveCommand).demandCommand(1).strictCommands(),
199
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
200
+ handler: () => {
201
+ }
202
+ };
203
+ export {
204
+ walletNetworkCommand
205
+ };
206
+ //# sourceMappingURL=walletNetworkCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/network/storage.ts","../../src/actions/wallet/network/networkActions.ts","../../src/commands/walletNetworkAddCommand.ts","../../src/commands/walletNetworkListCommand.ts","../../src/commands/walletNetworkRemoveCommand.ts","../../src/commands/walletNetworkUseCommand.ts","../../src/commands/walletNetworkCommand.ts"],"sourcesContent":["import OS from 'node:os'\nimport PATH from 'node:path'\n\nexport interface WalletPaths {\n root: string\n password: string\n phrases: string\n active: string\n addressBooks: string\n contacts: string\n networks: string\n session: string\n machineId: string\n}\n\nexport function walletRoot(): string {\n const override = process.env.ARIES_WALLET_HOME\n if (override) return override\n return PATH.join(OS.homedir(), '.aries', 'wallet')\n}\n\nexport function walletPaths(root: string = walletRoot()): WalletPaths {\n return {\n root,\n password: PATH.join(root, 'password.json'),\n phrases: PATH.join(root, 'phrases.json'),\n active: PATH.join(root, 'active.json'),\n addressBooks: PATH.join(root, 'address-books.json'),\n contacts: PATH.join(root, 'contacts.json'),\n networks: PATH.join(root, 'networks.json'),\n session: PATH.join(root, 'session.json'),\n machineId: PATH.join(root, '.machine-id'),\n }\n}\n","import FS from 'node:fs'\nimport PATH from 'node:path'\n\nimport { walletRoot } from './paths.ts'\n\nexport function ensureWalletDir(root: string = walletRoot()): void {\n if (!FS.existsSync(root)) {\n FS.mkdirSync(root, { recursive: true, mode: 0o700 })\n return\n }\n try {\n FS.chmodSync(root, 0o700)\n } catch {\n // best-effort on platforms without chmod\n }\n}\n\nexport function readJsonFile<T>(file: string): T | undefined {\n if (!FS.existsSync(file)) return undefined\n const raw = FS.readFileSync(file, 'utf8')\n if (raw.trim().length === 0) return undefined\n return JSON.parse(raw) as T\n}\n\nexport function writeJsonFile(file: string, value: unknown): void {\n ensureWalletDir(PATH.dirname(file))\n const tmp = `${file}.tmp`\n FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}\\n`, { mode: 0o600 })\n FS.renameSync(tmp, file)\n try {\n FS.chmodSync(file, 0o600)\n } catch {\n // best-effort\n }\n}\n\nexport function deleteFile(file: string): void {\n if (FS.existsSync(file)) FS.unlinkSync(file)\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport interface NetworkRecord {\n id: string\n label: string\n rpcUrl: string\n chainId?: string\n isCustom: boolean\n}\n\nexport interface NetworksFile {\n networks: NetworkRecord[]\n activeId: string\n}\n\nconst DEFAULT_NETWORKS: NetworkRecord[] = [\n {\n id: 'xl1-mainnet',\n label: 'XL1 Mainnet',\n rpcUrl: 'https://node.xyo.network',\n isCustom: false,\n },\n {\n id: 'xl1-testnet',\n label: 'XL1 Testnet',\n rpcUrl: 'https://testnet.node.xyo.network',\n isCustom: false,\n },\n]\n\nexport function readNetworks(): NetworksFile {\n const data = readJsonFile<NetworksFile>(walletPaths().networks)\n if (data) return data\n const seeded: NetworksFile = {\n networks: DEFAULT_NETWORKS,\n activeId: DEFAULT_NETWORKS[0].id,\n }\n writeJsonFile(walletPaths().networks, seeded)\n return seeded\n}\n\nexport function writeNetworks(file: NetworksFile): void {\n writeJsonFile(walletPaths().networks, file)\n}\n\nexport function getActiveNetwork(): NetworkRecord {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === file.activeId)\n if (!found) throw new Error(`Active network ${file.activeId} not found.`)\n return found\n}\n","import chalk from 'chalk'\n\nimport type { NetworkRecord } from './storage.ts'\nimport { readNetworks, writeNetworks } from './storage.ts'\n\nexport function listNetworks(): void {\n const file = readNetworks()\n for (const network of file.networks) {\n const marker = network.id === file.activeId ? chalk.green('* ') : ' '\n const id = chalk.cyan(network.id.padEnd(20))\n const label = chalk.white(network.label.padEnd(20))\n const custom = network.isCustom ? chalk.gray('(custom)') : ''\n console.log(`${marker}${id} ${label} ${network.rpcUrl} ${custom}`)\n }\n}\n\nexport function useNetwork(id: string): void {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === id)\n if (!found) throw new Error(`Network not found: ${id}`)\n file.activeId = id\n writeNetworks(file)\n console.log(chalk.green(`Active network set to ${chalk.cyan(id)}`))\n}\n\nexport interface AddNetworkOptions {\n id: string\n rpcUrl: string\n label?: string\n chainId?: string\n}\n\nexport function addNetwork(options: AddNetworkOptions): void {\n const file = readNetworks()\n if (file.networks.some(n => n.id === options.id)) {\n throw new Error(`Network already exists: ${options.id}`)\n }\n const record: NetworkRecord = {\n id: options.id,\n label: options.label ?? options.id,\n rpcUrl: options.rpcUrl,\n chainId: options.chainId,\n isCustom: true,\n }\n file.networks.push(record)\n writeNetworks(file)\n console.log(chalk.green(`Added network ${chalk.cyan(options.id)} (${options.rpcUrl})`))\n}\n\nexport function removeNetwork(id: string): void {\n const file = readNetworks()\n const target = file.networks.find(n => n.id === id)\n if (!target) throw new Error(`Network not found: ${id}`)\n if (!target.isCustom) throw new Error(`Cannot remove built-in network: ${id}`)\n file.networks = file.networks.filter(n => n.id !== id)\n if (file.activeId === id) file.activeId = file.networks[0]?.id ?? ''\n writeNetworks(file)\n console.log(chalk.green(`Removed network ${chalk.cyan(id)}`))\n}\n","import type { CommandModule } from 'yargs'\n\nimport { addNetwork } from '../actions/wallet/index.ts'\n\nexport const walletNetworkAddCommand: CommandModule = {\n command: 'add <id> <rpcUrl>',\n describe: 'Add a custom network',\n builder: yargs =>\n yargs\n .positional('id', {\n type: 'string', demandOption: true, describe: 'Network id (unique)',\n })\n .positional('rpcUrl', {\n type: 'string', demandOption: true, describe: 'Gateway RPC URL',\n })\n .option('label', {\n alias: 'l', type: 'string', describe: 'Friendly label',\n })\n .option('chain-id', { type: 'string', describe: 'Chain id (hex)' }),\n handler: (argv) => {\n addNetwork({\n id: argv.id as string,\n rpcUrl: argv.rpcUrl as string,\n label: argv.label as string | undefined,\n chainId: argv['chain-id'] as string | undefined,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { listNetworks } from '../actions/wallet/index.ts'\n\nexport const walletNetworkListCommand: CommandModule = {\n command: 'list',\n describe: 'List configured networks',\n handler: () => {\n listNetworks()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { removeNetwork } from '../actions/wallet/index.ts'\n\nexport const walletNetworkRemoveCommand: CommandModule = {\n command: 'remove <id>',\n describe: 'Remove a custom network',\n builder: yargs =>\n yargs.positional('id', {\n type: 'string', demandOption: true, describe: 'Network id',\n }),\n handler: (argv) => {\n removeNetwork(argv.id as string)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { useNetwork } from '../actions/wallet/index.ts'\n\nexport const walletNetworkUseCommand: CommandModule = {\n command: 'use <id>',\n describe: 'Set the active network',\n builder: yargs =>\n yargs.positional('id', {\n type: 'string', demandOption: true, describe: 'Network id',\n }),\n handler: (argv) => {\n useNetwork(argv.id as string)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { walletNetworkAddCommand } from './walletNetworkAddCommand.ts'\nimport { walletNetworkListCommand } from './walletNetworkListCommand.ts'\nimport { walletNetworkRemoveCommand } from './walletNetworkRemoveCommand.ts'\nimport { walletNetworkUseCommand } from './walletNetworkUseCommand.ts'\n\nexport const walletNetworkCommand: CommandModule = {\n command: 'network',\n describe: 'Manage XL1 network configurations',\n builder: yargs =>\n yargs\n .command(walletNetworkListCommand)\n .command(walletNetworkUseCommand)\n .command(walletNetworkAddCommand)\n .command(walletNetworkRemoveCommand)\n .demandCommand(1)\n .strictCommands(),\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n handler: () => {},\n}\n"],"mappings":"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","names":["PATH","PATH"]}
@@ -0,0 +1,104 @@
1
+ // src/actions/wallet/paths.ts
2
+ import OS from "os";
3
+ import PATH from "path";
4
+ function walletRoot() {
5
+ const override = process.env.ARIES_WALLET_HOME;
6
+ if (override) return override;
7
+ return PATH.join(OS.homedir(), ".aries", "wallet");
8
+ }
9
+ function walletPaths(root = walletRoot()) {
10
+ return {
11
+ root,
12
+ password: PATH.join(root, "password.json"),
13
+ phrases: PATH.join(root, "phrases.json"),
14
+ active: PATH.join(root, "active.json"),
15
+ addressBooks: PATH.join(root, "address-books.json"),
16
+ contacts: PATH.join(root, "contacts.json"),
17
+ networks: PATH.join(root, "networks.json"),
18
+ session: PATH.join(root, "session.json"),
19
+ machineId: PATH.join(root, ".machine-id")
20
+ };
21
+ }
22
+
23
+ // src/actions/wallet/storage.ts
24
+ import FS from "fs";
25
+ import PATH2 from "path";
26
+ function ensureWalletDir(root = walletRoot()) {
27
+ if (!FS.existsSync(root)) {
28
+ FS.mkdirSync(root, { recursive: true, mode: 448 });
29
+ return;
30
+ }
31
+ try {
32
+ FS.chmodSync(root, 448);
33
+ } catch {
34
+ }
35
+ }
36
+ function readJsonFile(file) {
37
+ if (!FS.existsSync(file)) return void 0;
38
+ const raw = FS.readFileSync(file, "utf8");
39
+ if (raw.trim().length === 0) return void 0;
40
+ return JSON.parse(raw);
41
+ }
42
+ function writeJsonFile(file, value) {
43
+ ensureWalletDir(PATH2.dirname(file));
44
+ const tmp = `${file}.tmp`;
45
+ FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}
46
+ `, { mode: 384 });
47
+ FS.renameSync(tmp, file);
48
+ try {
49
+ FS.chmodSync(file, 384);
50
+ } catch {
51
+ }
52
+ }
53
+
54
+ // src/actions/wallet/network/storage.ts
55
+ var DEFAULT_NETWORKS = [
56
+ {
57
+ id: "xl1-mainnet",
58
+ label: "XL1 Mainnet",
59
+ rpcUrl: "https://node.xyo.network",
60
+ isCustom: false
61
+ },
62
+ {
63
+ id: "xl1-testnet",
64
+ label: "XL1 Testnet",
65
+ rpcUrl: "https://testnet.node.xyo.network",
66
+ isCustom: false
67
+ }
68
+ ];
69
+ function readNetworks() {
70
+ const data = readJsonFile(walletPaths().networks);
71
+ if (data) return data;
72
+ const seeded = {
73
+ networks: DEFAULT_NETWORKS,
74
+ activeId: DEFAULT_NETWORKS[0].id
75
+ };
76
+ writeJsonFile(walletPaths().networks, seeded);
77
+ return seeded;
78
+ }
79
+
80
+ // src/actions/wallet/network/networkActions.ts
81
+ import chalk from "chalk";
82
+ function listNetworks() {
83
+ const file = readNetworks();
84
+ for (const network of file.networks) {
85
+ const marker = network.id === file.activeId ? chalk.green("* ") : " ";
86
+ const id = chalk.cyan(network.id.padEnd(20));
87
+ const label = chalk.white(network.label.padEnd(20));
88
+ const custom = network.isCustom ? chalk.gray("(custom)") : "";
89
+ console.log(`${marker}${id} ${label} ${network.rpcUrl} ${custom}`);
90
+ }
91
+ }
92
+
93
+ // src/commands/walletNetworkListCommand.ts
94
+ var walletNetworkListCommand = {
95
+ command: "list",
96
+ describe: "List configured networks",
97
+ handler: () => {
98
+ listNetworks();
99
+ }
100
+ };
101
+ export {
102
+ walletNetworkListCommand
103
+ };
104
+ //# sourceMappingURL=walletNetworkListCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/network/storage.ts","../../src/actions/wallet/network/networkActions.ts","../../src/commands/walletNetworkListCommand.ts"],"sourcesContent":["import OS from 'node:os'\nimport PATH from 'node:path'\n\nexport interface WalletPaths {\n root: string\n password: string\n phrases: string\n active: string\n addressBooks: string\n contacts: string\n networks: string\n session: string\n machineId: string\n}\n\nexport function walletRoot(): string {\n const override = process.env.ARIES_WALLET_HOME\n if (override) return override\n return PATH.join(OS.homedir(), '.aries', 'wallet')\n}\n\nexport function walletPaths(root: string = walletRoot()): WalletPaths {\n return {\n root,\n password: PATH.join(root, 'password.json'),\n phrases: PATH.join(root, 'phrases.json'),\n active: PATH.join(root, 'active.json'),\n addressBooks: PATH.join(root, 'address-books.json'),\n contacts: PATH.join(root, 'contacts.json'),\n networks: PATH.join(root, 'networks.json'),\n session: PATH.join(root, 'session.json'),\n machineId: PATH.join(root, '.machine-id'),\n }\n}\n","import FS from 'node:fs'\nimport PATH from 'node:path'\n\nimport { walletRoot } from './paths.ts'\n\nexport function ensureWalletDir(root: string = walletRoot()): void {\n if (!FS.existsSync(root)) {\n FS.mkdirSync(root, { recursive: true, mode: 0o700 })\n return\n }\n try {\n FS.chmodSync(root, 0o700)\n } catch {\n // best-effort on platforms without chmod\n }\n}\n\nexport function readJsonFile<T>(file: string): T | undefined {\n if (!FS.existsSync(file)) return undefined\n const raw = FS.readFileSync(file, 'utf8')\n if (raw.trim().length === 0) return undefined\n return JSON.parse(raw) as T\n}\n\nexport function writeJsonFile(file: string, value: unknown): void {\n ensureWalletDir(PATH.dirname(file))\n const tmp = `${file}.tmp`\n FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}\\n`, { mode: 0o600 })\n FS.renameSync(tmp, file)\n try {\n FS.chmodSync(file, 0o600)\n } catch {\n // best-effort\n }\n}\n\nexport function deleteFile(file: string): void {\n if (FS.existsSync(file)) FS.unlinkSync(file)\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport interface NetworkRecord {\n id: string\n label: string\n rpcUrl: string\n chainId?: string\n isCustom: boolean\n}\n\nexport interface NetworksFile {\n networks: NetworkRecord[]\n activeId: string\n}\n\nconst DEFAULT_NETWORKS: NetworkRecord[] = [\n {\n id: 'xl1-mainnet',\n label: 'XL1 Mainnet',\n rpcUrl: 'https://node.xyo.network',\n isCustom: false,\n },\n {\n id: 'xl1-testnet',\n label: 'XL1 Testnet',\n rpcUrl: 'https://testnet.node.xyo.network',\n isCustom: false,\n },\n]\n\nexport function readNetworks(): NetworksFile {\n const data = readJsonFile<NetworksFile>(walletPaths().networks)\n if (data) return data\n const seeded: NetworksFile = {\n networks: DEFAULT_NETWORKS,\n activeId: DEFAULT_NETWORKS[0].id,\n }\n writeJsonFile(walletPaths().networks, seeded)\n return seeded\n}\n\nexport function writeNetworks(file: NetworksFile): void {\n writeJsonFile(walletPaths().networks, file)\n}\n\nexport function getActiveNetwork(): NetworkRecord {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === file.activeId)\n if (!found) throw new Error(`Active network ${file.activeId} not found.`)\n return found\n}\n","import chalk from 'chalk'\n\nimport type { NetworkRecord } from './storage.ts'\nimport { readNetworks, writeNetworks } from './storage.ts'\n\nexport function listNetworks(): void {\n const file = readNetworks()\n for (const network of file.networks) {\n const marker = network.id === file.activeId ? chalk.green('* ') : ' '\n const id = chalk.cyan(network.id.padEnd(20))\n const label = chalk.white(network.label.padEnd(20))\n const custom = network.isCustom ? chalk.gray('(custom)') : ''\n console.log(`${marker}${id} ${label} ${network.rpcUrl} ${custom}`)\n }\n}\n\nexport function useNetwork(id: string): void {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === id)\n if (!found) throw new Error(`Network not found: ${id}`)\n file.activeId = id\n writeNetworks(file)\n console.log(chalk.green(`Active network set to ${chalk.cyan(id)}`))\n}\n\nexport interface AddNetworkOptions {\n id: string\n rpcUrl: string\n label?: string\n chainId?: string\n}\n\nexport function addNetwork(options: AddNetworkOptions): void {\n const file = readNetworks()\n if (file.networks.some(n => n.id === options.id)) {\n throw new Error(`Network already exists: ${options.id}`)\n }\n const record: NetworkRecord = {\n id: options.id,\n label: options.label ?? options.id,\n rpcUrl: options.rpcUrl,\n chainId: options.chainId,\n isCustom: true,\n }\n file.networks.push(record)\n writeNetworks(file)\n console.log(chalk.green(`Added network ${chalk.cyan(options.id)} (${options.rpcUrl})`))\n}\n\nexport function removeNetwork(id: string): void {\n const file = readNetworks()\n const target = file.networks.find(n => n.id === id)\n if (!target) throw new Error(`Network not found: ${id}`)\n if (!target.isCustom) throw new Error(`Cannot remove built-in network: ${id}`)\n file.networks = file.networks.filter(n => n.id !== id)\n if (file.activeId === id) file.activeId = file.networks[0]?.id ?? ''\n writeNetworks(file)\n console.log(chalk.green(`Removed network ${chalk.cyan(id)}`))\n}\n","import type { CommandModule } from 'yargs'\n\nimport { listNetworks } from '../actions/wallet/index.ts'\n\nexport const walletNetworkListCommand: CommandModule = {\n command: 'list',\n describe: 'List configured networks',\n handler: () => {\n listNetworks()\n },\n}\n"],"mappings":"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","names":["PATH","PATH"]}
@@ -0,0 +1,112 @@
1
+ // src/actions/wallet/paths.ts
2
+ import OS from "os";
3
+ import PATH from "path";
4
+ function walletRoot() {
5
+ const override = process.env.ARIES_WALLET_HOME;
6
+ if (override) return override;
7
+ return PATH.join(OS.homedir(), ".aries", "wallet");
8
+ }
9
+ function walletPaths(root = walletRoot()) {
10
+ return {
11
+ root,
12
+ password: PATH.join(root, "password.json"),
13
+ phrases: PATH.join(root, "phrases.json"),
14
+ active: PATH.join(root, "active.json"),
15
+ addressBooks: PATH.join(root, "address-books.json"),
16
+ contacts: PATH.join(root, "contacts.json"),
17
+ networks: PATH.join(root, "networks.json"),
18
+ session: PATH.join(root, "session.json"),
19
+ machineId: PATH.join(root, ".machine-id")
20
+ };
21
+ }
22
+
23
+ // src/actions/wallet/storage.ts
24
+ import FS from "fs";
25
+ import PATH2 from "path";
26
+ function ensureWalletDir(root = walletRoot()) {
27
+ if (!FS.existsSync(root)) {
28
+ FS.mkdirSync(root, { recursive: true, mode: 448 });
29
+ return;
30
+ }
31
+ try {
32
+ FS.chmodSync(root, 448);
33
+ } catch {
34
+ }
35
+ }
36
+ function readJsonFile(file) {
37
+ if (!FS.existsSync(file)) return void 0;
38
+ const raw = FS.readFileSync(file, "utf8");
39
+ if (raw.trim().length === 0) return void 0;
40
+ return JSON.parse(raw);
41
+ }
42
+ function writeJsonFile(file, value) {
43
+ ensureWalletDir(PATH2.dirname(file));
44
+ const tmp = `${file}.tmp`;
45
+ FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}
46
+ `, { mode: 384 });
47
+ FS.renameSync(tmp, file);
48
+ try {
49
+ FS.chmodSync(file, 384);
50
+ } catch {
51
+ }
52
+ }
53
+
54
+ // src/actions/wallet/network/storage.ts
55
+ var DEFAULT_NETWORKS = [
56
+ {
57
+ id: "xl1-mainnet",
58
+ label: "XL1 Mainnet",
59
+ rpcUrl: "https://node.xyo.network",
60
+ isCustom: false
61
+ },
62
+ {
63
+ id: "xl1-testnet",
64
+ label: "XL1 Testnet",
65
+ rpcUrl: "https://testnet.node.xyo.network",
66
+ isCustom: false
67
+ }
68
+ ];
69
+ function readNetworks() {
70
+ const data = readJsonFile(walletPaths().networks);
71
+ if (data) return data;
72
+ const seeded = {
73
+ networks: DEFAULT_NETWORKS,
74
+ activeId: DEFAULT_NETWORKS[0].id
75
+ };
76
+ writeJsonFile(walletPaths().networks, seeded);
77
+ return seeded;
78
+ }
79
+ function writeNetworks(file) {
80
+ writeJsonFile(walletPaths().networks, file);
81
+ }
82
+
83
+ // src/actions/wallet/network/networkActions.ts
84
+ import chalk from "chalk";
85
+ function removeNetwork(id) {
86
+ const file = readNetworks();
87
+ const target = file.networks.find((n) => n.id === id);
88
+ if (!target) throw new Error(`Network not found: ${id}`);
89
+ if (!target.isCustom) throw new Error(`Cannot remove built-in network: ${id}`);
90
+ file.networks = file.networks.filter((n) => n.id !== id);
91
+ if (file.activeId === id) file.activeId = file.networks[0]?.id ?? "";
92
+ writeNetworks(file);
93
+ console.log(chalk.green(`Removed network ${chalk.cyan(id)}`));
94
+ }
95
+
96
+ // src/commands/walletNetworkRemoveCommand.ts
97
+ var walletNetworkRemoveCommand = {
98
+ command: "remove <id>",
99
+ describe: "Remove a custom network",
100
+ builder: (yargs) => yargs.positional("id", {
101
+ type: "string",
102
+ demandOption: true,
103
+ describe: "Network id"
104
+ }),
105
+ handler: (argv) => {
106
+ removeNetwork(argv.id);
107
+ }
108
+ };
109
+ export {
110
+ walletNetworkRemoveCommand
111
+ };
112
+ //# sourceMappingURL=walletNetworkRemoveCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/network/storage.ts","../../src/actions/wallet/network/networkActions.ts","../../src/commands/walletNetworkRemoveCommand.ts"],"sourcesContent":["import OS from 'node:os'\nimport PATH from 'node:path'\n\nexport interface WalletPaths {\n root: string\n password: string\n phrases: string\n active: string\n addressBooks: string\n contacts: string\n networks: string\n session: string\n machineId: string\n}\n\nexport function walletRoot(): string {\n const override = process.env.ARIES_WALLET_HOME\n if (override) return override\n return PATH.join(OS.homedir(), '.aries', 'wallet')\n}\n\nexport function walletPaths(root: string = walletRoot()): WalletPaths {\n return {\n root,\n password: PATH.join(root, 'password.json'),\n phrases: PATH.join(root, 'phrases.json'),\n active: PATH.join(root, 'active.json'),\n addressBooks: PATH.join(root, 'address-books.json'),\n contacts: PATH.join(root, 'contacts.json'),\n networks: PATH.join(root, 'networks.json'),\n session: PATH.join(root, 'session.json'),\n machineId: PATH.join(root, '.machine-id'),\n }\n}\n","import FS from 'node:fs'\nimport PATH from 'node:path'\n\nimport { walletRoot } from './paths.ts'\n\nexport function ensureWalletDir(root: string = walletRoot()): void {\n if (!FS.existsSync(root)) {\n FS.mkdirSync(root, { recursive: true, mode: 0o700 })\n return\n }\n try {\n FS.chmodSync(root, 0o700)\n } catch {\n // best-effort on platforms without chmod\n }\n}\n\nexport function readJsonFile<T>(file: string): T | undefined {\n if (!FS.existsSync(file)) return undefined\n const raw = FS.readFileSync(file, 'utf8')\n if (raw.trim().length === 0) return undefined\n return JSON.parse(raw) as T\n}\n\nexport function writeJsonFile(file: string, value: unknown): void {\n ensureWalletDir(PATH.dirname(file))\n const tmp = `${file}.tmp`\n FS.writeFileSync(tmp, `${JSON.stringify(value, null, 2)}\\n`, { mode: 0o600 })\n FS.renameSync(tmp, file)\n try {\n FS.chmodSync(file, 0o600)\n } catch {\n // best-effort\n }\n}\n\nexport function deleteFile(file: string): void {\n if (FS.existsSync(file)) FS.unlinkSync(file)\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport interface NetworkRecord {\n id: string\n label: string\n rpcUrl: string\n chainId?: string\n isCustom: boolean\n}\n\nexport interface NetworksFile {\n networks: NetworkRecord[]\n activeId: string\n}\n\nconst DEFAULT_NETWORKS: NetworkRecord[] = [\n {\n id: 'xl1-mainnet',\n label: 'XL1 Mainnet',\n rpcUrl: 'https://node.xyo.network',\n isCustom: false,\n },\n {\n id: 'xl1-testnet',\n label: 'XL1 Testnet',\n rpcUrl: 'https://testnet.node.xyo.network',\n isCustom: false,\n },\n]\n\nexport function readNetworks(): NetworksFile {\n const data = readJsonFile<NetworksFile>(walletPaths().networks)\n if (data) return data\n const seeded: NetworksFile = {\n networks: DEFAULT_NETWORKS,\n activeId: DEFAULT_NETWORKS[0].id,\n }\n writeJsonFile(walletPaths().networks, seeded)\n return seeded\n}\n\nexport function writeNetworks(file: NetworksFile): void {\n writeJsonFile(walletPaths().networks, file)\n}\n\nexport function getActiveNetwork(): NetworkRecord {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === file.activeId)\n if (!found) throw new Error(`Active network ${file.activeId} not found.`)\n return found\n}\n","import chalk from 'chalk'\n\nimport type { NetworkRecord } from './storage.ts'\nimport { readNetworks, writeNetworks } from './storage.ts'\n\nexport function listNetworks(): void {\n const file = readNetworks()\n for (const network of file.networks) {\n const marker = network.id === file.activeId ? chalk.green('* ') : ' '\n const id = chalk.cyan(network.id.padEnd(20))\n const label = chalk.white(network.label.padEnd(20))\n const custom = network.isCustom ? chalk.gray('(custom)') : ''\n console.log(`${marker}${id} ${label} ${network.rpcUrl} ${custom}`)\n }\n}\n\nexport function useNetwork(id: string): void {\n const file = readNetworks()\n const found = file.networks.find(n => n.id === id)\n if (!found) throw new Error(`Network not found: ${id}`)\n file.activeId = id\n writeNetworks(file)\n console.log(chalk.green(`Active network set to ${chalk.cyan(id)}`))\n}\n\nexport interface AddNetworkOptions {\n id: string\n rpcUrl: string\n label?: string\n chainId?: string\n}\n\nexport function addNetwork(options: AddNetworkOptions): void {\n const file = readNetworks()\n if (file.networks.some(n => n.id === options.id)) {\n throw new Error(`Network already exists: ${options.id}`)\n }\n const record: NetworkRecord = {\n id: options.id,\n label: options.label ?? options.id,\n rpcUrl: options.rpcUrl,\n chainId: options.chainId,\n isCustom: true,\n }\n file.networks.push(record)\n writeNetworks(file)\n console.log(chalk.green(`Added network ${chalk.cyan(options.id)} (${options.rpcUrl})`))\n}\n\nexport function removeNetwork(id: string): void {\n const file = readNetworks()\n const target = file.networks.find(n => n.id === id)\n if (!target) throw new Error(`Network not found: ${id}`)\n if (!target.isCustom) throw new Error(`Cannot remove built-in network: ${id}`)\n file.networks = file.networks.filter(n => n.id !== id)\n if (file.activeId === id) file.activeId = file.networks[0]?.id ?? ''\n writeNetworks(file)\n console.log(chalk.green(`Removed network ${chalk.cyan(id)}`))\n}\n","import type { CommandModule } from 'yargs'\n\nimport { removeNetwork } from '../actions/wallet/index.ts'\n\nexport const walletNetworkRemoveCommand: CommandModule = {\n command: 'remove <id>',\n describe: 'Remove a custom network',\n builder: yargs =>\n yargs.positional('id', {\n type: 'string', demandOption: true, describe: 'Network id',\n }),\n handler: (argv) => {\n removeNetwork(argv.id as string)\n },\n}\n"],"mappings":"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","names":["PATH","PATH"]}