@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,118 @@
1
+ // src/actions/datalake/dev/resetDevServer.ts
2
+ import { existsSync as existsSync2, rmSync } from "fs";
3
+ import chalk2 from "chalk";
4
+
5
+ // src/actions/datalake/dev/downDevServer.ts
6
+ import { clearCredentials, loadCredentials } from "@xylabs/aries-datalake-client";
7
+ import chalk from "chalk";
8
+
9
+ // src/actions/datalake/dev/state.ts
10
+ import {
11
+ existsSync,
12
+ mkdirSync,
13
+ readFileSync,
14
+ unlinkSync,
15
+ writeFileSync
16
+ } from "fs";
17
+
18
+ // src/actions/datalake/dev/paths.ts
19
+ import { homedir } from "os";
20
+ import path from "path";
21
+ function getAriesHome() {
22
+ return process.env.ARIES_HOME ?? path.join(homedir(), ".aries");
23
+ }
24
+ function getDevDir() {
25
+ return path.join(getAriesHome(), "dev");
26
+ }
27
+ function getDevStatePath() {
28
+ return path.join(getDevDir(), "state.json");
29
+ }
30
+ function getDevPidPath() {
31
+ return path.join(getDevDir(), "pid");
32
+ }
33
+
34
+ // src/actions/datalake/dev/state.ts
35
+ function readDevState() {
36
+ const filePath = getDevStatePath();
37
+ if (!existsSync(filePath)) return void 0;
38
+ try {
39
+ return JSON.parse(readFileSync(filePath, "utf8"));
40
+ } catch {
41
+ return void 0;
42
+ }
43
+ }
44
+ function clearDevState() {
45
+ for (const filePath of [getDevStatePath(), getDevPidPath()]) {
46
+ if (existsSync(filePath)) unlinkSync(filePath);
47
+ }
48
+ }
49
+ function isProcessAlive(pid) {
50
+ try {
51
+ process.kill(pid, 0);
52
+ return true;
53
+ } catch (error) {
54
+ const code = error.code;
55
+ return code === "EPERM";
56
+ }
57
+ }
58
+
59
+ // src/actions/datalake/dev/downDevServer.ts
60
+ var DEFAULT_GRACE_MS = 2e3;
61
+ var POLL_MS = 50;
62
+ async function downDevServer(options = {}) {
63
+ const state = readDevState();
64
+ if (!state) {
65
+ console.log(chalk.yellow("dev server is not running"));
66
+ return;
67
+ }
68
+ const graceMs = options.gracePeriodMs ?? DEFAULT_GRACE_MS;
69
+ if (!isProcessAlive(state.pid)) {
70
+ cleanup(state.controlUrl);
71
+ console.log(chalk.green(`dev server pid ${state.pid} was already stopped \u2014 cleaned up state`));
72
+ return;
73
+ }
74
+ try {
75
+ process.kill(state.pid, "SIGTERM");
76
+ } catch (error) {
77
+ const code = error.code;
78
+ if (code !== "ESRCH") throw error;
79
+ }
80
+ const deadline = Date.now() + graceMs;
81
+ while (Date.now() < deadline && isProcessAlive(state.pid)) {
82
+ await delay(POLL_MS);
83
+ }
84
+ if (isProcessAlive(state.pid)) {
85
+ try {
86
+ process.kill(state.pid, "SIGKILL");
87
+ } catch {
88
+ }
89
+ }
90
+ cleanup(state.controlUrl);
91
+ console.log(chalk.green(`dev server pid ${state.pid} stopped`));
92
+ }
93
+ function cleanup(controlUrl) {
94
+ const credentials = loadCredentials();
95
+ if (credentials?.baseUrl === controlUrl) {
96
+ clearCredentials();
97
+ }
98
+ clearDevState();
99
+ }
100
+ function delay(ms) {
101
+ return new Promise((resolve) => setTimeout(resolve, ms));
102
+ }
103
+
104
+ // src/actions/datalake/dev/resetDevServer.ts
105
+ async function resetDevServer() {
106
+ await downDevServer();
107
+ const dir = getDevDir();
108
+ if (!existsSync2(dir)) {
109
+ console.log(chalk2.green("nothing to reset"));
110
+ return;
111
+ }
112
+ rmSync(dir, { recursive: true, force: true });
113
+ console.log(chalk2.green(`reset ${dir}`));
114
+ }
115
+ export {
116
+ resetDevServer
117
+ };
118
+ //# sourceMappingURL=resetDevServer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/datalake/dev/resetDevServer.ts","../../../../src/actions/datalake/dev/downDevServer.ts","../../../../src/actions/datalake/dev/state.ts","../../../../src/actions/datalake/dev/paths.ts"],"sourcesContent":["import { existsSync, rmSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { downDevServer } from './downDevServer.ts'\nimport { getDevDir } from './paths.ts'\n\n/**\n * Stops the dev server and deletes all dev state. Useful after a crashed\n * server leaves stale sockets or a dirty log file.\n */\nexport async function resetDevServer(): Promise<void> {\n await downDevServer()\n const dir = getDevDir()\n if (!existsSync(dir)) {\n console.log(chalk.green('nothing to reset'))\n return\n }\n rmSync(dir, { recursive: true, force: true })\n console.log(chalk.green(`reset ${dir}`))\n}\n","import { clearCredentials, loadCredentials } from '@xylabs/aries-datalake-client'\nimport chalk from 'chalk'\n\nimport {\n clearDevState, isProcessAlive, readDevState,\n} from './state.ts'\n\n/**\n * Stops the dev server spawned by `upDevServer`. Sends SIGTERM, waits up to\n * `gracePeriodMs` for a clean exit, then SIGKILLs if the process is still\n * around. Clears credentials only when they still point at the dev server —\n * we never want to stomp a user's real sign-in.\n */\nexport interface DownDevServerOptions {\n gracePeriodMs?: number\n}\n\nconst DEFAULT_GRACE_MS = 2000\nconst POLL_MS = 50\n\nexport async function downDevServer(options: DownDevServerOptions = {}): Promise<void> {\n const state = readDevState()\n if (!state) {\n console.log(chalk.yellow('dev server is not running'))\n return\n }\n const graceMs = options.gracePeriodMs ?? DEFAULT_GRACE_MS\n\n if (!isProcessAlive(state.pid)) {\n cleanup(state.controlUrl)\n console.log(chalk.green(`dev server pid ${state.pid} was already stopped — cleaned up state`))\n return\n }\n\n try {\n process.kill(state.pid, 'SIGTERM')\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code\n if (code !== 'ESRCH') throw error\n }\n\n const deadline = Date.now() + graceMs\n while (Date.now() < deadline && isProcessAlive(state.pid)) {\n await delay(POLL_MS)\n }\n if (isProcessAlive(state.pid)) {\n try {\n process.kill(state.pid, 'SIGKILL')\n } catch {\n // best effort\n }\n }\n\n cleanup(state.controlUrl)\n console.log(chalk.green(`dev server pid ${state.pid} stopped`))\n}\n\nfunction cleanup(controlUrl: string): void {\n const credentials = loadCredentials()\n if (credentials?.baseUrl === controlUrl) {\n clearCredentials()\n }\n clearDevState()\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n","import {\n existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\n\nimport {\n getDevDir, getDevPidPath, getDevStatePath,\n} from './paths.ts'\n\n/**\n * On-disk bookkeeping for a running dev server. Lives in `~/.aries/dev/` so\n * it survives across CLI invocations and can be queried by `dev status` /\n * `dev logs` / `dev down`.\n */\nexport interface DevState {\n pid: number\n controlUrl: string\n planeUrl: string\n controlPort: number\n planePort: number\n /** User id the dev auth token resolves to on the control plane. */\n userId: string\n /** Bearer token accepted by the dev control plane (written to credentials). */\n authToken: string\n /** Secret the dev control plane HMAC-signs data-plane JWTs with. */\n signingSecret: string\n /** ISO-8601 startup time. */\n startedAt: string\n}\n\nexport function readDevState(): DevState | undefined {\n const filePath = getDevStatePath()\n if (!existsSync(filePath)) return undefined\n try {\n return JSON.parse(readFileSync(filePath, 'utf8')) as DevState\n } catch {\n return undefined\n }\n}\n\nexport function writeDevState(state: DevState): void {\n const dir = getDevDir()\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n writeFileSync(getDevStatePath(), JSON.stringify(state, undefined, 2), 'utf8')\n writeFileSync(getDevPidPath(), String(state.pid), 'utf8')\n}\n\nexport function clearDevState(): void {\n for (const filePath of [getDevStatePath(), getDevPidPath()]) {\n if (existsSync(filePath)) unlinkSync(filePath)\n }\n}\n\n/**\n * Returns true iff the pid is still a live process. `kill(pid, 0)` throws\n * ESRCH when the process doesn't exist and EPERM when it does but we can't\n * signal it — both answer the question we're asking.\n */\nexport function isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0)\n return true\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code\n return code === 'EPERM'\n }\n}\n","import { homedir } from 'node:os'\nimport path from 'node:path'\n\nfunction getAriesHome(): string {\n return process.env.ARIES_HOME ?? path.join(homedir(), '.aries')\n}\n\nexport function getDevDir(): string {\n return path.join(getAriesHome(), 'dev')\n}\n\nexport function getDevStatePath(): string {\n return path.join(getDevDir(), 'state.json')\n}\n\nexport function getDevPidPath(): string {\n return path.join(getDevDir(), 'pid')\n}\n\nexport function getDevLogPath(): string {\n return path.join(getDevDir(), 'server.log')\n}\n"],"mappings":"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","names":["existsSync","chalk","existsSync","chalk"]}
@@ -0,0 +1,26 @@
1
+ // src/actions/datalake/dev/resolveServerBin.ts
2
+ import { existsSync } from "fs";
3
+ import { createRequire } from "module";
4
+ import path from "path";
5
+ var require2 = createRequire(import.meta.url);
6
+ function resolveServerBin() {
7
+ let packageJsonPath;
8
+ try {
9
+ packageJsonPath = require2.resolve("@xylabs/aries-datalake-plane/package.json");
10
+ } catch {
11
+ throw new Error(
12
+ "@xylabs/aries-datalake-plane is not installed. Install it as a dev dependency to use `aries datalake dev` locally."
13
+ );
14
+ }
15
+ const binPath = path.join(path.dirname(packageJsonPath), "dist", "bin", "devServer.mjs");
16
+ if (!existsSync(binPath)) {
17
+ throw new Error(
18
+ `Dev server binary not found at ${binPath}. Run \`pnpm xy compile\` to build it.`
19
+ );
20
+ }
21
+ return binPath;
22
+ }
23
+ export {
24
+ resolveServerBin
25
+ };
26
+ //# sourceMappingURL=resolveServerBin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/datalake/dev/resolveServerBin.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\n\n// Static type-only import so `deplint` recognizes the package as a declared\n// dependency. The bin path itself is resolved at runtime via `require.resolve`.\nimport type { BuildPlaneOptions as _KeepAsDep } from '@xylabs/aries-datalake-plane'\n\nconst require = createRequire(import.meta.url)\n\n/**\n * Resolves the absolute path to `aries-datalake-dev` (the plane/control dev\n * server binary) from the installed `@xylabs/aries-datalake-plane` package.\n * Throws with an actionable message if the package isn't available — e.g.\n * when someone installs `@xylabs/aries` standalone without the dev server.\n */\nexport function resolveServerBin(): string {\n let packageJsonPath: string\n try {\n packageJsonPath = require.resolve('@xylabs/aries-datalake-plane/package.json')\n } catch {\n throw new Error(\n '@xylabs/aries-datalake-plane is not installed. '\n + 'Install it as a dev dependency to use `aries datalake dev` locally.',\n )\n }\n const binPath = path.join(path.dirname(packageJsonPath), 'dist', 'bin', 'devServer.mjs')\n if (!existsSync(binPath)) {\n throw new Error(\n `Dev server binary not found at ${binPath}. `\n + 'Run `pnpm xy compile` to build it.',\n )\n }\n return binPath\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAMjB,IAAMA,WAAU,cAAc,YAAY,GAAG;AAQtC,SAAS,mBAA2B;AACzC,MAAI;AACJ,MAAI;AACF,sBAAkBA,SAAQ,QAAQ,2CAA2C;AAAA,EAC/E,QAAQ;AACN,UAAM,IAAI;AAAA,MACR;AAAA,IAEF;AAAA,EACF;AACA,QAAM,UAAU,KAAK,KAAK,KAAK,QAAQ,eAAe,GAAG,QAAQ,OAAO,eAAe;AACvF,MAAI,CAAC,WAAW,OAAO,GAAG;AACxB,UAAM,IAAI;AAAA,MACR,kCAAkC,OAAO;AAAA,IAE3C;AAAA,EACF;AACA,SAAO;AACT;","names":["require"]}
@@ -0,0 +1,62 @@
1
+ // src/actions/datalake/dev/state.ts
2
+ import {
3
+ existsSync,
4
+ mkdirSync,
5
+ readFileSync,
6
+ unlinkSync,
7
+ writeFileSync
8
+ } from "fs";
9
+
10
+ // src/actions/datalake/dev/paths.ts
11
+ import { homedir } from "os";
12
+ import path from "path";
13
+ function getAriesHome() {
14
+ return process.env.ARIES_HOME ?? path.join(homedir(), ".aries");
15
+ }
16
+ function getDevDir() {
17
+ return path.join(getAriesHome(), "dev");
18
+ }
19
+ function getDevStatePath() {
20
+ return path.join(getDevDir(), "state.json");
21
+ }
22
+ function getDevPidPath() {
23
+ return path.join(getDevDir(), "pid");
24
+ }
25
+
26
+ // src/actions/datalake/dev/state.ts
27
+ function readDevState() {
28
+ const filePath = getDevStatePath();
29
+ if (!existsSync(filePath)) return void 0;
30
+ try {
31
+ return JSON.parse(readFileSync(filePath, "utf8"));
32
+ } catch {
33
+ return void 0;
34
+ }
35
+ }
36
+ function writeDevState(state) {
37
+ const dir = getDevDir();
38
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
39
+ writeFileSync(getDevStatePath(), JSON.stringify(state, void 0, 2), "utf8");
40
+ writeFileSync(getDevPidPath(), String(state.pid), "utf8");
41
+ }
42
+ function clearDevState() {
43
+ for (const filePath of [getDevStatePath(), getDevPidPath()]) {
44
+ if (existsSync(filePath)) unlinkSync(filePath);
45
+ }
46
+ }
47
+ function isProcessAlive(pid) {
48
+ try {
49
+ process.kill(pid, 0);
50
+ return true;
51
+ } catch (error) {
52
+ const code = error.code;
53
+ return code === "EPERM";
54
+ }
55
+ }
56
+ export {
57
+ clearDevState,
58
+ isProcessAlive,
59
+ readDevState,
60
+ writeDevState
61
+ };
62
+ //# sourceMappingURL=state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/datalake/dev/state.ts","../../../../src/actions/datalake/dev/paths.ts"],"sourcesContent":["import {\n existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\n\nimport {\n getDevDir, getDevPidPath, getDevStatePath,\n} from './paths.ts'\n\n/**\n * On-disk bookkeeping for a running dev server. Lives in `~/.aries/dev/` so\n * it survives across CLI invocations and can be queried by `dev status` /\n * `dev logs` / `dev down`.\n */\nexport interface DevState {\n pid: number\n controlUrl: string\n planeUrl: string\n controlPort: number\n planePort: number\n /** User id the dev auth token resolves to on the control plane. */\n userId: string\n /** Bearer token accepted by the dev control plane (written to credentials). */\n authToken: string\n /** Secret the dev control plane HMAC-signs data-plane JWTs with. */\n signingSecret: string\n /** ISO-8601 startup time. */\n startedAt: string\n}\n\nexport function readDevState(): DevState | undefined {\n const filePath = getDevStatePath()\n if (!existsSync(filePath)) return undefined\n try {\n return JSON.parse(readFileSync(filePath, 'utf8')) as DevState\n } catch {\n return undefined\n }\n}\n\nexport function writeDevState(state: DevState): void {\n const dir = getDevDir()\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n writeFileSync(getDevStatePath(), JSON.stringify(state, undefined, 2), 'utf8')\n writeFileSync(getDevPidPath(), String(state.pid), 'utf8')\n}\n\nexport function clearDevState(): void {\n for (const filePath of [getDevStatePath(), getDevPidPath()]) {\n if (existsSync(filePath)) unlinkSync(filePath)\n }\n}\n\n/**\n * Returns true iff the pid is still a live process. `kill(pid, 0)` throws\n * ESRCH when the process doesn't exist and EPERM when it does but we can't\n * signal it — both answer the question we're asking.\n */\nexport function isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0)\n return true\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code\n return code === 'EPERM'\n }\n}\n","import { homedir } from 'node:os'\nimport path from 'node:path'\n\nfunction getAriesHome(): string {\n return process.env.ARIES_HOME ?? path.join(homedir(), '.aries')\n}\n\nexport function getDevDir(): string {\n return path.join(getAriesHome(), 'dev')\n}\n\nexport function getDevStatePath(): string {\n return path.join(getDevDir(), 'state.json')\n}\n\nexport function getDevPidPath(): string {\n return path.join(getDevDir(), 'pid')\n}\n\nexport function getDevLogPath(): string {\n return path.join(getDevDir(), 'server.log')\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAAY;AAAA,EAAW;AAAA,EAAc;AAAA,EAAY;AAAA,OAC5C;;;ACFP,SAAS,eAAe;AACxB,OAAO,UAAU;AAEjB,SAAS,eAAuB;AAC9B,SAAO,QAAQ,IAAI,cAAc,KAAK,KAAK,QAAQ,GAAG,QAAQ;AAChE;AAEO,SAAS,YAAoB;AAClC,SAAO,KAAK,KAAK,aAAa,GAAG,KAAK;AACxC;AAEO,SAAS,kBAA0B;AACxC,SAAO,KAAK,KAAK,UAAU,GAAG,YAAY;AAC5C;AAEO,SAAS,gBAAwB;AACtC,SAAO,KAAK,KAAK,UAAU,GAAG,KAAK;AACrC;;;ADYO,SAAS,eAAqC;AACnD,QAAM,WAAW,gBAAgB;AACjC,MAAI,CAAC,WAAW,QAAQ,EAAG,QAAO;AAClC,MAAI;AACF,WAAO,KAAK,MAAM,aAAa,UAAU,MAAM,CAAC;AAAA,EAClD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,cAAc,OAAuB;AACnD,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,WAAW,GAAG,EAAG,WAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AACxD,gBAAc,gBAAgB,GAAG,KAAK,UAAU,OAAO,QAAW,CAAC,GAAG,MAAM;AAC5E,gBAAc,cAAc,GAAG,OAAO,MAAM,GAAG,GAAG,MAAM;AAC1D;AAEO,SAAS,gBAAsB;AACpC,aAAW,YAAY,CAAC,gBAAgB,GAAG,cAAc,CAAC,GAAG;AAC3D,QAAI,WAAW,QAAQ,EAAG,YAAW,QAAQ;AAAA,EAC/C;AACF;AAOO,SAAS,eAAe,KAAsB;AACnD,MAAI;AACF,YAAQ,KAAK,KAAK,CAAC;AACnB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,OAAQ,MAAgC;AAC9C,WAAO,SAAS;AAAA,EAClB;AACF;","names":[]}
@@ -0,0 +1,101 @@
1
+ // src/actions/datalake/dev/statusDevServer.ts
2
+ import chalk from "chalk";
3
+
4
+ // src/actions/datalake/dev/paths.ts
5
+ import { homedir } from "os";
6
+ import path from "path";
7
+ function getAriesHome() {
8
+ return process.env.ARIES_HOME ?? path.join(homedir(), ".aries");
9
+ }
10
+ function getDevDir() {
11
+ return path.join(getAriesHome(), "dev");
12
+ }
13
+ function getDevStatePath() {
14
+ return path.join(getDevDir(), "state.json");
15
+ }
16
+ function getDevLogPath() {
17
+ return path.join(getDevDir(), "server.log");
18
+ }
19
+
20
+ // src/actions/datalake/dev/state.ts
21
+ import {
22
+ existsSync,
23
+ mkdirSync,
24
+ readFileSync,
25
+ unlinkSync,
26
+ writeFileSync
27
+ } from "fs";
28
+ function readDevState() {
29
+ const filePath = getDevStatePath();
30
+ if (!existsSync(filePath)) return void 0;
31
+ try {
32
+ return JSON.parse(readFileSync(filePath, "utf8"));
33
+ } catch {
34
+ return void 0;
35
+ }
36
+ }
37
+ function isProcessAlive(pid) {
38
+ try {
39
+ process.kill(pid, 0);
40
+ return true;
41
+ } catch (error) {
42
+ const code = error.code;
43
+ return code === "EPERM";
44
+ }
45
+ }
46
+
47
+ // src/actions/datalake/dev/statusDevServer.ts
48
+ async function statusDevServer() {
49
+ const state = readDevState();
50
+ if (!state) {
51
+ console.log(chalk.yellow("dev server not running"));
52
+ process.exitCode = 3;
53
+ return;
54
+ }
55
+ const alive = isProcessAlive(state.pid);
56
+ const healthy = alive ? await pingHealth(state.controlUrl) : false;
57
+ const uptime = formatUptime(state.startedAt);
58
+ console.log(chalk.cyan("dev server status"));
59
+ console.log(` ${chalk.gray("state:")} ${statusLabel(alive, healthy)}`);
60
+ console.log(` ${chalk.gray("pid:")} ${state.pid}`);
61
+ console.log(` ${chalk.gray("control:")} ${state.controlUrl}`);
62
+ console.log(` ${chalk.gray("data:")} ${state.planeUrl}`);
63
+ console.log(` ${chalk.gray("user:")} ${state.userId}`);
64
+ console.log(` ${chalk.gray("started:")} ${state.startedAt}${uptime ? ` (${uptime})` : ""}`);
65
+ console.log(` ${chalk.gray("log:")} ${getDevLogPath()}`);
66
+ if (alive && !healthy) {
67
+ process.exitCode = 2;
68
+ } else if (!alive) {
69
+ process.exitCode = 3;
70
+ }
71
+ }
72
+ function statusLabel(alive, healthy) {
73
+ if (alive && healthy) return chalk.green("running + healthy");
74
+ if (alive) return chalk.yellow("running but unresponsive");
75
+ return chalk.red("stale state (process gone)");
76
+ }
77
+ async function pingHealth(controlUrl) {
78
+ try {
79
+ const controller = new AbortController();
80
+ const timeout = setTimeout(() => controller.abort(), 1e3);
81
+ const response = await fetch(`${controlUrl}/v1/health`, { signal: controller.signal });
82
+ clearTimeout(timeout);
83
+ return response.ok;
84
+ } catch {
85
+ return false;
86
+ }
87
+ }
88
+ function formatUptime(startedAt) {
89
+ const started = new Date(startedAt).getTime();
90
+ if (Number.isNaN(started)) return "";
91
+ const seconds = Math.max(0, Math.floor((Date.now() - started) / 1e3));
92
+ if (seconds < 60) return `${seconds}s`;
93
+ const minutes = Math.floor(seconds / 60);
94
+ if (minutes < 60) return `${minutes}m ${seconds % 60}s`;
95
+ const hours = Math.floor(minutes / 60);
96
+ return `${hours}h ${minutes % 60}m`;
97
+ }
98
+ export {
99
+ statusDevServer
100
+ };
101
+ //# sourceMappingURL=statusDevServer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/datalake/dev/statusDevServer.ts","../../../../src/actions/datalake/dev/paths.ts","../../../../src/actions/datalake/dev/state.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport { getDevLogPath } from './paths.ts'\nimport { isProcessAlive, readDevState } from './state.ts'\n\nexport async function statusDevServer(): Promise<void> {\n const state = readDevState()\n if (!state) {\n console.log(chalk.yellow('dev server not running'))\n process.exitCode = 3\n return\n }\n\n const alive = isProcessAlive(state.pid)\n const healthy = alive ? await pingHealth(state.controlUrl) : false\n const uptime = formatUptime(state.startedAt)\n\n console.log(chalk.cyan('dev server status'))\n console.log(` ${chalk.gray('state:')} ${statusLabel(alive, healthy)}`)\n console.log(` ${chalk.gray('pid:')} ${state.pid}`)\n console.log(` ${chalk.gray('control:')} ${state.controlUrl}`)\n console.log(` ${chalk.gray('data:')} ${state.planeUrl}`)\n console.log(` ${chalk.gray('user:')} ${state.userId}`)\n console.log(` ${chalk.gray('started:')} ${state.startedAt}${uptime ? ` (${uptime})` : ''}`)\n console.log(` ${chalk.gray('log:')} ${getDevLogPath()}`)\n\n if (alive && !healthy) {\n process.exitCode = 2\n } else if (!alive) {\n process.exitCode = 3\n }\n}\n\nfunction statusLabel(alive: boolean, healthy: boolean): string {\n if (alive && healthy) return chalk.green('running + healthy')\n if (alive) return chalk.yellow('running but unresponsive')\n return chalk.red('stale state (process gone)')\n}\n\nasync function pingHealth(controlUrl: string): Promise<boolean> {\n try {\n const controller = new AbortController()\n const timeout = setTimeout(() => controller.abort(), 1000)\n const response = await fetch(`${controlUrl}/v1/health`, { signal: controller.signal })\n clearTimeout(timeout)\n return response.ok\n } catch {\n return false\n }\n}\n\nfunction formatUptime(startedAt: string): string {\n const started = new Date(startedAt).getTime()\n if (Number.isNaN(started)) return ''\n const seconds = Math.max(0, Math.floor((Date.now() - started) / 1000))\n if (seconds < 60) return `${seconds}s`\n const minutes = Math.floor(seconds / 60)\n if (minutes < 60) return `${minutes}m ${seconds % 60}s`\n const hours = Math.floor(minutes / 60)\n return `${hours}h ${minutes % 60}m`\n}\n","import { homedir } from 'node:os'\nimport path from 'node:path'\n\nfunction getAriesHome(): string {\n return process.env.ARIES_HOME ?? path.join(homedir(), '.aries')\n}\n\nexport function getDevDir(): string {\n return path.join(getAriesHome(), 'dev')\n}\n\nexport function getDevStatePath(): string {\n return path.join(getDevDir(), 'state.json')\n}\n\nexport function getDevPidPath(): string {\n return path.join(getDevDir(), 'pid')\n}\n\nexport function getDevLogPath(): string {\n return path.join(getDevDir(), 'server.log')\n}\n","import {\n existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\n\nimport {\n getDevDir, getDevPidPath, getDevStatePath,\n} from './paths.ts'\n\n/**\n * On-disk bookkeeping for a running dev server. Lives in `~/.aries/dev/` so\n * it survives across CLI invocations and can be queried by `dev status` /\n * `dev logs` / `dev down`.\n */\nexport interface DevState {\n pid: number\n controlUrl: string\n planeUrl: string\n controlPort: number\n planePort: number\n /** User id the dev auth token resolves to on the control plane. */\n userId: string\n /** Bearer token accepted by the dev control plane (written to credentials). */\n authToken: string\n /** Secret the dev control plane HMAC-signs data-plane JWTs with. */\n signingSecret: string\n /** ISO-8601 startup time. */\n startedAt: string\n}\n\nexport function readDevState(): DevState | undefined {\n const filePath = getDevStatePath()\n if (!existsSync(filePath)) return undefined\n try {\n return JSON.parse(readFileSync(filePath, 'utf8')) as DevState\n } catch {\n return undefined\n }\n}\n\nexport function writeDevState(state: DevState): void {\n const dir = getDevDir()\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n writeFileSync(getDevStatePath(), JSON.stringify(state, undefined, 2), 'utf8')\n writeFileSync(getDevPidPath(), String(state.pid), 'utf8')\n}\n\nexport function clearDevState(): void {\n for (const filePath of [getDevStatePath(), getDevPidPath()]) {\n if (existsSync(filePath)) unlinkSync(filePath)\n }\n}\n\n/**\n * Returns true iff the pid is still a live process. `kill(pid, 0)` throws\n * ESRCH when the process doesn't exist and EPERM when it does but we can't\n * signal it — both answer the question we're asking.\n */\nexport function isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0)\n return true\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code\n return code === 'EPERM'\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,221 @@
1
+ // src/actions/datalake/dev/upDevServer.ts
2
+ import { spawn } from "child_process";
3
+ import { randomBytes } from "crypto";
4
+ import {
5
+ existsSync as existsSync3,
6
+ mkdirSync as mkdirSync2,
7
+ openSync
8
+ } from "fs";
9
+ import path3 from "path";
10
+ import { saveCredentials } from "@xylabs/aries-datalake-client";
11
+ import chalk from "chalk";
12
+
13
+ // src/actions/datalake/dev/paths.ts
14
+ import { homedir } from "os";
15
+ import path from "path";
16
+ function getAriesHome() {
17
+ return process.env.ARIES_HOME ?? path.join(homedir(), ".aries");
18
+ }
19
+ function getDevDir() {
20
+ return path.join(getAriesHome(), "dev");
21
+ }
22
+ function getDevStatePath() {
23
+ return path.join(getDevDir(), "state.json");
24
+ }
25
+ function getDevPidPath() {
26
+ return path.join(getDevDir(), "pid");
27
+ }
28
+ function getDevLogPath() {
29
+ return path.join(getDevDir(), "server.log");
30
+ }
31
+
32
+ // src/actions/datalake/dev/resolveServerBin.ts
33
+ import { existsSync } from "fs";
34
+ import { createRequire } from "module";
35
+ import path2 from "path";
36
+ var require2 = createRequire(import.meta.url);
37
+ function resolveServerBin() {
38
+ let packageJsonPath;
39
+ try {
40
+ packageJsonPath = require2.resolve("@xylabs/aries-datalake-plane/package.json");
41
+ } catch {
42
+ throw new Error(
43
+ "@xylabs/aries-datalake-plane is not installed. Install it as a dev dependency to use `aries datalake dev` locally."
44
+ );
45
+ }
46
+ const binPath = path2.join(path2.dirname(packageJsonPath), "dist", "bin", "devServer.mjs");
47
+ if (!existsSync(binPath)) {
48
+ throw new Error(
49
+ `Dev server binary not found at ${binPath}. Run \`pnpm xy compile\` to build it.`
50
+ );
51
+ }
52
+ return binPath;
53
+ }
54
+
55
+ // src/actions/datalake/dev/state.ts
56
+ import {
57
+ existsSync as existsSync2,
58
+ mkdirSync,
59
+ readFileSync,
60
+ unlinkSync,
61
+ writeFileSync
62
+ } from "fs";
63
+ function readDevState() {
64
+ const filePath = getDevStatePath();
65
+ if (!existsSync2(filePath)) return void 0;
66
+ try {
67
+ return JSON.parse(readFileSync(filePath, "utf8"));
68
+ } catch {
69
+ return void 0;
70
+ }
71
+ }
72
+ function writeDevState(state) {
73
+ const dir = getDevDir();
74
+ if (!existsSync2(dir)) mkdirSync(dir, { recursive: true });
75
+ writeFileSync(getDevStatePath(), JSON.stringify(state, void 0, 2), "utf8");
76
+ writeFileSync(getDevPidPath(), String(state.pid), "utf8");
77
+ }
78
+ function clearDevState() {
79
+ for (const filePath of [getDevStatePath(), getDevPidPath()]) {
80
+ if (existsSync2(filePath)) unlinkSync(filePath);
81
+ }
82
+ }
83
+ function isProcessAlive(pid) {
84
+ try {
85
+ process.kill(pid, 0);
86
+ return true;
87
+ } catch (error) {
88
+ const code = error.code;
89
+ return code === "EPERM";
90
+ }
91
+ }
92
+
93
+ // src/actions/datalake/dev/waitForHealth.ts
94
+ var POLL_INTERVAL_MS = 100;
95
+ async function waitForHealth(baseUrl, timeoutMs) {
96
+ const deadline = Date.now() + timeoutMs;
97
+ const url = `${baseUrl.replace(/\/$/, "")}/v1/health`;
98
+ while (Date.now() < deadline) {
99
+ try {
100
+ const response = await fetch(url);
101
+ if (response.ok) return true;
102
+ } catch {
103
+ }
104
+ await delay(POLL_INTERVAL_MS);
105
+ }
106
+ return false;
107
+ }
108
+ function delay(ms) {
109
+ return new Promise((resolve) => setTimeout(resolve, ms));
110
+ }
111
+
112
+ // src/actions/datalake/dev/upDevServer.ts
113
+ var DEFAULT_CONTROL_PORT = 8787;
114
+ var DEFAULT_PLANE_PORT = 8788;
115
+ var DEFAULT_TIMEOUT_SECONDS = 10;
116
+ function resolveOptions(options) {
117
+ const controlPort = options.controlPort ?? DEFAULT_CONTROL_PORT;
118
+ const planePort = options.planePort ?? DEFAULT_PLANE_PORT;
119
+ const rotate = options.auditRotate === true;
120
+ return {
121
+ controlPort,
122
+ planePort,
123
+ controlUrl: `http://127.0.0.1:${controlPort}`,
124
+ planeUrl: `http://127.0.0.1:${planePort}`,
125
+ userId: options.userId ?? "dev-user",
126
+ authToken: options.authToken ?? randomBytes(16).toString("hex"),
127
+ signingSecret: options.signingSecret ?? randomBytes(32).toString("hex"),
128
+ timeoutMs: (options.timeoutSeconds ?? DEFAULT_TIMEOUT_SECONDS) * 1e3,
129
+ persistDir: options.persist ? path3.join(getDevDir(), "store") : void 0,
130
+ auditLogPath: options.audit && !rotate ? path3.join(getDevDir(), "audit.log") : void 0,
131
+ auditDir: options.audit && rotate ? path3.join(getDevDir(), "audit") : void 0,
132
+ auditKeepDays: rotate ? options.auditKeepDays : void 0
133
+ };
134
+ }
135
+ function spawnDaemon(binPath, resolved) {
136
+ const devDir = getDevDir();
137
+ if (!existsSync3(devDir)) mkdirSync2(devDir, { recursive: true });
138
+ const logFd = openSync(getDevLogPath(), "a");
139
+ const env = {
140
+ ...process.env,
141
+ CONTROL_PORT: String(resolved.controlPort),
142
+ PLANE_PORT: String(resolved.planePort),
143
+ HOST: "127.0.0.1",
144
+ DATALAKE_CONTROL_TOKENS: `${resolved.authToken}=${resolved.userId}`,
145
+ TOKEN_SIGNING_SECRET: resolved.signingSecret,
146
+ DATALAKE_ORIGIN_URL: resolved.planeUrl,
147
+ LOG_LEVEL: process.env.LOG_LEVEL ?? "info"
148
+ };
149
+ if (resolved.persistDir) env.DATALAKE_PERSIST_DIR = resolved.persistDir;
150
+ if (resolved.auditLogPath) env.DATALAKE_AUDIT_LOG = resolved.auditLogPath;
151
+ if (resolved.auditDir) env.DATALAKE_AUDIT_DIR = resolved.auditDir;
152
+ if (resolved.auditKeepDays !== void 0) env.DATALAKE_AUDIT_MAX_AGE_DAYS = String(resolved.auditKeepDays);
153
+ const child = spawn(process.execPath, [binPath], {
154
+ detached: true,
155
+ stdio: ["ignore", logFd, logFd],
156
+ env
157
+ });
158
+ child.unref();
159
+ return child;
160
+ }
161
+ function describeAudit(resolved) {
162
+ if (resolved.auditDir) {
163
+ return `rotating ${resolved.auditDir}${resolved.auditKeepDays ? ` (keep ${resolved.auditKeepDays}d)` : ""}`;
164
+ }
165
+ return resolved.auditLogPath ?? "disabled";
166
+ }
167
+ function printReadyBanner(state, resolved) {
168
+ console.log(chalk.green("dev server ready"));
169
+ console.log(` ${chalk.gray("control:")} ${state.controlUrl}`);
170
+ console.log(` ${chalk.gray("data:")} ${state.planeUrl}`);
171
+ console.log(` ${chalk.gray("user:")} ${state.userId}`);
172
+ console.log(` ${chalk.gray("log:")} ${getDevLogPath()}`);
173
+ console.log(` ${chalk.gray("store:")} ${resolved.persistDir ? `persisted (${resolved.persistDir})` : "in-memory"}`);
174
+ console.log(` ${chalk.gray("audit:")} ${describeAudit(resolved)}`);
175
+ console.log(chalk.gray("\nCLI is configured \u2014 try `aries datalake list`"));
176
+ }
177
+ async function upDevServer(options = {}) {
178
+ const existing = readDevState();
179
+ if (existing && isProcessAlive(existing.pid)) {
180
+ console.log(chalk.yellow(`dev server already running (pid ${existing.pid}) at ${existing.controlUrl}`));
181
+ return existing;
182
+ }
183
+ if (existing) clearDevState();
184
+ const resolved = resolveOptions(options);
185
+ const child = spawnDaemon(resolveServerBin(), resolved);
186
+ if (!child.pid) throw new Error("Failed to spawn dev server process");
187
+ console.log(chalk.gray(`starting dev server (pid ${child.pid})...`));
188
+ const healthy = await waitForHealth(resolved.controlUrl, resolved.timeoutMs);
189
+ if (!healthy) {
190
+ try {
191
+ process.kill(child.pid, "SIGTERM");
192
+ } catch {
193
+ }
194
+ throw new Error(
195
+ `Dev server did not become healthy within ${resolved.timeoutMs / 1e3}s. Check logs at ${getDevLogPath()}`
196
+ );
197
+ }
198
+ const state = {
199
+ pid: child.pid,
200
+ controlUrl: resolved.controlUrl,
201
+ planeUrl: resolved.planeUrl,
202
+ controlPort: resolved.controlPort,
203
+ planePort: resolved.planePort,
204
+ userId: resolved.userId,
205
+ authToken: resolved.authToken,
206
+ signingSecret: resolved.signingSecret,
207
+ startedAt: (/* @__PURE__ */ new Date()).toISOString()
208
+ };
209
+ writeDevState(state);
210
+ saveCredentials({
211
+ baseUrl: resolved.controlUrl,
212
+ authToken: resolved.authToken,
213
+ userId: resolved.userId
214
+ });
215
+ printReadyBanner(state, resolved);
216
+ return state;
217
+ }
218
+ export {
219
+ upDevServer
220
+ };
221
+ //# sourceMappingURL=upDevServer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/datalake/dev/upDevServer.ts","../../../../src/actions/datalake/dev/paths.ts","../../../../src/actions/datalake/dev/resolveServerBin.ts","../../../../src/actions/datalake/dev/state.ts","../../../../src/actions/datalake/dev/waitForHealth.ts"],"sourcesContent":["import type { ChildProcess } from 'node:child_process'\nimport { spawn } from 'node:child_process'\nimport { randomBytes } from 'node:crypto'\nimport {\n existsSync, mkdirSync, openSync,\n} from 'node:fs'\nimport path from 'node:path'\n\nimport { saveCredentials } from '@xylabs/aries-datalake-client'\nimport chalk from 'chalk'\n\nimport { getDevDir, getDevLogPath } from './paths.ts'\nimport { resolveServerBin } from './resolveServerBin.ts'\nimport {\n clearDevState, type DevState, isProcessAlive, readDevState, writeDevState,\n} from './state.ts'\nimport { waitForHealth } from './waitForHealth.ts'\n\nexport interface UpDevServerOptions {\n controlPort?: number\n planePort?: number\n /** Seconds to wait for the dev server to become healthy. Default 10. */\n timeoutSeconds?: number\n /** Override the bearer token. Default: random hex. */\n authToken?: string\n /** Override the HMAC signing secret. Default: random hex. */\n signingSecret?: string\n /** Override the user id the dev token resolves to. Default: 'dev-user'. */\n userId?: string\n /**\n * Persist the datalake + payload stores to `<ARIES_HOME>/dev/store/` so\n * state survives a `dev down` + `dev up` cycle. Default: false.\n */\n persist?: boolean\n /**\n * Enable the data-plane audit log. When true, every request is appended\n * to `<ARIES_HOME>/dev/audit.log` as JSONL.\n */\n audit?: boolean\n /**\n * Use a rotating directory writer instead of a single file. Files live at\n * `<ARIES_HOME>/dev/audit/audit-YYYY-MM-DD.log`.\n */\n auditRotate?: boolean\n /** Retention window in days when rotation is enabled. */\n auditKeepDays?: number\n}\n\nconst DEFAULT_CONTROL_PORT = 8787\nconst DEFAULT_PLANE_PORT = 8788\nconst DEFAULT_TIMEOUT_SECONDS = 10\n\ninterface ResolvedOptions {\n controlPort: number\n planePort: number\n controlUrl: string\n planeUrl: string\n userId: string\n authToken: string\n signingSecret: string\n timeoutMs: number\n persistDir?: string\n auditLogPath?: string\n auditDir?: string\n auditKeepDays?: number\n}\n\nfunction resolveOptions(options: UpDevServerOptions): ResolvedOptions {\n const controlPort = options.controlPort ?? DEFAULT_CONTROL_PORT\n const planePort = options.planePort ?? DEFAULT_PLANE_PORT\n const rotate = options.auditRotate === true\n return {\n controlPort,\n planePort,\n controlUrl: `http://127.0.0.1:${controlPort}`,\n planeUrl: `http://127.0.0.1:${planePort}`,\n userId: options.userId ?? 'dev-user',\n authToken: options.authToken ?? randomBytes(16).toString('hex'),\n signingSecret: options.signingSecret ?? randomBytes(32).toString('hex'),\n timeoutMs: (options.timeoutSeconds ?? DEFAULT_TIMEOUT_SECONDS) * 1000,\n persistDir: options.persist ? path.join(getDevDir(), 'store') : undefined,\n auditLogPath: options.audit && !rotate ? path.join(getDevDir(), 'audit.log') : undefined,\n auditDir: options.audit && rotate ? path.join(getDevDir(), 'audit') : undefined,\n auditKeepDays: rotate ? options.auditKeepDays : undefined,\n }\n}\n\nfunction spawnDaemon(binPath: string, resolved: ResolvedOptions): ChildProcess {\n const devDir = getDevDir()\n if (!existsSync(devDir)) mkdirSync(devDir, { recursive: true })\n const logFd = openSync(getDevLogPath(), 'a')\n\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n CONTROL_PORT: String(resolved.controlPort),\n PLANE_PORT: String(resolved.planePort),\n HOST: '127.0.0.1',\n DATALAKE_CONTROL_TOKENS: `${resolved.authToken}=${resolved.userId}`,\n TOKEN_SIGNING_SECRET: resolved.signingSecret,\n DATALAKE_ORIGIN_URL: resolved.planeUrl,\n LOG_LEVEL: process.env.LOG_LEVEL ?? 'info',\n }\n if (resolved.persistDir) env.DATALAKE_PERSIST_DIR = resolved.persistDir\n if (resolved.auditLogPath) env.DATALAKE_AUDIT_LOG = resolved.auditLogPath\n if (resolved.auditDir) env.DATALAKE_AUDIT_DIR = resolved.auditDir\n if (resolved.auditKeepDays !== undefined) env.DATALAKE_AUDIT_MAX_AGE_DAYS = String(resolved.auditKeepDays)\n\n const child = spawn(process.execPath, [binPath], {\n detached: true,\n stdio: ['ignore', logFd, logFd],\n env,\n })\n child.unref()\n return child\n}\n\nfunction describeAudit(resolved: ResolvedOptions): string {\n if (resolved.auditDir) {\n return `rotating ${resolved.auditDir}${resolved.auditKeepDays ? ` (keep ${resolved.auditKeepDays}d)` : ''}`\n }\n return resolved.auditLogPath ?? 'disabled'\n}\n\nfunction printReadyBanner(state: DevState, resolved: ResolvedOptions): void {\n console.log(chalk.green('dev server ready'))\n console.log(` ${chalk.gray('control:')} ${state.controlUrl}`)\n console.log(` ${chalk.gray('data:')} ${state.planeUrl}`)\n console.log(` ${chalk.gray('user:')} ${state.userId}`)\n console.log(` ${chalk.gray('log:')} ${getDevLogPath()}`)\n console.log(` ${chalk.gray('store:')} ${resolved.persistDir ? `persisted (${resolved.persistDir})` : 'in-memory'}`)\n console.log(` ${chalk.gray('audit:')} ${describeAudit(resolved)}`)\n console.log(chalk.gray('\\nCLI is configured — try `aries datalake list`'))\n}\n\nexport async function upDevServer(options: UpDevServerOptions = {}): Promise<DevState> {\n const existing = readDevState()\n if (existing && isProcessAlive(existing.pid)) {\n console.log(chalk.yellow(`dev server already running (pid ${existing.pid}) at ${existing.controlUrl}`))\n return existing\n }\n if (existing) clearDevState()\n\n const resolved = resolveOptions(options)\n const child = spawnDaemon(resolveServerBin(), resolved)\n if (!child.pid) throw new Error('Failed to spawn dev server process')\n\n console.log(chalk.gray(`starting dev server (pid ${child.pid})...`))\n const healthy = await waitForHealth(resolved.controlUrl, resolved.timeoutMs)\n if (!healthy) {\n try {\n process.kill(child.pid, 'SIGTERM')\n } catch {\n // best effort\n }\n throw new Error(\n `Dev server did not become healthy within ${resolved.timeoutMs / 1000}s. `\n + `Check logs at ${getDevLogPath()}`,\n )\n }\n\n const state: DevState = {\n pid: child.pid,\n controlUrl: resolved.controlUrl,\n planeUrl: resolved.planeUrl,\n controlPort: resolved.controlPort,\n planePort: resolved.planePort,\n userId: resolved.userId,\n authToken: resolved.authToken,\n signingSecret: resolved.signingSecret,\n startedAt: new Date().toISOString(),\n }\n writeDevState(state)\n saveCredentials({\n baseUrl: resolved.controlUrl, authToken: resolved.authToken, userId: resolved.userId,\n })\n printReadyBanner(state, resolved)\n return state\n}\n","import { homedir } from 'node:os'\nimport path from 'node:path'\n\nfunction getAriesHome(): string {\n return process.env.ARIES_HOME ?? path.join(homedir(), '.aries')\n}\n\nexport function getDevDir(): string {\n return path.join(getAriesHome(), 'dev')\n}\n\nexport function getDevStatePath(): string {\n return path.join(getDevDir(), 'state.json')\n}\n\nexport function getDevPidPath(): string {\n return path.join(getDevDir(), 'pid')\n}\n\nexport function getDevLogPath(): string {\n return path.join(getDevDir(), 'server.log')\n}\n","import { existsSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\n\n// Static type-only import so `deplint` recognizes the package as a declared\n// dependency. The bin path itself is resolved at runtime via `require.resolve`.\nimport type { BuildPlaneOptions as _KeepAsDep } from '@xylabs/aries-datalake-plane'\n\nconst require = createRequire(import.meta.url)\n\n/**\n * Resolves the absolute path to `aries-datalake-dev` (the plane/control dev\n * server binary) from the installed `@xylabs/aries-datalake-plane` package.\n * Throws with an actionable message if the package isn't available — e.g.\n * when someone installs `@xylabs/aries` standalone without the dev server.\n */\nexport function resolveServerBin(): string {\n let packageJsonPath: string\n try {\n packageJsonPath = require.resolve('@xylabs/aries-datalake-plane/package.json')\n } catch {\n throw new Error(\n '@xylabs/aries-datalake-plane is not installed. '\n + 'Install it as a dev dependency to use `aries datalake dev` locally.',\n )\n }\n const binPath = path.join(path.dirname(packageJsonPath), 'dist', 'bin', 'devServer.mjs')\n if (!existsSync(binPath)) {\n throw new Error(\n `Dev server binary not found at ${binPath}. `\n + 'Run `pnpm xy compile` to build it.',\n )\n }\n return binPath\n}\n","import {\n existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\n\nimport {\n getDevDir, getDevPidPath, getDevStatePath,\n} from './paths.ts'\n\n/**\n * On-disk bookkeeping for a running dev server. Lives in `~/.aries/dev/` so\n * it survives across CLI invocations and can be queried by `dev status` /\n * `dev logs` / `dev down`.\n */\nexport interface DevState {\n pid: number\n controlUrl: string\n planeUrl: string\n controlPort: number\n planePort: number\n /** User id the dev auth token resolves to on the control plane. */\n userId: string\n /** Bearer token accepted by the dev control plane (written to credentials). */\n authToken: string\n /** Secret the dev control plane HMAC-signs data-plane JWTs with. */\n signingSecret: string\n /** ISO-8601 startup time. */\n startedAt: string\n}\n\nexport function readDevState(): DevState | undefined {\n const filePath = getDevStatePath()\n if (!existsSync(filePath)) return undefined\n try {\n return JSON.parse(readFileSync(filePath, 'utf8')) as DevState\n } catch {\n return undefined\n }\n}\n\nexport function writeDevState(state: DevState): void {\n const dir = getDevDir()\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n writeFileSync(getDevStatePath(), JSON.stringify(state, undefined, 2), 'utf8')\n writeFileSync(getDevPidPath(), String(state.pid), 'utf8')\n}\n\nexport function clearDevState(): void {\n for (const filePath of [getDevStatePath(), getDevPidPath()]) {\n if (existsSync(filePath)) unlinkSync(filePath)\n }\n}\n\n/**\n * Returns true iff the pid is still a live process. `kill(pid, 0)` throws\n * ESRCH when the process doesn't exist and EPERM when it does but we can't\n * signal it — both answer the question we're asking.\n */\nexport function isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0)\n return true\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code\n return code === 'EPERM'\n }\n}\n","const POLL_INTERVAL_MS = 100\n\n/**\n * Polls `GET <baseUrl>/v1/health` until it returns 200 or the timeout\n * expires. Returns `true` on success, `false` on timeout. Callers should\n * kill the daemon on failure; it never came up.\n */\nexport async function waitForHealth(baseUrl: string, timeoutMs: number): Promise<boolean> {\n const deadline = Date.now() + timeoutMs\n const url = `${baseUrl.replace(/\\/$/, '')}/v1/health`\n while (Date.now() < deadline) {\n try {\n const response = await fetch(url)\n if (response.ok) return true\n } catch {\n // ECONNREFUSED while the listener is still starting — keep polling.\n }\n await delay(POLL_INTERVAL_MS)\n }\n return false\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n"],"mappings":"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","names":["existsSync","mkdirSync","path","path","require","existsSync","existsSync","path","existsSync","mkdirSync"]}
@@ -0,0 +1,22 @@
1
+ // src/actions/datalake/dev/waitForHealth.ts
2
+ var POLL_INTERVAL_MS = 100;
3
+ async function waitForHealth(baseUrl, timeoutMs) {
4
+ const deadline = Date.now() + timeoutMs;
5
+ const url = `${baseUrl.replace(/\/$/, "")}/v1/health`;
6
+ while (Date.now() < deadline) {
7
+ try {
8
+ const response = await fetch(url);
9
+ if (response.ok) return true;
10
+ } catch {
11
+ }
12
+ await delay(POLL_INTERVAL_MS);
13
+ }
14
+ return false;
15
+ }
16
+ function delay(ms) {
17
+ return new Promise((resolve) => setTimeout(resolve, ms));
18
+ }
19
+ export {
20
+ waitForHealth
21
+ };
22
+ //# sourceMappingURL=waitForHealth.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/datalake/dev/waitForHealth.ts"],"sourcesContent":["const POLL_INTERVAL_MS = 100\n\n/**\n * Polls `GET <baseUrl>/v1/health` until it returns 200 or the timeout\n * expires. Returns `true` on success, `false` on timeout. Callers should\n * kill the daemon on failure; it never came up.\n */\nexport async function waitForHealth(baseUrl: string, timeoutMs: number): Promise<boolean> {\n const deadline = Date.now() + timeoutMs\n const url = `${baseUrl.replace(/\\/$/, '')}/v1/health`\n while (Date.now() < deadline) {\n try {\n const response = await fetch(url)\n if (response.ok) return true\n } catch {\n // ECONNREFUSED while the listener is still starting — keep polling.\n }\n await delay(POLL_INTERVAL_MS)\n }\n return false\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n"],"mappings":";AAAA,IAAM,mBAAmB;AAOzB,eAAsB,cAAc,SAAiB,WAAqC;AACxF,QAAM,WAAW,KAAK,IAAI,IAAI;AAC9B,QAAM,MAAM,GAAG,QAAQ,QAAQ,OAAO,EAAE,CAAC;AACzC,SAAO,KAAK,IAAI,IAAI,UAAU;AAC5B,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,GAAG;AAChC,UAAI,SAAS,GAAI,QAAO;AAAA,IAC1B,QAAQ;AAAA,IAER;AACA,UAAM,MAAM,gBAAgB;AAAA,EAC9B;AACA,SAAO;AACT;AAEA,SAAS,MAAM,IAA2B;AACxC,SAAO,IAAI,QAAQ,aAAW,WAAW,SAAS,EAAE,CAAC;AACvD;","names":[]}