@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 @@
1
+ {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/addressBook/storage.ts","../../src/actions/wallet/backup/exportBackup.ts","../../src/actions/wallet/contact/storage.ts","../../src/actions/wallet/backup/importBackup.ts","../../src/commands/walletBackupExportCommand.ts","../../src/commands/walletBackupImportCommand.ts","../../src/commands/walletBackupCommand.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 AddressBookEntry {\n offset: string\n label?: string\n}\n\nexport interface AddressBook {\n entries: AddressBookEntry[]\n rootAddress: string\n version: number\n}\n\nexport type AddressBooksFile = Record<string, AddressBook>\n\nconst ADDRESS_BOOK_VERSION = 1\n\nexport function readAllAddressBooks(): AddressBooksFile {\n return readJsonFile<AddressBooksFile>(walletPaths().addressBooks) ?? {}\n}\n\nexport function writeAllAddressBooks(data: AddressBooksFile): void {\n writeJsonFile(walletPaths().addressBooks, data)\n}\n\nexport function readAddressBook(rootAddress: string): AddressBook {\n const all = readAllAddressBooks()\n const key = rootAddress.toLowerCase()\n return all[key] ?? {\n rootAddress: key,\n entries: [{ offset: '0' }, { offset: '1' }, { offset: '2' }],\n version: ADDRESS_BOOK_VERSION,\n }\n}\n\nexport function writeAddressBook(book: AddressBook): void {\n const all = readAllAddressBooks()\n all[book.rootAddress.toLowerCase()] = book\n writeAllAddressBooks(all)\n}\n\nexport function removeAddressBook(rootAddress: string): void {\n const all = readAllAddressBooks()\n const key = rootAddress.toLowerCase()\n if (key in all) {\n delete all[key]\n writeAllAddressBooks(all)\n }\n}\n\nexport function upsertAddressBookEntry(rootAddress: string, entry: AddressBookEntry): AddressBook {\n const book = readAddressBook(rootAddress)\n const existing = book.entries.find(e => e.offset === entry.offset)\n if (existing) {\n if (entry.label !== undefined) existing.label = entry.label\n } else {\n book.entries.push(entry)\n }\n writeAddressBook(book)\n return book\n}\n\nexport function removeAddressBookEntry(rootAddress: string, offset: string): AddressBook {\n const book = readAddressBook(rootAddress)\n book.entries = book.entries.filter(e => e.offset !== offset)\n writeAddressBook(book)\n return book\n}\n","import FS from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { readAllAddressBooks } from '../addressBook/storage.ts'\nimport { readContacts } from '../contact/storage.ts'\n\nconst SCHEMA = 'network.xyo.wallet.backup'\nconst VERSION = 1\nconst ADDRESS_BOOK_SCHEMA = 'network.xyo.wallet.addressBook'\nconst CONTACTS_SCHEMA = 'network.xyo.wallet.contacts'\n\nexport interface ExportBackupOptions {\n file: string\n}\n\nexport function exportBackup(options: ExportBackupOptions): void {\n const exportedAt = new Date().toISOString()\n const entries: unknown[] = []\n const sources: string[] = []\n\n const addressBooks = readAllAddressBooks()\n for (const book of Object.values(addressBooks)) {\n entries.push({\n ...book,\n schema: ADDRESS_BOOK_SCHEMA,\n exportedAt,\n })\n if (!sources.includes(ADDRESS_BOOK_SCHEMA)) sources.push(ADDRESS_BOOK_SCHEMA)\n }\n\n const contacts = readContacts()\n if (contacts.entries.length > 0) {\n entries.push({\n ...contacts,\n schema: CONTACTS_SCHEMA,\n exportedAt,\n })\n sources.push(CONTACTS_SCHEMA)\n }\n\n const backup = {\n schema: SCHEMA,\n version: VERSION,\n entries,\n exportedAt,\n sources,\n }\n FS.writeFileSync(options.file, `${JSON.stringify(backup, null, 2)}\\n`, { mode: 0o600 })\n console.log(chalk.green(`Backup written to ${options.file}`))\n console.log(chalk.gray(` ${entries.length} entries, sources: ${sources.join(', ')}`))\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport interface ContactEntry {\n address: string\n label: string\n createdAt: string\n updatedAt: string\n}\n\nexport interface ContactsFile {\n entries: ContactEntry[]\n version: number\n}\n\nconst CONTACTS_VERSION = 1\n\nexport function readContacts(): ContactsFile {\n return readJsonFile<ContactsFile>(walletPaths().contacts) ?? {\n entries: [],\n version: CONTACTS_VERSION,\n }\n}\n\nexport function writeContacts(file: ContactsFile): void {\n writeJsonFile(walletPaths().contacts, file)\n}\n","import FS from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { AddressBook } from '../addressBook/storage.ts'\nimport { readAllAddressBooks, writeAllAddressBooks } from '../addressBook/storage.ts'\nimport type { ContactEntry, ContactsFile } from '../contact/storage.ts'\nimport { readContacts, writeContacts } from '../contact/storage.ts'\n\ninterface BackupEntry {\n schema: string\n exportedAt?: string\n}\n\ninterface AddressBookEntryFile extends BackupEntry, AddressBook {\n schema: 'network.xyo.wallet.addressBook'\n}\n\ninterface ContactsEntryFile extends BackupEntry, ContactsFile {\n schema: 'network.xyo.wallet.contacts'\n}\n\ninterface BackupFile {\n schema: string\n version: number\n entries: BackupEntry[]\n exportedAt: string\n sources?: string[]\n}\n\nexport interface ImportBackupOptions {\n file: string\n}\n\nexport function importBackup(options: ImportBackupOptions): void {\n const raw = FS.readFileSync(options.file, 'utf8')\n const parsed = JSON.parse(raw) as BackupFile\n if (parsed.schema !== 'network.xyo.wallet.backup') {\n throw new Error(`Not a wallet backup (schema=${parsed.schema}).`)\n }\n\n const allBooks = readAllAddressBooks()\n let booksImported = 0\n let contactsImported = 0\n const existingContacts = readContacts()\n\n for (const entry of parsed.entries) {\n if (entry.schema === 'network.xyo.wallet.addressBook') {\n const book = entry as AddressBookEntryFile\n const key = book.rootAddress.toLowerCase()\n const merged: AddressBook = allBooks[key]\n ? mergeAddressBooks(allBooks[key], book)\n : {\n rootAddress: key, entries: book.entries, version: book.version,\n }\n allBooks[key] = merged\n booksImported++\n } else if (entry.schema === 'network.xyo.wallet.contacts') {\n const contacts = entry as ContactsEntryFile\n for (const contact of contacts.entries) {\n upsertContact(existingContacts, contact)\n contactsImported++\n }\n }\n }\n\n if (booksImported > 0) writeAllAddressBooks(allBooks)\n if (contactsImported > 0) writeContacts(existingContacts)\n\n console.log(chalk.green(`Imported backup from ${options.file}`))\n console.log(chalk.gray(` address books: ${booksImported}, contacts: ${contactsImported}`))\n}\n\nfunction mergeAddressBooks(existing: AddressBook, incoming: AddressBook): AddressBook {\n const merged: AddressBook = {\n rootAddress: existing.rootAddress,\n version: Math.max(existing.version, incoming.version),\n entries: [...existing.entries],\n }\n for (const entry of incoming.entries) {\n const found = merged.entries.find(e => e.offset === entry.offset)\n if (found) {\n if (entry.label !== undefined) found.label = entry.label\n } else {\n merged.entries.push(entry)\n }\n }\n return merged\n}\n\nfunction upsertContact(file: ContactsFile, contact: ContactEntry): void {\n const normalized = contact.address.toLowerCase()\n const found = file.entries.find(e => e.address.toLowerCase() === normalized)\n if (found) {\n found.label = contact.label\n found.updatedAt = contact.updatedAt\n } else {\n file.entries.push({ ...contact, address: normalized })\n }\n}\n","import type { CommandModule } from 'yargs'\n\nimport { exportBackup } from '../actions/wallet/index.ts'\n\nexport const walletBackupExportCommand: CommandModule = {\n command: 'export <file>',\n describe: 'Export address books and contacts to a backup JSON file',\n builder: yargs =>\n yargs.positional('file', {\n type: 'string', demandOption: true, describe: 'Output backup file path',\n }),\n handler: (argv) => {\n exportBackup({ file: argv.file as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { importBackup } from '../actions/wallet/index.ts'\n\nexport const walletBackupImportCommand: CommandModule = {\n command: 'import <file>',\n describe: 'Import a wallet backup JSON file (merges into current state)',\n builder: yargs =>\n yargs.positional('file', {\n type: 'string', demandOption: true, describe: 'Backup file path',\n }),\n handler: (argv) => {\n importBackup({ file: argv.file as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { walletBackupExportCommand } from './walletBackupExportCommand.ts'\nimport { walletBackupImportCommand } from './walletBackupImportCommand.ts'\n\nexport const walletBackupCommand: CommandModule = {\n command: 'backup',\n describe: 'Export and import wallet data (address books, contacts)',\n builder: yargs =>\n yargs\n .command(walletBackupExportCommand)\n .command(walletBackupImportCommand)\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","FS","FS","FS","chalk","FS","chalk"]}
@@ -0,0 +1,107 @@
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 readJsonFile(file) {
27
+ if (!FS.existsSync(file)) return void 0;
28
+ const raw = FS.readFileSync(file, "utf8");
29
+ if (raw.trim().length === 0) return void 0;
30
+ return JSON.parse(raw);
31
+ }
32
+
33
+ // src/actions/wallet/addressBook/storage.ts
34
+ function readAllAddressBooks() {
35
+ return readJsonFile(walletPaths().addressBooks) ?? {};
36
+ }
37
+
38
+ // src/actions/wallet/backup/exportBackup.ts
39
+ import FS2 from "fs";
40
+ import chalk from "chalk";
41
+
42
+ // src/actions/wallet/contact/storage.ts
43
+ var CONTACTS_VERSION = 1;
44
+ function readContacts() {
45
+ return readJsonFile(walletPaths().contacts) ?? {
46
+ entries: [],
47
+ version: CONTACTS_VERSION
48
+ };
49
+ }
50
+
51
+ // src/actions/wallet/backup/exportBackup.ts
52
+ var SCHEMA = "network.xyo.wallet.backup";
53
+ var VERSION = 1;
54
+ var ADDRESS_BOOK_SCHEMA = "network.xyo.wallet.addressBook";
55
+ var CONTACTS_SCHEMA = "network.xyo.wallet.contacts";
56
+ function exportBackup(options) {
57
+ const exportedAt = (/* @__PURE__ */ new Date()).toISOString();
58
+ const entries = [];
59
+ const sources = [];
60
+ const addressBooks = readAllAddressBooks();
61
+ for (const book of Object.values(addressBooks)) {
62
+ entries.push({
63
+ ...book,
64
+ schema: ADDRESS_BOOK_SCHEMA,
65
+ exportedAt
66
+ });
67
+ if (!sources.includes(ADDRESS_BOOK_SCHEMA)) sources.push(ADDRESS_BOOK_SCHEMA);
68
+ }
69
+ const contacts = readContacts();
70
+ if (contacts.entries.length > 0) {
71
+ entries.push({
72
+ ...contacts,
73
+ schema: CONTACTS_SCHEMA,
74
+ exportedAt
75
+ });
76
+ sources.push(CONTACTS_SCHEMA);
77
+ }
78
+ const backup = {
79
+ schema: SCHEMA,
80
+ version: VERSION,
81
+ entries,
82
+ exportedAt,
83
+ sources
84
+ };
85
+ FS2.writeFileSync(options.file, `${JSON.stringify(backup, null, 2)}
86
+ `, { mode: 384 });
87
+ console.log(chalk.green(`Backup written to ${options.file}`));
88
+ console.log(chalk.gray(` ${entries.length} entries, sources: ${sources.join(", ")}`));
89
+ }
90
+
91
+ // src/commands/walletBackupExportCommand.ts
92
+ var walletBackupExportCommand = {
93
+ command: "export <file>",
94
+ describe: "Export address books and contacts to a backup JSON file",
95
+ builder: (yargs) => yargs.positional("file", {
96
+ type: "string",
97
+ demandOption: true,
98
+ describe: "Output backup file path"
99
+ }),
100
+ handler: (argv) => {
101
+ exportBackup({ file: argv.file });
102
+ }
103
+ };
104
+ export {
105
+ walletBackupExportCommand
106
+ };
107
+ //# sourceMappingURL=walletBackupExportCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/addressBook/storage.ts","../../src/actions/wallet/backup/exportBackup.ts","../../src/actions/wallet/contact/storage.ts","../../src/commands/walletBackupExportCommand.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 AddressBookEntry {\n offset: string\n label?: string\n}\n\nexport interface AddressBook {\n entries: AddressBookEntry[]\n rootAddress: string\n version: number\n}\n\nexport type AddressBooksFile = Record<string, AddressBook>\n\nconst ADDRESS_BOOK_VERSION = 1\n\nexport function readAllAddressBooks(): AddressBooksFile {\n return readJsonFile<AddressBooksFile>(walletPaths().addressBooks) ?? {}\n}\n\nexport function writeAllAddressBooks(data: AddressBooksFile): void {\n writeJsonFile(walletPaths().addressBooks, data)\n}\n\nexport function readAddressBook(rootAddress: string): AddressBook {\n const all = readAllAddressBooks()\n const key = rootAddress.toLowerCase()\n return all[key] ?? {\n rootAddress: key,\n entries: [{ offset: '0' }, { offset: '1' }, { offset: '2' }],\n version: ADDRESS_BOOK_VERSION,\n }\n}\n\nexport function writeAddressBook(book: AddressBook): void {\n const all = readAllAddressBooks()\n all[book.rootAddress.toLowerCase()] = book\n writeAllAddressBooks(all)\n}\n\nexport function removeAddressBook(rootAddress: string): void {\n const all = readAllAddressBooks()\n const key = rootAddress.toLowerCase()\n if (key in all) {\n delete all[key]\n writeAllAddressBooks(all)\n }\n}\n\nexport function upsertAddressBookEntry(rootAddress: string, entry: AddressBookEntry): AddressBook {\n const book = readAddressBook(rootAddress)\n const existing = book.entries.find(e => e.offset === entry.offset)\n if (existing) {\n if (entry.label !== undefined) existing.label = entry.label\n } else {\n book.entries.push(entry)\n }\n writeAddressBook(book)\n return book\n}\n\nexport function removeAddressBookEntry(rootAddress: string, offset: string): AddressBook {\n const book = readAddressBook(rootAddress)\n book.entries = book.entries.filter(e => e.offset !== offset)\n writeAddressBook(book)\n return book\n}\n","import FS from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { readAllAddressBooks } from '../addressBook/storage.ts'\nimport { readContacts } from '../contact/storage.ts'\n\nconst SCHEMA = 'network.xyo.wallet.backup'\nconst VERSION = 1\nconst ADDRESS_BOOK_SCHEMA = 'network.xyo.wallet.addressBook'\nconst CONTACTS_SCHEMA = 'network.xyo.wallet.contacts'\n\nexport interface ExportBackupOptions {\n file: string\n}\n\nexport function exportBackup(options: ExportBackupOptions): void {\n const exportedAt = new Date().toISOString()\n const entries: unknown[] = []\n const sources: string[] = []\n\n const addressBooks = readAllAddressBooks()\n for (const book of Object.values(addressBooks)) {\n entries.push({\n ...book,\n schema: ADDRESS_BOOK_SCHEMA,\n exportedAt,\n })\n if (!sources.includes(ADDRESS_BOOK_SCHEMA)) sources.push(ADDRESS_BOOK_SCHEMA)\n }\n\n const contacts = readContacts()\n if (contacts.entries.length > 0) {\n entries.push({\n ...contacts,\n schema: CONTACTS_SCHEMA,\n exportedAt,\n })\n sources.push(CONTACTS_SCHEMA)\n }\n\n const backup = {\n schema: SCHEMA,\n version: VERSION,\n entries,\n exportedAt,\n sources,\n }\n FS.writeFileSync(options.file, `${JSON.stringify(backup, null, 2)}\\n`, { mode: 0o600 })\n console.log(chalk.green(`Backup written to ${options.file}`))\n console.log(chalk.gray(` ${entries.length} entries, sources: ${sources.join(', ')}`))\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport interface ContactEntry {\n address: string\n label: string\n createdAt: string\n updatedAt: string\n}\n\nexport interface ContactsFile {\n entries: ContactEntry[]\n version: number\n}\n\nconst CONTACTS_VERSION = 1\n\nexport function readContacts(): ContactsFile {\n return readJsonFile<ContactsFile>(walletPaths().contacts) ?? {\n entries: [],\n version: CONTACTS_VERSION,\n }\n}\n\nexport function writeContacts(file: ContactsFile): void {\n writeJsonFile(walletPaths().contacts, file)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { exportBackup } from '../actions/wallet/index.ts'\n\nexport const walletBackupExportCommand: CommandModule = {\n command: 'export <file>',\n describe: 'Export address books and contacts to a backup JSON file',\n builder: yargs =>\n yargs.positional('file', {\n type: 'string', demandOption: true, describe: 'Output backup file path',\n }),\n handler: (argv) => {\n exportBackup({ file: argv.file as string })\n },\n}\n"],"mappings":";AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAcV,SAAS,aAAqB;AACnC,QAAM,WAAW,QAAQ,IAAI;AAC7B,MAAI,SAAU,QAAO;AACrB,SAAO,KAAK,KAAK,GAAG,QAAQ,GAAG,UAAU,QAAQ;AACnD;AAEO,SAAS,YAAY,OAAe,WAAW,GAAgB;AACpE,SAAO;AAAA,IACL;AAAA,IACA,UAAU,KAAK,KAAK,MAAM,eAAe;AAAA,IACzC,SAAS,KAAK,KAAK,MAAM,cAAc;AAAA,IACvC,QAAQ,KAAK,KAAK,MAAM,aAAa;AAAA,IACrC,cAAc,KAAK,KAAK,MAAM,oBAAoB;AAAA,IAClD,UAAU,KAAK,KAAK,MAAM,eAAe;AAAA,IACzC,UAAU,KAAK,KAAK,MAAM,eAAe;AAAA,IACzC,SAAS,KAAK,KAAK,MAAM,cAAc;AAAA,IACvC,WAAW,KAAK,KAAK,MAAM,aAAa;AAAA,EAC1C;AACF;;;ACjCA,OAAO,QAAQ;AACf,OAAOA,WAAU;AAgBV,SAAS,aAAgB,MAA6B;AAC3D,MAAI,CAAC,GAAG,WAAW,IAAI,EAAG,QAAO;AACjC,QAAM,MAAM,GAAG,aAAa,MAAM,MAAM;AACxC,MAAI,IAAI,KAAK,EAAE,WAAW,EAAG,QAAO;AACpC,SAAO,KAAK,MAAM,GAAG;AACvB;;;ACJO,SAAS,sBAAwC;AACtD,SAAO,aAA+B,YAAY,EAAE,YAAY,KAAK,CAAC;AACxE;;;ACpBA,OAAOC,SAAQ;AAEf,OAAO,WAAW;;;ACalB,IAAM,mBAAmB;AAElB,SAAS,eAA6B;AAC3C,SAAO,aAA2B,YAAY,EAAE,QAAQ,KAAK;AAAA,IAC3D,SAAS,CAAC;AAAA,IACV,SAAS;AAAA,EACX;AACF;;;ADfA,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAM,sBAAsB;AAC5B,IAAM,kBAAkB;AAMjB,SAAS,aAAa,SAAoC;AAC/D,QAAM,cAAa,oBAAI,KAAK,GAAE,YAAY;AAC1C,QAAM,UAAqB,CAAC;AAC5B,QAAM,UAAoB,CAAC;AAE3B,QAAM,eAAe,oBAAoB;AACzC,aAAW,QAAQ,OAAO,OAAO,YAAY,GAAG;AAC9C,YAAQ,KAAK;AAAA,MACX,GAAG;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AACD,QAAI,CAAC,QAAQ,SAAS,mBAAmB,EAAG,SAAQ,KAAK,mBAAmB;AAAA,EAC9E;AAEA,QAAM,WAAW,aAAa;AAC9B,MAAI,SAAS,QAAQ,SAAS,GAAG;AAC/B,YAAQ,KAAK;AAAA,MACX,GAAG;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AACD,YAAQ,KAAK,eAAe;AAAA,EAC9B;AAEA,QAAM,SAAS;AAAA,IACb,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,EAAAC,IAAG,cAAc,QAAQ,MAAM,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,GAAM,EAAE,MAAM,IAAM,CAAC;AACtF,UAAQ,IAAI,MAAM,MAAM,qBAAqB,QAAQ,IAAI,EAAE,CAAC;AAC5D,UAAQ,IAAI,MAAM,KAAK,KAAK,QAAQ,MAAM,sBAAsB,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;AACvF;;;AE/CO,IAAM,4BAA2C;AAAA,EACtD,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,WACP,MAAM,WAAW,QAAQ;AAAA,IACvB,MAAM;AAAA,IAAU,cAAc;AAAA,IAAM,UAAU;AAAA,EAChD,CAAC;AAAA,EACH,SAAS,CAAC,SAAS;AACjB,iBAAa,EAAE,MAAM,KAAK,KAAe,CAAC;AAAA,EAC5C;AACF;","names":["PATH","FS","FS"]}
@@ -0,0 +1,154 @@
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/addressBook/storage.ts
55
+ function readAllAddressBooks() {
56
+ return readJsonFile(walletPaths().addressBooks) ?? {};
57
+ }
58
+ function writeAllAddressBooks(data) {
59
+ writeJsonFile(walletPaths().addressBooks, data);
60
+ }
61
+
62
+ // src/actions/wallet/contact/storage.ts
63
+ var CONTACTS_VERSION = 1;
64
+ function readContacts() {
65
+ return readJsonFile(walletPaths().contacts) ?? {
66
+ entries: [],
67
+ version: CONTACTS_VERSION
68
+ };
69
+ }
70
+ function writeContacts(file) {
71
+ writeJsonFile(walletPaths().contacts, file);
72
+ }
73
+
74
+ // src/actions/wallet/backup/importBackup.ts
75
+ import FS2 from "fs";
76
+ import chalk from "chalk";
77
+ function importBackup(options) {
78
+ const raw = FS2.readFileSync(options.file, "utf8");
79
+ const parsed = JSON.parse(raw);
80
+ if (parsed.schema !== "network.xyo.wallet.backup") {
81
+ throw new Error(`Not a wallet backup (schema=${parsed.schema}).`);
82
+ }
83
+ const allBooks = readAllAddressBooks();
84
+ let booksImported = 0;
85
+ let contactsImported = 0;
86
+ const existingContacts = readContacts();
87
+ for (const entry of parsed.entries) {
88
+ if (entry.schema === "network.xyo.wallet.addressBook") {
89
+ const book = entry;
90
+ const key = book.rootAddress.toLowerCase();
91
+ const merged = allBooks[key] ? mergeAddressBooks(allBooks[key], book) : {
92
+ rootAddress: key,
93
+ entries: book.entries,
94
+ version: book.version
95
+ };
96
+ allBooks[key] = merged;
97
+ booksImported++;
98
+ } else if (entry.schema === "network.xyo.wallet.contacts") {
99
+ const contacts = entry;
100
+ for (const contact of contacts.entries) {
101
+ upsertContact(existingContacts, contact);
102
+ contactsImported++;
103
+ }
104
+ }
105
+ }
106
+ if (booksImported > 0) writeAllAddressBooks(allBooks);
107
+ if (contactsImported > 0) writeContacts(existingContacts);
108
+ console.log(chalk.green(`Imported backup from ${options.file}`));
109
+ console.log(chalk.gray(` address books: ${booksImported}, contacts: ${contactsImported}`));
110
+ }
111
+ function mergeAddressBooks(existing, incoming) {
112
+ const merged = {
113
+ rootAddress: existing.rootAddress,
114
+ version: Math.max(existing.version, incoming.version),
115
+ entries: [...existing.entries]
116
+ };
117
+ for (const entry of incoming.entries) {
118
+ const found = merged.entries.find((e) => e.offset === entry.offset);
119
+ if (found) {
120
+ if (entry.label !== void 0) found.label = entry.label;
121
+ } else {
122
+ merged.entries.push(entry);
123
+ }
124
+ }
125
+ return merged;
126
+ }
127
+ function upsertContact(file, contact) {
128
+ const normalized = contact.address.toLowerCase();
129
+ const found = file.entries.find((e) => e.address.toLowerCase() === normalized);
130
+ if (found) {
131
+ found.label = contact.label;
132
+ found.updatedAt = contact.updatedAt;
133
+ } else {
134
+ file.entries.push({ ...contact, address: normalized });
135
+ }
136
+ }
137
+
138
+ // src/commands/walletBackupImportCommand.ts
139
+ var walletBackupImportCommand = {
140
+ command: "import <file>",
141
+ describe: "Import a wallet backup JSON file (merges into current state)",
142
+ builder: (yargs) => yargs.positional("file", {
143
+ type: "string",
144
+ demandOption: true,
145
+ describe: "Backup file path"
146
+ }),
147
+ handler: (argv) => {
148
+ importBackup({ file: argv.file });
149
+ }
150
+ };
151
+ export {
152
+ walletBackupImportCommand
153
+ };
154
+ //# sourceMappingURL=walletBackupImportCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/wallet/paths.ts","../../src/actions/wallet/storage.ts","../../src/actions/wallet/addressBook/storage.ts","../../src/actions/wallet/contact/storage.ts","../../src/actions/wallet/backup/importBackup.ts","../../src/commands/walletBackupImportCommand.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 AddressBookEntry {\n offset: string\n label?: string\n}\n\nexport interface AddressBook {\n entries: AddressBookEntry[]\n rootAddress: string\n version: number\n}\n\nexport type AddressBooksFile = Record<string, AddressBook>\n\nconst ADDRESS_BOOK_VERSION = 1\n\nexport function readAllAddressBooks(): AddressBooksFile {\n return readJsonFile<AddressBooksFile>(walletPaths().addressBooks) ?? {}\n}\n\nexport function writeAllAddressBooks(data: AddressBooksFile): void {\n writeJsonFile(walletPaths().addressBooks, data)\n}\n\nexport function readAddressBook(rootAddress: string): AddressBook {\n const all = readAllAddressBooks()\n const key = rootAddress.toLowerCase()\n return all[key] ?? {\n rootAddress: key,\n entries: [{ offset: '0' }, { offset: '1' }, { offset: '2' }],\n version: ADDRESS_BOOK_VERSION,\n }\n}\n\nexport function writeAddressBook(book: AddressBook): void {\n const all = readAllAddressBooks()\n all[book.rootAddress.toLowerCase()] = book\n writeAllAddressBooks(all)\n}\n\nexport function removeAddressBook(rootAddress: string): void {\n const all = readAllAddressBooks()\n const key = rootAddress.toLowerCase()\n if (key in all) {\n delete all[key]\n writeAllAddressBooks(all)\n }\n}\n\nexport function upsertAddressBookEntry(rootAddress: string, entry: AddressBookEntry): AddressBook {\n const book = readAddressBook(rootAddress)\n const existing = book.entries.find(e => e.offset === entry.offset)\n if (existing) {\n if (entry.label !== undefined) existing.label = entry.label\n } else {\n book.entries.push(entry)\n }\n writeAddressBook(book)\n return book\n}\n\nexport function removeAddressBookEntry(rootAddress: string, offset: string): AddressBook {\n const book = readAddressBook(rootAddress)\n book.entries = book.entries.filter(e => e.offset !== offset)\n writeAddressBook(book)\n return book\n}\n","import { walletPaths } from '../paths.ts'\nimport { readJsonFile, writeJsonFile } from '../storage.ts'\n\nexport interface ContactEntry {\n address: string\n label: string\n createdAt: string\n updatedAt: string\n}\n\nexport interface ContactsFile {\n entries: ContactEntry[]\n version: number\n}\n\nconst CONTACTS_VERSION = 1\n\nexport function readContacts(): ContactsFile {\n return readJsonFile<ContactsFile>(walletPaths().contacts) ?? {\n entries: [],\n version: CONTACTS_VERSION,\n }\n}\n\nexport function writeContacts(file: ContactsFile): void {\n writeJsonFile(walletPaths().contacts, file)\n}\n","import FS from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { AddressBook } from '../addressBook/storage.ts'\nimport { readAllAddressBooks, writeAllAddressBooks } from '../addressBook/storage.ts'\nimport type { ContactEntry, ContactsFile } from '../contact/storage.ts'\nimport { readContacts, writeContacts } from '../contact/storage.ts'\n\ninterface BackupEntry {\n schema: string\n exportedAt?: string\n}\n\ninterface AddressBookEntryFile extends BackupEntry, AddressBook {\n schema: 'network.xyo.wallet.addressBook'\n}\n\ninterface ContactsEntryFile extends BackupEntry, ContactsFile {\n schema: 'network.xyo.wallet.contacts'\n}\n\ninterface BackupFile {\n schema: string\n version: number\n entries: BackupEntry[]\n exportedAt: string\n sources?: string[]\n}\n\nexport interface ImportBackupOptions {\n file: string\n}\n\nexport function importBackup(options: ImportBackupOptions): void {\n const raw = FS.readFileSync(options.file, 'utf8')\n const parsed = JSON.parse(raw) as BackupFile\n if (parsed.schema !== 'network.xyo.wallet.backup') {\n throw new Error(`Not a wallet backup (schema=${parsed.schema}).`)\n }\n\n const allBooks = readAllAddressBooks()\n let booksImported = 0\n let contactsImported = 0\n const existingContacts = readContacts()\n\n for (const entry of parsed.entries) {\n if (entry.schema === 'network.xyo.wallet.addressBook') {\n const book = entry as AddressBookEntryFile\n const key = book.rootAddress.toLowerCase()\n const merged: AddressBook = allBooks[key]\n ? mergeAddressBooks(allBooks[key], book)\n : {\n rootAddress: key, entries: book.entries, version: book.version,\n }\n allBooks[key] = merged\n booksImported++\n } else if (entry.schema === 'network.xyo.wallet.contacts') {\n const contacts = entry as ContactsEntryFile\n for (const contact of contacts.entries) {\n upsertContact(existingContacts, contact)\n contactsImported++\n }\n }\n }\n\n if (booksImported > 0) writeAllAddressBooks(allBooks)\n if (contactsImported > 0) writeContacts(existingContacts)\n\n console.log(chalk.green(`Imported backup from ${options.file}`))\n console.log(chalk.gray(` address books: ${booksImported}, contacts: ${contactsImported}`))\n}\n\nfunction mergeAddressBooks(existing: AddressBook, incoming: AddressBook): AddressBook {\n const merged: AddressBook = {\n rootAddress: existing.rootAddress,\n version: Math.max(existing.version, incoming.version),\n entries: [...existing.entries],\n }\n for (const entry of incoming.entries) {\n const found = merged.entries.find(e => e.offset === entry.offset)\n if (found) {\n if (entry.label !== undefined) found.label = entry.label\n } else {\n merged.entries.push(entry)\n }\n }\n return merged\n}\n\nfunction upsertContact(file: ContactsFile, contact: ContactEntry): void {\n const normalized = contact.address.toLowerCase()\n const found = file.entries.find(e => e.address.toLowerCase() === normalized)\n if (found) {\n found.label = contact.label\n found.updatedAt = contact.updatedAt\n } else {\n file.entries.push({ ...contact, address: normalized })\n }\n}\n","import type { CommandModule } from 'yargs'\n\nimport { importBackup } from '../actions/wallet/index.ts'\n\nexport const walletBackupImportCommand: CommandModule = {\n command: 'import <file>',\n describe: 'Import a wallet backup JSON file (merges into current state)',\n builder: yargs =>\n yargs.positional('file', {\n type: 'string', demandOption: true, describe: 'Backup file path',\n }),\n handler: (argv) => {\n importBackup({ file: argv.file as string })\n },\n}\n"],"mappings":"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","names":["PATH","PATH","FS","FS"]}