@xylabs/aries 0.1.1 → 0.1.6

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 +6 -688
  2. package/dist/aries.mjs +47 -8466
  3. package/package.json +15 -169
  4. package/dist/actions/audit/auditPaths.mjs +0 -22
  5. package/dist/actions/audit/auditPaths.mjs.map +0 -1
  6. package/dist/actions/audit/index.mjs +0 -739
  7. package/dist/actions/audit/index.mjs.map +0 -1
  8. package/dist/actions/audit/installPlugin.mjs +0 -298
  9. package/dist/actions/audit/installPlugin.mjs.map +0 -1
  10. package/dist/actions/audit/listSessions.mjs +0 -93
  11. package/dist/actions/audit/listSessions.mjs.map +0 -1
  12. package/dist/actions/audit/openAuditDir.mjs +0 -44
  13. package/dist/actions/audit/openAuditDir.mjs.map +0 -1
  14. package/dist/actions/audit/searchAudit.mjs +0 -77
  15. package/dist/actions/audit/searchAudit.mjs.map +0 -1
  16. package/dist/actions/audit/showAiMeta.mjs +0 -105
  17. package/dist/actions/audit/showAiMeta.mjs.map +0 -1
  18. package/dist/actions/audit/showSession.mjs +0 -105
  19. package/dist/actions/audit/showSession.mjs.map +0 -1
  20. package/dist/actions/audit/statusAudit.mjs +0 -98
  21. package/dist/actions/audit/statusAudit.mjs.map +0 -1
  22. package/dist/actions/clamp/clampAudit.mjs +0 -53
  23. package/dist/actions/clamp/clampAudit.mjs.map +0 -1
  24. package/dist/actions/clamp/index.mjs +0 -2258
  25. package/dist/actions/clamp/index.mjs.map +0 -1
  26. package/dist/actions/clamp/ipcServer.mjs +0 -55
  27. package/dist/actions/clamp/ipcServer.mjs.map +0 -1
  28. package/dist/actions/clamp/policyManagement.mjs +0 -144
  29. package/dist/actions/clamp/policyManagement.mjs.map +0 -1
  30. package/dist/actions/clamp/promptUser.mjs +0 -91
  31. package/dist/actions/clamp/promptUser.mjs.map +0 -1
  32. package/dist/actions/clamp/runClamped.mjs +0 -2107
  33. package/dist/actions/clamp/runClamped.mjs.map +0 -1
  34. package/dist/actions/clamp/sandboxExec.mjs +0 -1612
  35. package/dist/actions/clamp/sandboxExec.mjs.map +0 -1
  36. package/dist/actions/clamp/shellEnvSetup.mjs +0 -59
  37. package/dist/actions/clamp/shellEnvSetup.mjs.map +0 -1
  38. package/dist/actions/clamp/shimGenerator.mjs +0 -68
  39. package/dist/actions/clamp/shimGenerator.mjs.map +0 -1
  40. package/dist/actions/clamp/terminalRenderer.mjs +0 -145
  41. package/dist/actions/clamp/terminalRenderer.mjs.map +0 -1
  42. package/dist/actions/datalake/audit/auditLog.mjs +0 -191
  43. package/dist/actions/datalake/audit/auditLog.mjs.map +0 -1
  44. package/dist/actions/datalake/createDatalake.mjs +0 -127
  45. package/dist/actions/datalake/createDatalake.mjs.map +0 -1
  46. package/dist/actions/datalake/describeDatalake.mjs +0 -159
  47. package/dist/actions/datalake/describeDatalake.mjs.map +0 -1
  48. package/dist/actions/datalake/destroyDatalake.mjs +0 -34
  49. package/dist/actions/datalake/destroyDatalake.mjs.map +0 -1
  50. package/dist/actions/datalake/dev/downDevServer.mjs +0 -102
  51. package/dist/actions/datalake/dev/downDevServer.mjs.map +0 -1
  52. package/dist/actions/datalake/dev/index.mjs +0 -369
  53. package/dist/actions/datalake/dev/index.mjs.map +0 -1
  54. package/dist/actions/datalake/dev/logsDevServer.mjs +0 -44
  55. package/dist/actions/datalake/dev/logsDevServer.mjs.map +0 -1
  56. package/dist/actions/datalake/dev/paths.mjs +0 -25
  57. package/dist/actions/datalake/dev/paths.mjs.map +0 -1
  58. package/dist/actions/datalake/dev/resetDevServer.mjs +0 -118
  59. package/dist/actions/datalake/dev/resetDevServer.mjs.map +0 -1
  60. package/dist/actions/datalake/dev/resolveServerBin.mjs +0 -26
  61. package/dist/actions/datalake/dev/resolveServerBin.mjs.map +0 -1
  62. package/dist/actions/datalake/dev/state.mjs +0 -62
  63. package/dist/actions/datalake/dev/state.mjs.map +0 -1
  64. package/dist/actions/datalake/dev/statusDevServer.mjs +0 -101
  65. package/dist/actions/datalake/dev/statusDevServer.mjs.map +0 -1
  66. package/dist/actions/datalake/dev/upDevServer.mjs +0 -221
  67. package/dist/actions/datalake/dev/upDevServer.mjs.map +0 -1
  68. package/dist/actions/datalake/dev/waitForHealth.mjs +0 -22
  69. package/dist/actions/datalake/dev/waitForHealth.mjs.map +0 -1
  70. package/dist/actions/datalake/formatters.mjs +0 -90
  71. package/dist/actions/datalake/formatters.mjs.map +0 -1
  72. package/dist/actions/datalake/grantAccess.mjs +0 -116
  73. package/dist/actions/datalake/grantAccess.mjs.map +0 -1
  74. package/dist/actions/datalake/index.mjs +0 -361
  75. package/dist/actions/datalake/index.mjs.map +0 -1
  76. package/dist/actions/datalake/listDatalakes.mjs +0 -54
  77. package/dist/actions/datalake/listDatalakes.mjs.map +0 -1
  78. package/dist/actions/datalake/login.mjs +0 -20
  79. package/dist/actions/datalake/login.mjs.map +0 -1
  80. package/dist/actions/datalake/logout.mjs +0 -11
  81. package/dist/actions/datalake/logout.mjs.map +0 -1
  82. package/dist/actions/datalake/mintToken.mjs +0 -37
  83. package/dist/actions/datalake/mintToken.mjs.map +0 -1
  84. package/dist/actions/datalake/parseSize.mjs +0 -21
  85. package/dist/actions/datalake/parseSize.mjs.map +0 -1
  86. package/dist/actions/datalake/payloads/fetchPayload.mjs +0 -76
  87. package/dist/actions/datalake/payloads/fetchPayload.mjs.map +0 -1
  88. package/dist/actions/datalake/payloads/index.mjs +0 -271
  89. package/dist/actions/datalake/payloads/index.mjs.map +0 -1
  90. package/dist/actions/datalake/payloads/mintAndConnect.mjs +0 -46
  91. package/dist/actions/datalake/payloads/mintAndConnect.mjs.map +0 -1
  92. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs +0 -71
  93. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs.map +0 -1
  94. package/dist/actions/datalake/payloads/pushPayloads.mjs +0 -181
  95. package/dist/actions/datalake/payloads/pushPayloads.mjs.map +0 -1
  96. package/dist/actions/datalake/payloads/tailPayloads.mjs +0 -106
  97. package/dist/actions/datalake/payloads/tailPayloads.mjs.map +0 -1
  98. package/dist/actions/datalake/resolveTarget.mjs +0 -15
  99. package/dist/actions/datalake/resolveTarget.mjs.map +0 -1
  100. package/dist/actions/datalake/revokeAccess.mjs +0 -108
  101. package/dist/actions/datalake/revokeAccess.mjs.map +0 -1
  102. package/dist/actions/datalake/useDatalake.mjs +0 -22
  103. package/dist/actions/datalake/useDatalake.mjs.map +0 -1
  104. package/dist/actions/detect/detectAiClients.mjs +0 -405
  105. package/dist/actions/detect/detectAiClients.mjs.map +0 -1
  106. package/dist/actions/detect/index.mjs +0 -405
  107. package/dist/actions/detect/index.mjs.map +0 -1
  108. package/dist/actions/hash/algorithms/blockhash.mjs +0 -61
  109. package/dist/actions/hash/algorithms/blockhash.mjs.map +0 -1
  110. package/dist/actions/hash/algorithms/chromaprint.mjs +0 -205
  111. package/dist/actions/hash/algorithms/chromaprint.mjs.map +0 -1
  112. package/dist/actions/hash/algorithms/dhash.mjs +0 -75
  113. package/dist/actions/hash/algorithms/dhash.mjs.map +0 -1
  114. package/dist/actions/hash/algorithms/index.mjs +0 -818
  115. package/dist/actions/hash/algorithms/index.mjs.map +0 -1
  116. package/dist/actions/hash/algorithms/nilsimsa.mjs +0 -27
  117. package/dist/actions/hash/algorithms/nilsimsa.mjs.map +0 -1
  118. package/dist/actions/hash/algorithms/pdq.mjs +0 -83
  119. package/dist/actions/hash/algorithms/pdq.mjs.map +0 -1
  120. package/dist/actions/hash/algorithms/phash.mjs +0 -71
  121. package/dist/actions/hash/algorithms/phash.mjs.map +0 -1
  122. package/dist/actions/hash/algorithms/sha256.mjs +0 -24
  123. package/dist/actions/hash/algorithms/sha256.mjs.map +0 -1
  124. package/dist/actions/hash/algorithms/ssdeep.mjs +0 -203
  125. package/dist/actions/hash/algorithms/ssdeep.mjs.map +0 -1
  126. package/dist/actions/hash/algorithms/tlsh.mjs +0 -66
  127. package/dist/actions/hash/algorithms/tlsh.mjs.map +0 -1
  128. package/dist/actions/hash/algorithms/types.mjs +0 -1
  129. package/dist/actions/hash/algorithms/types.mjs.map +0 -1
  130. package/dist/actions/hash/algorithms/videoFrames.mjs +0 -404
  131. package/dist/actions/hash/algorithms/videoFrames.mjs.map +0 -1
  132. package/dist/actions/hash/algorithms/xyo.mjs +0 -30
  133. package/dist/actions/hash/algorithms/xyo.mjs.map +0 -1
  134. package/dist/actions/hash/compareHashes.mjs +0 -823
  135. package/dist/actions/hash/compareHashes.mjs.map +0 -1
  136. package/dist/actions/hash/hashInput.mjs +0 -868
  137. package/dist/actions/hash/hashInput.mjs.map +0 -1
  138. package/dist/actions/hash/index.mjs +0 -881
  139. package/dist/actions/hash/index.mjs.map +0 -1
  140. package/dist/actions/hash/lib/hamming.mjs +0 -44
  141. package/dist/actions/hash/lib/hamming.mjs.map +0 -1
  142. package/dist/actions/hash/lib/levenshtein.mjs +0 -36
  143. package/dist/actions/hash/lib/levenshtein.mjs.map +0 -1
  144. package/dist/actions/hash/lib/runBinary.mjs +0 -54
  145. package/dist/actions/hash/lib/runBinary.mjs.map +0 -1
  146. package/dist/actions/hash/lib/which.mjs +0 -36
  147. package/dist/actions/hash/lib/which.mjs.map +0 -1
  148. package/dist/actions/hash/lib/withTempfile.mjs +0 -19
  149. package/dist/actions/hash/lib/withTempfile.mjs.map +0 -1
  150. package/dist/actions/index.mjs +0 -4615
  151. package/dist/actions/index.mjs.map +0 -1
  152. package/dist/actions/printVersion.mjs +0 -12
  153. package/dist/actions/printVersion.mjs.map +0 -1
  154. package/dist/actions/sync/index.mjs +0 -51
  155. package/dist/actions/sync/index.mjs.map +0 -1
  156. package/dist/actions/sync/syncAiConfig.mjs +0 -51
  157. package/dist/actions/sync/syncAiConfig.mjs.map +0 -1
  158. package/dist/actions/wallet/account/deriveAndAdd.mjs +0 -394
  159. package/dist/actions/wallet/account/deriveAndAdd.mjs.map +0 -1
  160. package/dist/actions/wallet/account/getActiveWallet.mjs +0 -338
  161. package/dist/actions/wallet/account/getActiveWallet.mjs.map +0 -1
  162. package/dist/actions/wallet/account/labelAccount.mjs +0 -389
  163. package/dist/actions/wallet/account/labelAccount.mjs.map +0 -1
  164. package/dist/actions/wallet/account/listAccounts.mjs +0 -374
  165. package/dist/actions/wallet/account/listAccounts.mjs.map +0 -1
  166. package/dist/actions/wallet/account/removeAccount.mjs +0 -384
  167. package/dist/actions/wallet/account/removeAccount.mjs.map +0 -1
  168. package/dist/actions/wallet/account/showAccount.mjs +0 -368
  169. package/dist/actions/wallet/account/showAccount.mjs.map +0 -1
  170. package/dist/actions/wallet/addressBook/storage.mjs +0 -110
  171. package/dist/actions/wallet/addressBook/storage.mjs.map +0 -1
  172. package/dist/actions/wallet/backup/exportBackup.mjs +0 -93
  173. package/dist/actions/wallet/backup/exportBackup.mjs.map +0 -1
  174. package/dist/actions/wallet/backup/importBackup.mjs +0 -142
  175. package/dist/actions/wallet/backup/importBackup.mjs.map +0 -1
  176. package/dist/actions/wallet/balance/getBalance.mjs +0 -434
  177. package/dist/actions/wallet/balance/getBalance.mjs.map +0 -1
  178. package/dist/actions/wallet/client/walletClient.mjs +0 -64
  179. package/dist/actions/wallet/client/walletClient.mjs.map +0 -1
  180. package/dist/actions/wallet/contact/contactActions.mjs +0 -120
  181. package/dist/actions/wallet/contact/contactActions.mjs.map +0 -1
  182. package/dist/actions/wallet/contact/storage.mjs +0 -69
  183. package/dist/actions/wallet/contact/storage.mjs.map +0 -1
  184. package/dist/actions/wallet/index.mjs +0 -1439
  185. package/dist/actions/wallet/index.mjs.map +0 -1
  186. package/dist/actions/wallet/network/networkActions.mjs +0 -137
  187. package/dist/actions/wallet/network/networkActions.mjs.map +0 -1
  188. package/dist/actions/wallet/network/storage.mjs +0 -93
  189. package/dist/actions/wallet/network/storage.mjs.map +0 -1
  190. package/dist/actions/wallet/password/changePassword.mjs +0 -282
  191. package/dist/actions/wallet/password/changePassword.mjs.map +0 -1
  192. package/dist/actions/wallet/password/getActiveKey.mjs +0 -297
  193. package/dist/actions/wallet/password/getActiveKey.mjs.map +0 -1
  194. package/dist/actions/wallet/password/initOrUnlock.mjs +0 -337
  195. package/dist/actions/wallet/password/initOrUnlock.mjs.map +0 -1
  196. package/dist/actions/wallet/password/passwordStorage.mjs +0 -69
  197. package/dist/actions/wallet/password/passwordStorage.mjs.map +0 -1
  198. package/dist/actions/wallet/password/setPassword.mjs +0 -138
  199. package/dist/actions/wallet/password/setPassword.mjs.map +0 -1
  200. package/dist/actions/wallet/password/validatePassword.mjs +0 -123
  201. package/dist/actions/wallet/password/validatePassword.mjs.map +0 -1
  202. package/dist/actions/wallet/passwordKey.mjs +0 -87
  203. package/dist/actions/wallet/passwordKey.mjs.map +0 -1
  204. package/dist/actions/wallet/paths.mjs +0 -26
  205. package/dist/actions/wallet/paths.mjs.map +0 -1
  206. package/dist/actions/wallet/prompt.mjs +0 -93
  207. package/dist/actions/wallet/prompt.mjs.map +0 -1
  208. package/dist/actions/wallet/seedPhrase/createPhrase.mjs +0 -392
  209. package/dist/actions/wallet/seedPhrase/createPhrase.mjs.map +0 -1
  210. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs +0 -334
  211. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs.map +0 -1
  212. package/dist/actions/wallet/seedPhrase/idGen.mjs +0 -11
  213. package/dist/actions/wallet/seedPhrase/idGen.mjs.map +0 -1
  214. package/dist/actions/wallet/seedPhrase/importPhrase.mjs +0 -393
  215. package/dist/actions/wallet/seedPhrase/importPhrase.mjs.map +0 -1
  216. package/dist/actions/wallet/seedPhrase/listPhrases.mjs +0 -62
  217. package/dist/actions/wallet/seedPhrase/listPhrases.mjs.map +0 -1
  218. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs +0 -89
  219. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs.map +0 -1
  220. package/dist/actions/wallet/seedPhrase/removePhrase.mjs +0 -366
  221. package/dist/actions/wallet/seedPhrase/removePhrase.mjs.map +0 -1
  222. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs +0 -78
  223. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs.map +0 -1
  224. package/dist/actions/wallet/seedPhrase/types.mjs +0 -1
  225. package/dist/actions/wallet/seedPhrase/types.mjs.map +0 -1
  226. package/dist/actions/wallet/seedPhrase/usePhrase.mjs +0 -83
  227. package/dist/actions/wallet/seedPhrase/usePhrase.mjs.map +0 -1
  228. package/dist/actions/wallet/session/machineId.mjs +0 -145
  229. package/dist/actions/wallet/session/machineId.mjs.map +0 -1
  230. package/dist/actions/wallet/session/sessionCache.mjs +0 -221
  231. package/dist/actions/wallet/session/sessionCache.mjs.map +0 -1
  232. package/dist/actions/wallet/session/unlock.mjs +0 -307
  233. package/dist/actions/wallet/session/unlock.mjs.map +0 -1
  234. package/dist/actions/wallet/sign/signPayload.mjs +0 -637
  235. package/dist/actions/wallet/sign/signPayload.mjs.map +0 -1
  236. package/dist/actions/wallet/storage.mjs +0 -51
  237. package/dist/actions/wallet/storage.mjs.map +0 -1
  238. package/dist/actions/wallet/transaction/broadcastTransaction.mjs +0 -453
  239. package/dist/actions/wallet/transaction/broadcastTransaction.mjs.map +0 -1
  240. package/dist/actions/wallet/transaction/sendTransaction.mjs +0 -457
  241. package/dist/actions/wallet/transaction/sendTransaction.mjs.map +0 -1
  242. package/dist/actions/wallet/transaction/signTransactionFile.mjs +0 -378
  243. package/dist/actions/wallet/transaction/signTransactionFile.mjs.map +0 -1
  244. package/dist/actions/xyo/index.mjs +0 -138
  245. package/dist/actions/xyo/index.mjs.map +0 -1
  246. package/dist/actions/xyo/transaction/index.mjs +0 -138
  247. package/dist/actions/xyo/transaction/index.mjs.map +0 -1
  248. package/dist/actions/xyo/transaction/validateTransactions.mjs +0 -138
  249. package/dist/actions/xyo/transaction/validateTransactions.mjs.map +0 -1
  250. package/dist/aries.mjs.map +0 -1
  251. package/dist/bin/aries.mjs +0 -8472
  252. package/dist/bin/aries.mjs.map +0 -1
  253. package/dist/commands/aiCommand.mjs +0 -492
  254. package/dist/commands/aiCommand.mjs.map +0 -1
  255. package/dist/commands/auditAiCommand.mjs +0 -119
  256. package/dist/commands/auditAiCommand.mjs.map +0 -1
  257. package/dist/commands/auditCommand.mjs +0 -857
  258. package/dist/commands/auditCommand.mjs.map +0 -1
  259. package/dist/commands/auditInstallCommand.mjs +0 -324
  260. package/dist/commands/auditInstallCommand.mjs.map +0 -1
  261. package/dist/commands/auditListCommand.mjs +0 -107
  262. package/dist/commands/auditListCommand.mjs.map +0 -1
  263. package/dist/commands/auditOpenCommand.mjs +0 -51
  264. package/dist/commands/auditOpenCommand.mjs.map +0 -1
  265. package/dist/commands/auditSearchCommand.mjs +0 -98
  266. package/dist/commands/auditSearchCommand.mjs.map +0 -1
  267. package/dist/commands/auditShowCommand.mjs +0 -123
  268. package/dist/commands/auditShowCommand.mjs.map +0 -1
  269. package/dist/commands/auditStatusCommand.mjs +0 -105
  270. package/dist/commands/auditStatusCommand.mjs.map +0 -1
  271. package/dist/commands/clampCommand.mjs +0 -2328
  272. package/dist/commands/clampCommand.mjs.map +0 -1
  273. package/dist/commands/clampPolicyCommand.mjs +0 -184
  274. package/dist/commands/clampPolicyCommand.mjs.map +0 -1
  275. package/dist/commands/clampPolicyInitCommand.mjs +0 -63
  276. package/dist/commands/clampPolicyInitCommand.mjs.map +0 -1
  277. package/dist/commands/clampPolicyListCommand.mjs +0 -56
  278. package/dist/commands/clampPolicyListCommand.mjs.map +0 -1
  279. package/dist/commands/clampPolicyShowCommand.mjs +0 -83
  280. package/dist/commands/clampPolicyShowCommand.mjs.map +0 -1
  281. package/dist/commands/clampRunCommand.mjs +0 -2137
  282. package/dist/commands/clampRunCommand.mjs.map +0 -1
  283. package/dist/commands/datalakeAuditCommand.mjs +0 -273
  284. package/dist/commands/datalakeAuditCommand.mjs.map +0 -1
  285. package/dist/commands/datalakeCommand.mjs +0 -1637
  286. package/dist/commands/datalakeCommand.mjs.map +0 -1
  287. package/dist/commands/datalakeCreateCommand.mjs +0 -189
  288. package/dist/commands/datalakeCreateCommand.mjs.map +0 -1
  289. package/dist/commands/datalakeDescribeCommand.mjs +0 -172
  290. package/dist/commands/datalakeDescribeCommand.mjs.map +0 -1
  291. package/dist/commands/datalakeDestroyCommand.mjs +0 -53
  292. package/dist/commands/datalakeDestroyCommand.mjs.map +0 -1
  293. package/dist/commands/datalakeDevCommand.mjs +0 -470
  294. package/dist/commands/datalakeDevCommand.mjs.map +0 -1
  295. package/dist/commands/datalakeDevDownCommand.mjs +0 -111
  296. package/dist/commands/datalakeDevDownCommand.mjs.map +0 -1
  297. package/dist/commands/datalakeDevLogsCommand.mjs +0 -65
  298. package/dist/commands/datalakeDevLogsCommand.mjs.map +0 -1
  299. package/dist/commands/datalakeDevResetCommand.mjs +0 -125
  300. package/dist/commands/datalakeDevResetCommand.mjs.map +0 -1
  301. package/dist/commands/datalakeDevStatusCommand.mjs +0 -110
  302. package/dist/commands/datalakeDevStatusCommand.mjs.map +0 -1
  303. package/dist/commands/datalakeDevUpCommand.mjs +0 -268
  304. package/dist/commands/datalakeDevUpCommand.mjs.map +0 -1
  305. package/dist/commands/datalakeFetchCommand.mjs +0 -106
  306. package/dist/commands/datalakeFetchCommand.mjs.map +0 -1
  307. package/dist/commands/datalakeGrantCommand.mjs +0 -147
  308. package/dist/commands/datalakeGrantCommand.mjs.map +0 -1
  309. package/dist/commands/datalakeListCommand.mjs +0 -61
  310. package/dist/commands/datalakeListCommand.mjs.map +0 -1
  311. package/dist/commands/datalakeLoginCommand.mjs +0 -39
  312. package/dist/commands/datalakeLoginCommand.mjs.map +0 -1
  313. package/dist/commands/datalakeLogoutCommand.mjs +0 -20
  314. package/dist/commands/datalakeLogoutCommand.mjs.map +0 -1
  315. package/dist/commands/datalakePushCommand.mjs +0 -214
  316. package/dist/commands/datalakePushCommand.mjs.map +0 -1
  317. package/dist/commands/datalakeRevokeCommand.mjs +0 -127
  318. package/dist/commands/datalakeRevokeCommand.mjs.map +0 -1
  319. package/dist/commands/datalakeTailCommand.mjs +0 -144
  320. package/dist/commands/datalakeTailCommand.mjs.map +0 -1
  321. package/dist/commands/datalakeTokenCommand.mjs +0 -61
  322. package/dist/commands/datalakeTokenCommand.mjs.map +0 -1
  323. package/dist/commands/datalakeUseCommand.mjs +0 -35
  324. package/dist/commands/datalakeUseCommand.mjs.map +0 -1
  325. package/dist/commands/detectCommand.mjs +0 -419
  326. package/dist/commands/detectCommand.mjs.map +0 -1
  327. package/dist/commands/hashCommand.mjs +0 -976
  328. package/dist/commands/hashCommand.mjs.map +0 -1
  329. package/dist/commands/hashCompareCommand.mjs +0 -865
  330. package/dist/commands/hashCompareCommand.mjs.map +0 -1
  331. package/dist/commands/index.mjs +0 -8461
  332. package/dist/commands/index.mjs.map +0 -1
  333. package/dist/commands/syncCommand.mjs +0 -66
  334. package/dist/commands/syncCommand.mjs.map +0 -1
  335. package/dist/commands/versionCommand.mjs +0 -24
  336. package/dist/commands/versionCommand.mjs.map +0 -1
  337. package/dist/commands/walletAccountCommand.mjs +0 -536
  338. package/dist/commands/walletAccountCommand.mjs.map +0 -1
  339. package/dist/commands/walletAccountDeriveCommand.mjs +0 -415
  340. package/dist/commands/walletAccountDeriveCommand.mjs.map +0 -1
  341. package/dist/commands/walletAccountLabelCommand.mjs +0 -405
  342. package/dist/commands/walletAccountLabelCommand.mjs.map +0 -1
  343. package/dist/commands/walletAccountListCommand.mjs +0 -381
  344. package/dist/commands/walletAccountListCommand.mjs.map +0 -1
  345. package/dist/commands/walletAccountRemoveCommand.mjs +0 -396
  346. package/dist/commands/walletAccountRemoveCommand.mjs.map +0 -1
  347. package/dist/commands/walletAccountShowCommand.mjs +0 -380
  348. package/dist/commands/walletAccountShowCommand.mjs.map +0 -1
  349. package/dist/commands/walletBackupCommand.mjs +0 -222
  350. package/dist/commands/walletBackupCommand.mjs.map +0 -1
  351. package/dist/commands/walletBackupExportCommand.mjs +0 -107
  352. package/dist/commands/walletBackupExportCommand.mjs.map +0 -1
  353. package/dist/commands/walletBackupImportCommand.mjs +0 -154
  354. package/dist/commands/walletBackupImportCommand.mjs.map +0 -1
  355. package/dist/commands/walletBalanceCommand.mjs +0 -448
  356. package/dist/commands/walletBalanceCommand.mjs.map +0 -1
  357. package/dist/commands/walletCommand.mjs +0 -1968
  358. package/dist/commands/walletCommand.mjs.map +0 -1
  359. package/dist/commands/walletContactAddCommand.mjs +0 -111
  360. package/dist/commands/walletContactAddCommand.mjs.map +0 -1
  361. package/dist/commands/walletContactCommand.mjs +0 -184
  362. package/dist/commands/walletContactCommand.mjs.map +0 -1
  363. package/dist/commands/walletContactListCommand.mjs +0 -66
  364. package/dist/commands/walletContactListCommand.mjs.map +0 -1
  365. package/dist/commands/walletContactRemoveCommand.mjs +0 -97
  366. package/dist/commands/walletContactRemoveCommand.mjs.map +0 -1
  367. package/dist/commands/walletContactRenameCommand.mjs +0 -114
  368. package/dist/commands/walletContactRenameCommand.mjs.map +0 -1
  369. package/dist/commands/walletCreateCommand.mjs +0 -407
  370. package/dist/commands/walletCreateCommand.mjs.map +0 -1
  371. package/dist/commands/walletExportCommand.mjs +0 -345
  372. package/dist/commands/walletExportCommand.mjs.map +0 -1
  373. package/dist/commands/walletImportCommand.mjs +0 -413
  374. package/dist/commands/walletImportCommand.mjs.map +0 -1
  375. package/dist/commands/walletListCommand.mjs +0 -69
  376. package/dist/commands/walletListCommand.mjs.map +0 -1
  377. package/dist/commands/walletLockCommand.mjs +0 -56
  378. package/dist/commands/walletLockCommand.mjs.map +0 -1
  379. package/dist/commands/walletNetworkAddCommand.mjs +0 -131
  380. package/dist/commands/walletNetworkAddCommand.mjs.map +0 -1
  381. package/dist/commands/walletNetworkCommand.mjs +0 -206
  382. package/dist/commands/walletNetworkCommand.mjs.map +0 -1
  383. package/dist/commands/walletNetworkListCommand.mjs +0 -104
  384. package/dist/commands/walletNetworkListCommand.mjs.map +0 -1
  385. package/dist/commands/walletNetworkRemoveCommand.mjs +0 -112
  386. package/dist/commands/walletNetworkRemoveCommand.mjs.map +0 -1
  387. package/dist/commands/walletNetworkUseCommand.mjs +0 -110
  388. package/dist/commands/walletNetworkUseCommand.mjs.map +0 -1
  389. package/dist/commands/walletPasswordChangeCommand.mjs +0 -291
  390. package/dist/commands/walletPasswordChangeCommand.mjs.map +0 -1
  391. package/dist/commands/walletPasswordCommand.mjs +0 -301
  392. package/dist/commands/walletPasswordCommand.mjs.map +0 -1
  393. package/dist/commands/walletRemoveCommand.mjs +0 -378
  394. package/dist/commands/walletRemoveCommand.mjs.map +0 -1
  395. package/dist/commands/walletRenameCommand.mjs +0 -94
  396. package/dist/commands/walletRenameCommand.mjs.map +0 -1
  397. package/dist/commands/walletSignCommand.mjs +0 -662
  398. package/dist/commands/walletSignCommand.mjs.map +0 -1
  399. package/dist/commands/walletTxBroadcastCommand.mjs +0 -473
  400. package/dist/commands/walletTxBroadcastCommand.mjs.map +0 -1
  401. package/dist/commands/walletTxCommand.mjs +0 -612
  402. package/dist/commands/walletTxCommand.mjs.map +0 -1
  403. package/dist/commands/walletTxSendCommand.mjs +0 -492
  404. package/dist/commands/walletTxSendCommand.mjs.map +0 -1
  405. package/dist/commands/walletTxSignCommand.mjs +0 -403
  406. package/dist/commands/walletTxSignCommand.mjs.map +0 -1
  407. package/dist/commands/walletUnlockCommand.mjs +0 -308
  408. package/dist/commands/walletUnlockCommand.mjs.map +0 -1
  409. package/dist/commands/walletUseCommand.mjs +0 -95
  410. package/dist/commands/walletUseCommand.mjs.map +0 -1
  411. package/dist/commands/xyoCommand.mjs +0 -188
  412. package/dist/commands/xyoCommand.mjs.map +0 -1
  413. package/dist/commands/xyoTxCommand.mjs +0 -178
  414. package/dist/commands/xyoTxCommand.mjs.map +0 -1
  415. package/dist/commands/xyoTxValidateCommand.mjs +0 -168
  416. package/dist/commands/xyoTxValidateCommand.mjs.map +0 -1
  417. package/dist/index.d.ts +0 -3
  418. package/dist/index.mjs +0 -8466
  419. package/dist/index.mjs.map +0 -1
  420. package/dist/types/modules.d.mjs +0 -1
  421. package/dist/types/modules.d.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/account/getActiveWallet.ts","../../src/actions/wallet/prompt.ts","../../src/actions/wallet/session/sessionCache.ts","../../src/actions/wallet/passwordKey.ts","../../src/actions/wallet/session/machineId.ts","../../src/actions/wallet/password/passwordStorage.ts","../../src/actions/wallet/password/validatePassword.ts","../../src/actions/wallet/password/getActiveKey.ts","../../src/actions/wallet/seedPhrase/phraseStorage.ts","../../src/actions/wallet/client/walletClient.ts","../../src/actions/wallet/network/storage.ts","../../src/actions/wallet/transaction/broadcastTransaction.ts","../../src/actions/wallet/transaction/sendTransaction.ts","../../src/actions/wallet/transaction/signTransactionFile.ts","../../src/commands/walletTxBroadcastCommand.ts","../../src/commands/walletTxSendCommand.ts","../../src/commands/walletTxSignCommand.ts","../../src/commands/walletTxCommand.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 { HDWallet } from '@xyo-network/sdk-js'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport { DEFAULT_WALLET_PATH } from '@xyo-network/xl1-protocol-sdk'\n\nimport { getActiveKey } from '../password/getActiveKey.ts'\nimport { decryptWithKey } from '../passwordKey.ts'\nimport { getActivePhrase } from '../seedPhrase/phraseStorage.ts'\nimport type { SeedPhraseRecord } from '../seedPhrase/types.ts'\n\nexport interface ActiveWallet {\n record: SeedPhraseRecord\n mnemonic: string\n rootWallet: WalletInstance\n}\n\nexport async function getActiveWallet(): Promise<ActiveWallet> {\n const record = getActivePhrase()\n if (!record) throw new Error('No active wallet. Run `aries wallet create` or `aries wallet import` first.')\n const key = await getActiveKey()\n const mnemonic = await decryptWithKey(key, record.encryptedPhrase)\n const rootWallet = await HDWallet.fromPhrase(mnemonic, DEFAULT_WALLET_PATH)\n return {\n record, mnemonic, rootWallet,\n }\n}\n\nexport async function deriveAccount(rootWallet: WalletInstance, offset: string): Promise<WalletInstance> {\n return await rootWallet.derivePath(offset)\n}\n","import { execFileSync } from 'node:child_process'\nimport {\n closeSync, openSync, readSync, writeSync,\n} from 'node:fs'\n\nconst CTRL_C = 0x03\nconst ENTER = 0x0d\nconst NEWLINE = 0x0a\nconst BACKSPACE_DELETE = 0x7f\nconst BACKSPACE = 0x08\n\nexport interface PromptOptions {\n prompt: string\n mask?: boolean\n}\n\nfunction readChars(readFd: number, writeFd: number, mask: boolean): string {\n const chars: number[] = []\n const buf = Buffer.alloc(1)\n for (;;) {\n const bytes = readSync(readFd, buf, 0, 1, null)\n if (bytes === 0) break\n const ch = buf[0]\n if (ch === ENTER || ch === NEWLINE) break\n if (ch === CTRL_C) {\n writeSync(writeFd, '\\n')\n throw new Error('Aborted')\n }\n if (ch === BACKSPACE_DELETE || ch === BACKSPACE) {\n if (chars.length > 0) {\n chars.pop()\n writeSync(writeFd, '\\b \\b')\n }\n continue\n }\n chars.push(ch)\n writeSync(writeFd, mask ? '*' : String.fromCodePoint(ch))\n }\n writeSync(writeFd, '\\n')\n return Buffer.from(chars).toString('utf8')\n}\n\nfunction saveStty(readFd: number): string | undefined {\n try {\n return execFileSync('stty', ['-g'], {\n stdio: [readFd, 'pipe', 'ignore'],\n encoding: 'utf8',\n }).trim()\n } catch {\n return undefined\n }\n}\n\nfunction applyStty(readFd: number, args: string[]): void {\n try {\n execFileSync('stty', args, { stdio: [readFd, 'ignore', 'ignore'] })\n } catch { /* ignore */ }\n}\n\nexport function promptTty(options: PromptOptions): string {\n const readFd = openSync('/dev/tty', 'r')\n const writeFd = openSync('/dev/tty', 'w')\n const saved = saveStty(readFd)\n try {\n if (saved) applyStty(readFd, ['-echo', '-icanon', 'min', '1', 'time', '0'])\n writeSync(writeFd, options.prompt)\n return readChars(readFd, writeFd, options.mask === true)\n } finally {\n if (saved) applyStty(readFd, [saved])\n try {\n closeSync(readFd)\n } catch { /* ignore */ }\n try {\n closeSync(writeFd)\n } catch { /* ignore */ }\n }\n}\n\nexport function promptPassword(prompt = 'Password: '): string {\n const env = process.env.ARIES_WALLET_PASSWORD\n if (env !== undefined && env.length > 0) return env\n return promptTty({ prompt, mask: true })\n}\n\nexport function promptText(prompt: string): string {\n return promptTty({ prompt, mask: false })\n}\n\nexport function confirm(prompt: string): boolean {\n const answer = promptTty({ prompt: `${prompt} [y/N] `, mask: false }).trim().toLowerCase()\n return answer === 'y' || answer === 'yes'\n}\n","import { webcrypto } from 'node:crypto'\n\nimport {\n decryptWithKey, encryptWithKey, PasswordKey,\n} from '../passwordKey.ts'\nimport { walletPaths } from '../paths.ts'\nimport {\n deleteFile, readJsonFile, writeJsonFile,\n} from '../storage.ts'\nimport { deriveMachineKey } from './machineId.ts'\n\ninterface SessionData {\n encryptedKey: string\n expiresAt: number\n}\n\nconst subtle = webcrypto.subtle\n\nexport const DEFAULT_SESSION_TTL_SECONDS = 15 * 60\n\nexport async function unlockSession(passwordKey: webcrypto.CryptoKey, ttlSeconds: number = DEFAULT_SESSION_TTL_SECONDS): Promise<number> {\n const machineKey = await deriveMachineKey()\n const exported = await subtle.exportKey('raw', passwordKey)\n const exportedBase64 = Buffer.from(new Uint8Array(exported)).toString('base64')\n const encryptedKey = await encryptWithKey(machineKey, exportedBase64)\n const expiresAt = Date.now() + ttlSeconds * 1000\n const data: SessionData = { encryptedKey, expiresAt }\n writeJsonFile(walletPaths().session, data)\n return expiresAt\n}\n\nexport function lockSession(): void {\n deleteFile(walletPaths().session)\n}\n\nexport async function readSession(): Promise<webcrypto.CryptoKey | undefined> {\n const data = readJsonFile<SessionData>(walletPaths().session)\n if (!data) return undefined\n if (data.expiresAt <= Date.now()) {\n lockSession()\n return undefined\n }\n try {\n const machineKey = await deriveMachineKey()\n const exportedBase64 = await decryptWithKey(machineKey, data.encryptedKey)\n const raw = Buffer.from(exportedBase64, 'base64')\n return await PasswordKey.importExtractableKey(\n raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength),\n )\n } catch {\n lockSession()\n return undefined\n }\n}\n\nexport function readSessionExpiry(): number | undefined {\n const data = readJsonFile<SessionData>(walletPaths().session)\n if (!data) return undefined\n if (data.expiresAt <= Date.now()) return undefined\n return data.expiresAt\n}\n","import { webcrypto } from 'node:crypto'\n\nconst subtle = webcrypto.subtle\n\nconst INITIALIZATION_VECTOR_LENGTH = 12\nconst PBKDF2_ITERATIONS = 100_000\nconst SALT_BYTES = 16\n\nexport interface PasswordValues {\n hash: string\n salt: string\n}\n\nexport class PasswordKey {\n readonly password: string\n readonly salt: string\n\n constructor(password: string, salt: string = PasswordKey.generateSalt()) {\n this.password = password\n this.salt = salt\n }\n\n static async decryptString(key: webcrypto.CryptoKey, data: string): Promise<string> {\n const encryptedData = new Uint8Array(Buffer.from(data, 'base64'))\n const iv = encryptedData.slice(0, INITIALIZATION_VECTOR_LENGTH)\n const ciphertext = encryptedData.slice(INITIALIZATION_VECTOR_LENGTH)\n const decrypted = await subtle.decrypt({ name: 'AES-GCM', iv }, key, ciphertext)\n return new TextDecoder('utf-8').decode(decrypted)\n }\n\n static async encryptString(key: webcrypto.CryptoKey, data: string): Promise<string> {\n const iv = webcrypto.getRandomValues(new Uint8Array(INITIALIZATION_VECTOR_LENGTH))\n const ciphertext = await subtle.encrypt({ name: 'AES-GCM', iv }, key, new TextEncoder().encode(data))\n const combined = new Uint8Array(iv.length + ciphertext.byteLength)\n combined.set(iv, 0)\n combined.set(new Uint8Array(ciphertext), iv.length)\n return Buffer.from(combined).toString('base64')\n }\n\n static generateSalt(): string {\n const array = new Uint8Array(SALT_BYTES)\n webcrypto.getRandomValues(array)\n return [...array].map(byte => byte.toString(16).padStart(2, '0')).join('')\n }\n\n static async getHashFromKey(key: webcrypto.CryptoKey): Promise<string> {\n const exported = await subtle.exportKey('raw', key)\n const digest = await subtle.digest('SHA-256', exported)\n return [...new Uint8Array(digest)].map(byte => byte.toString(16).padStart(2, '0')).join('')\n }\n\n static async importEncryptionKey(rawKey: ArrayBuffer): Promise<webcrypto.CryptoKey> {\n return await subtle.importKey('raw', rawKey, { name: 'AES-GCM' }, false, ['encrypt', 'decrypt'])\n }\n\n static async importExtractableKey(rawKey: ArrayBuffer): Promise<webcrypto.CryptoKey> {\n return await subtle.importKey('raw', rawKey, { name: 'AES-GCM' }, true, ['encrypt', 'decrypt'])\n }\n\n static async serializeKey(key: webcrypto.CryptoKey, salt: string = PasswordKey.generateSalt()): Promise<PasswordValues> {\n const hash = await PasswordKey.getHashFromKey(key)\n return { hash, salt }\n }\n\n async deriveKey(): Promise<webcrypto.CryptoKey> {\n const encoder = new TextEncoder()\n const passphraseKey = await subtle.importKey(\n 'raw',\n encoder.encode(this.password),\n { name: 'PBKDF2' },\n false,\n ['deriveKey'],\n )\n return await subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: encoder.encode(this.salt),\n iterations: PBKDF2_ITERATIONS,\n hash: 'SHA-256',\n },\n passphraseKey,\n { name: 'AES-GCM', length: 256 },\n true,\n ['encrypt', 'decrypt'],\n )\n }\n}\n\nexport async function encryptWithKey(key: webcrypto.CryptoKey, data: string): Promise<string> {\n const exported = await subtle.exportKey('raw', key)\n const encKey = await PasswordKey.importEncryptionKey(exported)\n return await PasswordKey.encryptString(encKey, data)\n}\n\nexport async function decryptWithKey(key: webcrypto.CryptoKey, data: string): Promise<string> {\n const exported = await subtle.exportKey('raw', key)\n const encKey = await PasswordKey.importEncryptionKey(exported)\n return await PasswordKey.decryptString(encKey, data)\n}\n","import { webcrypto } from 'node:crypto'\nimport FS from 'node:fs'\nimport OS from 'node:os'\n\nimport { PasswordKey } from '../passwordKey.ts'\nimport { walletPaths } from '../paths.ts'\nimport { ensureWalletDir } from '../storage.ts'\n\nfunction generateMachineSecret(): string {\n const bytes = new Uint8Array(32)\n webcrypto.getRandomValues(bytes)\n return [...bytes].map(b => b.toString(16).padStart(2, '0')).join('')\n}\n\nexport function loadMachineSecret(): string {\n ensureWalletDir()\n const path = walletPaths().machineId\n if (FS.existsSync(path)) {\n return FS.readFileSync(path, 'utf8').trim()\n }\n const secret = generateMachineSecret()\n FS.writeFileSync(path, `${secret}\\n`, { mode: 0o600 })\n try {\n FS.chmodSync(path, 0o600)\n } catch { /* best-effort */ }\n return secret\n}\n\nexport async function deriveMachineKey(): Promise<webcrypto.CryptoKey> {\n const secret = loadMachineSecret()\n const stable = `${OS.hostname()}:${OS.userInfo().username}:${secret}`\n const passwordKey = new PasswordKey(stable, 'aries-wallet-machine-kek-v1')\n return await passwordKey.deriveKey()\n}\n","import type { PasswordValues } from '../passwordKey.ts'\nimport { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport function readPassword(): PasswordValues | undefined {\n return readJsonFile<PasswordValues>(walletPaths().password)\n}\n\nexport function writePassword(values: PasswordValues): void {\n writeJsonFile(walletPaths().password, values)\n}\n\nexport function hasPassword(): boolean {\n return readPassword() !== undefined\n}\n","import type { webcrypto } from 'node:crypto'\n\nimport { PasswordKey } from '../passwordKey.ts'\nimport { readPassword } from './passwordStorage.ts'\n\nexport async function validatePassword(password: string): Promise<webcrypto.CryptoKey | undefined> {\n const stored = readPassword()\n if (!stored) return undefined\n const passwordKey = new PasswordKey(password, stored.salt)\n const key = await passwordKey.deriveKey()\n const hash = await PasswordKey.getHashFromKey(key)\n if (hash !== stored.hash) return undefined\n return key\n}\n","import type { webcrypto } from 'node:crypto'\n\nimport { promptPassword } from '../prompt.ts'\nimport { readSession } from '../session/sessionCache.ts'\nimport { hasPassword } from './passwordStorage.ts'\nimport { validatePassword } from './validatePassword.ts'\n\nexport async function getActiveKey(): Promise<webcrypto.CryptoKey> {\n if (!hasPassword()) {\n throw new Error('Wallet not initialized. Run `aries wallet create` or `aries wallet import` first.')\n }\n const cached = await readSession()\n if (cached) return cached\n const password = promptPassword('Wallet password: ')\n const key = await validatePassword(password)\n if (!key) throw new Error('Incorrect password.')\n return key\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\nimport type {\n ActiveFile, PhrasesFile, SeedPhraseRecord,\n} from './types.ts'\n\nexport function readPhrases(): SeedPhraseRecord[] {\n const data = readJsonFile<PhrasesFile>(walletPaths().phrases)\n return data?.phrases ?? []\n}\n\nexport function writePhrases(phrases: SeedPhraseRecord[]): void {\n writeJsonFile(walletPaths().phrases, { phrases })\n}\n\nexport function readActive(): ActiveFile {\n return readJsonFile<ActiveFile>(walletPaths().active) ?? {}\n}\n\nexport function writeActive(active: ActiveFile): void {\n writeJsonFile(walletPaths().active, active)\n}\n\nexport function findPhrase(id: string): SeedPhraseRecord | undefined {\n return readPhrases().find(p => p.id === id || p.label === id)\n}\n\nexport function getActivePhrase(): SeedPhraseRecord | undefined {\n const phrases = readPhrases()\n if (phrases.length === 0) return undefined\n const active = readActive()\n if (active.phraseId) {\n const found = phrases.find(p => p.id === active.phraseId)\n if (found) return found\n }\n return phrases[0]\n}\n","import type { AccountInstance } from '@xyo-network/sdk-js'\nimport type {\n XyoConnection, XyoGatewayRunner, XyoRunner, XyoViewer,\n} from '@xyo-network/xl1-sdk'\nimport {\n basicRemoteViewerLocator,\n ProviderFactoryLocator,\n SimpleXyoConnectionRunner,\n SimpleXyoGatewayRunner,\n SimpleXyoRunner,\n SimpleXyoSigner,\n XyoGatewayRunnerMoniker,\n XyoRunnerMoniker,\n XyoViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\ninterface BlockValidatorsRef {\n validateHydratedBlock?: unknown\n validateHydratedBlockState?: unknown\n}\n\nasync function loadValidators(): Promise<BlockValidatorsRef | undefined> {\n try {\n const mod = await import('@xyo-network/chain-validation') as BlockValidatorsRef\n return {\n validateHydratedBlock: mod.validateHydratedBlock,\n validateHydratedBlockState: mod.validateHydratedBlockState,\n }\n } catch {\n return undefined\n }\n}\n\nexport interface WalletClient {\n gateway: XyoGatewayRunner\n runner: XyoRunner\n viewer: XyoViewer\n connection: XyoConnection\n locator: unknown\n}\n\nexport interface ReadOnlyWalletClient {\n viewer: XyoViewer\n locator: unknown\n}\n\nexport async function createReadOnlyClient(rpcUrl: string): Promise<ReadOnlyWalletClient> {\n const validators = await loadValidators()\n const viewerLocator = await basicRemoteViewerLocator(\n 'aries-wallet-readonly',\n { rpc: { protocol: 'http', url: rpcUrl } },\n undefined,\n validators ? { validators: validators as never } : undefined,\n )\n const viewer = await viewerLocator.getInstance<XyoViewer>(XyoViewerMoniker)\n return { viewer, locator: viewerLocator }\n}\n\nexport async function createWalletClient(rpcUrl: string, account: AccountInstance): Promise<WalletClient> {\n const validators = await loadValidators()\n const viewerLocator = await basicRemoteViewerLocator(\n 'aries-wallet',\n { rpc: { protocol: 'http', url: rpcUrl } },\n undefined,\n validators ? { validators: validators as never } : undefined,\n )\n const locator = new ProviderFactoryLocator(viewerLocator.context, {})\n locator.register(SimpleXyoSigner.factory<SimpleXyoSigner>(SimpleXyoSigner.dependencies, { account }))\n locator.register(SimpleXyoGatewayRunner.factory<SimpleXyoGatewayRunner>(SimpleXyoGatewayRunner.dependencies, {}))\n locator.register(SimpleXyoRunner.factory<SimpleXyoRunner>(SimpleXyoRunner.dependencies, {}))\n locator.register(SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}))\n locator.validateDependencies()\n const gateway = await locator.getInstance<XyoGatewayRunner>(XyoGatewayRunnerMoniker)\n const runner = await locator.getInstance<XyoRunner>(XyoRunnerMoniker)\n const viewer = await locator.getInstance<XyoViewer>(XyoViewerMoniker)\n return {\n gateway,\n runner,\n viewer,\n connection: gateway.connection,\n locator,\n }\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 FS from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { deriveAccount, getActiveWallet } from '../account/getActiveWallet.ts'\nimport { createWalletClient } from '../client/walletClient.ts'\nimport { getActiveNetwork } from '../network/storage.ts'\n\nexport interface BroadcastTransactionOptions {\n file: string\n offset?: string\n}\n\nfunction reviveBigints(_key: string, value: unknown): unknown {\n if (typeof value === 'string' && /^-?\\d+n$/.test(value)) {\n return BigInt(value.slice(0, -1))\n }\n return value\n}\n\nexport async function broadcastTransaction(options: BroadcastTransactionOptions): Promise<void> {\n const offset = options.offset ?? '0'\n const raw = FS.readFileSync(options.file, 'utf8')\n const signedTx = JSON.parse(raw, reviveBigints) as never\n const network = getActiveNetwork()\n const { rootWallet } = await getActiveWallet()\n const account = await deriveAccount(rootWallet, offset)\n console.log(chalk.gray(`Connecting to ${network.rpcUrl}...`))\n const { runner } = await createWalletClient(network.rpcUrl, account)\n const hash = await runner.broadcastTransaction(signedTx)\n console.log(chalk.green(`Broadcast accepted: ${hash}`))\n}\n","import { asAddress, assertEx } from '@xylabs/sdk-js'\nimport { XL1Amount } from '@xyo-network/xl1-protocol-sdk'\nimport chalk from 'chalk'\n\nimport { deriveAccount, getActiveWallet } from '../account/getActiveWallet.ts'\nimport { createWalletClient } from '../client/walletClient.ts'\nimport { getActiveNetwork } from '../network/storage.ts'\n\nexport interface SendTransactionOptions {\n recipient: string\n amount: string\n offset?: string\n attempts?: number\n delay?: number\n}\n\nexport async function sendTransaction(options: SendTransactionOptions): Promise<void> {\n const offset = options.offset ?? '0'\n const { rootWallet } = await getActiveWallet()\n const account = await deriveAccount(rootWallet, offset)\n const network = getActiveNetwork()\n\n const recipient = assertEx(asAddress(options.recipient.toLowerCase().replace(/^0x/, '')), () => `Invalid recipient address: ${options.recipient}`)\n const amountXL1 = XL1Amount.fromXL1(BigInt(options.amount) as never)\n\n console.log(chalk.gray(`Connecting to ${network.rpcUrl}...`))\n const { gateway } = await createWalletClient(network.rpcUrl, account)\n\n console.log(chalk.gray(`Submitting transfer of ${options.amount} XL1 to 0x${recipient}...`))\n const hash = await gateway.send(recipient, amountXL1.atto)\n console.log(chalk.gray(`Tx submitted: ${hash}`))\n\n const attempts = options.attempts ?? 30\n const delay = options.delay ?? 2000\n console.log(chalk.gray(`Confirming (up to ${attempts} attempts, ${delay}ms apart)...`))\n await gateway.confirmSubmittedTransaction(hash, { attempts, delay })\n\n console.log(chalk.green(`Sent ${options.amount} XL1 → 0x${recipient}`))\n console.log(`${chalk.gray('hash:')} ${hash}`)\n console.log(`${chalk.gray('from:')} 0x${account.address}`)\n console.log(`${chalk.gray('network:')} ${network.id}`)\n}\n","import FS from 'node:fs'\n\nimport type { Payload } from '@xyo-network/payload-model'\nimport { buildTransaction } from '@xyo-network/xl1-protocol-sdk'\nimport chalk from 'chalk'\n\nimport { deriveAccount, getActiveWallet } from '../account/getActiveWallet.ts'\n\ninterface UnsignedTransactionFile {\n chain: string\n onChainPayloads?: Payload[]\n offChainPayloads?: Payload[]\n nbf: number | string\n exp: number | string\n fees?: {\n base: string | number | bigint\n gasLimit: string | number | bigint\n gasPrice: string | number | bigint\n priority: string | number | bigint\n }\n}\n\nfunction asBigint(value: string | number | bigint): bigint {\n return typeof value === 'bigint' ? value : BigInt(value)\n}\n\nexport interface SignTransactionOptions {\n file: string\n offset?: string\n output?: string\n}\n\nexport async function signTransactionFile(options: SignTransactionOptions): Promise<void> {\n const offset = options.offset ?? '0'\n const raw = FS.readFileSync(options.file, 'utf8')\n const tx = JSON.parse(raw) as UnsignedTransactionFile\n const { rootWallet } = await getActiveWallet()\n const account = await deriveAccount(rootWallet, offset)\n const fees = tx.fees\n ? {\n base: asBigint(tx.fees.base),\n gasLimit: asBigint(tx.fees.gasLimit),\n gasPrice: asBigint(tx.fees.gasPrice),\n priority: asBigint(tx.fees.priority),\n }\n : undefined\n // Cast to runtime-required branded types; the SDK validates them internally.\n const signed = await buildTransaction(\n tx.chain as never,\n (tx.onChainPayloads ?? []) as never,\n tx.offChainPayloads ?? [],\n account,\n asBigint(tx.nbf) as never,\n asBigint(tx.exp) as never,\n undefined,\n fees,\n )\n const serialized = JSON.stringify(signed, (_key, value: unknown) => (typeof value === 'bigint' ? value.toString() : value), 2)\n if (options.output) {\n FS.writeFileSync(options.output, `${serialized}\\n`)\n console.log(chalk.green(`Signed transaction written to ${options.output}`))\n } else {\n console.log(serialized)\n }\n}\n","import type { CommandModule } from 'yargs'\n\nimport { broadcastTransaction } from '../actions/wallet/index.ts'\n\nexport const walletTxBroadcastCommand: CommandModule = {\n command: 'broadcast <file>',\n describe: 'Broadcast a signed transaction JSON file via the active network',\n builder: yargs =>\n yargs\n .positional('file', {\n type: 'string', demandOption: true, describe: 'Path to signed transaction JSON',\n })\n .option('offset', {\n alias: 'o', type: 'string', default: '0', describe: 'HD path offset for client connection',\n }),\n handler: async (argv) => {\n await broadcastTransaction({\n file: argv.file as string,\n offset: argv.offset as string | undefined,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { sendTransaction } from '../actions/wallet/index.ts'\n\nexport const walletTxSendCommand: CommandModule = {\n command: 'send <recipient> <amount>',\n describe: 'Build, sign, and broadcast an XL1 transfer through the active network gateway',\n builder: yargs =>\n yargs\n .positional('recipient', {\n type: 'string', demandOption: true, describe: 'Recipient address (0x...)',\n })\n .positional('amount', {\n type: 'string', demandOption: true, describe: 'Amount in whole XL1',\n })\n .option('offset', {\n alias: 'o', type: 'string', default: '0', describe: 'HD path offset of the sender',\n })\n .option('attempts', {\n type: 'number', default: 30, describe: 'Confirmation polling attempts',\n })\n .option('delay', {\n type: 'number', default: 2000, describe: 'Delay between confirmation attempts (ms)',\n }),\n handler: async (argv) => {\n await sendTransaction({\n recipient: argv.recipient as string,\n amount: argv.amount as string,\n offset: argv.offset as string | undefined,\n attempts: argv.attempts as number,\n delay: argv.delay as number,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { signTransactionFile } from '../actions/wallet/index.ts'\n\nexport const walletTxSignCommand: CommandModule = {\n command: 'sign <file>',\n describe: 'Sign an unsigned transaction JSON file',\n builder: yargs =>\n yargs\n .positional('file', {\n type: 'string', demandOption: true, describe: 'Path to unsigned transaction JSON',\n })\n .option('offset', {\n alias: 'o', type: 'string', default: '0', describe: 'HD path offset of the signer',\n })\n .option('output', {\n alias: 'O', type: 'string', describe: 'Write signed tx to file instead of stdout',\n }),\n handler: async (argv) => {\n await signTransactionFile({\n file: argv.file as string,\n offset: argv.offset as string | undefined,\n output: argv.output as string | undefined,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { walletTxBroadcastCommand } from './walletTxBroadcastCommand.ts'\nimport { walletTxSendCommand } from './walletTxSendCommand.ts'\nimport { walletTxSignCommand } from './walletTxSignCommand.ts'\n\nexport const walletTxCommand: CommandModule = {\n command: 'tx',\n describe: 'Build, sign, and broadcast XL1 transactions',\n builder: yargs =>\n yargs\n .command(walletTxSendCommand)\n .command(walletTxSignCommand)\n .command(walletTxBroadcastCommand)\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","webcrypto","webcrypto","FS","OS","webcrypto","FS","OS","subtle","webcrypto","FS","FS","chalk","chalk","FS","chalk","FS","chalk"]}
@@ -1,492 +0,0 @@
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
- function deleteFile(file) {
54
- if (FS.existsSync(file)) FS.unlinkSync(file);
55
- }
56
-
57
- // src/actions/wallet/account/getActiveWallet.ts
58
- import { HDWallet } from "@xyo-network/sdk-js";
59
- import { DEFAULT_WALLET_PATH } from "@xyo-network/xl1-protocol-sdk";
60
-
61
- // src/actions/wallet/prompt.ts
62
- import { execFileSync } from "child_process";
63
- import {
64
- closeSync,
65
- openSync,
66
- readSync,
67
- writeSync
68
- } from "fs";
69
- var CTRL_C = 3;
70
- var ENTER = 13;
71
- var NEWLINE = 10;
72
- var BACKSPACE_DELETE = 127;
73
- var BACKSPACE = 8;
74
- function readChars(readFd, writeFd, mask) {
75
- const chars = [];
76
- const buf = Buffer.alloc(1);
77
- for (; ; ) {
78
- const bytes = readSync(readFd, buf, 0, 1, null);
79
- if (bytes === 0) break;
80
- const ch = buf[0];
81
- if (ch === ENTER || ch === NEWLINE) break;
82
- if (ch === CTRL_C) {
83
- writeSync(writeFd, "\n");
84
- throw new Error("Aborted");
85
- }
86
- if (ch === BACKSPACE_DELETE || ch === BACKSPACE) {
87
- if (chars.length > 0) {
88
- chars.pop();
89
- writeSync(writeFd, "\b \b");
90
- }
91
- continue;
92
- }
93
- chars.push(ch);
94
- writeSync(writeFd, mask ? "*" : String.fromCodePoint(ch));
95
- }
96
- writeSync(writeFd, "\n");
97
- return Buffer.from(chars).toString("utf8");
98
- }
99
- function saveStty(readFd) {
100
- try {
101
- return execFileSync("stty", ["-g"], {
102
- stdio: [readFd, "pipe", "ignore"],
103
- encoding: "utf8"
104
- }).trim();
105
- } catch {
106
- return void 0;
107
- }
108
- }
109
- function applyStty(readFd, args) {
110
- try {
111
- execFileSync("stty", args, { stdio: [readFd, "ignore", "ignore"] });
112
- } catch {
113
- }
114
- }
115
- function promptTty(options) {
116
- const readFd = openSync("/dev/tty", "r");
117
- const writeFd = openSync("/dev/tty", "w");
118
- const saved = saveStty(readFd);
119
- try {
120
- if (saved) applyStty(readFd, ["-echo", "-icanon", "min", "1", "time", "0"]);
121
- writeSync(writeFd, options.prompt);
122
- return readChars(readFd, writeFd, options.mask === true);
123
- } finally {
124
- if (saved) applyStty(readFd, [saved]);
125
- try {
126
- closeSync(readFd);
127
- } catch {
128
- }
129
- try {
130
- closeSync(writeFd);
131
- } catch {
132
- }
133
- }
134
- }
135
- function promptPassword(prompt = "Password: ") {
136
- const env = process.env.ARIES_WALLET_PASSWORD;
137
- if (env !== void 0 && env.length > 0) return env;
138
- return promptTty({ prompt, mask: true });
139
- }
140
-
141
- // src/actions/wallet/session/sessionCache.ts
142
- import { webcrypto as webcrypto3 } from "crypto";
143
-
144
- // src/actions/wallet/passwordKey.ts
145
- import { webcrypto } from "crypto";
146
- var subtle = webcrypto.subtle;
147
- var INITIALIZATION_VECTOR_LENGTH = 12;
148
- var PBKDF2_ITERATIONS = 1e5;
149
- var SALT_BYTES = 16;
150
- var PasswordKey = class _PasswordKey {
151
- password;
152
- salt;
153
- constructor(password, salt = _PasswordKey.generateSalt()) {
154
- this.password = password;
155
- this.salt = salt;
156
- }
157
- static async decryptString(key, data) {
158
- const encryptedData = new Uint8Array(Buffer.from(data, "base64"));
159
- const iv = encryptedData.slice(0, INITIALIZATION_VECTOR_LENGTH);
160
- const ciphertext = encryptedData.slice(INITIALIZATION_VECTOR_LENGTH);
161
- const decrypted = await subtle.decrypt({ name: "AES-GCM", iv }, key, ciphertext);
162
- return new TextDecoder("utf-8").decode(decrypted);
163
- }
164
- static async encryptString(key, data) {
165
- const iv = webcrypto.getRandomValues(new Uint8Array(INITIALIZATION_VECTOR_LENGTH));
166
- const ciphertext = await subtle.encrypt({ name: "AES-GCM", iv }, key, new TextEncoder().encode(data));
167
- const combined = new Uint8Array(iv.length + ciphertext.byteLength);
168
- combined.set(iv, 0);
169
- combined.set(new Uint8Array(ciphertext), iv.length);
170
- return Buffer.from(combined).toString("base64");
171
- }
172
- static generateSalt() {
173
- const array = new Uint8Array(SALT_BYTES);
174
- webcrypto.getRandomValues(array);
175
- return [...array].map((byte) => byte.toString(16).padStart(2, "0")).join("");
176
- }
177
- static async getHashFromKey(key) {
178
- const exported = await subtle.exportKey("raw", key);
179
- const digest = await subtle.digest("SHA-256", exported);
180
- return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, "0")).join("");
181
- }
182
- static async importEncryptionKey(rawKey) {
183
- return await subtle.importKey("raw", rawKey, { name: "AES-GCM" }, false, ["encrypt", "decrypt"]);
184
- }
185
- static async importExtractableKey(rawKey) {
186
- return await subtle.importKey("raw", rawKey, { name: "AES-GCM" }, true, ["encrypt", "decrypt"]);
187
- }
188
- static async serializeKey(key, salt = _PasswordKey.generateSalt()) {
189
- const hash = await _PasswordKey.getHashFromKey(key);
190
- return { hash, salt };
191
- }
192
- async deriveKey() {
193
- const encoder = new TextEncoder();
194
- const passphraseKey = await subtle.importKey(
195
- "raw",
196
- encoder.encode(this.password),
197
- { name: "PBKDF2" },
198
- false,
199
- ["deriveKey"]
200
- );
201
- return await subtle.deriveKey(
202
- {
203
- name: "PBKDF2",
204
- salt: encoder.encode(this.salt),
205
- iterations: PBKDF2_ITERATIONS,
206
- hash: "SHA-256"
207
- },
208
- passphraseKey,
209
- { name: "AES-GCM", length: 256 },
210
- true,
211
- ["encrypt", "decrypt"]
212
- );
213
- }
214
- };
215
- async function decryptWithKey(key, data) {
216
- const exported = await subtle.exportKey("raw", key);
217
- const encKey = await PasswordKey.importEncryptionKey(exported);
218
- return await PasswordKey.decryptString(encKey, data);
219
- }
220
-
221
- // src/actions/wallet/session/machineId.ts
222
- import { webcrypto as webcrypto2 } from "crypto";
223
- import FS2 from "fs";
224
- import OS2 from "os";
225
- function generateMachineSecret() {
226
- const bytes = new Uint8Array(32);
227
- webcrypto2.getRandomValues(bytes);
228
- return [...bytes].map((b) => b.toString(16).padStart(2, "0")).join("");
229
- }
230
- function loadMachineSecret() {
231
- ensureWalletDir();
232
- const path = walletPaths().machineId;
233
- if (FS2.existsSync(path)) {
234
- return FS2.readFileSync(path, "utf8").trim();
235
- }
236
- const secret = generateMachineSecret();
237
- FS2.writeFileSync(path, `${secret}
238
- `, { mode: 384 });
239
- try {
240
- FS2.chmodSync(path, 384);
241
- } catch {
242
- }
243
- return secret;
244
- }
245
- async function deriveMachineKey() {
246
- const secret = loadMachineSecret();
247
- const stable = `${OS2.hostname()}:${OS2.userInfo().username}:${secret}`;
248
- const passwordKey = new PasswordKey(stable, "aries-wallet-machine-kek-v1");
249
- return await passwordKey.deriveKey();
250
- }
251
-
252
- // src/actions/wallet/session/sessionCache.ts
253
- var subtle2 = webcrypto3.subtle;
254
- var DEFAULT_SESSION_TTL_SECONDS = 15 * 60;
255
- function lockSession() {
256
- deleteFile(walletPaths().session);
257
- }
258
- async function readSession() {
259
- const data = readJsonFile(walletPaths().session);
260
- if (!data) return void 0;
261
- if (data.expiresAt <= Date.now()) {
262
- lockSession();
263
- return void 0;
264
- }
265
- try {
266
- const machineKey = await deriveMachineKey();
267
- const exportedBase64 = await decryptWithKey(machineKey, data.encryptedKey);
268
- const raw = Buffer.from(exportedBase64, "base64");
269
- return await PasswordKey.importExtractableKey(
270
- raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength)
271
- );
272
- } catch {
273
- lockSession();
274
- return void 0;
275
- }
276
- }
277
-
278
- // src/actions/wallet/password/passwordStorage.ts
279
- function readPassword() {
280
- return readJsonFile(walletPaths().password);
281
- }
282
- function hasPassword() {
283
- return readPassword() !== void 0;
284
- }
285
-
286
- // src/actions/wallet/password/validatePassword.ts
287
- async function validatePassword(password) {
288
- const stored = readPassword();
289
- if (!stored) return void 0;
290
- const passwordKey = new PasswordKey(password, stored.salt);
291
- const key = await passwordKey.deriveKey();
292
- const hash = await PasswordKey.getHashFromKey(key);
293
- if (hash !== stored.hash) return void 0;
294
- return key;
295
- }
296
-
297
- // src/actions/wallet/password/getActiveKey.ts
298
- async function getActiveKey() {
299
- if (!hasPassword()) {
300
- throw new Error("Wallet not initialized. Run `aries wallet create` or `aries wallet import` first.");
301
- }
302
- const cached = await readSession();
303
- if (cached) return cached;
304
- const password = promptPassword("Wallet password: ");
305
- const key = await validatePassword(password);
306
- if (!key) throw new Error("Incorrect password.");
307
- return key;
308
- }
309
-
310
- // src/actions/wallet/seedPhrase/phraseStorage.ts
311
- function readPhrases() {
312
- const data = readJsonFile(walletPaths().phrases);
313
- return data?.phrases ?? [];
314
- }
315
- function readActive() {
316
- return readJsonFile(walletPaths().active) ?? {};
317
- }
318
- function getActivePhrase() {
319
- const phrases = readPhrases();
320
- if (phrases.length === 0) return void 0;
321
- const active = readActive();
322
- if (active.phraseId) {
323
- const found = phrases.find((p) => p.id === active.phraseId);
324
- if (found) return found;
325
- }
326
- return phrases[0];
327
- }
328
-
329
- // src/actions/wallet/account/getActiveWallet.ts
330
- async function getActiveWallet() {
331
- const record = getActivePhrase();
332
- if (!record) throw new Error("No active wallet. Run `aries wallet create` or `aries wallet import` first.");
333
- const key = await getActiveKey();
334
- const mnemonic = await decryptWithKey(key, record.encryptedPhrase);
335
- const rootWallet = await HDWallet.fromPhrase(mnemonic, DEFAULT_WALLET_PATH);
336
- return {
337
- record,
338
- mnemonic,
339
- rootWallet
340
- };
341
- }
342
- async function deriveAccount(rootWallet, offset) {
343
- return await rootWallet.derivePath(offset);
344
- }
345
-
346
- // src/actions/wallet/client/walletClient.ts
347
- import {
348
- basicRemoteViewerLocator,
349
- ProviderFactoryLocator,
350
- SimpleXyoConnectionRunner,
351
- SimpleXyoGatewayRunner,
352
- SimpleXyoRunner,
353
- SimpleXyoSigner,
354
- XyoGatewayRunnerMoniker,
355
- XyoRunnerMoniker,
356
- XyoViewerMoniker
357
- } from "@xyo-network/xl1-sdk";
358
- async function loadValidators() {
359
- try {
360
- const mod = await import("@xyo-network/chain-validation");
361
- return {
362
- validateHydratedBlock: mod.validateHydratedBlock,
363
- validateHydratedBlockState: mod.validateHydratedBlockState
364
- };
365
- } catch {
366
- return void 0;
367
- }
368
- }
369
- async function createWalletClient(rpcUrl, account) {
370
- const validators = await loadValidators();
371
- const viewerLocator = await basicRemoteViewerLocator(
372
- "aries-wallet",
373
- { rpc: { protocol: "http", url: rpcUrl } },
374
- void 0,
375
- validators ? { validators } : void 0
376
- );
377
- const locator = new ProviderFactoryLocator(viewerLocator.context, {});
378
- locator.register(SimpleXyoSigner.factory(SimpleXyoSigner.dependencies, { account }));
379
- locator.register(SimpleXyoGatewayRunner.factory(SimpleXyoGatewayRunner.dependencies, {}));
380
- locator.register(SimpleXyoRunner.factory(SimpleXyoRunner.dependencies, {}));
381
- locator.register(SimpleXyoConnectionRunner.factory(SimpleXyoConnectionRunner.dependencies, {}));
382
- locator.validateDependencies();
383
- const gateway = await locator.getInstance(XyoGatewayRunnerMoniker);
384
- const runner = await locator.getInstance(XyoRunnerMoniker);
385
- const viewer = await locator.getInstance(XyoViewerMoniker);
386
- return {
387
- gateway,
388
- runner,
389
- viewer,
390
- connection: gateway.connection,
391
- locator
392
- };
393
- }
394
-
395
- // src/actions/wallet/network/storage.ts
396
- var DEFAULT_NETWORKS = [
397
- {
398
- id: "xl1-mainnet",
399
- label: "XL1 Mainnet",
400
- rpcUrl: "https://node.xyo.network",
401
- isCustom: false
402
- },
403
- {
404
- id: "xl1-testnet",
405
- label: "XL1 Testnet",
406
- rpcUrl: "https://testnet.node.xyo.network",
407
- isCustom: false
408
- }
409
- ];
410
- function readNetworks() {
411
- const data = readJsonFile(walletPaths().networks);
412
- if (data) return data;
413
- const seeded = {
414
- networks: DEFAULT_NETWORKS,
415
- activeId: DEFAULT_NETWORKS[0].id
416
- };
417
- writeJsonFile(walletPaths().networks, seeded);
418
- return seeded;
419
- }
420
- function getActiveNetwork() {
421
- const file = readNetworks();
422
- const found = file.networks.find((n) => n.id === file.activeId);
423
- if (!found) throw new Error(`Active network ${file.activeId} not found.`);
424
- return found;
425
- }
426
-
427
- // src/actions/wallet/transaction/sendTransaction.ts
428
- import { asAddress, assertEx } from "@xylabs/sdk-js";
429
- import { XL1Amount } from "@xyo-network/xl1-protocol-sdk";
430
- import chalk from "chalk";
431
- async function sendTransaction(options) {
432
- const offset = options.offset ?? "0";
433
- const { rootWallet } = await getActiveWallet();
434
- const account = await deriveAccount(rootWallet, offset);
435
- const network = getActiveNetwork();
436
- const recipient = assertEx(asAddress(options.recipient.toLowerCase().replace(/^0x/, "")), () => `Invalid recipient address: ${options.recipient}`);
437
- const amountXL1 = XL1Amount.fromXL1(BigInt(options.amount));
438
- console.log(chalk.gray(`Connecting to ${network.rpcUrl}...`));
439
- const { gateway } = await createWalletClient(network.rpcUrl, account);
440
- console.log(chalk.gray(`Submitting transfer of ${options.amount} XL1 to 0x${recipient}...`));
441
- const hash = await gateway.send(recipient, amountXL1.atto);
442
- console.log(chalk.gray(`Tx submitted: ${hash}`));
443
- const attempts = options.attempts ?? 30;
444
- const delay = options.delay ?? 2e3;
445
- console.log(chalk.gray(`Confirming (up to ${attempts} attempts, ${delay}ms apart)...`));
446
- await gateway.confirmSubmittedTransaction(hash, { attempts, delay });
447
- console.log(chalk.green(`Sent ${options.amount} XL1 \u2192 0x${recipient}`));
448
- console.log(`${chalk.gray("hash:")} ${hash}`);
449
- console.log(`${chalk.gray("from:")} 0x${account.address}`);
450
- console.log(`${chalk.gray("network:")} ${network.id}`);
451
- }
452
-
453
- // src/commands/walletTxSendCommand.ts
454
- var walletTxSendCommand = {
455
- command: "send <recipient> <amount>",
456
- describe: "Build, sign, and broadcast an XL1 transfer through the active network gateway",
457
- builder: (yargs) => yargs.positional("recipient", {
458
- type: "string",
459
- demandOption: true,
460
- describe: "Recipient address (0x...)"
461
- }).positional("amount", {
462
- type: "string",
463
- demandOption: true,
464
- describe: "Amount in whole XL1"
465
- }).option("offset", {
466
- alias: "o",
467
- type: "string",
468
- default: "0",
469
- describe: "HD path offset of the sender"
470
- }).option("attempts", {
471
- type: "number",
472
- default: 30,
473
- describe: "Confirmation polling attempts"
474
- }).option("delay", {
475
- type: "number",
476
- default: 2e3,
477
- describe: "Delay between confirmation attempts (ms)"
478
- }),
479
- handler: async (argv) => {
480
- await sendTransaction({
481
- recipient: argv.recipient,
482
- amount: argv.amount,
483
- offset: argv.offset,
484
- attempts: argv.attempts,
485
- delay: argv.delay
486
- });
487
- }
488
- };
489
- export {
490
- walletTxSendCommand
491
- };
492
- //# sourceMappingURL=walletTxSendCommand.mjs.map