@xylabs/aries 0.1.1 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/README.md +6 -688
  2. package/dist/aries.mjs +47 -8466
  3. package/package.json +14 -169
  4. package/dist/actions/audit/auditPaths.mjs +0 -22
  5. package/dist/actions/audit/auditPaths.mjs.map +0 -1
  6. package/dist/actions/audit/index.mjs +0 -739
  7. package/dist/actions/audit/index.mjs.map +0 -1
  8. package/dist/actions/audit/installPlugin.mjs +0 -298
  9. package/dist/actions/audit/installPlugin.mjs.map +0 -1
  10. package/dist/actions/audit/listSessions.mjs +0 -93
  11. package/dist/actions/audit/listSessions.mjs.map +0 -1
  12. package/dist/actions/audit/openAuditDir.mjs +0 -44
  13. package/dist/actions/audit/openAuditDir.mjs.map +0 -1
  14. package/dist/actions/audit/searchAudit.mjs +0 -77
  15. package/dist/actions/audit/searchAudit.mjs.map +0 -1
  16. package/dist/actions/audit/showAiMeta.mjs +0 -105
  17. package/dist/actions/audit/showAiMeta.mjs.map +0 -1
  18. package/dist/actions/audit/showSession.mjs +0 -105
  19. package/dist/actions/audit/showSession.mjs.map +0 -1
  20. package/dist/actions/audit/statusAudit.mjs +0 -98
  21. package/dist/actions/audit/statusAudit.mjs.map +0 -1
  22. package/dist/actions/clamp/clampAudit.mjs +0 -53
  23. package/dist/actions/clamp/clampAudit.mjs.map +0 -1
  24. package/dist/actions/clamp/index.mjs +0 -2258
  25. package/dist/actions/clamp/index.mjs.map +0 -1
  26. package/dist/actions/clamp/ipcServer.mjs +0 -55
  27. package/dist/actions/clamp/ipcServer.mjs.map +0 -1
  28. package/dist/actions/clamp/policyManagement.mjs +0 -144
  29. package/dist/actions/clamp/policyManagement.mjs.map +0 -1
  30. package/dist/actions/clamp/promptUser.mjs +0 -91
  31. package/dist/actions/clamp/promptUser.mjs.map +0 -1
  32. package/dist/actions/clamp/runClamped.mjs +0 -2107
  33. package/dist/actions/clamp/runClamped.mjs.map +0 -1
  34. package/dist/actions/clamp/sandboxExec.mjs +0 -1612
  35. package/dist/actions/clamp/sandboxExec.mjs.map +0 -1
  36. package/dist/actions/clamp/shellEnvSetup.mjs +0 -59
  37. package/dist/actions/clamp/shellEnvSetup.mjs.map +0 -1
  38. package/dist/actions/clamp/shimGenerator.mjs +0 -68
  39. package/dist/actions/clamp/shimGenerator.mjs.map +0 -1
  40. package/dist/actions/clamp/terminalRenderer.mjs +0 -145
  41. package/dist/actions/clamp/terminalRenderer.mjs.map +0 -1
  42. package/dist/actions/datalake/audit/auditLog.mjs +0 -191
  43. package/dist/actions/datalake/audit/auditLog.mjs.map +0 -1
  44. package/dist/actions/datalake/createDatalake.mjs +0 -127
  45. package/dist/actions/datalake/createDatalake.mjs.map +0 -1
  46. package/dist/actions/datalake/describeDatalake.mjs +0 -159
  47. package/dist/actions/datalake/describeDatalake.mjs.map +0 -1
  48. package/dist/actions/datalake/destroyDatalake.mjs +0 -34
  49. package/dist/actions/datalake/destroyDatalake.mjs.map +0 -1
  50. package/dist/actions/datalake/dev/downDevServer.mjs +0 -102
  51. package/dist/actions/datalake/dev/downDevServer.mjs.map +0 -1
  52. package/dist/actions/datalake/dev/index.mjs +0 -369
  53. package/dist/actions/datalake/dev/index.mjs.map +0 -1
  54. package/dist/actions/datalake/dev/logsDevServer.mjs +0 -44
  55. package/dist/actions/datalake/dev/logsDevServer.mjs.map +0 -1
  56. package/dist/actions/datalake/dev/paths.mjs +0 -25
  57. package/dist/actions/datalake/dev/paths.mjs.map +0 -1
  58. package/dist/actions/datalake/dev/resetDevServer.mjs +0 -118
  59. package/dist/actions/datalake/dev/resetDevServer.mjs.map +0 -1
  60. package/dist/actions/datalake/dev/resolveServerBin.mjs +0 -26
  61. package/dist/actions/datalake/dev/resolveServerBin.mjs.map +0 -1
  62. package/dist/actions/datalake/dev/state.mjs +0 -62
  63. package/dist/actions/datalake/dev/state.mjs.map +0 -1
  64. package/dist/actions/datalake/dev/statusDevServer.mjs +0 -101
  65. package/dist/actions/datalake/dev/statusDevServer.mjs.map +0 -1
  66. package/dist/actions/datalake/dev/upDevServer.mjs +0 -221
  67. package/dist/actions/datalake/dev/upDevServer.mjs.map +0 -1
  68. package/dist/actions/datalake/dev/waitForHealth.mjs +0 -22
  69. package/dist/actions/datalake/dev/waitForHealth.mjs.map +0 -1
  70. package/dist/actions/datalake/formatters.mjs +0 -90
  71. package/dist/actions/datalake/formatters.mjs.map +0 -1
  72. package/dist/actions/datalake/grantAccess.mjs +0 -116
  73. package/dist/actions/datalake/grantAccess.mjs.map +0 -1
  74. package/dist/actions/datalake/index.mjs +0 -361
  75. package/dist/actions/datalake/index.mjs.map +0 -1
  76. package/dist/actions/datalake/listDatalakes.mjs +0 -54
  77. package/dist/actions/datalake/listDatalakes.mjs.map +0 -1
  78. package/dist/actions/datalake/login.mjs +0 -20
  79. package/dist/actions/datalake/login.mjs.map +0 -1
  80. package/dist/actions/datalake/logout.mjs +0 -11
  81. package/dist/actions/datalake/logout.mjs.map +0 -1
  82. package/dist/actions/datalake/mintToken.mjs +0 -37
  83. package/dist/actions/datalake/mintToken.mjs.map +0 -1
  84. package/dist/actions/datalake/parseSize.mjs +0 -21
  85. package/dist/actions/datalake/parseSize.mjs.map +0 -1
  86. package/dist/actions/datalake/payloads/fetchPayload.mjs +0 -76
  87. package/dist/actions/datalake/payloads/fetchPayload.mjs.map +0 -1
  88. package/dist/actions/datalake/payloads/index.mjs +0 -271
  89. package/dist/actions/datalake/payloads/index.mjs.map +0 -1
  90. package/dist/actions/datalake/payloads/mintAndConnect.mjs +0 -46
  91. package/dist/actions/datalake/payloads/mintAndConnect.mjs.map +0 -1
  92. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs +0 -71
  93. package/dist/actions/datalake/payloads/parsePayloadsFile.mjs.map +0 -1
  94. package/dist/actions/datalake/payloads/pushPayloads.mjs +0 -181
  95. package/dist/actions/datalake/payloads/pushPayloads.mjs.map +0 -1
  96. package/dist/actions/datalake/payloads/tailPayloads.mjs +0 -106
  97. package/dist/actions/datalake/payloads/tailPayloads.mjs.map +0 -1
  98. package/dist/actions/datalake/resolveTarget.mjs +0 -15
  99. package/dist/actions/datalake/resolveTarget.mjs.map +0 -1
  100. package/dist/actions/datalake/revokeAccess.mjs +0 -108
  101. package/dist/actions/datalake/revokeAccess.mjs.map +0 -1
  102. package/dist/actions/datalake/useDatalake.mjs +0 -22
  103. package/dist/actions/datalake/useDatalake.mjs.map +0 -1
  104. package/dist/actions/detect/detectAiClients.mjs +0 -405
  105. package/dist/actions/detect/detectAiClients.mjs.map +0 -1
  106. package/dist/actions/detect/index.mjs +0 -405
  107. package/dist/actions/detect/index.mjs.map +0 -1
  108. package/dist/actions/hash/algorithms/blockhash.mjs +0 -61
  109. package/dist/actions/hash/algorithms/blockhash.mjs.map +0 -1
  110. package/dist/actions/hash/algorithms/chromaprint.mjs +0 -205
  111. package/dist/actions/hash/algorithms/chromaprint.mjs.map +0 -1
  112. package/dist/actions/hash/algorithms/dhash.mjs +0 -75
  113. package/dist/actions/hash/algorithms/dhash.mjs.map +0 -1
  114. package/dist/actions/hash/algorithms/index.mjs +0 -818
  115. package/dist/actions/hash/algorithms/index.mjs.map +0 -1
  116. package/dist/actions/hash/algorithms/nilsimsa.mjs +0 -27
  117. package/dist/actions/hash/algorithms/nilsimsa.mjs.map +0 -1
  118. package/dist/actions/hash/algorithms/pdq.mjs +0 -83
  119. package/dist/actions/hash/algorithms/pdq.mjs.map +0 -1
  120. package/dist/actions/hash/algorithms/phash.mjs +0 -71
  121. package/dist/actions/hash/algorithms/phash.mjs.map +0 -1
  122. package/dist/actions/hash/algorithms/sha256.mjs +0 -24
  123. package/dist/actions/hash/algorithms/sha256.mjs.map +0 -1
  124. package/dist/actions/hash/algorithms/ssdeep.mjs +0 -203
  125. package/dist/actions/hash/algorithms/ssdeep.mjs.map +0 -1
  126. package/dist/actions/hash/algorithms/tlsh.mjs +0 -66
  127. package/dist/actions/hash/algorithms/tlsh.mjs.map +0 -1
  128. package/dist/actions/hash/algorithms/types.mjs +0 -1
  129. package/dist/actions/hash/algorithms/types.mjs.map +0 -1
  130. package/dist/actions/hash/algorithms/videoFrames.mjs +0 -404
  131. package/dist/actions/hash/algorithms/videoFrames.mjs.map +0 -1
  132. package/dist/actions/hash/algorithms/xyo.mjs +0 -30
  133. package/dist/actions/hash/algorithms/xyo.mjs.map +0 -1
  134. package/dist/actions/hash/compareHashes.mjs +0 -823
  135. package/dist/actions/hash/compareHashes.mjs.map +0 -1
  136. package/dist/actions/hash/hashInput.mjs +0 -868
  137. package/dist/actions/hash/hashInput.mjs.map +0 -1
  138. package/dist/actions/hash/index.mjs +0 -881
  139. package/dist/actions/hash/index.mjs.map +0 -1
  140. package/dist/actions/hash/lib/hamming.mjs +0 -44
  141. package/dist/actions/hash/lib/hamming.mjs.map +0 -1
  142. package/dist/actions/hash/lib/levenshtein.mjs +0 -36
  143. package/dist/actions/hash/lib/levenshtein.mjs.map +0 -1
  144. package/dist/actions/hash/lib/runBinary.mjs +0 -54
  145. package/dist/actions/hash/lib/runBinary.mjs.map +0 -1
  146. package/dist/actions/hash/lib/which.mjs +0 -36
  147. package/dist/actions/hash/lib/which.mjs.map +0 -1
  148. package/dist/actions/hash/lib/withTempfile.mjs +0 -19
  149. package/dist/actions/hash/lib/withTempfile.mjs.map +0 -1
  150. package/dist/actions/index.mjs +0 -4615
  151. package/dist/actions/index.mjs.map +0 -1
  152. package/dist/actions/printVersion.mjs +0 -12
  153. package/dist/actions/printVersion.mjs.map +0 -1
  154. package/dist/actions/sync/index.mjs +0 -51
  155. package/dist/actions/sync/index.mjs.map +0 -1
  156. package/dist/actions/sync/syncAiConfig.mjs +0 -51
  157. package/dist/actions/sync/syncAiConfig.mjs.map +0 -1
  158. package/dist/actions/wallet/account/deriveAndAdd.mjs +0 -394
  159. package/dist/actions/wallet/account/deriveAndAdd.mjs.map +0 -1
  160. package/dist/actions/wallet/account/getActiveWallet.mjs +0 -338
  161. package/dist/actions/wallet/account/getActiveWallet.mjs.map +0 -1
  162. package/dist/actions/wallet/account/labelAccount.mjs +0 -389
  163. package/dist/actions/wallet/account/labelAccount.mjs.map +0 -1
  164. package/dist/actions/wallet/account/listAccounts.mjs +0 -374
  165. package/dist/actions/wallet/account/listAccounts.mjs.map +0 -1
  166. package/dist/actions/wallet/account/removeAccount.mjs +0 -384
  167. package/dist/actions/wallet/account/removeAccount.mjs.map +0 -1
  168. package/dist/actions/wallet/account/showAccount.mjs +0 -368
  169. package/dist/actions/wallet/account/showAccount.mjs.map +0 -1
  170. package/dist/actions/wallet/addressBook/storage.mjs +0 -110
  171. package/dist/actions/wallet/addressBook/storage.mjs.map +0 -1
  172. package/dist/actions/wallet/backup/exportBackup.mjs +0 -93
  173. package/dist/actions/wallet/backup/exportBackup.mjs.map +0 -1
  174. package/dist/actions/wallet/backup/importBackup.mjs +0 -142
  175. package/dist/actions/wallet/backup/importBackup.mjs.map +0 -1
  176. package/dist/actions/wallet/balance/getBalance.mjs +0 -434
  177. package/dist/actions/wallet/balance/getBalance.mjs.map +0 -1
  178. package/dist/actions/wallet/client/walletClient.mjs +0 -64
  179. package/dist/actions/wallet/client/walletClient.mjs.map +0 -1
  180. package/dist/actions/wallet/contact/contactActions.mjs +0 -120
  181. package/dist/actions/wallet/contact/contactActions.mjs.map +0 -1
  182. package/dist/actions/wallet/contact/storage.mjs +0 -69
  183. package/dist/actions/wallet/contact/storage.mjs.map +0 -1
  184. package/dist/actions/wallet/index.mjs +0 -1439
  185. package/dist/actions/wallet/index.mjs.map +0 -1
  186. package/dist/actions/wallet/network/networkActions.mjs +0 -137
  187. package/dist/actions/wallet/network/networkActions.mjs.map +0 -1
  188. package/dist/actions/wallet/network/storage.mjs +0 -93
  189. package/dist/actions/wallet/network/storage.mjs.map +0 -1
  190. package/dist/actions/wallet/password/changePassword.mjs +0 -282
  191. package/dist/actions/wallet/password/changePassword.mjs.map +0 -1
  192. package/dist/actions/wallet/password/getActiveKey.mjs +0 -297
  193. package/dist/actions/wallet/password/getActiveKey.mjs.map +0 -1
  194. package/dist/actions/wallet/password/initOrUnlock.mjs +0 -337
  195. package/dist/actions/wallet/password/initOrUnlock.mjs.map +0 -1
  196. package/dist/actions/wallet/password/passwordStorage.mjs +0 -69
  197. package/dist/actions/wallet/password/passwordStorage.mjs.map +0 -1
  198. package/dist/actions/wallet/password/setPassword.mjs +0 -138
  199. package/dist/actions/wallet/password/setPassword.mjs.map +0 -1
  200. package/dist/actions/wallet/password/validatePassword.mjs +0 -123
  201. package/dist/actions/wallet/password/validatePassword.mjs.map +0 -1
  202. package/dist/actions/wallet/passwordKey.mjs +0 -87
  203. package/dist/actions/wallet/passwordKey.mjs.map +0 -1
  204. package/dist/actions/wallet/paths.mjs +0 -26
  205. package/dist/actions/wallet/paths.mjs.map +0 -1
  206. package/dist/actions/wallet/prompt.mjs +0 -93
  207. package/dist/actions/wallet/prompt.mjs.map +0 -1
  208. package/dist/actions/wallet/seedPhrase/createPhrase.mjs +0 -392
  209. package/dist/actions/wallet/seedPhrase/createPhrase.mjs.map +0 -1
  210. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs +0 -334
  211. package/dist/actions/wallet/seedPhrase/exportPhrase.mjs.map +0 -1
  212. package/dist/actions/wallet/seedPhrase/idGen.mjs +0 -11
  213. package/dist/actions/wallet/seedPhrase/idGen.mjs.map +0 -1
  214. package/dist/actions/wallet/seedPhrase/importPhrase.mjs +0 -393
  215. package/dist/actions/wallet/seedPhrase/importPhrase.mjs.map +0 -1
  216. package/dist/actions/wallet/seedPhrase/listPhrases.mjs +0 -62
  217. package/dist/actions/wallet/seedPhrase/listPhrases.mjs.map +0 -1
  218. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs +0 -89
  219. package/dist/actions/wallet/seedPhrase/phraseStorage.mjs.map +0 -1
  220. package/dist/actions/wallet/seedPhrase/removePhrase.mjs +0 -366
  221. package/dist/actions/wallet/seedPhrase/removePhrase.mjs.map +0 -1
  222. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs +0 -78
  223. package/dist/actions/wallet/seedPhrase/renamePhrase.mjs.map +0 -1
  224. package/dist/actions/wallet/seedPhrase/types.mjs +0 -1
  225. package/dist/actions/wallet/seedPhrase/types.mjs.map +0 -1
  226. package/dist/actions/wallet/seedPhrase/usePhrase.mjs +0 -83
  227. package/dist/actions/wallet/seedPhrase/usePhrase.mjs.map +0 -1
  228. package/dist/actions/wallet/session/machineId.mjs +0 -145
  229. package/dist/actions/wallet/session/machineId.mjs.map +0 -1
  230. package/dist/actions/wallet/session/sessionCache.mjs +0 -221
  231. package/dist/actions/wallet/session/sessionCache.mjs.map +0 -1
  232. package/dist/actions/wallet/session/unlock.mjs +0 -307
  233. package/dist/actions/wallet/session/unlock.mjs.map +0 -1
  234. package/dist/actions/wallet/sign/signPayload.mjs +0 -637
  235. package/dist/actions/wallet/sign/signPayload.mjs.map +0 -1
  236. package/dist/actions/wallet/storage.mjs +0 -51
  237. package/dist/actions/wallet/storage.mjs.map +0 -1
  238. package/dist/actions/wallet/transaction/broadcastTransaction.mjs +0 -453
  239. package/dist/actions/wallet/transaction/broadcastTransaction.mjs.map +0 -1
  240. package/dist/actions/wallet/transaction/sendTransaction.mjs +0 -457
  241. package/dist/actions/wallet/transaction/sendTransaction.mjs.map +0 -1
  242. package/dist/actions/wallet/transaction/signTransactionFile.mjs +0 -378
  243. package/dist/actions/wallet/transaction/signTransactionFile.mjs.map +0 -1
  244. package/dist/actions/xyo/index.mjs +0 -138
  245. package/dist/actions/xyo/index.mjs.map +0 -1
  246. package/dist/actions/xyo/transaction/index.mjs +0 -138
  247. package/dist/actions/xyo/transaction/index.mjs.map +0 -1
  248. package/dist/actions/xyo/transaction/validateTransactions.mjs +0 -138
  249. package/dist/actions/xyo/transaction/validateTransactions.mjs.map +0 -1
  250. package/dist/aries.mjs.map +0 -1
  251. package/dist/bin/aries.mjs +0 -8472
  252. package/dist/bin/aries.mjs.map +0 -1
  253. package/dist/commands/aiCommand.mjs +0 -492
  254. package/dist/commands/aiCommand.mjs.map +0 -1
  255. package/dist/commands/auditAiCommand.mjs +0 -119
  256. package/dist/commands/auditAiCommand.mjs.map +0 -1
  257. package/dist/commands/auditCommand.mjs +0 -857
  258. package/dist/commands/auditCommand.mjs.map +0 -1
  259. package/dist/commands/auditInstallCommand.mjs +0 -324
  260. package/dist/commands/auditInstallCommand.mjs.map +0 -1
  261. package/dist/commands/auditListCommand.mjs +0 -107
  262. package/dist/commands/auditListCommand.mjs.map +0 -1
  263. package/dist/commands/auditOpenCommand.mjs +0 -51
  264. package/dist/commands/auditOpenCommand.mjs.map +0 -1
  265. package/dist/commands/auditSearchCommand.mjs +0 -98
  266. package/dist/commands/auditSearchCommand.mjs.map +0 -1
  267. package/dist/commands/auditShowCommand.mjs +0 -123
  268. package/dist/commands/auditShowCommand.mjs.map +0 -1
  269. package/dist/commands/auditStatusCommand.mjs +0 -105
  270. package/dist/commands/auditStatusCommand.mjs.map +0 -1
  271. package/dist/commands/clampCommand.mjs +0 -2328
  272. package/dist/commands/clampCommand.mjs.map +0 -1
  273. package/dist/commands/clampPolicyCommand.mjs +0 -184
  274. package/dist/commands/clampPolicyCommand.mjs.map +0 -1
  275. package/dist/commands/clampPolicyInitCommand.mjs +0 -63
  276. package/dist/commands/clampPolicyInitCommand.mjs.map +0 -1
  277. package/dist/commands/clampPolicyListCommand.mjs +0 -56
  278. package/dist/commands/clampPolicyListCommand.mjs.map +0 -1
  279. package/dist/commands/clampPolicyShowCommand.mjs +0 -83
  280. package/dist/commands/clampPolicyShowCommand.mjs.map +0 -1
  281. package/dist/commands/clampRunCommand.mjs +0 -2137
  282. package/dist/commands/clampRunCommand.mjs.map +0 -1
  283. package/dist/commands/datalakeAuditCommand.mjs +0 -273
  284. package/dist/commands/datalakeAuditCommand.mjs.map +0 -1
  285. package/dist/commands/datalakeCommand.mjs +0 -1637
  286. package/dist/commands/datalakeCommand.mjs.map +0 -1
  287. package/dist/commands/datalakeCreateCommand.mjs +0 -189
  288. package/dist/commands/datalakeCreateCommand.mjs.map +0 -1
  289. package/dist/commands/datalakeDescribeCommand.mjs +0 -172
  290. package/dist/commands/datalakeDescribeCommand.mjs.map +0 -1
  291. package/dist/commands/datalakeDestroyCommand.mjs +0 -53
  292. package/dist/commands/datalakeDestroyCommand.mjs.map +0 -1
  293. package/dist/commands/datalakeDevCommand.mjs +0 -470
  294. package/dist/commands/datalakeDevCommand.mjs.map +0 -1
  295. package/dist/commands/datalakeDevDownCommand.mjs +0 -111
  296. package/dist/commands/datalakeDevDownCommand.mjs.map +0 -1
  297. package/dist/commands/datalakeDevLogsCommand.mjs +0 -65
  298. package/dist/commands/datalakeDevLogsCommand.mjs.map +0 -1
  299. package/dist/commands/datalakeDevResetCommand.mjs +0 -125
  300. package/dist/commands/datalakeDevResetCommand.mjs.map +0 -1
  301. package/dist/commands/datalakeDevStatusCommand.mjs +0 -110
  302. package/dist/commands/datalakeDevStatusCommand.mjs.map +0 -1
  303. package/dist/commands/datalakeDevUpCommand.mjs +0 -268
  304. package/dist/commands/datalakeDevUpCommand.mjs.map +0 -1
  305. package/dist/commands/datalakeFetchCommand.mjs +0 -106
  306. package/dist/commands/datalakeFetchCommand.mjs.map +0 -1
  307. package/dist/commands/datalakeGrantCommand.mjs +0 -147
  308. package/dist/commands/datalakeGrantCommand.mjs.map +0 -1
  309. package/dist/commands/datalakeListCommand.mjs +0 -61
  310. package/dist/commands/datalakeListCommand.mjs.map +0 -1
  311. package/dist/commands/datalakeLoginCommand.mjs +0 -39
  312. package/dist/commands/datalakeLoginCommand.mjs.map +0 -1
  313. package/dist/commands/datalakeLogoutCommand.mjs +0 -20
  314. package/dist/commands/datalakeLogoutCommand.mjs.map +0 -1
  315. package/dist/commands/datalakePushCommand.mjs +0 -214
  316. package/dist/commands/datalakePushCommand.mjs.map +0 -1
  317. package/dist/commands/datalakeRevokeCommand.mjs +0 -127
  318. package/dist/commands/datalakeRevokeCommand.mjs.map +0 -1
  319. package/dist/commands/datalakeTailCommand.mjs +0 -144
  320. package/dist/commands/datalakeTailCommand.mjs.map +0 -1
  321. package/dist/commands/datalakeTokenCommand.mjs +0 -61
  322. package/dist/commands/datalakeTokenCommand.mjs.map +0 -1
  323. package/dist/commands/datalakeUseCommand.mjs +0 -35
  324. package/dist/commands/datalakeUseCommand.mjs.map +0 -1
  325. package/dist/commands/detectCommand.mjs +0 -419
  326. package/dist/commands/detectCommand.mjs.map +0 -1
  327. package/dist/commands/hashCommand.mjs +0 -976
  328. package/dist/commands/hashCommand.mjs.map +0 -1
  329. package/dist/commands/hashCompareCommand.mjs +0 -865
  330. package/dist/commands/hashCompareCommand.mjs.map +0 -1
  331. package/dist/commands/index.mjs +0 -8461
  332. package/dist/commands/index.mjs.map +0 -1
  333. package/dist/commands/syncCommand.mjs +0 -66
  334. package/dist/commands/syncCommand.mjs.map +0 -1
  335. package/dist/commands/versionCommand.mjs +0 -24
  336. package/dist/commands/versionCommand.mjs.map +0 -1
  337. package/dist/commands/walletAccountCommand.mjs +0 -536
  338. package/dist/commands/walletAccountCommand.mjs.map +0 -1
  339. package/dist/commands/walletAccountDeriveCommand.mjs +0 -415
  340. package/dist/commands/walletAccountDeriveCommand.mjs.map +0 -1
  341. package/dist/commands/walletAccountLabelCommand.mjs +0 -405
  342. package/dist/commands/walletAccountLabelCommand.mjs.map +0 -1
  343. package/dist/commands/walletAccountListCommand.mjs +0 -381
  344. package/dist/commands/walletAccountListCommand.mjs.map +0 -1
  345. package/dist/commands/walletAccountRemoveCommand.mjs +0 -396
  346. package/dist/commands/walletAccountRemoveCommand.mjs.map +0 -1
  347. package/dist/commands/walletAccountShowCommand.mjs +0 -380
  348. package/dist/commands/walletAccountShowCommand.mjs.map +0 -1
  349. package/dist/commands/walletBackupCommand.mjs +0 -222
  350. package/dist/commands/walletBackupCommand.mjs.map +0 -1
  351. package/dist/commands/walletBackupExportCommand.mjs +0 -107
  352. package/dist/commands/walletBackupExportCommand.mjs.map +0 -1
  353. package/dist/commands/walletBackupImportCommand.mjs +0 -154
  354. package/dist/commands/walletBackupImportCommand.mjs.map +0 -1
  355. package/dist/commands/walletBalanceCommand.mjs +0 -448
  356. package/dist/commands/walletBalanceCommand.mjs.map +0 -1
  357. package/dist/commands/walletCommand.mjs +0 -1968
  358. package/dist/commands/walletCommand.mjs.map +0 -1
  359. package/dist/commands/walletContactAddCommand.mjs +0 -111
  360. package/dist/commands/walletContactAddCommand.mjs.map +0 -1
  361. package/dist/commands/walletContactCommand.mjs +0 -184
  362. package/dist/commands/walletContactCommand.mjs.map +0 -1
  363. package/dist/commands/walletContactListCommand.mjs +0 -66
  364. package/dist/commands/walletContactListCommand.mjs.map +0 -1
  365. package/dist/commands/walletContactRemoveCommand.mjs +0 -97
  366. package/dist/commands/walletContactRemoveCommand.mjs.map +0 -1
  367. package/dist/commands/walletContactRenameCommand.mjs +0 -114
  368. package/dist/commands/walletContactRenameCommand.mjs.map +0 -1
  369. package/dist/commands/walletCreateCommand.mjs +0 -407
  370. package/dist/commands/walletCreateCommand.mjs.map +0 -1
  371. package/dist/commands/walletExportCommand.mjs +0 -345
  372. package/dist/commands/walletExportCommand.mjs.map +0 -1
  373. package/dist/commands/walletImportCommand.mjs +0 -413
  374. package/dist/commands/walletImportCommand.mjs.map +0 -1
  375. package/dist/commands/walletListCommand.mjs +0 -69
  376. package/dist/commands/walletListCommand.mjs.map +0 -1
  377. package/dist/commands/walletLockCommand.mjs +0 -56
  378. package/dist/commands/walletLockCommand.mjs.map +0 -1
  379. package/dist/commands/walletNetworkAddCommand.mjs +0 -131
  380. package/dist/commands/walletNetworkAddCommand.mjs.map +0 -1
  381. package/dist/commands/walletNetworkCommand.mjs +0 -206
  382. package/dist/commands/walletNetworkCommand.mjs.map +0 -1
  383. package/dist/commands/walletNetworkListCommand.mjs +0 -104
  384. package/dist/commands/walletNetworkListCommand.mjs.map +0 -1
  385. package/dist/commands/walletNetworkRemoveCommand.mjs +0 -112
  386. package/dist/commands/walletNetworkRemoveCommand.mjs.map +0 -1
  387. package/dist/commands/walletNetworkUseCommand.mjs +0 -110
  388. package/dist/commands/walletNetworkUseCommand.mjs.map +0 -1
  389. package/dist/commands/walletPasswordChangeCommand.mjs +0 -291
  390. package/dist/commands/walletPasswordChangeCommand.mjs.map +0 -1
  391. package/dist/commands/walletPasswordCommand.mjs +0 -301
  392. package/dist/commands/walletPasswordCommand.mjs.map +0 -1
  393. package/dist/commands/walletRemoveCommand.mjs +0 -378
  394. package/dist/commands/walletRemoveCommand.mjs.map +0 -1
  395. package/dist/commands/walletRenameCommand.mjs +0 -94
  396. package/dist/commands/walletRenameCommand.mjs.map +0 -1
  397. package/dist/commands/walletSignCommand.mjs +0 -662
  398. package/dist/commands/walletSignCommand.mjs.map +0 -1
  399. package/dist/commands/walletTxBroadcastCommand.mjs +0 -473
  400. package/dist/commands/walletTxBroadcastCommand.mjs.map +0 -1
  401. package/dist/commands/walletTxCommand.mjs +0 -612
  402. package/dist/commands/walletTxCommand.mjs.map +0 -1
  403. package/dist/commands/walletTxSendCommand.mjs +0 -492
  404. package/dist/commands/walletTxSendCommand.mjs.map +0 -1
  405. package/dist/commands/walletTxSignCommand.mjs +0 -403
  406. package/dist/commands/walletTxSignCommand.mjs.map +0 -1
  407. package/dist/commands/walletUnlockCommand.mjs +0 -308
  408. package/dist/commands/walletUnlockCommand.mjs.map +0 -1
  409. package/dist/commands/walletUseCommand.mjs +0 -95
  410. package/dist/commands/walletUseCommand.mjs.map +0 -1
  411. package/dist/commands/xyoCommand.mjs +0 -188
  412. package/dist/commands/xyoCommand.mjs.map +0 -1
  413. package/dist/commands/xyoTxCommand.mjs +0 -178
  414. package/dist/commands/xyoTxCommand.mjs.map +0 -1
  415. package/dist/commands/xyoTxValidateCommand.mjs +0 -168
  416. package/dist/commands/xyoTxValidateCommand.mjs.map +0 -1
  417. package/dist/index.d.ts +0 -3
  418. package/dist/index.mjs +0 -8466
  419. package/dist/index.mjs.map +0 -1
  420. package/dist/types/modules.d.mjs +0 -1
  421. package/dist/types/modules.d.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/actions/audit/installPlugin.ts","../../../src/actions/audit/listSessions.ts","../../../src/actions/audit/auditPaths.ts","../../../src/actions/audit/openAuditDir.ts","../../../src/actions/audit/searchAudit.ts","../../../src/actions/audit/showAiMeta.ts","../../../src/actions/audit/showSession.ts","../../../src/actions/audit/statusAudit.ts"],"sourcesContent":["import {\n existsSync, mkdirSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport { homedir } from 'node:os'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\n\ntype AuditProvider = 'claude' | 'codex'\n\ninterface CodexHookDefinition {\n command: string\n statusMessage?: string\n type: 'command'\n}\n\ninterface CodexHookMatcher {\n hooks: CodexHookDefinition[]\n matcher?: string\n}\n\ninterface CodexHooksConfig {\n hooks?: Record<string, CodexHookMatcher[]>\n}\n\nfunction findMonorepoRoot(startDir: string): string | undefined {\n let dir = startDir\n while (dir !== path.dirname(dir)) {\n if (existsSync(path.join(dir, 'pnpm-workspace.yaml'))) return dir\n dir = path.dirname(dir)\n }\n return undefined\n}\n\nfunction getRepoRoot(): string {\n const root = findMonorepoRoot(process.cwd())\n if (!root) throw new Error('Could not find monorepo root (pnpm-workspace.yaml)')\n return root\n}\n\nfunction resolveClaudeHooksDist(): string {\n return path.join(getRepoRoot(), 'packages', 'audit-plugin', 'dist', 'hooks')\n}\n\nfunction getClaudeSettingsPath(): string {\n return path.join(homedir(), '.claude', 'settings.json')\n}\n\nfunction readClaudeSettings(): Record<string, unknown> {\n const settingsPath = getClaudeSettingsPath()\n if (!existsSync(settingsPath)) return {}\n const raw = readFileSync(settingsPath, 'utf8')\n return JSON.parse(raw) as Record<string, unknown>\n}\n\nfunction writeClaudeSettings(settings: Record<string, unknown>): void {\n const settingsPath = getClaudeSettingsPath()\n mkdirSync(path.dirname(settingsPath), { recursive: true })\n writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n', 'utf8')\n}\n\nfunction buildClaudeHooks(hooksDir: string): Record<string, unknown[]> {\n return {\n SessionStart: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/session-start.mjs`, timeout: 5,\n }],\n },\n ],\n UserPromptSubmit: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/user-prompt-submit.mjs`, timeout: 5,\n }],\n },\n ],\n PostToolUse: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/post-tool-use.mjs`, timeout: 5,\n }],\n },\n ],\n Stop: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/stop.mjs`, timeout: 5,\n }],\n },\n ],\n }\n}\n\nfunction getCodexConfigPath(): string {\n return path.join(homedir(), '.codex', 'config.toml')\n}\n\nfunction getCodexHooksPath(): string {\n return path.join(getRepoRoot(), '.codex', 'hooks.json')\n}\n\nfunction readCodexConfig(): string {\n const configPath = getCodexConfigPath()\n if (!existsSync(configPath)) return ''\n return readFileSync(configPath, 'utf8')\n}\n\nfunction writeCodexConfig(config: string): void {\n const configPath = getCodexConfigPath()\n mkdirSync(path.dirname(configPath), { recursive: true })\n writeFileSync(configPath, config, 'utf8')\n}\n\nfunction enableCodexHooksFeature(): void {\n const config = readCodexConfig()\n const lines = config === '' ? [] : config.split('\\n')\n const featuresIndex = lines.findIndex(line => line.trim() === '[features]')\n\n if (featuresIndex === -1) {\n const separator = config === '' || config.endsWith('\\n\\n') || config.endsWith('\\n') ? '' : '\\n'\n writeCodexConfig(config + separator + '[features]\\ncodex_hooks = true\\n')\n return\n }\n\n const sectionEnd = lines.findIndex(\n (line, index) => index > featuresIndex && /^\\s*\\[.*\\]\\s*$/.test(line),\n )\n const endIndex = sectionEnd === -1 ? lines.length : sectionEnd\n const codexHooksIndex = lines.findIndex(\n (line, index) => index > featuresIndex && index < endIndex && /^\\s*codex_hooks\\s*=/.test(line),\n )\n\n if (codexHooksIndex === -1) {\n lines.splice(endIndex, 0, 'codex_hooks = true')\n } else {\n lines[codexHooksIndex] = 'codex_hooks = true'\n }\n\n writeCodexConfig(lines.join('\\n'))\n}\n\nfunction readCodexHooks(): CodexHooksConfig {\n const hooksPath = getCodexHooksPath()\n if (!existsSync(hooksPath)) return {}\n return JSON.parse(readFileSync(hooksPath, 'utf8')) as CodexHooksConfig\n}\n\nfunction writeCodexHooks(config: CodexHooksConfig): void {\n const hooksPath = getCodexHooksPath()\n mkdirSync(path.dirname(hooksPath), { recursive: true })\n writeFileSync(hooksPath, JSON.stringify(config, null, 2) + '\\n', 'utf8')\n}\n\nfunction buildCodexHookCommand(eventName: string): string {\n const recorderPath = path.join(getRepoRoot(), 'packages', 'audit-plugin', 'dist', 'codex', 'record-event.mjs')\n return `node \"${recorderPath}\" ${eventName}`\n}\n\nfunction buildCodexHooks(): Record<string, CodexHookMatcher[]> {\n return {\n PostToolUse: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('PostToolUse'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n matcher: 'Bash',\n },\n ],\n SessionStart: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('SessionStart'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n matcher: 'startup|resume',\n },\n ],\n Stop: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('Stop'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n },\n ],\n UserPromptSubmit: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('UserPromptSubmit'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n },\n ],\n }\n}\n\nfunction isManagedCodexHook(hook: CodexHookDefinition): boolean {\n return hook.command.includes(path.join('packages', 'audit-plugin', 'dist', 'codex', 'record-event.mjs'))\n}\n\nfunction mergeCodexHooks(existing: CodexHooksConfig): CodexHooksConfig {\n const mergedHooks = existing.hooks ? { ...existing.hooks } : {}\n const managedHooks = buildCodexHooks()\n\n for (const [eventName, groups] of Object.entries(managedHooks)) {\n const remaining = (mergedHooks[eventName] ?? [])\n .map(group => ({\n ...group,\n hooks: group.hooks.filter(hook => !isManagedCodexHook(hook)),\n }))\n .filter(group => group.hooks.length > 0)\n\n mergedHooks[eventName] = [...remaining, ...groups]\n }\n\n return { hooks: mergedHooks }\n}\n\nfunction removeManagedCodexHooks(existing: CodexHooksConfig): CodexHooksConfig {\n const nextHooks: Record<string, CodexHookMatcher[]> = {}\n\n for (const [eventName, groups] of Object.entries(existing.hooks ?? {})) {\n const remaining = groups\n .map(group => ({\n ...group,\n hooks: group.hooks.filter(hook => !isManagedCodexHook(hook)),\n }))\n .filter(group => group.hooks.length > 0)\n\n if (remaining.length > 0) {\n nextHooks[eventName] = remaining\n }\n }\n\n return Object.keys(nextHooks).length > 0 ? { hooks: nextHooks } : {}\n}\n\nfunction installClaudePlugin(): void {\n const hooksDir = resolveClaudeHooksDist()\n\n if (!existsSync(hooksDir)) {\n console.log(chalk.red(`Hook scripts not found: ${hooksDir}`))\n console.log(chalk.gray('Make sure @xylabs/aries-audit-plugin is built (pnpm xy build).'))\n return\n }\n\n const settings = readClaudeSettings()\n settings.hooks = buildClaudeHooks(hooksDir)\n writeClaudeSettings(settings)\n\n console.log(chalk.green('Claude audit hooks installed into ~/.claude/settings.json'))\n console.log(` ${chalk.gray('Hook scripts:')} ${hooksDir}`)\n console.log(chalk.yellow('\\nRestart Claude Code for the hooks to take effect.'))\n}\n\nfunction uninstallClaudePlugin(): void {\n const settings = readClaudeSettings()\n\n if (!settings.hooks) {\n console.log(chalk.yellow('No Claude hooks configured in ~/.claude/settings.json'))\n return\n }\n\n delete settings.hooks\n writeClaudeSettings(settings)\n\n console.log(chalk.green('Claude audit hooks removed from ~/.claude/settings.json'))\n console.log(chalk.yellow('Restart Claude Code for the change to take effect.'))\n}\n\nfunction installCodexPlugin(): void {\n const recorderPath = path.join(getRepoRoot(), 'packages', 'audit-plugin', 'dist', 'codex', 'record-event.mjs')\n\n if (!existsSync(recorderPath)) {\n console.log(chalk.red(`Codex recorder not found: ${recorderPath}`))\n console.log(chalk.gray('Make sure @xylabs/aries-audit-plugin is built (pnpm xy build).'))\n return\n }\n\n enableCodexHooksFeature()\n const hooks = mergeCodexHooks(readCodexHooks())\n writeCodexHooks(hooks)\n\n console.log(chalk.green('Codex audit hooks installed'))\n console.log(` ${chalk.gray('Hooks file:')} ${getCodexHooksPath()}`)\n console.log(` ${chalk.gray('Config file:')} ${getCodexConfigPath()}`)\n console.log(chalk.yellow('\\nRestart Codex CLI in this repo for the hooks to take effect.'))\n}\n\nfunction uninstallCodexPlugin(): void {\n const hooksPath = getCodexHooksPath()\n if (!existsSync(hooksPath)) {\n console.log(chalk.yellow('No repo-local Codex hooks file found to update.'))\n return\n }\n\n const hooks = removeManagedCodexHooks(readCodexHooks())\n writeCodexHooks(hooks)\n\n console.log(chalk.green('Codex audit hooks removed from repo-local hooks.json'))\n console.log(` ${chalk.gray('Hooks file:')} ${hooksPath}`)\n console.log(chalk.gray('Leaving features.codex_hooks enabled in ~/.codex/config.toml to avoid disabling unrelated hooks.'))\n}\n\nexport function installPlugin(provider?: AuditProvider): void {\n if (!provider) {\n installClaudePlugin()\n console.log()\n installCodexPlugin()\n return\n }\n\n if (provider === 'claude') {\n installClaudePlugin()\n return\n }\n\n installCodexPlugin()\n}\n\nexport function uninstallPlugin(provider?: AuditProvider): void {\n if (!provider) {\n uninstallClaudePlugin()\n console.log()\n uninstallCodexPlugin()\n return\n }\n\n if (provider === 'claude') {\n uninstallClaudePlugin()\n return\n }\n\n uninstallCodexPlugin()\n}\n","import {\n existsSync, readdirSync, readFileSync,\n} from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getAuditSearchDirs } from './auditPaths.ts'\n\ninterface AuditEntryParsed {\n event?: string\n schema?: string\n sessionId?: string\n timestamp?: string\n}\n\ninterface SessionSummary {\n date: string\n entryCount: number\n events: Record<string, number>\n firstTimestamp: string\n lastTimestamp: string\n sessionId: string\n}\n\nfunction summarizeSession(filePath: string, date: string): SessionSummary | undefined {\n const content = readFileSync(filePath, 'utf8').trim()\n if (!content) return undefined\n\n const lines = content.split('\\n')\n const events: Record<string, number> = {}\n let firstTimestamp = ''\n let lastTimestamp = ''\n let sessionId = 'unknown'\n\n for (const line of lines) {\n try {\n const entry = JSON.parse(line) as AuditEntryParsed\n if (!firstTimestamp) firstTimestamp = entry.timestamp ?? ''\n lastTimestamp = entry.timestamp ?? ''\n sessionId = entry.sessionId ?? sessionId\n const eventName = entry.event ?? 'unknown'\n events[eventName] = (events[eventName] ?? 0) + 1\n } catch {\n // skip malformed lines\n }\n }\n\n return {\n date, entryCount: lines.length, events, firstTimestamp, lastTimestamp, sessionId,\n }\n}\n\nexport function listSessions(date?: string): void {\n const auditDirs = getAuditSearchDirs().filter(dir => existsSync(dir))\n if (auditDirs.length === 0) {\n console.log(chalk.yellow('No audit logs found.'))\n return\n }\n\n const dates = date\n ? [date]\n : [...new Set(\n auditDirs.flatMap(auditDir =>\n readdirSync(auditDir).filter(d => /^\\d{4}-\\d{2}-\\d{2}$/.test(d))),\n )]\n .toSorted((a, b) => a.localeCompare(b))\n .toReversed()\n\n let found = false\n\n for (const d of dates) {\n const files = auditDirs.flatMap((auditDir) => {\n const dayDir = path.join(auditDir, d)\n if (!existsSync(dayDir)) return []\n return readdirSync(dayDir)\n .filter(f => f.endsWith('.jsonl'))\n .map(file => path.join(dayDir, file))\n })\n if (files.length === 0) continue\n\n found = true\n console.log(chalk.cyan(`\\n${d}`))\n\n for (const file of files) {\n const summary = summarizeSession(file, d)\n if (!summary) continue\n\n const timeRange = `${summary.firstTimestamp.slice(11, 19)} - ${summary.lastTimestamp.slice(11, 19)}`\n const eventSummary = Object.entries(summary.events)\n .map(([k, v]) => `${k}:${v}`)\n .join(' ')\n\n console.log(\n ` ${chalk.white(summary.sessionId.slice(0, 12).padEnd(12))} ${chalk.gray(timeRange)} ${chalk.green(String(summary.entryCount).padStart(4))} entries ${chalk.gray(eventSummary)}`,\n )\n }\n }\n\n if (!found) {\n console.log(chalk.yellow('No audit logs found.'))\n }\n}\n","import { homedir } from 'node:os'\nimport path from 'node:path'\n\nexport type AuditProvider = 'claude' | 'codex'\n\nexport function getAuditRootDir(): string {\n return path.join(homedir(), '.aries', 'audit-logs')\n}\n\nexport function getAuditDir(provider?: AuditProvider): string {\n return provider ? path.join(getAuditRootDir(), provider) : getAuditRootDir()\n}\n\nexport function getAuditSearchDirs(): string[] {\n return [\n getAuditDir('claude'),\n getAuditDir('codex'),\n getAuditRootDir(),\n ]\n}\n","import { execSync } from 'node:child_process'\nimport { existsSync, mkdirSync } from 'node:fs'\nimport { platform } from 'node:os'\n\nimport chalk from 'chalk'\n\nimport { getAuditDir } from './auditPaths.ts'\n\nexport function openAuditDir(): void {\n const dir = getAuditDir()\n\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n console.log(chalk.yellow(`Created audit log directory: ${dir}`))\n }\n\n const os = platform()\n switch (os) {\n case 'darwin': {\n execSync(`open \"${dir}\"`)\n break\n }\n case 'win32': {\n execSync(`explorer \"${dir}\"`)\n break\n }\n default: {\n execSync(`xdg-open \"${dir}\"`)\n break\n }\n }\n\n console.log(chalk.green(`Opened: ${dir}`))\n}\n","import {\n existsSync, readdirSync, readFileSync,\n} from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getAuditSearchDirs } from './auditPaths.ts'\n\ninterface AuditEntryParsed {\n data?: Record<string, unknown>\n event?: string\n schema?: string\n sessionId?: string\n timestamp?: string\n}\n\nexport function searchAudit(query: string, date?: string, limit = 50): void {\n const auditDirs = getAuditSearchDirs().filter(dir => existsSync(dir))\n if (auditDirs.length === 0) {\n console.log(chalk.yellow('No audit logs found.'))\n return\n }\n\n const dates = date\n ? [date]\n : [...new Set(\n auditDirs.flatMap(auditDir =>\n readdirSync(auditDir).filter(d => /^\\d{4}-\\d{2}-\\d{2}$/.test(d))),\n )]\n .toSorted((a, b) => a.localeCompare(b))\n .toReversed()\n\n const lowerQuery = query.toLowerCase()\n let matchCount = 0\n\n for (const d of dates) {\n const files = auditDirs.flatMap((auditDir) => {\n const dayDir = path.join(auditDir, d)\n if (!existsSync(dayDir)) return []\n return readdirSync(dayDir)\n .filter(f => f.endsWith('.jsonl'))\n .map(file => path.join(dayDir, file))\n })\n\n for (const file of files) {\n const content = readFileSync(file, 'utf8').trim()\n if (!content) continue\n\n for (const line of content.split('\\n')) {\n if (!line.toLowerCase().includes(lowerQuery)) continue\n\n try {\n const entry = JSON.parse(line) as AuditEntryParsed\n const time = (entry.timestamp ?? '').slice(0, 19)\n const event = entry.event ?? 'unknown'\n\n const snippet = JSON.stringify(entry.data).slice(0, 150)\n console.log(`${chalk.gray(time)} ${chalk.cyan((entry.sessionId ?? '').slice(0, 8))} ${chalk.yellow(event)} ${snippet}`)\n\n matchCount++\n if (matchCount >= limit) {\n console.log(chalk.gray(`\\n... showing first ${limit} matches`))\n return\n }\n } catch {\n // skip malformed\n }\n }\n }\n }\n\n if (matchCount === 0) {\n console.log(chalk.yellow(`No matches found for: ${query}`))\n } else {\n console.log(chalk.gray(`\\n${matchCount} match${matchCount === 1 ? '' : 'es'} found`))\n }\n}\n","import { execSync } from 'node:child_process'\nimport {\n existsSync, readdirSync, readFileSync,\n} from 'node:fs'\nimport { homedir } from 'node:os'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport chalk from 'chalk'\n\nfunction getClientVersion(): string | undefined {\n try {\n const thisFile = fileURLToPath(import.meta.url)\n const pkgDir = path.resolve(path.dirname(thisFile), '..', '..')\n const pkg = JSON.parse(readFileSync(path.join(pkgDir, 'package.json'), 'utf8')) as { version?: string }\n return pkg.version\n } catch {\n return undefined\n }\n}\n\nfunction getClaudeVersion(): string | undefined {\n const execPath = process.env.CLAUDE_CODE_EXECPATH\n if (execPath) return path.basename(execPath)\n try {\n const output = execSync('claude --version', { encoding: 'utf8', timeout: 5000 }).trim()\n const match = /^([\\d.]+)/.exec(output)\n return match?.[1]\n } catch {\n return undefined\n }\n}\n\nfunction getClaudeDir(): string {\n return path.join(homedir(), '.claude')\n}\n\nfunction readRestrictions(): Record<string, boolean> | undefined {\n try {\n const raw = JSON.parse(readFileSync(path.join(getClaudeDir(), 'policy-limits.json'), 'utf8')) as {\n restrictions?: Record<string, { allowed?: boolean }>\n }\n if (!raw.restrictions) return undefined\n const result: Record<string, boolean> = {}\n for (const [key, value] of Object.entries(raw.restrictions)) {\n result[key] = value.allowed ?? false\n }\n return Object.keys(result).length > 0 ? result : undefined\n } catch {\n return undefined\n }\n}\n\nfunction readIdeName(): string | undefined {\n try {\n const ideDir = path.join(getClaudeDir(), 'ide')\n if (!existsSync(ideDir)) return undefined\n const lockFile = readdirSync(ideDir).find(f => f.endsWith('.lock'))\n if (!lockFile) return undefined\n const content = JSON.parse(readFileSync(path.join(ideDir, lockFile), 'utf8')) as { ideName?: string }\n return content.ideName\n } catch {\n return undefined\n }\n}\n\nconst DYNAMIC_FIELDS = new Set(['kind', 'model', 'permissionMode'])\n\nfunction printSection(label: string, entries: Record<string, unknown>): void {\n console.log(chalk.cyan(label))\n for (const [key, value] of Object.entries(entries)) {\n if (value === undefined) {\n const fallback = DYNAMIC_FIELDS.has(key) ? chalk.gray('<dynamic>') : chalk.gray('unknown')\n console.log(` ${chalk.white(key)}: ${fallback}`)\n } else if (typeof value === 'object' && value !== null) {\n console.log(` ${chalk.white(key)}:`)\n for (const [k, v] of Object.entries(value)) {\n console.log(` ${chalk.white(k)}: ${chalk.green(String(v))}`)\n }\n } else {\n console.log(` ${chalk.white(key)}: ${chalk.green(typeof value === 'string' ? value : JSON.stringify(value))}`)\n }\n }\n}\n\nexport function showAiMeta(json: boolean): void {\n const ai: Record<string, unknown> = {\n entrypoint: process.env.CLAUDE_CODE_ENTRYPOINT,\n ide: readIdeName(),\n kind: undefined,\n model: undefined,\n permissionMode: undefined,\n product: 'claude-code',\n provider: 'anthropic',\n restrictions: readRestrictions(),\n version: getClaudeVersion(),\n }\n\n const client: Record<string, string | undefined> = {\n name: '@xylabs/aries-audit-plugin',\n version: getClientVersion(),\n }\n\n if (json) {\n console.log(JSON.stringify({ ai, client }, null, 2))\n return\n }\n\n printSection('AI', ai)\n console.log()\n printSection('Client', client)\n}\n","import {\n existsSync, readdirSync, readFileSync,\n} from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getAuditSearchDirs } from './auditPaths.ts'\n\ninterface AiMetaParsed {\n entrypoint?: string\n ide?: string\n kind?: string\n model?: string\n permissionMode?: string\n product?: string\n provider?: string\n restrictions?: Record<string, boolean>\n version?: string\n}\n\ninterface AuditEntryData {\n permissionMode?: string\n prompt?: string\n response?: string\n toolInput?: string\n toolName?: string\n}\n\ninterface AuditEntryParsed {\n ai?: AiMetaParsed\n data?: AuditEntryData\n event?: string\n schema?: string\n sessionId?: string\n timestamp?: string\n}\n\nfunction findSessionFile(sessionId: string): string | undefined {\n const auditDirs = getAuditSearchDirs().filter(dir => existsSync(dir))\n if (auditDirs.length === 0) return undefined\n\n const dates = [...new Set(\n auditDirs.flatMap(auditDir =>\n readdirSync(auditDir).filter(d => /^\\d{4}-\\d{2}-\\d{2}$/.test(d))),\n )]\n .toSorted((a, b) => a.localeCompare(b))\n .toReversed()\n\n for (const date of dates) {\n for (const auditDir of auditDirs) {\n const dayDir = path.join(auditDir, date)\n if (!existsSync(dayDir)) continue\n const files = readdirSync(dayDir).filter(f => f.includes(sessionId) && f.endsWith('.jsonl'))\n if (files.length > 0) return path.join(dayDir, files[0])\n }\n }\n\n return undefined\n}\n\nfunction formatSessionStart(time: string, entry: AuditEntryParsed): string {\n const version = entry.ai?.version ? ` v${entry.ai.version}` : ''\n const mode = entry.data?.permissionMode ? ` mode=${entry.data.permissionMode}` : ''\n return `${chalk.gray(time)} ${chalk.blue('SESSION START')}${version}${mode}`\n}\n\nfunction formatEntry(entry: AuditEntryParsed): string {\n const time = (entry.timestamp ?? '').slice(11, 23)\n const event = entry.event ?? 'unknown'\n const data = entry.data\n\n switch (event) {\n case 'SessionStart': {\n return formatSessionStart(time, entry)\n }\n case 'UserPromptSubmit': {\n return `${chalk.gray(time)} ${chalk.green('PROMPT')} ${String(data?.prompt ?? '').slice(0, 200)}`\n }\n case 'PostToolUse': {\n return `${chalk.gray(time)} ${chalk.yellow('TOOL')} ${chalk.white(String(data?.toolName ?? ''))} ${chalk.gray(String(data?.toolInput ?? '').slice(0, 120))}`\n }\n case 'Stop': {\n return `${chalk.gray(time)} ${chalk.magenta('RESPONSE')} ${String(data?.response ?? '').slice(0, 200)}`\n }\n default: {\n return `${chalk.gray(time)} ${event} ${JSON.stringify(data)}`\n }\n }\n}\n\nexport function showSession(sessionId: string, format: string): void {\n const filePath = findSessionFile(sessionId)\n if (!filePath) {\n console.log(chalk.red(`No audit log found for session: ${sessionId}`))\n return\n }\n\n const content = readFileSync(filePath, 'utf8').trim()\n if (!content) {\n console.log(chalk.yellow('Session log is empty.'))\n return\n }\n\n const lines = content.split('\\n')\n\n if (format === 'json') {\n for (const line of lines) {\n console.log(line)\n }\n return\n }\n\n console.log(chalk.cyan(`Session: ${sessionId}`))\n console.log(chalk.cyan(`File: ${filePath}`))\n console.log(chalk.cyan(`Entries: ${lines.length}`))\n console.log()\n\n for (const line of lines) {\n try {\n const entry = JSON.parse(line) as AuditEntryParsed\n console.log(formatEntry(entry))\n } catch {\n console.log(chalk.red(` [malformed] ${line.slice(0, 80)}`))\n }\n }\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport { homedir } from 'node:os'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n getAuditDir, getAuditRootDir, getAuditSearchDirs,\n} from './auditPaths.ts'\n\nfunction getDirectorySize(dir: string): number {\n let size = 0\n if (!existsSync(dir)) return size\n\n for (const entry of readdirSync(dir)) {\n const fullPath = path.join(dir, entry)\n const stat = statSync(fullPath)\n size += stat.isDirectory() ? getDirectorySize(fullPath) : stat.size\n }\n return size\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\nfunction countSessions(dir: string): number {\n if (!existsSync(dir)) return 0\n let count = 0\n for (const date of readdirSync(dir)) {\n const dayDir = path.join(dir, date)\n const stat = statSync(dayDir)\n if (stat.isDirectory()) {\n count += readdirSync(dayDir).filter(f => f.endsWith('.jsonl')).length\n }\n }\n return count\n}\n\nfunction checkHooksInstalled(): boolean {\n const settingsPath = path.join(homedir(), '.claude', 'settings.json')\n if (!existsSync(settingsPath)) return false\n try {\n const settings = JSON.parse(readFileSync(settingsPath, 'utf8')) as Record<string, unknown>\n return settings.hooks != null\n } catch {\n return false\n }\n}\n\nexport function statusAudit(): void {\n const auditRootDir = getAuditRootDir()\n const auditDirs = getAuditSearchDirs().filter(dir => existsSync(dir))\n\n console.log(chalk.cyan('Audit Plugin Status'))\n console.log()\n\n // Hook installation\n if (checkHooksInstalled()) {\n console.log(` ${chalk.green('Hooks:')} configured in ~/.claude/settings.json`)\n } else {\n console.log(` ${chalk.red('Hooks:')} not installed (run: aries audit install)`)\n }\n\n console.log()\n\n // Audit logs\n console.log(` ${chalk.gray('Log root:')} ${auditRootDir}`)\n console.log(` ${chalk.gray('Claude logs:')} ${getAuditDir('claude')}`)\n console.log(` ${chalk.gray('Codex logs:')} ${getAuditDir('codex')}`)\n\n if (auditDirs.length > 0) {\n const sessions = auditDirs.reduce((sum, dir) => sum + countSessions(dir), 0)\n const size = auditDirs.reduce((sum, dir) => sum + getDirectorySize(dir), 0)\n const dates = [...new Set(\n auditDirs.flatMap(dir => readdirSync(dir).filter(d => /^\\d{4}-\\d{2}-\\d{2}$/.test(d))),\n )]\n const sorted = dates.toSorted((a, b) => a.localeCompare(b))\n\n console.log(` ${chalk.gray('Sessions:')} ${sessions}`)\n console.log(` ${chalk.gray('Date range:')} ${sorted[0] ?? 'none'} - ${sorted.at(-1) ?? 'none'}`)\n console.log(` ${chalk.gray('Disk usage:')} ${formatBytes(size)}`)\n } else {\n console.log(` ${chalk.gray('No logs yet')}`)\n }\n}\n"],"mappings":"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","names":["existsSync","readFileSync","path","chalk","homedir","path","readFileSync","existsSync","chalk","path","existsSync","mkdirSync","chalk","existsSync","mkdirSync","chalk","existsSync","readdirSync","readFileSync","path","chalk","existsSync","chalk","readdirSync","path","readFileSync","execSync","existsSync","readdirSync","readFileSync","homedir","path","chalk","existsSync","readdirSync","readFileSync","path","chalk","existsSync","readdirSync","path","chalk","readFileSync","existsSync","readdirSync","readFileSync","homedir","path","chalk","existsSync","readdirSync","path","homedir","readFileSync","chalk"]}
@@ -1,298 +0,0 @@
1
- // src/actions/audit/installPlugin.ts
2
- import {
3
- existsSync,
4
- mkdirSync,
5
- readFileSync,
6
- writeFileSync
7
- } from "fs";
8
- import { homedir } from "os";
9
- import path from "path";
10
- import chalk from "chalk";
11
- function findMonorepoRoot(startDir) {
12
- let dir = startDir;
13
- while (dir !== path.dirname(dir)) {
14
- if (existsSync(path.join(dir, "pnpm-workspace.yaml"))) return dir;
15
- dir = path.dirname(dir);
16
- }
17
- return void 0;
18
- }
19
- function getRepoRoot() {
20
- const root = findMonorepoRoot(process.cwd());
21
- if (!root) throw new Error("Could not find monorepo root (pnpm-workspace.yaml)");
22
- return root;
23
- }
24
- function resolveClaudeHooksDist() {
25
- return path.join(getRepoRoot(), "packages", "audit-plugin", "dist", "hooks");
26
- }
27
- function getClaudeSettingsPath() {
28
- return path.join(homedir(), ".claude", "settings.json");
29
- }
30
- function readClaudeSettings() {
31
- const settingsPath = getClaudeSettingsPath();
32
- if (!existsSync(settingsPath)) return {};
33
- const raw = readFileSync(settingsPath, "utf8");
34
- return JSON.parse(raw);
35
- }
36
- function writeClaudeSettings(settings) {
37
- const settingsPath = getClaudeSettingsPath();
38
- mkdirSync(path.dirname(settingsPath), { recursive: true });
39
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n", "utf8");
40
- }
41
- function buildClaudeHooks(hooksDir) {
42
- return {
43
- SessionStart: [
44
- {
45
- matcher: "",
46
- hooks: [{
47
- type: "command",
48
- command: `node ${hooksDir}/session-start.mjs`,
49
- timeout: 5
50
- }]
51
- }
52
- ],
53
- UserPromptSubmit: [
54
- {
55
- matcher: "",
56
- hooks: [{
57
- type: "command",
58
- command: `node ${hooksDir}/user-prompt-submit.mjs`,
59
- timeout: 5
60
- }]
61
- }
62
- ],
63
- PostToolUse: [
64
- {
65
- matcher: "",
66
- hooks: [{
67
- type: "command",
68
- command: `node ${hooksDir}/post-tool-use.mjs`,
69
- timeout: 5
70
- }]
71
- }
72
- ],
73
- Stop: [
74
- {
75
- matcher: "",
76
- hooks: [{
77
- type: "command",
78
- command: `node ${hooksDir}/stop.mjs`,
79
- timeout: 5
80
- }]
81
- }
82
- ]
83
- };
84
- }
85
- function getCodexConfigPath() {
86
- return path.join(homedir(), ".codex", "config.toml");
87
- }
88
- function getCodexHooksPath() {
89
- return path.join(getRepoRoot(), ".codex", "hooks.json");
90
- }
91
- function readCodexConfig() {
92
- const configPath = getCodexConfigPath();
93
- if (!existsSync(configPath)) return "";
94
- return readFileSync(configPath, "utf8");
95
- }
96
- function writeCodexConfig(config) {
97
- const configPath = getCodexConfigPath();
98
- mkdirSync(path.dirname(configPath), { recursive: true });
99
- writeFileSync(configPath, config, "utf8");
100
- }
101
- function enableCodexHooksFeature() {
102
- const config = readCodexConfig();
103
- const lines = config === "" ? [] : config.split("\n");
104
- const featuresIndex = lines.findIndex((line) => line.trim() === "[features]");
105
- if (featuresIndex === -1) {
106
- const separator = config === "" || config.endsWith("\n\n") || config.endsWith("\n") ? "" : "\n";
107
- writeCodexConfig(config + separator + "[features]\ncodex_hooks = true\n");
108
- return;
109
- }
110
- const sectionEnd = lines.findIndex(
111
- (line, index) => index > featuresIndex && /^\s*\[.*\]\s*$/.test(line)
112
- );
113
- const endIndex = sectionEnd === -1 ? lines.length : sectionEnd;
114
- const codexHooksIndex = lines.findIndex(
115
- (line, index) => index > featuresIndex && index < endIndex && /^\s*codex_hooks\s*=/.test(line)
116
- );
117
- if (codexHooksIndex === -1) {
118
- lines.splice(endIndex, 0, "codex_hooks = true");
119
- } else {
120
- lines[codexHooksIndex] = "codex_hooks = true";
121
- }
122
- writeCodexConfig(lines.join("\n"));
123
- }
124
- function readCodexHooks() {
125
- const hooksPath = getCodexHooksPath();
126
- if (!existsSync(hooksPath)) return {};
127
- return JSON.parse(readFileSync(hooksPath, "utf8"));
128
- }
129
- function writeCodexHooks(config) {
130
- const hooksPath = getCodexHooksPath();
131
- mkdirSync(path.dirname(hooksPath), { recursive: true });
132
- writeFileSync(hooksPath, JSON.stringify(config, null, 2) + "\n", "utf8");
133
- }
134
- function buildCodexHookCommand(eventName) {
135
- const recorderPath = path.join(getRepoRoot(), "packages", "audit-plugin", "dist", "codex", "record-event.mjs");
136
- return `node "${recorderPath}" ${eventName}`;
137
- }
138
- function buildCodexHooks() {
139
- return {
140
- PostToolUse: [
141
- {
142
- hooks: [
143
- {
144
- command: buildCodexHookCommand("PostToolUse"),
145
- statusMessage: "Recording Codex audit entry",
146
- type: "command"
147
- }
148
- ],
149
- matcher: "Bash"
150
- }
151
- ],
152
- SessionStart: [
153
- {
154
- hooks: [
155
- {
156
- command: buildCodexHookCommand("SessionStart"),
157
- statusMessage: "Recording Codex audit entry",
158
- type: "command"
159
- }
160
- ],
161
- matcher: "startup|resume"
162
- }
163
- ],
164
- Stop: [
165
- {
166
- hooks: [
167
- {
168
- command: buildCodexHookCommand("Stop"),
169
- statusMessage: "Recording Codex audit entry",
170
- type: "command"
171
- }
172
- ]
173
- }
174
- ],
175
- UserPromptSubmit: [
176
- {
177
- hooks: [
178
- {
179
- command: buildCodexHookCommand("UserPromptSubmit"),
180
- statusMessage: "Recording Codex audit entry",
181
- type: "command"
182
- }
183
- ]
184
- }
185
- ]
186
- };
187
- }
188
- function isManagedCodexHook(hook) {
189
- return hook.command.includes(path.join("packages", "audit-plugin", "dist", "codex", "record-event.mjs"));
190
- }
191
- function mergeCodexHooks(existing) {
192
- const mergedHooks = existing.hooks ? { ...existing.hooks } : {};
193
- const managedHooks = buildCodexHooks();
194
- for (const [eventName, groups] of Object.entries(managedHooks)) {
195
- const remaining = (mergedHooks[eventName] ?? []).map((group) => ({
196
- ...group,
197
- hooks: group.hooks.filter((hook) => !isManagedCodexHook(hook))
198
- })).filter((group) => group.hooks.length > 0);
199
- mergedHooks[eventName] = [...remaining, ...groups];
200
- }
201
- return { hooks: mergedHooks };
202
- }
203
- function removeManagedCodexHooks(existing) {
204
- const nextHooks = {};
205
- for (const [eventName, groups] of Object.entries(existing.hooks ?? {})) {
206
- const remaining = groups.map((group) => ({
207
- ...group,
208
- hooks: group.hooks.filter((hook) => !isManagedCodexHook(hook))
209
- })).filter((group) => group.hooks.length > 0);
210
- if (remaining.length > 0) {
211
- nextHooks[eventName] = remaining;
212
- }
213
- }
214
- return Object.keys(nextHooks).length > 0 ? { hooks: nextHooks } : {};
215
- }
216
- function installClaudePlugin() {
217
- const hooksDir = resolveClaudeHooksDist();
218
- if (!existsSync(hooksDir)) {
219
- console.log(chalk.red(`Hook scripts not found: ${hooksDir}`));
220
- console.log(chalk.gray("Make sure @xylabs/aries-audit-plugin is built (pnpm xy build)."));
221
- return;
222
- }
223
- const settings = readClaudeSettings();
224
- settings.hooks = buildClaudeHooks(hooksDir);
225
- writeClaudeSettings(settings);
226
- console.log(chalk.green("Claude audit hooks installed into ~/.claude/settings.json"));
227
- console.log(` ${chalk.gray("Hook scripts:")} ${hooksDir}`);
228
- console.log(chalk.yellow("\nRestart Claude Code for the hooks to take effect."));
229
- }
230
- function uninstallClaudePlugin() {
231
- const settings = readClaudeSettings();
232
- if (!settings.hooks) {
233
- console.log(chalk.yellow("No Claude hooks configured in ~/.claude/settings.json"));
234
- return;
235
- }
236
- delete settings.hooks;
237
- writeClaudeSettings(settings);
238
- console.log(chalk.green("Claude audit hooks removed from ~/.claude/settings.json"));
239
- console.log(chalk.yellow("Restart Claude Code for the change to take effect."));
240
- }
241
- function installCodexPlugin() {
242
- const recorderPath = path.join(getRepoRoot(), "packages", "audit-plugin", "dist", "codex", "record-event.mjs");
243
- if (!existsSync(recorderPath)) {
244
- console.log(chalk.red(`Codex recorder not found: ${recorderPath}`));
245
- console.log(chalk.gray("Make sure @xylabs/aries-audit-plugin is built (pnpm xy build)."));
246
- return;
247
- }
248
- enableCodexHooksFeature();
249
- const hooks = mergeCodexHooks(readCodexHooks());
250
- writeCodexHooks(hooks);
251
- console.log(chalk.green("Codex audit hooks installed"));
252
- console.log(` ${chalk.gray("Hooks file:")} ${getCodexHooksPath()}`);
253
- console.log(` ${chalk.gray("Config file:")} ${getCodexConfigPath()}`);
254
- console.log(chalk.yellow("\nRestart Codex CLI in this repo for the hooks to take effect."));
255
- }
256
- function uninstallCodexPlugin() {
257
- const hooksPath = getCodexHooksPath();
258
- if (!existsSync(hooksPath)) {
259
- console.log(chalk.yellow("No repo-local Codex hooks file found to update."));
260
- return;
261
- }
262
- const hooks = removeManagedCodexHooks(readCodexHooks());
263
- writeCodexHooks(hooks);
264
- console.log(chalk.green("Codex audit hooks removed from repo-local hooks.json"));
265
- console.log(` ${chalk.gray("Hooks file:")} ${hooksPath}`);
266
- console.log(chalk.gray("Leaving features.codex_hooks enabled in ~/.codex/config.toml to avoid disabling unrelated hooks."));
267
- }
268
- function installPlugin(provider) {
269
- if (!provider) {
270
- installClaudePlugin();
271
- console.log();
272
- installCodexPlugin();
273
- return;
274
- }
275
- if (provider === "claude") {
276
- installClaudePlugin();
277
- return;
278
- }
279
- installCodexPlugin();
280
- }
281
- function uninstallPlugin(provider) {
282
- if (!provider) {
283
- uninstallClaudePlugin();
284
- console.log();
285
- uninstallCodexPlugin();
286
- return;
287
- }
288
- if (provider === "claude") {
289
- uninstallClaudePlugin();
290
- return;
291
- }
292
- uninstallCodexPlugin();
293
- }
294
- export {
295
- installPlugin,
296
- uninstallPlugin
297
- };
298
- //# sourceMappingURL=installPlugin.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/actions/audit/installPlugin.ts"],"sourcesContent":["import {\n existsSync, mkdirSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport { homedir } from 'node:os'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\n\ntype AuditProvider = 'claude' | 'codex'\n\ninterface CodexHookDefinition {\n command: string\n statusMessage?: string\n type: 'command'\n}\n\ninterface CodexHookMatcher {\n hooks: CodexHookDefinition[]\n matcher?: string\n}\n\ninterface CodexHooksConfig {\n hooks?: Record<string, CodexHookMatcher[]>\n}\n\nfunction findMonorepoRoot(startDir: string): string | undefined {\n let dir = startDir\n while (dir !== path.dirname(dir)) {\n if (existsSync(path.join(dir, 'pnpm-workspace.yaml'))) return dir\n dir = path.dirname(dir)\n }\n return undefined\n}\n\nfunction getRepoRoot(): string {\n const root = findMonorepoRoot(process.cwd())\n if (!root) throw new Error('Could not find monorepo root (pnpm-workspace.yaml)')\n return root\n}\n\nfunction resolveClaudeHooksDist(): string {\n return path.join(getRepoRoot(), 'packages', 'audit-plugin', 'dist', 'hooks')\n}\n\nfunction getClaudeSettingsPath(): string {\n return path.join(homedir(), '.claude', 'settings.json')\n}\n\nfunction readClaudeSettings(): Record<string, unknown> {\n const settingsPath = getClaudeSettingsPath()\n if (!existsSync(settingsPath)) return {}\n const raw = readFileSync(settingsPath, 'utf8')\n return JSON.parse(raw) as Record<string, unknown>\n}\n\nfunction writeClaudeSettings(settings: Record<string, unknown>): void {\n const settingsPath = getClaudeSettingsPath()\n mkdirSync(path.dirname(settingsPath), { recursive: true })\n writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n', 'utf8')\n}\n\nfunction buildClaudeHooks(hooksDir: string): Record<string, unknown[]> {\n return {\n SessionStart: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/session-start.mjs`, timeout: 5,\n }],\n },\n ],\n UserPromptSubmit: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/user-prompt-submit.mjs`, timeout: 5,\n }],\n },\n ],\n PostToolUse: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/post-tool-use.mjs`, timeout: 5,\n }],\n },\n ],\n Stop: [\n {\n matcher: '',\n hooks: [{\n type: 'command', command: `node ${hooksDir}/stop.mjs`, timeout: 5,\n }],\n },\n ],\n }\n}\n\nfunction getCodexConfigPath(): string {\n return path.join(homedir(), '.codex', 'config.toml')\n}\n\nfunction getCodexHooksPath(): string {\n return path.join(getRepoRoot(), '.codex', 'hooks.json')\n}\n\nfunction readCodexConfig(): string {\n const configPath = getCodexConfigPath()\n if (!existsSync(configPath)) return ''\n return readFileSync(configPath, 'utf8')\n}\n\nfunction writeCodexConfig(config: string): void {\n const configPath = getCodexConfigPath()\n mkdirSync(path.dirname(configPath), { recursive: true })\n writeFileSync(configPath, config, 'utf8')\n}\n\nfunction enableCodexHooksFeature(): void {\n const config = readCodexConfig()\n const lines = config === '' ? [] : config.split('\\n')\n const featuresIndex = lines.findIndex(line => line.trim() === '[features]')\n\n if (featuresIndex === -1) {\n const separator = config === '' || config.endsWith('\\n\\n') || config.endsWith('\\n') ? '' : '\\n'\n writeCodexConfig(config + separator + '[features]\\ncodex_hooks = true\\n')\n return\n }\n\n const sectionEnd = lines.findIndex(\n (line, index) => index > featuresIndex && /^\\s*\\[.*\\]\\s*$/.test(line),\n )\n const endIndex = sectionEnd === -1 ? lines.length : sectionEnd\n const codexHooksIndex = lines.findIndex(\n (line, index) => index > featuresIndex && index < endIndex && /^\\s*codex_hooks\\s*=/.test(line),\n )\n\n if (codexHooksIndex === -1) {\n lines.splice(endIndex, 0, 'codex_hooks = true')\n } else {\n lines[codexHooksIndex] = 'codex_hooks = true'\n }\n\n writeCodexConfig(lines.join('\\n'))\n}\n\nfunction readCodexHooks(): CodexHooksConfig {\n const hooksPath = getCodexHooksPath()\n if (!existsSync(hooksPath)) return {}\n return JSON.parse(readFileSync(hooksPath, 'utf8')) as CodexHooksConfig\n}\n\nfunction writeCodexHooks(config: CodexHooksConfig): void {\n const hooksPath = getCodexHooksPath()\n mkdirSync(path.dirname(hooksPath), { recursive: true })\n writeFileSync(hooksPath, JSON.stringify(config, null, 2) + '\\n', 'utf8')\n}\n\nfunction buildCodexHookCommand(eventName: string): string {\n const recorderPath = path.join(getRepoRoot(), 'packages', 'audit-plugin', 'dist', 'codex', 'record-event.mjs')\n return `node \"${recorderPath}\" ${eventName}`\n}\n\nfunction buildCodexHooks(): Record<string, CodexHookMatcher[]> {\n return {\n PostToolUse: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('PostToolUse'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n matcher: 'Bash',\n },\n ],\n SessionStart: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('SessionStart'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n matcher: 'startup|resume',\n },\n ],\n Stop: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('Stop'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n },\n ],\n UserPromptSubmit: [\n {\n hooks: [\n {\n command: buildCodexHookCommand('UserPromptSubmit'),\n statusMessage: 'Recording Codex audit entry',\n type: 'command',\n },\n ],\n },\n ],\n }\n}\n\nfunction isManagedCodexHook(hook: CodexHookDefinition): boolean {\n return hook.command.includes(path.join('packages', 'audit-plugin', 'dist', 'codex', 'record-event.mjs'))\n}\n\nfunction mergeCodexHooks(existing: CodexHooksConfig): CodexHooksConfig {\n const mergedHooks = existing.hooks ? { ...existing.hooks } : {}\n const managedHooks = buildCodexHooks()\n\n for (const [eventName, groups] of Object.entries(managedHooks)) {\n const remaining = (mergedHooks[eventName] ?? [])\n .map(group => ({\n ...group,\n hooks: group.hooks.filter(hook => !isManagedCodexHook(hook)),\n }))\n .filter(group => group.hooks.length > 0)\n\n mergedHooks[eventName] = [...remaining, ...groups]\n }\n\n return { hooks: mergedHooks }\n}\n\nfunction removeManagedCodexHooks(existing: CodexHooksConfig): CodexHooksConfig {\n const nextHooks: Record<string, CodexHookMatcher[]> = {}\n\n for (const [eventName, groups] of Object.entries(existing.hooks ?? {})) {\n const remaining = groups\n .map(group => ({\n ...group,\n hooks: group.hooks.filter(hook => !isManagedCodexHook(hook)),\n }))\n .filter(group => group.hooks.length > 0)\n\n if (remaining.length > 0) {\n nextHooks[eventName] = remaining\n }\n }\n\n return Object.keys(nextHooks).length > 0 ? { hooks: nextHooks } : {}\n}\n\nfunction installClaudePlugin(): void {\n const hooksDir = resolveClaudeHooksDist()\n\n if (!existsSync(hooksDir)) {\n console.log(chalk.red(`Hook scripts not found: ${hooksDir}`))\n console.log(chalk.gray('Make sure @xylabs/aries-audit-plugin is built (pnpm xy build).'))\n return\n }\n\n const settings = readClaudeSettings()\n settings.hooks = buildClaudeHooks(hooksDir)\n writeClaudeSettings(settings)\n\n console.log(chalk.green('Claude audit hooks installed into ~/.claude/settings.json'))\n console.log(` ${chalk.gray('Hook scripts:')} ${hooksDir}`)\n console.log(chalk.yellow('\\nRestart Claude Code for the hooks to take effect.'))\n}\n\nfunction uninstallClaudePlugin(): void {\n const settings = readClaudeSettings()\n\n if (!settings.hooks) {\n console.log(chalk.yellow('No Claude hooks configured in ~/.claude/settings.json'))\n return\n }\n\n delete settings.hooks\n writeClaudeSettings(settings)\n\n console.log(chalk.green('Claude audit hooks removed from ~/.claude/settings.json'))\n console.log(chalk.yellow('Restart Claude Code for the change to take effect.'))\n}\n\nfunction installCodexPlugin(): void {\n const recorderPath = path.join(getRepoRoot(), 'packages', 'audit-plugin', 'dist', 'codex', 'record-event.mjs')\n\n if (!existsSync(recorderPath)) {\n console.log(chalk.red(`Codex recorder not found: ${recorderPath}`))\n console.log(chalk.gray('Make sure @xylabs/aries-audit-plugin is built (pnpm xy build).'))\n return\n }\n\n enableCodexHooksFeature()\n const hooks = mergeCodexHooks(readCodexHooks())\n writeCodexHooks(hooks)\n\n console.log(chalk.green('Codex audit hooks installed'))\n console.log(` ${chalk.gray('Hooks file:')} ${getCodexHooksPath()}`)\n console.log(` ${chalk.gray('Config file:')} ${getCodexConfigPath()}`)\n console.log(chalk.yellow('\\nRestart Codex CLI in this repo for the hooks to take effect.'))\n}\n\nfunction uninstallCodexPlugin(): void {\n const hooksPath = getCodexHooksPath()\n if (!existsSync(hooksPath)) {\n console.log(chalk.yellow('No repo-local Codex hooks file found to update.'))\n return\n }\n\n const hooks = removeManagedCodexHooks(readCodexHooks())\n writeCodexHooks(hooks)\n\n console.log(chalk.green('Codex audit hooks removed from repo-local hooks.json'))\n console.log(` ${chalk.gray('Hooks file:')} ${hooksPath}`)\n console.log(chalk.gray('Leaving features.codex_hooks enabled in ~/.codex/config.toml to avoid disabling unrelated hooks.'))\n}\n\nexport function installPlugin(provider?: AuditProvider): void {\n if (!provider) {\n installClaudePlugin()\n console.log()\n installCodexPlugin()\n return\n }\n\n if (provider === 'claude') {\n installClaudePlugin()\n return\n }\n\n installCodexPlugin()\n}\n\nexport function uninstallPlugin(provider?: AuditProvider): void {\n if (!provider) {\n uninstallClaudePlugin()\n console.log()\n uninstallCodexPlugin()\n return\n }\n\n if (provider === 'claude') {\n uninstallClaudePlugin()\n return\n }\n\n uninstallCodexPlugin()\n}\n"],"mappings":"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","names":[]}
@@ -1,93 +0,0 @@
1
- // src/actions/audit/listSessions.ts
2
- import {
3
- existsSync,
4
- readdirSync,
5
- readFileSync
6
- } from "fs";
7
- import path2 from "path";
8
- import chalk from "chalk";
9
-
10
- // src/actions/audit/auditPaths.ts
11
- import { homedir } from "os";
12
- import path from "path";
13
- function getAuditRootDir() {
14
- return path.join(homedir(), ".aries", "audit-logs");
15
- }
16
- function getAuditDir(provider) {
17
- return provider ? path.join(getAuditRootDir(), provider) : getAuditRootDir();
18
- }
19
- function getAuditSearchDirs() {
20
- return [
21
- getAuditDir("claude"),
22
- getAuditDir("codex"),
23
- getAuditRootDir()
24
- ];
25
- }
26
-
27
- // src/actions/audit/listSessions.ts
28
- function summarizeSession(filePath, date) {
29
- const content = readFileSync(filePath, "utf8").trim();
30
- if (!content) return void 0;
31
- const lines = content.split("\n");
32
- const events = {};
33
- let firstTimestamp = "";
34
- let lastTimestamp = "";
35
- let sessionId = "unknown";
36
- for (const line of lines) {
37
- try {
38
- const entry = JSON.parse(line);
39
- if (!firstTimestamp) firstTimestamp = entry.timestamp ?? "";
40
- lastTimestamp = entry.timestamp ?? "";
41
- sessionId = entry.sessionId ?? sessionId;
42
- const eventName = entry.event ?? "unknown";
43
- events[eventName] = (events[eventName] ?? 0) + 1;
44
- } catch {
45
- }
46
- }
47
- return {
48
- date,
49
- entryCount: lines.length,
50
- events,
51
- firstTimestamp,
52
- lastTimestamp,
53
- sessionId
54
- };
55
- }
56
- function listSessions(date) {
57
- const auditDirs = getAuditSearchDirs().filter((dir) => existsSync(dir));
58
- if (auditDirs.length === 0) {
59
- console.log(chalk.yellow("No audit logs found."));
60
- return;
61
- }
62
- const dates = date ? [date] : [...new Set(
63
- auditDirs.flatMap((auditDir) => readdirSync(auditDir).filter((d) => /^\d{4}-\d{2}-\d{2}$/.test(d)))
64
- )].toSorted((a, b) => a.localeCompare(b)).toReversed();
65
- let found = false;
66
- for (const d of dates) {
67
- const files = auditDirs.flatMap((auditDir) => {
68
- const dayDir = path2.join(auditDir, d);
69
- if (!existsSync(dayDir)) return [];
70
- return readdirSync(dayDir).filter((f) => f.endsWith(".jsonl")).map((file) => path2.join(dayDir, file));
71
- });
72
- if (files.length === 0) continue;
73
- found = true;
74
- console.log(chalk.cyan(`
75
- ${d}`));
76
- for (const file of files) {
77
- const summary = summarizeSession(file, d);
78
- if (!summary) continue;
79
- const timeRange = `${summary.firstTimestamp.slice(11, 19)} - ${summary.lastTimestamp.slice(11, 19)}`;
80
- const eventSummary = Object.entries(summary.events).map(([k, v]) => `${k}:${v}`).join(" ");
81
- console.log(
82
- ` ${chalk.white(summary.sessionId.slice(0, 12).padEnd(12))} ${chalk.gray(timeRange)} ${chalk.green(String(summary.entryCount).padStart(4))} entries ${chalk.gray(eventSummary)}`
83
- );
84
- }
85
- }
86
- if (!found) {
87
- console.log(chalk.yellow("No audit logs found."));
88
- }
89
- }
90
- export {
91
- listSessions
92
- };
93
- //# sourceMappingURL=listSessions.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/actions/audit/listSessions.ts","../../../src/actions/audit/auditPaths.ts"],"sourcesContent":["import {\n existsSync, readdirSync, readFileSync,\n} from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getAuditSearchDirs } from './auditPaths.ts'\n\ninterface AuditEntryParsed {\n event?: string\n schema?: string\n sessionId?: string\n timestamp?: string\n}\n\ninterface SessionSummary {\n date: string\n entryCount: number\n events: Record<string, number>\n firstTimestamp: string\n lastTimestamp: string\n sessionId: string\n}\n\nfunction summarizeSession(filePath: string, date: string): SessionSummary | undefined {\n const content = readFileSync(filePath, 'utf8').trim()\n if (!content) return undefined\n\n const lines = content.split('\\n')\n const events: Record<string, number> = {}\n let firstTimestamp = ''\n let lastTimestamp = ''\n let sessionId = 'unknown'\n\n for (const line of lines) {\n try {\n const entry = JSON.parse(line) as AuditEntryParsed\n if (!firstTimestamp) firstTimestamp = entry.timestamp ?? ''\n lastTimestamp = entry.timestamp ?? ''\n sessionId = entry.sessionId ?? sessionId\n const eventName = entry.event ?? 'unknown'\n events[eventName] = (events[eventName] ?? 0) + 1\n } catch {\n // skip malformed lines\n }\n }\n\n return {\n date, entryCount: lines.length, events, firstTimestamp, lastTimestamp, sessionId,\n }\n}\n\nexport function listSessions(date?: string): void {\n const auditDirs = getAuditSearchDirs().filter(dir => existsSync(dir))\n if (auditDirs.length === 0) {\n console.log(chalk.yellow('No audit logs found.'))\n return\n }\n\n const dates = date\n ? [date]\n : [...new Set(\n auditDirs.flatMap(auditDir =>\n readdirSync(auditDir).filter(d => /^\\d{4}-\\d{2}-\\d{2}$/.test(d))),\n )]\n .toSorted((a, b) => a.localeCompare(b))\n .toReversed()\n\n let found = false\n\n for (const d of dates) {\n const files = auditDirs.flatMap((auditDir) => {\n const dayDir = path.join(auditDir, d)\n if (!existsSync(dayDir)) return []\n return readdirSync(dayDir)\n .filter(f => f.endsWith('.jsonl'))\n .map(file => path.join(dayDir, file))\n })\n if (files.length === 0) continue\n\n found = true\n console.log(chalk.cyan(`\\n${d}`))\n\n for (const file of files) {\n const summary = summarizeSession(file, d)\n if (!summary) continue\n\n const timeRange = `${summary.firstTimestamp.slice(11, 19)} - ${summary.lastTimestamp.slice(11, 19)}`\n const eventSummary = Object.entries(summary.events)\n .map(([k, v]) => `${k}:${v}`)\n .join(' ')\n\n console.log(\n ` ${chalk.white(summary.sessionId.slice(0, 12).padEnd(12))} ${chalk.gray(timeRange)} ${chalk.green(String(summary.entryCount).padStart(4))} entries ${chalk.gray(eventSummary)}`,\n )\n }\n }\n\n if (!found) {\n console.log(chalk.yellow('No audit logs found.'))\n }\n}\n","import { homedir } from 'node:os'\nimport path from 'node:path'\n\nexport type AuditProvider = 'claude' | 'codex'\n\nexport function getAuditRootDir(): string {\n return path.join(homedir(), '.aries', 'audit-logs')\n}\n\nexport function getAuditDir(provider?: AuditProvider): string {\n return provider ? path.join(getAuditRootDir(), provider) : getAuditRootDir()\n}\n\nexport function getAuditSearchDirs(): string[] {\n return [\n getAuditDir('claude'),\n getAuditDir('codex'),\n getAuditRootDir(),\n ]\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAAY;AAAA,EAAa;AAAA,OACpB;AACP,OAAOA,WAAU;AAEjB,OAAO,WAAW;;;ACLlB,SAAS,eAAe;AACxB,OAAO,UAAU;AAIV,SAAS,kBAA0B;AACxC,SAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,YAAY;AACpD;AAEO,SAAS,YAAY,UAAkC;AAC5D,SAAO,WAAW,KAAK,KAAK,gBAAgB,GAAG,QAAQ,IAAI,gBAAgB;AAC7E;AAEO,SAAS,qBAA+B;AAC7C,SAAO;AAAA,IACL,YAAY,QAAQ;AAAA,IACpB,YAAY,OAAO;AAAA,IACnB,gBAAgB;AAAA,EAClB;AACF;;;ADMA,SAAS,iBAAiB,UAAkB,MAA0C;AACpF,QAAM,UAAU,aAAa,UAAU,MAAM,EAAE,KAAK;AACpD,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,QAAM,SAAiC,CAAC;AACxC,MAAI,iBAAiB;AACrB,MAAI,gBAAgB;AACpB,MAAI,YAAY;AAEhB,aAAW,QAAQ,OAAO;AACxB,QAAI;AACF,YAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,UAAI,CAAC,eAAgB,kBAAiB,MAAM,aAAa;AACzD,sBAAgB,MAAM,aAAa;AACnC,kBAAY,MAAM,aAAa;AAC/B,YAAM,YAAY,MAAM,SAAS;AACjC,aAAO,SAAS,KAAK,OAAO,SAAS,KAAK,KAAK;AAAA,IACjD,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IAAM,YAAY,MAAM;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAgB;AAAA,IAAe;AAAA,EACzE;AACF;AAEO,SAAS,aAAa,MAAqB;AAChD,QAAM,YAAY,mBAAmB,EAAE,OAAO,SAAO,WAAW,GAAG,CAAC;AACpE,MAAI,UAAU,WAAW,GAAG;AAC1B,YAAQ,IAAI,MAAM,OAAO,sBAAsB,CAAC;AAChD;AAAA,EACF;AAEA,QAAM,QAAQ,OACV,CAAC,IAAI,IACL,CAAC,GAAG,IAAI;AAAA,IACN,UAAU,QAAQ,cAChB,YAAY,QAAQ,EAAE,OAAO,OAAK,sBAAsB,KAAK,CAAC,CAAC,CAAC;AAAA,EACpE,CAAC,EACE,SAAS,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC,EACrC,WAAW;AAElB,MAAI,QAAQ;AAEZ,aAAW,KAAK,OAAO;AACrB,UAAM,QAAQ,UAAU,QAAQ,CAAC,aAAa;AAC5C,YAAM,SAASC,MAAK,KAAK,UAAU,CAAC;AACpC,UAAI,CAAC,WAAW,MAAM,EAAG,QAAO,CAAC;AACjC,aAAO,YAAY,MAAM,EACtB,OAAO,OAAK,EAAE,SAAS,QAAQ,CAAC,EAChC,IAAI,UAAQA,MAAK,KAAK,QAAQ,IAAI,CAAC;AAAA,IACxC,CAAC;AACD,QAAI,MAAM,WAAW,EAAG;AAExB,YAAQ;AACR,YAAQ,IAAI,MAAM,KAAK;AAAA,EAAK,CAAC,EAAE,CAAC;AAEhC,eAAW,QAAQ,OAAO;AACxB,YAAM,UAAU,iBAAiB,MAAM,CAAC;AACxC,UAAI,CAAC,QAAS;AAEd,YAAM,YAAY,GAAG,QAAQ,eAAe,MAAM,IAAI,EAAE,CAAC,MAAM,QAAQ,cAAc,MAAM,IAAI,EAAE,CAAC;AAClG,YAAM,eAAe,OAAO,QAAQ,QAAQ,MAAM,EAC/C,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,EAC3B,KAAK,GAAG;AAEX,cAAQ;AAAA,QACN,KAAK,MAAM,MAAM,QAAQ,UAAU,MAAM,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,MAAM,MAAM,OAAO,QAAQ,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,MAAM,KAAK,YAAY,CAAC;AAAA,MAClL;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,OAAO;AACV,YAAQ,IAAI,MAAM,OAAO,sBAAsB,CAAC;AAAA,EAClD;AACF;","names":["path","path"]}
@@ -1,44 +0,0 @@
1
- // src/actions/audit/openAuditDir.ts
2
- import { execSync } from "child_process";
3
- import { existsSync, mkdirSync } from "fs";
4
- import { platform } from "os";
5
- import chalk from "chalk";
6
-
7
- // src/actions/audit/auditPaths.ts
8
- import { homedir } from "os";
9
- import path from "path";
10
- function getAuditRootDir() {
11
- return path.join(homedir(), ".aries", "audit-logs");
12
- }
13
- function getAuditDir(provider) {
14
- return provider ? path.join(getAuditRootDir(), provider) : getAuditRootDir();
15
- }
16
-
17
- // src/actions/audit/openAuditDir.ts
18
- function openAuditDir() {
19
- const dir = getAuditDir();
20
- if (!existsSync(dir)) {
21
- mkdirSync(dir, { recursive: true });
22
- console.log(chalk.yellow(`Created audit log directory: ${dir}`));
23
- }
24
- const os = platform();
25
- switch (os) {
26
- case "darwin": {
27
- execSync(`open "${dir}"`);
28
- break;
29
- }
30
- case "win32": {
31
- execSync(`explorer "${dir}"`);
32
- break;
33
- }
34
- default: {
35
- execSync(`xdg-open "${dir}"`);
36
- break;
37
- }
38
- }
39
- console.log(chalk.green(`Opened: ${dir}`));
40
- }
41
- export {
42
- openAuditDir
43
- };
44
- //# sourceMappingURL=openAuditDir.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/actions/audit/openAuditDir.ts","../../../src/actions/audit/auditPaths.ts"],"sourcesContent":["import { execSync } from 'node:child_process'\nimport { existsSync, mkdirSync } from 'node:fs'\nimport { platform } from 'node:os'\n\nimport chalk from 'chalk'\n\nimport { getAuditDir } from './auditPaths.ts'\n\nexport function openAuditDir(): void {\n const dir = getAuditDir()\n\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n console.log(chalk.yellow(`Created audit log directory: ${dir}`))\n }\n\n const os = platform()\n switch (os) {\n case 'darwin': {\n execSync(`open \"${dir}\"`)\n break\n }\n case 'win32': {\n execSync(`explorer \"${dir}\"`)\n break\n }\n default: {\n execSync(`xdg-open \"${dir}\"`)\n break\n }\n }\n\n console.log(chalk.green(`Opened: ${dir}`))\n}\n","import { homedir } from 'node:os'\nimport path from 'node:path'\n\nexport type AuditProvider = 'claude' | 'codex'\n\nexport function getAuditRootDir(): string {\n return path.join(homedir(), '.aries', 'audit-logs')\n}\n\nexport function getAuditDir(provider?: AuditProvider): string {\n return provider ? path.join(getAuditRootDir(), provider) : getAuditRootDir()\n}\n\nexport function getAuditSearchDirs(): string[] {\n return [\n getAuditDir('claude'),\n getAuditDir('codex'),\n getAuditRootDir(),\n ]\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,YAAY,iBAAiB;AACtC,SAAS,gBAAgB;AAEzB,OAAO,WAAW;;;ACJlB,SAAS,eAAe;AACxB,OAAO,UAAU;AAIV,SAAS,kBAA0B;AACxC,SAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,YAAY;AACpD;AAEO,SAAS,YAAY,UAAkC;AAC5D,SAAO,WAAW,KAAK,KAAK,gBAAgB,GAAG,QAAQ,IAAI,gBAAgB;AAC7E;;;ADHO,SAAS,eAAqB;AACnC,QAAM,MAAM,YAAY;AAExB,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAClC,YAAQ,IAAI,MAAM,OAAO,gCAAgC,GAAG,EAAE,CAAC;AAAA,EACjE;AAEA,QAAM,KAAK,SAAS;AACpB,UAAQ,IAAI;AAAA,IACV,KAAK,UAAU;AACb,eAAS,SAAS,GAAG,GAAG;AACxB;AAAA,IACF;AAAA,IACA,KAAK,SAAS;AACZ,eAAS,aAAa,GAAG,GAAG;AAC5B;AAAA,IACF;AAAA,IACA,SAAS;AACP,eAAS,aAAa,GAAG,GAAG;AAC5B;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,IAAI,MAAM,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3C;","names":[]}