squidcloudctl 1.1.3 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/dist/auth-revoke-UCNMKHTF.js +2 -0
  2. package/dist/{auth-revoke-B2JBJB36.js.map → auth-revoke-UCNMKHTF.js.map} +1 -1
  3. package/dist/auth-sessions-PIBWTIT5.js +2 -0
  4. package/dist/{auth-sessions-ZPMHJBIJ.js.map → auth-sessions-PIBWTIT5.js.map} +1 -1
  5. package/dist/auth-status-RPJVTJ4S.js +2 -0
  6. package/dist/{auth-status-BZGX7ZXN.js.map → auth-status-RPJVTJ4S.js.map} +1 -1
  7. package/dist/bin/squidcloud.js +1 -1
  8. package/dist/bin/squidcloud.js.map +1 -1
  9. package/dist/chunk-2RMLR54M.js +2 -0
  10. package/dist/chunk-2RMLR54M.js.map +1 -0
  11. package/dist/chunk-6DKUVFZF.js +2 -0
  12. package/dist/chunk-6DKUVFZF.js.map +1 -0
  13. package/dist/chunk-FZKCZRJZ.js +2 -0
  14. package/dist/chunk-FZKCZRJZ.js.map +1 -0
  15. package/dist/chunk-PSJQAIDB.js +2 -0
  16. package/dist/chunk-PSJQAIDB.js.map +1 -0
  17. package/dist/chunk-Z74H5ACJ.js +3 -0
  18. package/dist/chunk-Z74H5ACJ.js.map +1 -0
  19. package/dist/client-MCQSJIGH.js +2 -0
  20. package/dist/{client-RBFTHJQ4.js.map → client-MCQSJIGH.js.map} +1 -1
  21. package/dist/{collab-activity-LEPWGNXB.js → collab-activity-ESSL2DUE.js} +2 -2
  22. package/dist/{collab-activity-LEPWGNXB.js.map → collab-activity-ESSL2DUE.js.map} +1 -1
  23. package/dist/collab-invite-H6KXMBJ5.js +2 -0
  24. package/dist/{collab-invite-6QGPY7SO.js.map → collab-invite-H6KXMBJ5.js.map} +1 -1
  25. package/dist/collab-leave-23J42V4P.js +2 -0
  26. package/dist/{collab-leave-YMTEY2CZ.js.map → collab-leave-23J42V4P.js.map} +1 -1
  27. package/dist/collab-list-6VNDTN7W.js +2 -0
  28. package/dist/{collab-list-AQUFYKGI.js.map → collab-list-6VNDTN7W.js.map} +1 -1
  29. package/dist/collab-remove-A76ARTWG.js +2 -0
  30. package/dist/{collab-remove-CJSQYEUI.js.map → collab-remove-A76ARTWG.js.map} +1 -1
  31. package/dist/collab-transfer-S5MECG6Y.js +2 -0
  32. package/dist/{collab-transfer-I6O6T3AC.js.map → collab-transfer-S5MECG6Y.js.map} +1 -1
  33. package/dist/deploy-O7VVCVUR.js +3 -0
  34. package/dist/{deploy-3AMFZQ7I.js.map → deploy-O7VVCVUR.js.map} +1 -1
  35. package/dist/doctor-GAUV36VS.js +2 -0
  36. package/dist/doctor-GAUV36VS.js.map +1 -0
  37. package/dist/forms-clear-TSQ4YFPW.js +2 -0
  38. package/dist/{forms-clear-BFDMRIWW.js.map → forms-clear-TSQ4YFPW.js.map} +1 -1
  39. package/dist/forms-create-IJPDTTGR.js +2 -0
  40. package/dist/{forms-create-EWU47AIO.js.map → forms-create-IJPDTTGR.js.map} +1 -1
  41. package/dist/forms-delete-5Q6JVOWZ.js +2 -0
  42. package/dist/{forms-delete-HJISSH4G.js.map → forms-delete-5Q6JVOWZ.js.map} +1 -1
  43. package/dist/forms-embed-RWJ4BAPQ.js +3 -0
  44. package/dist/{forms-embed-GSIGC4V7.js.map → forms-embed-RWJ4BAPQ.js.map} +1 -1
  45. package/dist/forms-export-YGKJVRUD.js +2 -0
  46. package/dist/{forms-export-KLFI4NJ7.js.map → forms-export-YGKJVRUD.js.map} +1 -1
  47. package/dist/forms-info-NVNTIK45.js +2 -0
  48. package/dist/{forms-info-BRG5D5D7.js.map → forms-info-NVNTIK45.js.map} +1 -1
  49. package/dist/forms-list-UDYVBNX5.js +2 -0
  50. package/dist/{forms-list-GYBKM5YD.js.map → forms-list-UDYVBNX5.js.map} +1 -1
  51. package/dist/forms-submissions-LFUTUDOW.js +2 -0
  52. package/dist/{forms-submissions-RKNVL2FS.js.map → forms-submissions-LFUTUDOW.js.map} +1 -1
  53. package/dist/login-PDECY435.js +3 -0
  54. package/dist/login-PDECY435.js.map +1 -0
  55. package/dist/logout-D2GLIU2Y.js +2 -0
  56. package/dist/{logout-HGLROFNP.js.map → logout-D2GLIU2Y.js.map} +1 -1
  57. package/dist/logs-export-76WAIPNB.js +2 -0
  58. package/dist/{logs-export-547MGHOL.js.map → logs-export-76WAIPNB.js.map} +1 -1
  59. package/dist/logs-search-MA3AWP4B.js +2 -0
  60. package/dist/{logs-search-P52C7PUZ.js.map → logs-search-MA3AWP4B.js.map} +1 -1
  61. package/dist/{logs-tail-K4CWSSGP.js → logs-tail-2OMASMCD.js} +3 -3
  62. package/dist/{logs-tail-K4CWSSGP.js.map → logs-tail-2OMASMCD.js.map} +1 -1
  63. package/dist/monitor-LZ7R5C3D.js +2 -0
  64. package/dist/{monitor-IEQ4UD2H.js.map → monitor-LZ7R5C3D.js.map} +1 -1
  65. package/dist/monitor-automations-AR7MS2PL.js +2 -0
  66. package/dist/{monitor-automations-4UNPGIZG.js.map → monitor-automations-AR7MS2PL.js.map} +1 -1
  67. package/dist/monitor-pipelines-EASQLIQA.js +2 -0
  68. package/dist/{monitor-pipelines-FVASSAV4.js.map → monitor-pipelines-EASQLIQA.js.map} +1 -1
  69. package/dist/monitor-sites-2QIM4XJ3.js +2 -0
  70. package/dist/{monitor-sites-GN2CSO6K.js.map → monitor-sites-2QIM4XJ3.js.map} +1 -1
  71. package/dist/monitor-storage-SMB32J37.js +2 -0
  72. package/dist/{monitor-storage-XBPKQTPJ.js.map → monitor-storage-SMB32J37.js.map} +1 -1
  73. package/dist/scripts-cancel-CQVIDKVW.js +2 -0
  74. package/dist/{scripts-cancel-NOVNOP4C.js.map → scripts-cancel-CQVIDKVW.js.map} +1 -1
  75. package/dist/scripts-delete-TV4SX5OJ.js +2 -0
  76. package/dist/{scripts-delete-GDPLFXWI.js.map → scripts-delete-TV4SX5OJ.js.map} +1 -1
  77. package/dist/scripts-disable-IHPUGSTJ.js +2 -0
  78. package/dist/{scripts-disable-GQCO7Z2O.js.map → scripts-disable-IHPUGSTJ.js.map} +1 -1
  79. package/dist/scripts-enable-ULCXRU7W.js +2 -0
  80. package/dist/{scripts-enable-MEC2YFAZ.js.map → scripts-enable-ULCXRU7W.js.map} +1 -1
  81. package/dist/scripts-list-XWNT7242.js +2 -0
  82. package/dist/{scripts-list-CWCKTE6G.js.map → scripts-list-XWNT7242.js.map} +1 -1
  83. package/dist/scripts-logs-YBF6MTMQ.js +2 -0
  84. package/dist/{scripts-logs-BFI7ZBMA.js.map → scripts-logs-YBF6MTMQ.js.map} +1 -1
  85. package/dist/scripts-run-FQ7EOXOH.js +2 -0
  86. package/dist/{scripts-run-D5WQF7CD.js.map → scripts-run-FQ7EOXOH.js.map} +1 -1
  87. package/dist/scripts-status-XYGHYRZB.js +2 -0
  88. package/dist/{scripts-status-H3DZSNGH.js.map → scripts-status-XYGHYRZB.js.map} +1 -1
  89. package/dist/scripts-validate-T7CGIPPE.js +2 -0
  90. package/dist/{scripts-validate-GFEEMXGM.js.map → scripts-validate-T7CGIPPE.js.map} +1 -1
  91. package/dist/scripts-watch-A7HEOAOE.js +2 -0
  92. package/dist/{scripts-watch-YNPV5J7L.js.map → scripts-watch-A7HEOAOE.js.map} +1 -1
  93. package/dist/session-FBC5MGFA.js +2 -0
  94. package/dist/{session-TQAYXXL4.js.map → session-FBC5MGFA.js.map} +1 -1
  95. package/dist/sign-cancel-4YYJ2BBY.js +2 -0
  96. package/dist/{sign-cancel-65ENAT3A.js.map → sign-cancel-4YYJ2BBY.js.map} +1 -1
  97. package/dist/sign-download-VOMT2C3C.js +2 -0
  98. package/dist/{sign-download-DRG6AEW7.js.map → sign-download-VOMT2C3C.js.map} +1 -1
  99. package/dist/sign-list-SACY7XF3.js +2 -0
  100. package/dist/{sign-list-G5SAZIGV.js.map → sign-list-SACY7XF3.js.map} +1 -1
  101. package/dist/sign-request-PM7BZ56P.js +2 -0
  102. package/dist/{sign-request-KDWRY6NM.js.map → sign-request-PM7BZ56P.js.map} +1 -1
  103. package/dist/sign-status-LRQGO2UX.js +2 -0
  104. package/dist/{sign-status-IHMHFX4R.js.map → sign-status-LRQGO2UX.js.map} +1 -1
  105. package/dist/sign-verify-PQ7HBHTY.js +2 -0
  106. package/dist/{sign-verify-6GZYRRYD.js.map → sign-verify-PQ7HBHTY.js.map} +1 -1
  107. package/dist/sites-analytics-J5BMYBO5.js +2 -0
  108. package/dist/{sites-analytics-5U7LPRGD.js.map → sites-analytics-J5BMYBO5.js.map} +1 -1
  109. package/dist/sites-delete-BYUJAMSX.js +2 -0
  110. package/dist/{sites-delete-T5H6QHHE.js.map → sites-delete-BYUJAMSX.js.map} +1 -1
  111. package/dist/sites-deploys-XJQHVTET.js +2 -0
  112. package/dist/{sites-deploys-AGHGIVLV.js.map → sites-deploys-XJQHVTET.js.map} +1 -1
  113. package/dist/sites-info-JBM5C5FT.js +2 -0
  114. package/dist/{sites-info-55Y5G46C.js.map → sites-info-JBM5C5FT.js.map} +1 -1
  115. package/dist/sites-list-4AIOO76P.js +2 -0
  116. package/dist/{sites-list-AESG52QR.js.map → sites-list-4AIOO76P.js.map} +1 -1
  117. package/dist/sites-logs-GZALCIBX.js +3 -0
  118. package/dist/{sites-logs-CLJ35QZF.js.map → sites-logs-GZALCIBX.js.map} +1 -1
  119. package/dist/sites-open-QJOKIMGM.js +3 -0
  120. package/dist/{sites-open-6FLQLGDU.js.map → sites-open-QJOKIMGM.js.map} +1 -1
  121. package/dist/sites-purge-GXD673E2.js +2 -0
  122. package/dist/{sites-purge-3EE6M54Y.js.map → sites-purge-GXD673E2.js.map} +1 -1
  123. package/dist/sites-rename-BTQZRAVA.js +2 -0
  124. package/dist/{sites-rename-JJPIKOEV.js.map → sites-rename-BTQZRAVA.js.map} +1 -1
  125. package/dist/sites-rollback-LZUUU4ZU.js +2 -0
  126. package/dist/{sites-rollback-LG76J5XE.js.map → sites-rollback-LZUUU4ZU.js.map} +1 -1
  127. package/dist/sites-unpublish-IB7BTNJC.js +2 -0
  128. package/dist/{sites-unpublish-77EWOZI6.js.map → sites-unpublish-IB7BTNJC.js.map} +1 -1
  129. package/dist/sites-visibility-I7PIUX4B.js +2 -0
  130. package/dist/{sites-visibility-E6MDL2R5.js.map → sites-visibility-I7PIUX4B.js.map} +1 -1
  131. package/dist/storage-cat-CFOIZEJS.js +2 -0
  132. package/dist/{storage-cat-NMDWAEM4.js.map → storage-cat-CFOIZEJS.js.map} +1 -1
  133. package/dist/storage-clean-6EN2KMOC.js +2 -0
  134. package/dist/{storage-clean-6S5GP2AR.js.map → storage-clean-6EN2KMOC.js.map} +1 -1
  135. package/dist/storage-cp-SCF3CFS2.js +2 -0
  136. package/dist/{storage-cp-XM6KPPDU.js.map → storage-cp-SCF3CFS2.js.map} +1 -1
  137. package/dist/storage-diff-MYW5AM3C.js +2 -0
  138. package/dist/{storage-diff-2UTHBORN.js.map → storage-diff-MYW5AM3C.js.map} +1 -1
  139. package/dist/storage-download-6EQJJ7SO.js +3 -0
  140. package/dist/{storage-download-6OZCB7M4.js.map → storage-download-6EQJJ7SO.js.map} +1 -1
  141. package/dist/storage-info-BV7VXGTF.js +2 -0
  142. package/dist/{storage-info-ZD6LDRFG.js.map → storage-info-BV7VXGTF.js.map} +1 -1
  143. package/dist/storage-ls-HIVJWOV6.js +3 -0
  144. package/dist/storage-ls-HIVJWOV6.js.map +1 -0
  145. package/dist/storage-mkdir-GRKUOWAJ.js +2 -0
  146. package/dist/{storage-mkdir-YR6DI3T6.js.map → storage-mkdir-GRKUOWAJ.js.map} +1 -1
  147. package/dist/storage-mv-RYW5TXAH.js +2 -0
  148. package/dist/{storage-mv-3NQNRFPE.js.map → storage-mv-RYW5TXAH.js.map} +1 -1
  149. package/dist/storage-rm-PLBQC4ED.js +2 -0
  150. package/dist/{storage-rm-EF36YTVT.js.map → storage-rm-PLBQC4ED.js.map} +1 -1
  151. package/dist/storage-search-EKYRVCY2.js +2 -0
  152. package/dist/{storage-search-73OT4DNB.js.map → storage-search-EKYRVCY2.js.map} +1 -1
  153. package/dist/storage-share-OENZM4QY.js +2 -0
  154. package/dist/{storage-share-VK5Z3IRP.js.map → storage-share-OENZM4QY.js.map} +1 -1
  155. package/dist/storage-tag-7XTICDCD.js +2 -0
  156. package/dist/{storage-tag-VMF6QLSU.js.map → storage-tag-7XTICDCD.js.map} +1 -1
  157. package/dist/storage-unshare-6G6YPRPN.js +2 -0
  158. package/dist/{storage-unshare-NAVNQCKH.js.map → storage-unshare-6G6YPRPN.js.map} +1 -1
  159. package/dist/storage-upload-HW4QAENK.js +2 -0
  160. package/dist/{storage-upload-LA2VFTEN.js.map → storage-upload-HW4QAENK.js.map} +1 -1
  161. package/dist/time-list-HUWDZZ27.js +2 -0
  162. package/dist/{time-list-4FAFRADD.js.map → time-list-HUWDZZ27.js.map} +1 -1
  163. package/dist/time-lock-MZ6C6DMR.js +2 -0
  164. package/dist/{time-lock-L4PL43SC.js.map → time-lock-MZ6C6DMR.js.map} +1 -1
  165. package/dist/time-proof-G6IX5SMS.js +2 -0
  166. package/dist/{time-proof-ZOOUFIKS.js.map → time-proof-G6IX5SMS.js.map} +1 -1
  167. package/dist/time-status-UJ3XY3R5.js +2 -0
  168. package/dist/{time-status-M4QX6GTM.js.map → time-status-UJ3XY3R5.js.map} +1 -1
  169. package/dist/time-unlock-3TUR2KVC.js +2 -0
  170. package/dist/{time-unlock-UPHP5V74.js.map → time-unlock-3TUR2KVC.js.map} +1 -1
  171. package/dist/{update-XJQSXSFU.js → update-DOHW47PB.js} +2 -2
  172. package/dist/{update-XJQSXSFU.js.map → update-DOHW47PB.js.map} +1 -1
  173. package/dist/whoami-C4LPZU6R.js +2 -0
  174. package/dist/{whoami-2ABU6JQD.js.map → whoami-C4LPZU6R.js.map} +1 -1
  175. package/package.json +1 -3
  176. package/dist/auth-revoke-B2JBJB36.js +0 -2
  177. package/dist/auth-sessions-ZPMHJBIJ.js +0 -2
  178. package/dist/auth-status-BZGX7ZXN.js +0 -2
  179. package/dist/chunk-E2I4VVR5.js +0 -2
  180. package/dist/chunk-E2I4VVR5.js.map +0 -1
  181. package/dist/chunk-FYFPDKJM.js +0 -3
  182. package/dist/chunk-FYFPDKJM.js.map +0 -1
  183. package/dist/chunk-G4JU7IUC.js +0 -2
  184. package/dist/chunk-G4JU7IUC.js.map +0 -1
  185. package/dist/chunk-RXARHDCW.js +0 -2
  186. package/dist/chunk-RXARHDCW.js.map +0 -1
  187. package/dist/client-RBFTHJQ4.js +0 -2
  188. package/dist/collab-invite-6QGPY7SO.js +0 -2
  189. package/dist/collab-leave-YMTEY2CZ.js +0 -2
  190. package/dist/collab-list-AQUFYKGI.js +0 -2
  191. package/dist/collab-remove-CJSQYEUI.js +0 -2
  192. package/dist/collab-transfer-I6O6T3AC.js +0 -2
  193. package/dist/deploy-3AMFZQ7I.js +0 -3
  194. package/dist/doctor-DAYHBLCK.js +0 -2
  195. package/dist/doctor-DAYHBLCK.js.map +0 -1
  196. package/dist/forms-clear-BFDMRIWW.js +0 -2
  197. package/dist/forms-create-EWU47AIO.js +0 -2
  198. package/dist/forms-delete-HJISSH4G.js +0 -2
  199. package/dist/forms-embed-GSIGC4V7.js +0 -3
  200. package/dist/forms-export-KLFI4NJ7.js +0 -2
  201. package/dist/forms-info-BRG5D5D7.js +0 -2
  202. package/dist/forms-list-GYBKM5YD.js +0 -2
  203. package/dist/forms-submissions-RKNVL2FS.js +0 -2
  204. package/dist/login-CG7LSZMB.js +0 -2
  205. package/dist/login-CG7LSZMB.js.map +0 -1
  206. package/dist/logout-HGLROFNP.js +0 -2
  207. package/dist/logs-export-547MGHOL.js +0 -2
  208. package/dist/logs-search-P52C7PUZ.js +0 -2
  209. package/dist/monitor-IEQ4UD2H.js +0 -2
  210. package/dist/monitor-automations-4UNPGIZG.js +0 -2
  211. package/dist/monitor-pipelines-FVASSAV4.js +0 -2
  212. package/dist/monitor-sites-GN2CSO6K.js +0 -2
  213. package/dist/monitor-storage-XBPKQTPJ.js +0 -2
  214. package/dist/scripts-cancel-NOVNOP4C.js +0 -2
  215. package/dist/scripts-delete-GDPLFXWI.js +0 -2
  216. package/dist/scripts-disable-GQCO7Z2O.js +0 -2
  217. package/dist/scripts-enable-MEC2YFAZ.js +0 -2
  218. package/dist/scripts-list-CWCKTE6G.js +0 -2
  219. package/dist/scripts-logs-BFI7ZBMA.js +0 -2
  220. package/dist/scripts-run-D5WQF7CD.js +0 -2
  221. package/dist/scripts-status-H3DZSNGH.js +0 -2
  222. package/dist/scripts-validate-GFEEMXGM.js +0 -2
  223. package/dist/scripts-watch-YNPV5J7L.js +0 -2
  224. package/dist/session-TQAYXXL4.js +0 -2
  225. package/dist/sign-cancel-65ENAT3A.js +0 -2
  226. package/dist/sign-download-DRG6AEW7.js +0 -2
  227. package/dist/sign-list-G5SAZIGV.js +0 -2
  228. package/dist/sign-request-KDWRY6NM.js +0 -2
  229. package/dist/sign-status-IHMHFX4R.js +0 -2
  230. package/dist/sign-verify-6GZYRRYD.js +0 -2
  231. package/dist/sites-analytics-5U7LPRGD.js +0 -2
  232. package/dist/sites-delete-T5H6QHHE.js +0 -2
  233. package/dist/sites-deploys-AGHGIVLV.js +0 -2
  234. package/dist/sites-info-55Y5G46C.js +0 -2
  235. package/dist/sites-list-AESG52QR.js +0 -2
  236. package/dist/sites-logs-CLJ35QZF.js +0 -3
  237. package/dist/sites-open-6FLQLGDU.js +0 -3
  238. package/dist/sites-purge-3EE6M54Y.js +0 -2
  239. package/dist/sites-rename-JJPIKOEV.js +0 -2
  240. package/dist/sites-rollback-LG76J5XE.js +0 -2
  241. package/dist/sites-unpublish-77EWOZI6.js +0 -2
  242. package/dist/sites-visibility-E6MDL2R5.js +0 -2
  243. package/dist/storage-cat-NMDWAEM4.js +0 -2
  244. package/dist/storage-clean-6S5GP2AR.js +0 -2
  245. package/dist/storage-cp-XM6KPPDU.js +0 -2
  246. package/dist/storage-diff-2UTHBORN.js +0 -2
  247. package/dist/storage-download-6OZCB7M4.js +0 -3
  248. package/dist/storage-info-ZD6LDRFG.js +0 -2
  249. package/dist/storage-ls-KE7UDC3I.js +0 -2
  250. package/dist/storage-ls-KE7UDC3I.js.map +0 -1
  251. package/dist/storage-mkdir-YR6DI3T6.js +0 -2
  252. package/dist/storage-mv-3NQNRFPE.js +0 -2
  253. package/dist/storage-rm-EF36YTVT.js +0 -2
  254. package/dist/storage-search-73OT4DNB.js +0 -2
  255. package/dist/storage-share-VK5Z3IRP.js +0 -2
  256. package/dist/storage-tag-VMF6QLSU.js +0 -2
  257. package/dist/storage-unshare-NAVNQCKH.js +0 -2
  258. package/dist/storage-upload-LA2VFTEN.js +0 -2
  259. package/dist/time-list-4FAFRADD.js +0 -2
  260. package/dist/time-lock-L4PL43SC.js +0 -2
  261. package/dist/time-proof-ZOOUFIKS.js +0 -2
  262. package/dist/time-status-M4QX6GTM.js +0 -2
  263. package/dist/time-unlock-UPHP5V74.js +0 -2
  264. package/dist/whoami-2ABU6JQD.js +0 -2
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-PSJQAIDB.js';import {d}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import'./chunk-THMWE2I6.js';import {g}from'./chunk-QT7R3AXE.js';import {d as d$1}from'./chunk-2RMLR54M.js';import a from'inquirer';async function c(e){if(e.all){let{confirm:s}=await a.prompt([{type:"confirm",name:"confirm",message:"Revoke ALL active sessions? This will log out every device.",default:false}]);if(!s)return;let t=a$1("Revoking all sessions...");t.start(),await d("/api/auth/ssp/revoke-all",{},{authenticated:true}),await d$1(),t.succeed(),g("All sessions revoked");return}if(e.session){let s=a$1(`Revoking session ${e.session}...`);s.start(),await d("/api/auth/ssp/revoke",{session_id:e.session},{authenticated:true}),s.succeed(),g(`Session ${e.session} revoked`);return}console.error("Specify --session <id> or --all"),process.exit(1);}export{c as default};//# sourceMappingURL=auth-revoke-UCNMKHTF.js.map
2
+ //# sourceMappingURL=auth-revoke-UCNMKHTF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/auth/auth-revoke.ts"],"names":["authRevoke","options","confirm","inquirer","spinner","createSpinner","apiPost","clearSession","logSuccess"],"mappings":"gOAOA,eAAOA,CAAAA,CAAkCC,GAAAA,CAA6D,CACpG,GAAIA,GAAAA,CAAQ,GAAA,CAAK,CACf,GAAM,CAAE,QAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,6DAAA,CACT,QAAS,KACX,CAAC,CAAC,CAAA,CACF,GAAI,CAACD,EAAS,OACd,IAAME,CAAAA,CAAUC,CAAAA,CAAc,0BAA0B,CAAA,CACxDD,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,0BAAA,CAA4B,EAAC,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACrE,MAAMC,CAAAA,GACNH,CAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAW,sBAAsB,CAAA,CACjC,MACF,CAEA,GAAIP,GAAAA,CAAQ,OAAA,CAAS,CACnB,IAAMG,EAAUC,CAAAA,CAAc,CAAA,iBAAA,EAAoBJ,GAAAA,CAAQ,OAAO,CAAA,GAAA,CAAK,CAAA,CACtEG,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,WAAYL,GAAAA,CAAQ,OAAQ,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9FG,CAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAW,CAAA,QAAA,EAAWP,IAAQ,OAAO,CAAA,QAAA,CAAU,CAAA,CAC/C,MACF,CAEA,OAAA,CAAQ,KAAA,CAAM,iCAAiC,CAAA,CAC/C,OAAA,CAAQ,IAAA,CAAK,CAAC,EAChB","file":"auth-revoke-B2JBJB36.js","sourcesContent":["import { Command } from 'commander'\nimport { apiPost } from '../../lib/api/client.js'\nimport { clearSession } from '../../lib/auth/session.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\nimport inquirer from 'inquirer'\n\nexport default async function authRevoke(options: { session?: string; all?: boolean }): Promise<void> {\n if (options.all) {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Revoke ALL active sessions? This will log out every device.',\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner('Revoking all sessions...')\n spinner.start()\n await apiPost('/api/auth/ssp/revoke-all', {}, { authenticated: true })\n await clearSession()\n spinner.succeed()\n logSuccess('All sessions revoked')\n return\n }\n\n if (options.session) {\n const spinner = createSpinner(`Revoking session ${options.session}...`)\n spinner.start()\n await apiPost('/api/auth/ssp/revoke', { session_id: options.session }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Session ${options.session} revoked`)\n return\n }\n\n console.error('Specify --session <id> or --all')\n process.exit(1)\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/auth/auth-revoke.ts"],"names":["authRevoke","options","confirm","inquirer","spinner","createSpinner","apiPost","clearSession","logSuccess"],"mappings":"0QAOA,eAAOA,CAAAA,CAAkCC,CAAAA,CAA6D,CACpG,GAAIA,CAAAA,CAAQ,GAAA,CAAK,CACf,GAAM,CAAE,QAAAC,CAAQ,CAAA,CAAI,MAAMC,CAAAA,CAAS,MAAA,CAAO,CAAC,CACzC,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,SAAA,CACN,OAAA,CAAS,6DAAA,CACT,QAAS,KACX,CAAC,CAAC,CAAA,CACF,GAAI,CAACD,EAAS,OACd,IAAME,CAAAA,CAAUC,GAAAA,CAAc,0BAA0B,CAAA,CACxDD,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,0BAAA,CAA4B,EAAC,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CACrE,MAAMC,GAAAA,GACNH,CAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAW,sBAAsB,CAAA,CACjC,MACF,CAEA,GAAIP,CAAAA,CAAQ,OAAA,CAAS,CACnB,IAAMG,EAAUC,GAAAA,CAAc,CAAA,iBAAA,EAAoBJ,CAAAA,CAAQ,OAAO,CAAA,GAAA,CAAK,CAAA,CACtEG,EAAQ,KAAA,EAAM,CACd,MAAME,CAAAA,CAAQ,sBAAA,CAAwB,CAAE,WAAYL,CAAAA,CAAQ,OAAQ,CAAA,CAAG,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,CAC9FG,CAAAA,CAAQ,OAAA,EAAQ,CAChBI,CAAAA,CAAW,CAAA,QAAA,EAAWP,EAAQ,OAAO,CAAA,QAAA,CAAU,CAAA,CAC/C,MACF,CAEA,OAAA,CAAQ,KAAA,CAAM,iCAAiC,CAAA,CAC/C,OAAA,CAAQ,IAAA,CAAK,CAAC,EAChB","file":"auth-revoke-UCNMKHTF.js","sourcesContent":["import { Command } from 'commander'\nimport { apiPost } from '../../lib/api/client.js'\nimport { clearSession } from '../../lib/auth/session.js'\nimport { createSpinner } from '../../lib/output/spinner.js'\nimport { logSuccess } from '../../lib/output/logger.js'\nimport inquirer from 'inquirer'\n\nexport default async function authRevoke(options: { session?: string; all?: boolean }): Promise<void> {\n if (options.all) {\n const { confirm } = await inquirer.prompt([{\n type: 'confirm',\n name: 'confirm',\n message: 'Revoke ALL active sessions? This will log out every device.',\n default: false,\n }])\n if (!confirm) return\n const spinner = createSpinner('Revoking all sessions...')\n spinner.start()\n await apiPost('/api/auth/ssp/revoke-all', {}, { authenticated: true })\n await clearSession()\n spinner.succeed()\n logSuccess('All sessions revoked')\n return\n }\n\n if (options.session) {\n const spinner = createSpinner(`Revoking session ${options.session}...`)\n spinner.start()\n await apiPost('/api/auth/ssp/revoke', { session_id: options.session }, { authenticated: true })\n spinner.succeed()\n logSuccess(`Session ${options.session} revoked`)\n return\n }\n\n console.error('Specify --session <id> or --all')\n process.exit(1)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {c}from'./chunk-6DKUVFZF.js';import'./chunk-NDB6KXYI.js';import'./chunk-Z74H5ACJ.js';import {a}from'./chunk-THMWE2I6.js';import {b,c as c$1}from'./chunk-FZKCZRJZ.js';import'./chunk-QT7R3AXE.js';import'./chunk-2RMLR54M.js';async function s(){let i=((await c("/api/auth/ssp/sessions",{authenticated:true})).sessions||[]).map(e=>({id:e.id.slice(0,8)+"...",device:e.device_fingerprint.slice(0,12),platform:e.platform||"unknown",last_seen:c$1(e.last_seen),created:b(e.created_at),current:e.current?"\u25CF":""}));console.log(a(i,[{key:"id",label:"Session ID"},{key:"device",label:"Fingerprint"},{key:"platform",label:"Platform"},{key:"last_seen",label:"Last Seen"},{key:"created",label:"Created"},{key:"current",label:""}]));}export{s as default};//# sourceMappingURL=auth-sessions-PIBWTIT5.js.map
2
+ //# sourceMappingURL=auth-sessions-PIBWTIT5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/auth/auth-sessions.ts"],"names":["authSessions","rows","apiGet","s","formatRelative","formatDate","renderTable"],"mappings":"kMAaA,eAAOA,CAAAA,EAAqD,CAE1D,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAoC,wBAAA,CAA0B,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACrF,QAAA,EAAY,EAAC,EAAG,GAAA,CAAIC,IAAM,CAC3C,EAAA,CAAIA,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAI,KAAA,CACvB,OAAQA,CAAAA,CAAE,kBAAA,CAAmB,MAAM,CAAA,CAAG,EAAE,EACxC,QAAA,CAAUA,CAAAA,CAAE,UAAY,SAAA,CACxB,SAAA,CAAWC,EAAeD,CAAAA,CAAE,SAAS,EACrC,OAAA,CAASE,CAAAA,CAAWF,CAAAA,CAAE,UAAU,CAAA,CAChC,OAAA,CAASA,EAAE,OAAA,CAAU,QAAA,CAAM,EAC7B,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAIG,CAAAA,CAAYL,EAAM,CAC5B,CAAE,IAAK,IAAA,CAAM,KAAA,CAAO,YAAa,CAAA,CACjC,CAAE,IAAK,QAAA,CAAU,KAAA,CAAO,aAAc,CAAA,CACtC,CAAE,GAAA,CAAK,WAAY,KAAA,CAAO,UAAW,EACrC,CAAE,GAAA,CAAK,YAAa,KAAA,CAAO,WAAY,CAAA,CACvC,CAAE,GAAA,CAAK,SAAA,CAAW,MAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,SAAA,CAAW,MAAO,EAAG,CAC9B,CAAC,CAAC,EACJ","file":"auth-sessions-ZPMHJBIJ.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate, formatRelative } from '../../lib/utils/format.js'\n\ninterface SessionInfo {\n id: string\n device_fingerprint: string\n platform: string\n last_seen: string\n created_at: string\n current: boolean\n}\n\nexport default async function authSessions(): Promise<void> {\n const data = await apiGet<{ sessions: SessionInfo[] }>('/api/auth/ssp/sessions', { authenticated: true })\n const rows = (data.sessions || []).map(s => ({\n id: s.id.slice(0, 8) + '...',\n device: s.device_fingerprint.slice(0, 12),\n platform: s.platform || 'unknown',\n last_seen: formatRelative(s.last_seen),\n created: formatDate(s.created_at),\n current: s.current ? '●' : '',\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'Session ID' },\n { key: 'device', label: 'Fingerprint' },\n { key: 'platform', label: 'Platform' },\n { key: 'last_seen', label: 'Last Seen' },\n { key: 'created', label: 'Created' },\n { key: 'current', label: '' },\n ]))\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/auth/auth-sessions.ts"],"names":["authSessions","rows","apiGet","s","formatRelative","formatDate","renderTable"],"mappings":"qOAaA,eAAOA,CAAAA,EAAqD,CAE1D,IAAMC,CAAAA,CAAAA,CAAAA,CADO,MAAMC,CAAAA,CAAoC,wBAAA,CAA0B,CAAE,aAAA,CAAe,IAAK,CAAC,CAAA,EACrF,QAAA,EAAY,EAAC,EAAG,GAAA,CAAIC,IAAM,CAC3C,EAAA,CAAIA,CAAAA,CAAE,EAAA,CAAG,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAI,KAAA,CACvB,OAAQA,CAAAA,CAAE,kBAAA,CAAmB,MAAM,CAAA,CAAG,EAAE,EACxC,QAAA,CAAUA,CAAAA,CAAE,UAAY,SAAA,CACxB,SAAA,CAAWC,IAAeD,CAAAA,CAAE,SAAS,EACrC,OAAA,CAASE,CAAAA,CAAWF,CAAAA,CAAE,UAAU,CAAA,CAChC,OAAA,CAASA,EAAE,OAAA,CAAU,QAAA,CAAM,EAC7B,CAAA,CAAE,CAAA,CACF,QAAQ,GAAA,CAAIG,CAAAA,CAAYL,EAAM,CAC5B,CAAE,IAAK,IAAA,CAAM,KAAA,CAAO,YAAa,CAAA,CACjC,CAAE,IAAK,QAAA,CAAU,KAAA,CAAO,aAAc,CAAA,CACtC,CAAE,GAAA,CAAK,WAAY,KAAA,CAAO,UAAW,EACrC,CAAE,GAAA,CAAK,YAAa,KAAA,CAAO,WAAY,CAAA,CACvC,CAAE,GAAA,CAAK,SAAA,CAAW,MAAO,SAAU,CAAA,CACnC,CAAE,GAAA,CAAK,SAAA,CAAW,MAAO,EAAG,CAC9B,CAAC,CAAC,EACJ","file":"auth-sessions-PIBWTIT5.js","sourcesContent":["import { apiGet } from '../../lib/api/client.js'\nimport { renderTable } from '../../lib/output/table.js'\nimport { formatDate, formatRelative } from '../../lib/utils/format.js'\n\ninterface SessionInfo {\n id: string\n device_fingerprint: string\n platform: string\n last_seen: string\n created_at: string\n current: boolean\n}\n\nexport default async function authSessions(): Promise<void> {\n const data = await apiGet<{ sessions: SessionInfo[] }>('/api/auth/ssp/sessions', { authenticated: true })\n const rows = (data.sessions || []).map(s => ({\n id: s.id.slice(0, 8) + '...',\n device: s.device_fingerprint.slice(0, 12),\n platform: s.platform || 'unknown',\n last_seen: formatRelative(s.last_seen),\n created: formatDate(s.created_at),\n current: s.current ? '●' : '',\n }))\n console.log(renderTable(rows, [\n { key: 'id', label: 'Session ID' },\n { key: 'device', label: 'Fingerprint' },\n { key: 'platform', label: 'Platform' },\n { key: 'last_seen', label: 'Last Seen' },\n { key: 'created', label: 'Created' },\n { key: 'current', label: '' },\n ]))\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {d}from'./chunk-FZKCZRJZ.js';import {h,f,m,l}from'./chunk-QT7R3AXE.js';import {b,a,g}from'./chunk-2RMLR54M.js';import e from'chalk';async function u(){let i=await b();i||(h("Not authenticated"),process.exit(1));let f$1=a(),t=i.device_fingerprint===f$1,o=g(i),s=o<=120*1e3;if(f()){m({authenticated:true,session_id:i.session_id,expires_in_ms:o,fingerprint_match:t,needs_refresh:s,user:i.user});return}l(""),l(`${e.bold("Session Health")}`),l(`${e.dim("\u2500\u2500\u2500".repeat(15))}`),l(` ${e.bold("Session ID:")} ${e.dim(i.session_id)}`),l(` ${e.bold("User:")} ${i.user.email} (${i.user.username})`),l(` ${e.bold("Plan:")} ${e.hex("#7C4DFF")(i.user.plan)}`),l(` ${e.bold("Expires:")} ${o>0?d(o):e.red("expired")}`),l(` ${e.bold("Fingerprint:")} ${t?e.green("\u2713 match"):e.red("\u2717 mismatch")}`),l(` ${e.bold("Refresh:")} ${s?e.yellow("needed soon"):e.green("ok")}`),l("");}export{u as default};//# sourceMappingURL=auth-status-RPJVTJ4S.js.map
2
+ //# sourceMappingURL=auth-status-RPJVTJ4S.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/auth/auth-status.ts"],"names":["authStatus","session","loadSession","logError","currentFingerprint","computeDeviceFingerprint","fingerprintMatch","timeLeft","getTimeUntilExpiry","needsRefresh","isJsonMode","logJSON","logRaw","chalk","formatCountdown"],"mappings":"yJAOA,eAAOA,GAAmD,CACxD,IAAMC,EAAU,MAAMC,CAAAA,GACjBD,CAAAA,GACHE,CAAAA,CAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA,CAGhB,IAAMC,GAAAA,CAAqBC,CAAAA,EAAyB,CAC9CC,CAAAA,CAAmBL,EAAQ,kBAAA,GAAuBG,GAAAA,CAClDG,EAAWC,CAAAA,CAAmBP,CAAO,EACrCQ,CAAAA,CAAeF,CAAAA,EAAY,IAAS,GAAA,CAE1C,GAAIG,GAAW,CAAG,CAChBC,IAAQ,CACN,aAAA,CAAe,KACf,UAAA,CAAYV,CAAAA,CAAQ,UAAA,CACpB,aAAA,CAAeM,EACf,iBAAA,CAAmBD,CAAAA,CACnB,cAAeG,CAAAA,CACf,IAAA,CAAMR,EAAQ,IAChB,CAAC,EACD,MACF,CAEAW,IAAO,EAAE,CAAA,CACTA,IAAO,CAAA,EAAGC,CAAAA,CAAM,KAAK,gBAAgB,CAAC,EAAE,CAAA,CACxCD,GAAAA,CAAO,GAAGC,CAAAA,CAAM,GAAA,CAAI,qBAAM,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CAAE,EACvCD,GAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,aAAa,CAAC,CAAA,IAAA,EAAOA,CAAAA,CAAM,IAAIZ,CAAAA,CAAQ,UAAU,CAAC,CAAA,CAAE,EAC3EW,GAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA,UAAA,EAAaZ,CAAAA,CAAQ,KAAK,KAAK,CAAA,EAAA,EAAKA,EAAQ,IAAA,CAAK,QAAQ,GAAG,CAAA,CAC3FW,GAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,UAAA,EAAaA,EAAM,GAAA,CAAI,SAAS,EAAEZ,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,EACrFW,GAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,UAAU,CAAC,CAAA,OAAA,EAAUN,CAAAA,CAAW,EAAIO,CAAAA,CAAgBP,CAAQ,CAAA,CAAIM,CAAAA,CAAM,IAAI,SAAS,CAAC,EAAE,CAAA,CAC7GD,GAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,cAAc,CAAC,CAAA,GAAA,EAAMP,EAAmBO,CAAAA,CAAM,KAAA,CAAM,cAAS,CAAA,CAAIA,CAAAA,CAAM,IAAI,iBAAY,CAAC,EAAE,CAAA,CACjHD,GAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,OAAA,EAAUJ,EAAeI,CAAAA,CAAM,MAAA,CAAO,aAAa,CAAA,CAAIA,CAAAA,CAAM,MAAM,IAAI,CAAC,EAAE,CAAA,CAC5GD,GAAAA,CAAO,EAAE,EACX","file":"auth-status-BZGX7ZXN.js","sourcesContent":["import { loadSession, getTimeUntilExpiry } from '../../lib/auth/session.js'\nimport { computeDeviceFingerprint } from '../../lib/auth/fingerprint.js'\nimport { logError, logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\nimport { formatCountdown } from '../../lib/utils/format.js'\n\nexport default async function authStatus(): Promise<void> {\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated')\n process.exit(1)\n }\n\n const currentFingerprint = computeDeviceFingerprint()\n const fingerprintMatch = session.device_fingerprint === currentFingerprint\n const timeLeft = getTimeUntilExpiry(session)\n const needsRefresh = timeLeft <= 2 * 60 * 1000\n\n if (isJsonMode()) {\n logJSON({\n authenticated: true,\n session_id: session.session_id,\n expires_in_ms: timeLeft,\n fingerprint_match: fingerprintMatch,\n needs_refresh: needsRefresh,\n user: session.user,\n })\n return\n }\n\n logRaw('')\n logRaw(`${chalk.bold('Session Health')}`)\n logRaw(`${chalk.dim('───'.repeat(15))}`)\n logRaw(` ${chalk.bold('Session ID:')} ${chalk.dim(session.session_id)}`)\n logRaw(` ${chalk.bold('User:')} ${session.user.email} (${session.user.username})`)\n logRaw(` ${chalk.bold('Plan:')} ${chalk.hex('#7C4DFF')(session.user.plan)}`)\n logRaw(` ${chalk.bold('Expires:')} ${timeLeft > 0 ? formatCountdown(timeLeft) : chalk.red('expired')}`)\n logRaw(` ${chalk.bold('Fingerprint:')} ${fingerprintMatch ? chalk.green('✓ match') : chalk.red('✗ mismatch')}`)\n logRaw(` ${chalk.bold('Refresh:')} ${needsRefresh ? chalk.yellow('needed soon') : chalk.green('ok')}`)\n logRaw('')\n}\n"]}
1
+ {"version":3,"sources":["../src/commands/auth/auth-status.ts"],"names":["authStatus","session","loadSession","logError","currentFingerprint","computeDeviceFingerprint","fingerprintMatch","timeLeft","getTimeUntilExpiry","needsRefresh","isJsonMode","logJSON","logRaw","chalk","formatCountdown"],"mappings":"2IAOA,eAAOA,GAAmD,CACxD,IAAMC,EAAU,MAAMC,CAAAA,GACjBD,CAAAA,GACHE,CAAAA,CAAS,mBAAmB,CAAA,CAC5B,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAA,CAGhB,IAAMC,GAAAA,CAAqBC,CAAAA,EAAyB,CAC9CC,CAAAA,CAAmBL,EAAQ,kBAAA,GAAuBG,GAAAA,CAClDG,EAAWC,CAAAA,CAAmBP,CAAO,EACrCQ,CAAAA,CAAeF,CAAAA,EAAY,IAAS,GAAA,CAE1C,GAAIG,GAAW,CAAG,CAChBC,EAAQ,CACN,aAAA,CAAe,KACf,UAAA,CAAYV,CAAAA,CAAQ,UAAA,CACpB,aAAA,CAAeM,EACf,iBAAA,CAAmBD,CAAAA,CACnB,cAAeG,CAAAA,CACf,IAAA,CAAMR,EAAQ,IAChB,CAAC,EACD,MACF,CAEAW,EAAO,EAAE,CAAA,CACTA,EAAO,CAAA,EAAGC,CAAAA,CAAM,KAAK,gBAAgB,CAAC,EAAE,CAAA,CACxCD,CAAAA,CAAO,GAAGC,CAAAA,CAAM,GAAA,CAAI,qBAAM,MAAA,CAAO,EAAE,CAAC,CAAC,CAAA,CAAE,EACvCD,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,aAAa,CAAC,CAAA,IAAA,EAAOA,CAAAA,CAAM,IAAIZ,CAAAA,CAAQ,UAAU,CAAC,CAAA,CAAE,EAC3EW,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA,UAAA,EAAaZ,CAAAA,CAAQ,KAAK,KAAK,CAAA,EAAA,EAAKA,EAAQ,IAAA,CAAK,QAAQ,GAAG,CAAA,CAC3FW,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,OAAO,CAAC,CAAA,UAAA,EAAaA,EAAM,GAAA,CAAI,SAAS,EAAEZ,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,EACrFW,CAAAA,CAAO,CAAA,EAAA,EAAKC,EAAM,IAAA,CAAK,UAAU,CAAC,CAAA,OAAA,EAAUN,CAAAA,CAAW,EAAIO,CAAAA,CAAgBP,CAAQ,CAAA,CAAIM,CAAAA,CAAM,IAAI,SAAS,CAAC,EAAE,CAAA,CAC7GD,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,cAAc,CAAC,CAAA,GAAA,EAAMP,EAAmBO,CAAAA,CAAM,KAAA,CAAM,cAAS,CAAA,CAAIA,CAAAA,CAAM,IAAI,iBAAY,CAAC,EAAE,CAAA,CACjHD,CAAAA,CAAO,KAAKC,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAC,CAAA,OAAA,EAAUJ,EAAeI,CAAAA,CAAM,MAAA,CAAO,aAAa,CAAA,CAAIA,CAAAA,CAAM,MAAM,IAAI,CAAC,EAAE,CAAA,CAC5GD,CAAAA,CAAO,EAAE,EACX","file":"auth-status-RPJVTJ4S.js","sourcesContent":["import { loadSession, getTimeUntilExpiry } from '../../lib/auth/session.js'\nimport { computeDeviceFingerprint } from '../../lib/auth/fingerprint.js'\nimport { logError, logJSON, logRaw } from '../../lib/output/logger.js'\nimport { isJsonMode } from '../../lib/output/logger.js'\nimport chalk from 'chalk'\nimport { formatCountdown } from '../../lib/utils/format.js'\n\nexport default async function authStatus(): Promise<void> {\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated')\n process.exit(1)\n }\n\n const currentFingerprint = computeDeviceFingerprint()\n const fingerprintMatch = session.device_fingerprint === currentFingerprint\n const timeLeft = getTimeUntilExpiry(session)\n const needsRefresh = timeLeft <= 2 * 60 * 1000\n\n if (isJsonMode()) {\n logJSON({\n authenticated: true,\n session_id: session.session_id,\n expires_in_ms: timeLeft,\n fingerprint_match: fingerprintMatch,\n needs_refresh: needsRefresh,\n user: session.user,\n })\n return\n }\n\n logRaw('')\n logRaw(`${chalk.bold('Session Health')}`)\n logRaw(`${chalk.dim('───'.repeat(15))}`)\n logRaw(` ${chalk.bold('Session ID:')} ${chalk.dim(session.session_id)}`)\n logRaw(` ${chalk.bold('User:')} ${session.user.email} (${session.user.username})`)\n logRaw(` ${chalk.bold('Plan:')} ${chalk.hex('#7C4DFF')(session.user.plan)}`)\n logRaw(` ${chalk.bold('Expires:')} ${timeLeft > 0 ? formatCountdown(timeLeft) : chalk.red('expired')}`)\n logRaw(` ${chalk.bold('Fingerprint:')} ${fingerprintMatch ? chalk.green('✓ match') : chalk.red('✗ mismatch')}`)\n logRaw(` ${chalk.bold('Refresh:')} ${needsRefresh ? chalk.yellow('needed soon') : chalk.green('ok')}`)\n logRaw('')\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import'../chunk-FYFPDKJM.js';import {a}from'../chunk-RXARHDCW.js';import'../chunk-NDB6KXYI.js';import'../chunk-THMWE2I6.js';import {e,d,h,n}from'../chunk-QT7R3AXE.js';import {m,q}from'../chunk-E2I4VVR5.js';import {Command}from'commander';var A=[{name:"login",aliases:[],description:"Authenticate with SquidCloud",requiresAuth:false,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"auth",handler:()=>import('../login-CG7LSZMB.js')},{name:"logout",aliases:[],description:"End current CLI session and clear credentials",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"auth",handler:()=>import('../logout-HGLROFNP.js')},{name:"whoami",aliases:["auth whoami"],description:"Show current authenticated account info",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"auth",handler:()=>import('../whoami-2ABU6JQD.js')},{name:"auth status",aliases:[],description:"Detailed session health check",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"auth",handler:()=>import('../auth-status-BZGX7ZXN.js')},{name:"auth sessions",aliases:[],description:"List all active CLI sessions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"auth",handler:()=>import('../auth-sessions-ZPMHJBIJ.js')},{name:"auth revoke",aliases:[],description:"Revoke a session or all sessions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"destructive",category:"auth",handler:()=>import('../auth-revoke-B2JBJB36.js')},{name:"storage ls",aliases:["storage list"],description:"List files and folders in storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-ls-KE7UDC3I.js')},{name:"storage upload",aliases:["storage up"],description:"Upload files or folders to storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-upload-LA2VFTEN.js')},{name:"storage download",aliases:["storage dl"],description:"Download files or folders from storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-download-6OZCB7M4.js')},{name:"storage cp",aliases:[],description:"Copy files within storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-cp-XM6KPPDU.js')},{name:"storage mv",aliases:[],description:"Move/rename files within storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"storage",handler:()=>import('../storage-mv-3NQNRFPE.js')},{name:"storage rm",aliases:[],description:"Delete files from storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"storage",handler:()=>import('../storage-rm-EF36YTVT.js')},{name:"storage mkdir",aliases:[],description:"Create a folder in storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-mkdir-YR6DI3T6.js')},{name:"storage cat",aliases:[],description:"Print file contents to terminal",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-cat-NMDWAEM4.js')},{name:"storage info",aliases:[],description:"Show file metadata",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-info-ZD6LDRFG.js')},{name:"storage share",aliases:[],description:"Generate a share link for a file",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-share-VK5Z3IRP.js')},{name:"storage unshare",aliases:[],description:"Revoke all share links for a file",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"storage",handler:()=>import('../storage-unshare-NAVNQCKH.js')},{name:"storage tag",aliases:[],description:"Add or remove file tags",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-tag-VMF6QLSU.js')},{name:"storage search",aliases:[],description:"Search storage by filename",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-search-73OT4DNB.js')},{name:"storage diff",aliases:[],description:"Compare local and remote storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-diff-2UTHBORN.js')},{name:"storage clean",aliases:[],description:"Clean orphaned files from storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"storage",handler:()=>import('../storage-clean-6S5GP2AR.js')},{name:"deploy",aliases:["squidsite deploy"],description:"Deploy a static website to SquidCloud Sites",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"deploy",handler:()=>import('../deploy-3AMFZQ7I.js')},{name:"sites list",aliases:["sites ls"],description:"List all published sites",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-list-AESG52QR.js')},{name:"sites info",aliases:[],description:"Show site details",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-info-55Y5G46C.js')},{name:"sites open",aliases:[],description:"Open site in browser",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-open-6FLQLGDU.js')},{name:"sites unpublish",aliases:[],description:"Take a site offline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"sites",handler:()=>import('../sites-unpublish-77EWOZI6.js')},{name:"sites delete",aliases:[],description:"Permanently delete a site",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"sites",handler:()=>import('../sites-delete-T5H6QHHE.js')},{name:"sites visibility",aliases:[],description:"Change site visibility (public/private)",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sites",handler:()=>import('../sites-visibility-E6MDL2R5.js')},{name:"sites rename",aliases:[],description:"Rename a site slug",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"sites",handler:()=>import('../sites-rename-JJPIKOEV.js')},{name:"sites rollback",aliases:[],description:"Rollback to a previous deployment",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sites",handler:()=>import('../sites-rollback-LG76J5XE.js')},{name:"sites deploys",aliases:[],description:"Show deployment history",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-deploys-AGHGIVLV.js')},{name:"sites logs",aliases:[],description:"Stream live site access logs",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-logs-CLJ35QZF.js')},{name:"sites analytics",aliases:[],description:"Show site traffic analytics",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-analytics-5U7LPRGD.js')},{name:"sites purge",aliases:[],description:"Purge CDN cache for a site",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sites",handler:()=>import('../sites-purge-3EE6M54Y.js')},{name:"scripts list",aliases:[],description:"List registered SquidScripts",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-list-CWCKTE6G.js')},{name:"scripts run",aliases:[],description:"Run a SquidScript pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-run-D5WQF7CD.js')},{name:"scripts logs",aliases:[],description:"View pipeline run logs",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-logs-BFI7ZBMA.js')},{name:"scripts validate",aliases:[],description:"Validate a .squid.yml file",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-validate-GFEEMXGM.js')},{name:"scripts init",aliases:[],description:"Create a new pipeline interactively",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-init-AU6WNMKB.js')},{name:"scripts enable",aliases:[],description:"Enable a disabled pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-enable-MEC2YFAZ.js')},{name:"scripts disable",aliases:[],description:"Disable a pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"scripts",handler:()=>import('../scripts-disable-GQCO7Z2O.js')},{name:"scripts delete",aliases:[],description:"Delete a pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"scripts",handler:()=>import('../scripts-delete-GDPLFXWI.js')},{name:"scripts status",aliases:[],description:"Show pipeline status",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-status-H3DZSNGH.js')},{name:"scripts cancel",aliases:[],description:"Cancel a running pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"scripts",handler:()=>import('../scripts-cancel-NOVNOP4C.js')},{name:"scripts watch",aliases:[],description:"Watch .squid.yml for changes",requiresAuth:false,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-watch-YNPV5J7L.js')},{name:"filereq list",aliases:["forms list","filereq ls"],description:"List file requests",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-list-GYBKM5YD.js')},{name:"filereq create",aliases:["forms create"],description:"Create a file request",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-create-EWU47AIO.js')},{name:"filereq info",aliases:["forms info"],description:"View file request details",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-info-BRG5D5D7.js')},{name:"filereq submissions",aliases:["forms submissions"],description:"View file request submissions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-submissions-RKNVL2FS.js')},{name:"filereq export",aliases:["forms export"],description:"Export submissions as CSV",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-export-KLFI4NJ7.js')},{name:"filereq clear",aliases:["forms clear"],description:"Clear all submissions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"forms",handler:()=>import('../forms-clear-BFDMRIWW.js')},{name:"filereq delete",aliases:["forms delete"],description:"Delete a file request",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"forms",handler:()=>import('../forms-delete-HJISSH4G.js')},{name:"filereq embed",aliases:["forms embed"],description:"Get HTML embed snippet",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-embed-GSIGC4V7.js')},{name:"time lock",aliases:[],description:"Time-lock a file or folder",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"time",handler:()=>import('../time-lock-L4PL43SC.js')},{name:"time unlock",aliases:[],description:"Unlock a time-locked file",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-unlock-UPHP5V74.js')},{name:"time status",aliases:[],description:"Check time-lock status",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-status-M4QX6GTM.js')},{name:"time list",aliases:[],description:"List all time-locked files",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-list-4FAFRADD.js')},{name:"time proof",aliases:[],description:"Export cryptographic existence proof",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-proof-ZOOUFIKS.js')},{name:"collab invite",aliases:[],description:"Invite a collaborator to a folder",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"collab",handler:()=>import('../collab-invite-6QGPY7SO.js')},{name:"collab list",aliases:[],description:"List folder collaborators",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"collab",handler:()=>import('../collab-list-AQUFYKGI.js')},{name:"collab remove",aliases:[],description:"Remove a collaborator",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"collab",handler:()=>import('../collab-remove-CJSQYEUI.js')},{name:"collab activity",aliases:[],description:"View collaborator activity feed",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"collab",handler:()=>import('../collab-activity-LEPWGNXB.js')},{name:"collab leave",aliases:[],description:"Leave a shared folder",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"collab",handler:()=>import('../collab-leave-YMTEY2CZ.js')},{name:"collab transfer",aliases:[],description:"Transfer folder ownership",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"collab",handler:()=>import('../collab-transfer-I6O6T3AC.js')},{name:"sign request",aliases:[],description:"Request a digital signature",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-request-KDWRY6NM.js')},{name:"sign status",aliases:[],description:"Check signing request status",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-status-IHMHFX4R.js')},{name:"sign list",aliases:[],description:"List signing requests",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-list-G5SAZIGV.js')},{name:"sign cancel",aliases:[],description:"Cancel a signing request",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sign",handler:()=>import('../sign-cancel-65ENAT3A.js')},{name:"sign verify",aliases:[],description:"Verify a signed document",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-verify-6GZYRRYD.js')},{name:"sign download",aliases:[],description:"Download signed document",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-download-DRG6AEW7.js')},{name:"monitor",aliases:[],description:"At-a-glance SquidCloud health dashboard",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-IEQ4UD2H.js')},{name:"monitor sites",aliases:[],description:"Site health overview",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-sites-GN2CSO6K.js')},{name:"monitor pipelines",aliases:[],description:"Pipeline health overview",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-pipelines-FVASSAV4.js')},{name:"monitor storage",aliases:[],description:"Storage health report",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-storage-XBPKQTPJ.js')},{name:"monitor automations",aliases:[],description:"Automation health overview",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-automations-4UNPGIZG.js')},{name:"logs tail",aliases:[],description:"Stream live logs",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"logs",handler:()=>import('../logs-tail-K4CWSSGP.js')},{name:"logs search",aliases:[],description:"Search historical logs",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"logs",handler:()=>import('../logs-search-P52C7PUZ.js')},{name:"logs export",aliases:[],description:"Export logs as JSONL or CSV",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"logs",handler:()=>import('../logs-export-547MGHOL.js')},{name:"doctor",aliases:[],description:"Run system diagnostics",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../doctor-DAYHBLCK.js')},{name:"version",aliases:["--version","-v"],description:"Show CLI version",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../version-LHSDYI7Q.js')},{name:"config list",aliases:["config ls"],description:"List CLI configuration",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-7G24FXQJ.js')},{name:"config set",aliases:[],description:"Set a config value",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-set-O6JKOGGN.js')},{name:"config get",aliases:[],description:"Get a config value",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-get-DDNSM5EH.js')},{name:"config delete",aliases:[],description:"Delete a config value",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-delete-VSIFFODZ.js')},{name:"config reset",aliases:[],description:"Reset all configuration",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"utility",handler:()=>import('../config-reset-ZFMP4J5H.js')},{name:"completion",aliases:[],description:"Generate shell completion scripts",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"utility",handler:()=>import('../completion-IF3NB7PB.js')},{name:"feedback",aliases:[],description:"Submit feedback or report a bug",requiresAuth:false,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"utility",handler:()=>import('../feedback-QUGQAWZB.js')},{name:"update",aliases:[],description:"Update the CLI to latest version",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../update-XJQSXSFU.js')}];function v(){return [...A]}var p=new Command,y={version:"1.0.0",description:"SquidCloud CLI \u2014 static sites, storage, pipelines, and more."};p.name("squidcloud").description(y.description).version(y.version,"-v, --version","Display CLI version").option("--output <format>","Output format (json)","text").hook("preAction",async e$1=>{e$1.optsWithGlobals().output==="json"&&e(true),d()&&e(false);});async function L(e){if(!e.requiresAuth)return;let s=await m();s||(h("Not authenticated. Run `squidcloud login` first."),process.exit(1)),q(s)&&(await a()||(h("Session expired. Please run `squidcloud login` again."),process.exit(1)));}function C(e){let s=new Map;for(let r of e){let u=r.name.split(" ");if(u.length===1)s.set(r.name,new Map);else if(u.length===2){let[t,o]=u;s.has(t)||s.set(t,new Map),s.get(t).set(o,r);}}for(let[r,u]of s)if(u.size===0){let t=e.find(a=>a.name===r),o=p.command(r);o.description(t.description),t.aliases.length>0&&o.aliases(t.aliases),o.action(async(...a)=>{try{await L(t);let i=await t.handler();if(typeof i.default=="function"){let n=a.slice(0,-2);await i.default(...n);}n(t.name,process.argv.slice(2).join(" "),0);}catch(i){let n$1=i instanceof Error?i.message:String(i);h(n$1),n(t.name,process.argv.slice(2).join(" "),1),process.exit(1);}});}else {let t=p.command(r);t.description(`SquidCloud ${r} commands`);for(let[o,a]of u){let i=`${r} ${o}`,n$1=t.command(o);n$1.description(a.description),a.aliases.length>0&&n$1.aliases(a.aliases.map(f=>f.replace(`${r} `,""))),n$1.action(async(...f)=>{try{await L(a);let l=await a.handler();if(typeof l.default=="function"){let m=f.slice(0,-2);await l.default(...m);}n(i,process.argv.slice(2).join(" "),0);}catch(l){let m=l instanceof Error?l.message:String(l);h(m),n(i,process.argv.slice(2).join(" "),1),process.exit(1);}});}}}async function b(){let e=process.argv.slice(2);if(e.includes("--version")||e.includes("-v")){let{showVersion:r}=await import('../version-LHSDYI7Q.js');await r();return}if(e.length===0&&!e.includes("--help")&&!e.includes("-h")){let{showVersion:r}=await import('../version-LHSDYI7Q.js');await r(),console.log(""),p.outputHelp();return}let s=v();C(s),p.addHelpText("beforeAll",`
2
+ import'../chunk-PSJQAIDB.js';import {a}from'../chunk-Z74H5ACJ.js';import'../chunk-THMWE2I6.js';import {e,d,h,n}from'../chunk-QT7R3AXE.js';import {b as b$1,f}from'../chunk-2RMLR54M.js';import {Command}from'commander';var A=[{name:"login",aliases:[],description:"Authenticate with SquidCloud",requiresAuth:false,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"auth",handler:()=>import('../login-PDECY435.js')},{name:"logout",aliases:[],description:"End current CLI session and clear credentials",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"auth",handler:()=>import('../logout-D2GLIU2Y.js')},{name:"whoami",aliases:["auth whoami"],description:"Show current authenticated account info",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"auth",handler:()=>import('../whoami-C4LPZU6R.js')},{name:"auth status",aliases:[],description:"Detailed session health check",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"auth",handler:()=>import('../auth-status-RPJVTJ4S.js')},{name:"auth sessions",aliases:[],description:"List all active CLI sessions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"auth",handler:()=>import('../auth-sessions-PIBWTIT5.js')},{name:"auth revoke",aliases:[],description:"Revoke a session or all sessions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"destructive",category:"auth",handler:()=>import('../auth-revoke-UCNMKHTF.js')},{name:"storage ls",aliases:["storage list"],description:"List files and folders in storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-ls-HIVJWOV6.js')},{name:"storage upload",aliases:["storage up"],description:"Upload files or folders to storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-upload-HW4QAENK.js')},{name:"storage download",aliases:["storage dl"],description:"Download files or folders from storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-download-6EQJJ7SO.js')},{name:"storage cp",aliases:[],description:"Copy files within storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-cp-SCF3CFS2.js')},{name:"storage mv",aliases:[],description:"Move/rename files within storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"storage",handler:()=>import('../storage-mv-RYW5TXAH.js')},{name:"storage rm",aliases:[],description:"Delete files from storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"storage",handler:()=>import('../storage-rm-PLBQC4ED.js')},{name:"storage mkdir",aliases:[],description:"Create a folder in storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-mkdir-GRKUOWAJ.js')},{name:"storage cat",aliases:[],description:"Print file contents to terminal",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-cat-CFOIZEJS.js')},{name:"storage info",aliases:[],description:"Show file metadata",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-info-BV7VXGTF.js')},{name:"storage share",aliases:[],description:"Generate a share link for a file",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-share-OENZM4QY.js')},{name:"storage unshare",aliases:[],description:"Revoke all share links for a file",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"storage",handler:()=>import('../storage-unshare-6G6YPRPN.js')},{name:"storage tag",aliases:[],description:"Add or remove file tags",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-tag-7XTICDCD.js')},{name:"storage search",aliases:[],description:"Search storage by filename",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-search-EKYRVCY2.js')},{name:"storage diff",aliases:[],description:"Compare local and remote storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"storage",handler:()=>import('../storage-diff-MYW5AM3C.js')},{name:"storage clean",aliases:[],description:"Clean orphaned files from storage",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"storage",handler:()=>import('../storage-clean-6EN2KMOC.js')},{name:"deploy",aliases:["squidsite deploy"],description:"Deploy a static website to SquidCloud Sites",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"deploy",handler:()=>import('../deploy-O7VVCVUR.js')},{name:"sites list",aliases:["sites ls"],description:"List all published sites",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-list-4AIOO76P.js')},{name:"sites info",aliases:[],description:"Show site details",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-info-JBM5C5FT.js')},{name:"sites open",aliases:[],description:"Open site in browser",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-open-QJOKIMGM.js')},{name:"sites unpublish",aliases:[],description:"Take a site offline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"sites",handler:()=>import('../sites-unpublish-IB7BTNJC.js')},{name:"sites delete",aliases:[],description:"Permanently delete a site",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"sites",handler:()=>import('../sites-delete-BYUJAMSX.js')},{name:"sites visibility",aliases:[],description:"Change site visibility (public/private)",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sites",handler:()=>import('../sites-visibility-I7PIUX4B.js')},{name:"sites rename",aliases:[],description:"Rename a site slug",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"sites",handler:()=>import('../sites-rename-BTQZRAVA.js')},{name:"sites rollback",aliases:[],description:"Rollback to a previous deployment",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sites",handler:()=>import('../sites-rollback-LZUUU4ZU.js')},{name:"sites deploys",aliases:[],description:"Show deployment history",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-deploys-XJQHVTET.js')},{name:"sites logs",aliases:[],description:"Stream live site access logs",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-logs-GZALCIBX.js')},{name:"sites analytics",aliases:[],description:"Show site traffic analytics",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sites",handler:()=>import('../sites-analytics-J5BMYBO5.js')},{name:"sites purge",aliases:[],description:"Purge CDN cache for a site",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sites",handler:()=>import('../sites-purge-GXD673E2.js')},{name:"scripts list",aliases:[],description:"List registered SquidScripts",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-list-XWNT7242.js')},{name:"scripts run",aliases:[],description:"Run a SquidScript pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-run-FQ7EOXOH.js')},{name:"scripts logs",aliases:[],description:"View pipeline run logs",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-logs-YBF6MTMQ.js')},{name:"scripts validate",aliases:[],description:"Validate a .squid.yml file",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-validate-T7CGIPPE.js')},{name:"scripts init",aliases:[],description:"Create a new pipeline interactively",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-init-AU6WNMKB.js')},{name:"scripts enable",aliases:[],description:"Enable a disabled pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-enable-ULCXRU7W.js')},{name:"scripts disable",aliases:[],description:"Disable a pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"scripts",handler:()=>import('../scripts-disable-IHPUGSTJ.js')},{name:"scripts delete",aliases:[],description:"Delete a pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"scripts",handler:()=>import('../scripts-delete-TV4SX5OJ.js')},{name:"scripts status",aliases:[],description:"Show pipeline status",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-status-XYGHYRZB.js')},{name:"scripts cancel",aliases:[],description:"Cancel a running pipeline",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"scripts",handler:()=>import('../scripts-cancel-CQVIDKVW.js')},{name:"scripts watch",aliases:[],description:"Watch .squid.yml for changes",requiresAuth:false,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"scripts",handler:()=>import('../scripts-watch-A7HEOAOE.js')},{name:"filereq list",aliases:["forms list","filereq ls"],description:"List file requests",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-list-UDYVBNX5.js')},{name:"filereq create",aliases:["forms create"],description:"Create a file request",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-create-IJPDTTGR.js')},{name:"filereq info",aliases:["forms info"],description:"View file request details",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-info-NVNTIK45.js')},{name:"filereq submissions",aliases:["forms submissions"],description:"View file request submissions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-submissions-LFUTUDOW.js')},{name:"filereq export",aliases:["forms export"],description:"Export submissions as CSV",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-export-YGKJVRUD.js')},{name:"filereq clear",aliases:["forms clear"],description:"Clear all submissions",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"forms",handler:()=>import('../forms-clear-TSQ4YFPW.js')},{name:"filereq delete",aliases:["forms delete"],description:"Delete a file request",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"forms",handler:()=>import('../forms-delete-5Q6JVOWZ.js')},{name:"filereq embed",aliases:["forms embed"],description:"Get HTML embed snippet",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"forms",handler:()=>import('../forms-embed-RWJ4BAPQ.js')},{name:"time lock",aliases:[],description:"Time-lock a file or folder",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"time",handler:()=>import('../time-lock-MZ6C6DMR.js')},{name:"time unlock",aliases:[],description:"Unlock a time-locked file",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-unlock-3TUR2KVC.js')},{name:"time status",aliases:[],description:"Check time-lock status",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-status-UJ3XY3R5.js')},{name:"time list",aliases:[],description:"List all time-locked files",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-list-HUWDZZ27.js')},{name:"time proof",aliases:[],description:"Export cryptographic existence proof",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"time",handler:()=>import('../time-proof-G6IX5SMS.js')},{name:"collab invite",aliases:[],description:"Invite a collaborator to a folder",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"collab",handler:()=>import('../collab-invite-H6KXMBJ5.js')},{name:"collab list",aliases:[],description:"List folder collaborators",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"collab",handler:()=>import('../collab-list-6VNDTN7W.js')},{name:"collab remove",aliases:[],description:"Remove a collaborator",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"collab",handler:()=>import('../collab-remove-A76ARTWG.js')},{name:"collab activity",aliases:[],description:"View collaborator activity feed",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"collab",handler:()=>import('../collab-activity-ESSL2DUE.js')},{name:"collab leave",aliases:[],description:"Leave a shared folder",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"collab",handler:()=>import('../collab-leave-23J42V4P.js')},{name:"collab transfer",aliases:[],description:"Transfer folder ownership",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"collab",handler:()=>import('../collab-transfer-S5MECG6Y.js')},{name:"sign request",aliases:[],description:"Request a digital signature",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-request-PM7BZ56P.js')},{name:"sign status",aliases:[],description:"Check signing request status",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-status-LRQGO2UX.js')},{name:"sign list",aliases:[],description:"List signing requests",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-list-SACY7XF3.js')},{name:"sign cancel",aliases:[],description:"Cancel a signing request",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"caution",category:"sign",handler:()=>import('../sign-cancel-4YYJ2BBY.js')},{name:"sign verify",aliases:[],description:"Verify a signed document",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-verify-PQ7HBHTY.js')},{name:"sign download",aliases:[],description:"Download signed document",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"sign",handler:()=>import('../sign-download-VOMT2C3C.js')},{name:"monitor",aliases:[],description:"At-a-glance SquidCloud health dashboard",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-LZ7R5C3D.js')},{name:"monitor sites",aliases:[],description:"Site health overview",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-sites-2QIM4XJ3.js')},{name:"monitor pipelines",aliases:[],description:"Pipeline health overview",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-pipelines-EASQLIQA.js')},{name:"monitor storage",aliases:[],description:"Storage health report",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-storage-SMB32J37.js')},{name:"monitor automations",aliases:[],description:"Automation health overview",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"monitor",handler:()=>import('../monitor-automations-AR7MS2PL.js')},{name:"logs tail",aliases:[],description:"Stream live logs",requiresAuth:true,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"logs",handler:()=>import('../logs-tail-2OMASMCD.js')},{name:"logs search",aliases:[],description:"Search historical logs",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"logs",handler:()=>import('../logs-search-MA3AWP4B.js')},{name:"logs export",aliases:[],description:"Export logs as JSONL or CSV",requiresAuth:true,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"logs",handler:()=>import('../logs-export-76WAIPNB.js')},{name:"doctor",aliases:[],description:"Run system diagnostics",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../doctor-GAUV36VS.js')},{name:"version",aliases:["--version","-v"],description:"Show CLI version",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../version-LHSDYI7Q.js')},{name:"config list",aliases:["config ls"],description:"List CLI configuration",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-7G24FXQJ.js')},{name:"config set",aliases:[],description:"Set a config value",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-set-O6JKOGGN.js')},{name:"config get",aliases:[],description:"Get a config value",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-get-DDNSM5EH.js')},{name:"config delete",aliases:[],description:"Delete a config value",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../config-delete-VSIFFODZ.js')},{name:"config reset",aliases:[],description:"Reset all configuration",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"destructive",category:"utility",handler:()=>import('../config-reset-ZFMP4J5H.js')},{name:"completion",aliases:[],description:"Generate shell completion scripts",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:false,dangerLevel:"safe",category:"utility",handler:()=>import('../completion-IF3NB7PB.js')},{name:"feedback",aliases:[],description:"Submit feedback or report a bug",requiresAuth:false,requiresProject:false,ciSafe:false,jsonSupport:false,dangerLevel:"safe",category:"utility",handler:()=>import('../feedback-QUGQAWZB.js')},{name:"update",aliases:[],description:"Update the CLI to latest version",requiresAuth:false,requiresProject:false,ciSafe:true,jsonSupport:true,dangerLevel:"safe",category:"utility",handler:()=>import('../update-DOHW47PB.js')}];function v(){return [...A]}var p=new Command,y={version:"1.0.0",description:"SquidCloud CLI \u2014 static sites, storage, pipelines, and more."};p.name("squidcloud").description(y.description).version(y.version,"-v, --version","Display CLI version").option("--output <format>","Output format (json)","text").hook("preAction",async e$1=>{e$1.optsWithGlobals().output==="json"&&e(true),d()&&e(false);});async function L(e){if(!e.requiresAuth)return;let s=await b$1();s||(h("Not authenticated. Run `squidcloud login` first."),process.exit(1)),f(s)&&(await a()||(h("Session expired. Please run `squidcloud login` again."),process.exit(1)));}function C(e){let s=new Map;for(let r of e){let u=r.name.split(" ");if(u.length===1)s.set(r.name,new Map);else if(u.length===2){let[t,o]=u;s.has(t)||s.set(t,new Map),s.get(t).set(o,r);}}for(let[r,u]of s)if(u.size===0){let t=e.find(a=>a.name===r),o=p.command(r);o.description(t.description),t.aliases.length>0&&o.aliases(t.aliases),o.action(async(...a)=>{try{await L(t);let i=await t.handler();if(typeof i.default=="function"){let n=a.slice(0,-2);await i.default(...n);}n(t.name,process.argv.slice(2).join(" "),0);}catch(i){let n$1=i instanceof Error?i.message:String(i);h(n$1),n(t.name,process.argv.slice(2).join(" "),1),process.exit(1);}});}else {let t=p.command(r);t.description(`SquidCloud ${r} commands`);for(let[o,a]of u){let i=`${r} ${o}`,n$1=t.command(o);n$1.description(a.description),a.aliases.length>0&&n$1.aliases(a.aliases.map(f=>f.replace(`${r} `,""))),n$1.action(async(...f)=>{try{await L(a);let l=await a.handler();if(typeof l.default=="function"){let m=f.slice(0,-2);await l.default(...m);}n(i,process.argv.slice(2).join(" "),0);}catch(l){let m=l instanceof Error?l.message:String(l);h(m),n(i,process.argv.slice(2).join(" "),1),process.exit(1);}});}}}async function b(){let e=process.argv.slice(2);if(e.includes("--version")||e.includes("-v")){let{showVersion:r}=await import('../version-LHSDYI7Q.js');await r();return}if(e.length===0&&!e.includes("--help")&&!e.includes("-h")){let{showVersion:r}=await import('../version-LHSDYI7Q.js');await r(),console.log(""),p.outputHelp();return}let s=v();C(s),p.addHelpText("beforeAll",`
3
3
  `),await p.parseAsync(process.argv);}b().catch(e=>{h(e instanceof Error?e.message:String(e)),process.exit(1);});//# sourceMappingURL=squidcloud.js.map
4
4
  //# sourceMappingURL=squidcloud.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/registry/index.ts","../../src/bin/squidcloud.ts"],"names":["REGISTRY","getAllCommands","program","Command","pkg","thisCommand","setJsonMode","isCI","ensureAuth","descriptor","session","loadSession","logError","shouldRefreshToken","refreshAccessToken","buildCommandTree","commands","tree","cmd","parts","parent","child","name","children","c","args","mod","actionArgs","writeAudit","err","message","parentCmd","childName","childCmd","fullName","a","main","showVersion"],"mappings":"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","file":"squidcloud.js","sourcesContent":["export type CommandCategory =\n | 'auth'\n | 'storage'\n | 'deploy'\n | 'sites'\n | 'scripts'\n | 'automations'\n | 'forms'\n | 'sign'\n | 'time'\n | 'monitor'\n | 'logs'\n | 'collab'\n | 'tunnel'\n | 'id'\n | 'project'\n | 'utility'\n\nexport interface CommandDescriptor {\n name: string\n aliases: string[]\n description: string\n requiresAuth: boolean\n requiresProject: boolean\n ciSafe: boolean\n jsonSupport: boolean\n dangerLevel: 'safe' | 'caution' | 'destructive'\n category: CommandCategory\n handler: () => Promise<{ default: (...args: unknown[]) => void | Promise<void> }>\n}\n\nconst REGISTRY: CommandDescriptor[] = [\n // AUTH\n { name: 'login', aliases: [], description: 'Authenticate with SquidCloud', requiresAuth: false, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/login.js') },\n { name: 'logout', aliases: [], description: 'End current CLI session and clear credentials', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/logout.js') },\n { name: 'whoami', aliases: ['auth whoami'], description: 'Show current authenticated account info', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/whoami.js') },\n { name: 'auth status', aliases: [], description: 'Detailed session health check', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/auth-status.js') },\n { name: 'auth sessions', aliases: [], description: 'List all active CLI sessions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/auth-sessions.js') },\n { name: 'auth revoke', aliases: [], description: 'Revoke a session or all sessions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'destructive', category: 'auth', handler: () => import('../commands/auth/auth-revoke.js') },\n\n // STORAGE\n { name: 'storage ls', aliases: ['storage list'], description: 'List files and folders in storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-ls.js') },\n { name: 'storage upload', aliases: ['storage up'], description: 'Upload files or folders to storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-upload.js') },\n { name: 'storage download', aliases: ['storage dl'], description: 'Download files or folders from storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-download.js') },\n { name: 'storage cp', aliases: [], description: 'Copy files within storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-cp.js') },\n { name: 'storage mv', aliases: [], description: 'Move/rename files within storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'storage', handler: () => import('../commands/storage/storage-mv.js') },\n { name: 'storage rm', aliases: [], description: 'Delete files from storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'storage', handler: () => import('../commands/storage/storage-rm.js') },\n { name: 'storage mkdir', aliases: [], description: 'Create a folder in storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-mkdir.js') },\n { name: 'storage cat', aliases: [], description: 'Print file contents to terminal', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-cat.js') },\n { name: 'storage info', aliases: [], description: 'Show file metadata', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-info.js') },\n { name: 'storage share', aliases: [], description: 'Generate a share link for a file', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-share.js') },\n { name: 'storage unshare', aliases: [], description: 'Revoke all share links for a file', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'storage', handler: () => import('../commands/storage/storage-unshare.js') },\n { name: 'storage tag', aliases: [], description: 'Add or remove file tags', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-tag.js') },\n { name: 'storage search', aliases: [], description: 'Search storage by filename', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-search.js') },\n { name: 'storage diff', aliases: [], description: 'Compare local and remote storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-diff.js') },\n { name: 'storage clean', aliases: [], description: 'Clean orphaned files from storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'storage', handler: () => import('../commands/storage/storage-clean.js') },\n\n // DEPLOY\n { name: 'deploy', aliases: ['squidsite deploy'], description: 'Deploy a static website to SquidCloud Sites', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'deploy', handler: () => import('../commands/deploy/index.js') },\n\n // SITES\n { name: 'sites list', aliases: ['sites ls'], description: 'List all published sites', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-list.js') },\n { name: 'sites info', aliases: [], description: 'Show site details', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-info.js') },\n { name: 'sites open', aliases: [], description: 'Open site in browser', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-open.js') },\n { name: 'sites unpublish', aliases: [], description: 'Take a site offline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'sites', handler: () => import('../commands/sites/sites-unpublish.js') },\n { name: 'sites delete', aliases: [], description: 'Permanently delete a site', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'sites', handler: () => import('../commands/sites/sites-delete.js') },\n { name: 'sites visibility', aliases: [], description: 'Change site visibility (public/private)', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sites', handler: () => import('../commands/sites/sites-visibility.js') },\n { name: 'sites rename', aliases: [], description: 'Rename a site slug', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'sites', handler: () => import('../commands/sites/sites-rename.js') },\n { name: 'sites rollback', aliases: [], description: 'Rollback to a previous deployment', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sites', handler: () => import('../commands/sites/sites-rollback.js') },\n { name: 'sites deploys', aliases: [], description: 'Show deployment history', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-deploys.js') },\n { name: 'sites logs', aliases: [], description: 'Stream live site access logs', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-logs.js') },\n { name: 'sites analytics', aliases: [], description: 'Show site traffic analytics', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-analytics.js') },\n { name: 'sites purge', aliases: [], description: 'Purge CDN cache for a site', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sites', handler: () => import('../commands/sites/sites-purge.js') },\n\n // SCRIPTS (Pipelines)\n { name: 'scripts list', aliases: [], description: 'List registered SquidScripts', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-list.js') },\n { name: 'scripts run', aliases: [], description: 'Run a SquidScript pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-run.js') },\n { name: 'scripts logs', aliases: [], description: 'View pipeline run logs', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-logs.js') },\n { name: 'scripts validate', aliases: [], description: 'Validate a .squid.yml file', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-validate.js') },\n { name: 'scripts init', aliases: [], description: 'Create a new pipeline interactively', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-init.js') },\n { name: 'scripts enable', aliases: [], description: 'Enable a disabled pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-enable.js') },\n { name: 'scripts disable', aliases: [], description: 'Disable a pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'scripts', handler: () => import('../commands/scripts/scripts-disable.js') },\n { name: 'scripts delete', aliases: [], description: 'Delete a pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'scripts', handler: () => import('../commands/scripts/scripts-delete.js') },\n { name: 'scripts status', aliases: [], description: 'Show pipeline status', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-status.js') },\n { name: 'scripts cancel', aliases: [], description: 'Cancel a running pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'scripts', handler: () => import('../commands/scripts/scripts-cancel.js') },\n { name: 'scripts watch', aliases: [], description: 'Watch .squid.yml for changes', requiresAuth: false, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-watch.js') },\n\n // FORMS (File Requests)\n { name: 'filereq list', aliases: ['forms list', 'filereq ls'], description: 'List file requests', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-list.js') },\n { name: 'filereq create', aliases: ['forms create'], description: 'Create a file request', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-create.js') },\n { name: 'filereq info', aliases: ['forms info'], description: 'View file request details', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-info.js') },\n { name: 'filereq submissions', aliases: ['forms submissions'], description: 'View file request submissions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-submissions.js') },\n { name: 'filereq export', aliases: ['forms export'], description: 'Export submissions as CSV', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-export.js') },\n { name: 'filereq clear', aliases: ['forms clear'], description: 'Clear all submissions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'forms', handler: () => import('../commands/forms/forms-clear.js') },\n { name: 'filereq delete', aliases: ['forms delete'], description: 'Delete a file request', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'forms', handler: () => import('../commands/forms/forms-delete.js') },\n { name: 'filereq embed', aliases: ['forms embed'], description: 'Get HTML embed snippet', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-embed.js') },\n\n // SQUIDTIME\n { name: 'time lock', aliases: [], description: 'Time-lock a file or folder', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'time', handler: () => import('../commands/time/time-lock.js') },\n { name: 'time unlock', aliases: [], description: 'Unlock a time-locked file', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-unlock.js') },\n { name: 'time status', aliases: [], description: 'Check time-lock status', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-status.js') },\n { name: 'time list', aliases: [], description: 'List all time-locked files', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-list.js') },\n { name: 'time proof', aliases: [], description: 'Export cryptographic existence proof', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-proof.js') },\n\n // COLLAB\n { name: 'collab invite', aliases: [], description: 'Invite a collaborator to a folder', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'collab', handler: () => import('../commands/collab/collab-invite.js') },\n { name: 'collab list', aliases: [], description: 'List folder collaborators', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'collab', handler: () => import('../commands/collab/collab-list.js') },\n { name: 'collab remove', aliases: [], description: 'Remove a collaborator', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'collab', handler: () => import('../commands/collab/collab-remove.js') },\n { name: 'collab activity', aliases: [], description: 'View collaborator activity feed', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'collab', handler: () => import('../commands/collab/collab-activity.js') },\n { name: 'collab leave', aliases: [], description: 'Leave a shared folder', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'collab', handler: () => import('../commands/collab/collab-leave.js') },\n { name: 'collab transfer', aliases: [], description: 'Transfer folder ownership', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'collab', handler: () => import('../commands/collab/collab-transfer.js') },\n\n // SQUIDSIGN\n { name: 'sign request', aliases: [], description: 'Request a digital signature', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-request.js') },\n { name: 'sign status', aliases: [], description: 'Check signing request status', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-status.js') },\n { name: 'sign list', aliases: [], description: 'List signing requests', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-list.js') },\n { name: 'sign cancel', aliases: [], description: 'Cancel a signing request', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sign', handler: () => import('../commands/sign/sign-cancel.js') },\n { name: 'sign verify', aliases: [], description: 'Verify a signed document', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-verify.js') },\n { name: 'sign download', aliases: [], description: 'Download signed document', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-download.js') },\n\n // MONITOR\n { name: 'monitor', aliases: [], description: 'At-a-glance SquidCloud health dashboard', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor.js') },\n { name: 'monitor sites', aliases: [], description: 'Site health overview', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-sites.js') },\n { name: 'monitor pipelines', aliases: [], description: 'Pipeline health overview', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-pipelines.js') },\n { name: 'monitor storage', aliases: [], description: 'Storage health report', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-storage.js') },\n { name: 'monitor automations', aliases: [], description: 'Automation health overview', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-automations.js') },\n\n // LOGS\n { name: 'logs tail', aliases: [], description: 'Stream live logs', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'logs', handler: () => import('../commands/logs/logs-tail.js') },\n { name: 'logs search', aliases: [], description: 'Search historical logs', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'logs', handler: () => import('../commands/logs/logs-search.js') },\n { name: 'logs export', aliases: [], description: 'Export logs as JSONL or CSV', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'logs', handler: () => import('../commands/logs/logs-export.js') },\n\n // UTILITY\n { name: 'doctor', aliases: [], description: 'Run system diagnostics', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/doctor.js') },\n { name: 'version', aliases: ['--version', '-v'], description: 'Show CLI version', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/version.js') },\n { name: 'config list', aliases: ['config ls'], description: 'List CLI configuration', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config.js') },\n { name: 'config set', aliases: [], description: 'Set a config value', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config-set.js') },\n { name: 'config get', aliases: [], description: 'Get a config value', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config-get.js') },\n { name: 'config delete', aliases: [], description: 'Delete a config value', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config-delete.js') },\n { name: 'config reset', aliases: [], description: 'Reset all configuration', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'utility', handler: () => import('../commands/util/config-reset.js') },\n { name: 'completion', aliases: [], description: 'Generate shell completion scripts', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/completion.js') },\n { name: 'feedback', aliases: [], description: 'Submit feedback or report a bug', requiresAuth: false, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/feedback.js') },\n { name: 'update', aliases: [], description: 'Update the CLI to latest version', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/update.js') },\n]\n\nexport function getCommand(name: string): CommandDescriptor | undefined {\n const parts = name.trim().toLowerCase().split(/\\s+/)\n return REGISTRY.find(cmd => {\n const cmdParts = cmd.name.split(/\\s+/)\n if (parts.join(' ') === cmd.name) return true\n for (const alias of cmd.aliases) {\n const aliasParts = alias.split(/\\s+/)\n const expandedAlias = (aliasParts[0] === cmdParts[0] && aliasParts.length > 1) ? alias : null\n if (parts.join(' ') === alias) return true\n }\n return false\n })\n}\n\nexport function getCategory(cat: CommandCategory): CommandDescriptor[] {\n return REGISTRY.filter(cmd => cmd.category === cat)\n}\n\nexport function getAllCommands(): CommandDescriptor[] {\n return [...REGISTRY]\n}\n\nexport function getCISafeCommands(): CommandDescriptor[] {\n return REGISTRY.filter(cmd => cmd.ciSafe)\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander'\nimport chalk from 'chalk'\nimport { setJsonMode, logError, writeAudit } from '../lib/output/index.js'\nimport { isCI } from '../lib/utils/ci-detect.js'\nimport { getAllCommands, CommandDescriptor } from '../registry/index.js'\nimport { loadSession, shouldRefreshToken } from '../lib/auth/session.js'\nimport { refreshAccessToken } from '../lib/auth/refresh.js'\n\nconst program = new Command()\nconst pkg = { version: '1.0.0', name: '@squidcloud/cli', description: 'SquidCloud CLI — static sites, storage, pipelines, and more.' }\n\nprogram\n .name('squidcloud')\n .description(pkg.description)\n .version(pkg.version, '-v, --version', 'Display CLI version')\n .option('--output <format>', 'Output format (json)', 'text')\n .hook('preAction', async (thisCommand) => {\n const opts = thisCommand.optsWithGlobals()\n if (opts.output === 'json') {\n setJsonMode(true)\n }\n if (isCI()) {\n setJsonMode(false)\n }\n })\n\nasync function ensureAuth(descriptor: CommandDescriptor): Promise<void> {\n if (!descriptor.requiresAuth) return\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated. Run `squidcloud login` first.')\n process.exit(1)\n }\n if (shouldRefreshToken(session)) {\n const refreshed = await refreshAccessToken()\n if (!refreshed) {\n logError('Session expired. Please run `squidcloud login` again.')\n process.exit(1)\n }\n }\n}\n\nfunction buildCommandTree(commands: CommandDescriptor[]): void {\n const tree = new Map<string, Map<string, CommandDescriptor>>()\n\n for (const cmd of commands) {\n const parts = cmd.name.split(' ')\n if (parts.length === 1) {\n tree.set(cmd.name, new Map())\n } else if (parts.length === 2) {\n const [parent, child] = parts\n if (!tree.has(parent!)) {\n tree.set(parent!, new Map())\n }\n tree.get(parent!)!.set(child!, cmd)\n }\n }\n\n for (const [name, children] of tree) {\n if (children.size === 0) {\n const cmd = commands.find(c => c.name === name)!\n const c = program.command(name)\n c.description(cmd.description)\n if (cmd.aliases.length > 0) {\n c.aliases(cmd.aliases)\n }\n c.action(async (...args: unknown[]) => {\n try {\n await ensureAuth(cmd)\n const mod = await cmd.handler()\n if (typeof mod.default === 'function') {\n const actionArgs = args.slice(0, -2)\n await mod.default(...actionArgs)\n }\n writeAudit(cmd.name, process.argv.slice(2).join(' '), 0)\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n logError(message)\n writeAudit(cmd.name, process.argv.slice(2).join(' '), 1)\n process.exit(1)\n }\n })\n } else {\n const parentCmd = program.command(name)\n parentCmd.description(`SquidCloud ${name} commands`)\n for (const [childName, childCmd] of children) {\n const fullName = `${name} ${childName}`\n const c = parentCmd.command(childName)\n c.description(childCmd.description)\n if (childCmd.aliases.length > 0) {\n c.aliases(childCmd.aliases.map(a => a.replace(`${name} `, '')))\n }\n c.action(async (...args: unknown[]) => {\n try {\n await ensureAuth(childCmd)\n const mod = await childCmd.handler()\n if (typeof mod.default === 'function') {\n const actionArgs = args.slice(0, -2)\n await mod.default(...actionArgs)\n }\n writeAudit(fullName, process.argv.slice(2).join(' '), 0)\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n logError(message)\n writeAudit(fullName, process.argv.slice(2).join(' '), 1)\n process.exit(1)\n }\n })\n }\n }\n }\n}\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2)\n\n if (args.includes('--version') || args.includes('-v')) {\n const { showVersion } = await import('../commands/util/version.js')\n await showVersion()\n return\n }\n\n if (args.length === 0 && !args.includes('--help') && !args.includes('-h')) {\n const { showVersion } = await import('../commands/util/version.js')\n await showVersion()\n console.log('')\n program.outputHelp()\n return\n }\n\n const commands = getAllCommands()\n buildCommandTree(commands)\n\n program.addHelpText('beforeAll', '\\n')\n\n await program.parseAsync(process.argv)\n}\n\nmain().catch((err) => {\n logError(err instanceof Error ? err.message : String(err))\n process.exit(1)\n})\n"]}
1
+ {"version":3,"sources":["../../src/registry/index.ts","../../src/bin/squidcloud.ts"],"names":["REGISTRY","getAllCommands","program","Command","pkg","thisCommand","setJsonMode","isCI","ensureAuth","descriptor","session","loadSession","logError","shouldRefreshToken","refreshAccessToken","buildCommandTree","commands","tree","cmd","parts","parent","child","name","children","c","args","mod","actionArgs","writeAudit","err","message","parentCmd","childName","childCmd","fullName","a","main","showVersion"],"mappings":"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","file":"squidcloud.js","sourcesContent":["export type CommandCategory =\n | 'auth'\n | 'storage'\n | 'deploy'\n | 'sites'\n | 'scripts'\n | 'automations'\n | 'forms'\n | 'sign'\n | 'time'\n | 'monitor'\n | 'logs'\n | 'collab'\n | 'tunnel'\n | 'id'\n | 'project'\n | 'utility'\n\nexport interface CommandDescriptor {\n name: string\n aliases: string[]\n description: string\n requiresAuth: boolean\n requiresProject: boolean\n ciSafe: boolean\n jsonSupport: boolean\n dangerLevel: 'safe' | 'caution' | 'destructive'\n category: CommandCategory\n handler: () => Promise<{ default: (...args: unknown[]) => void | Promise<void> }>\n}\n\nconst REGISTRY: CommandDescriptor[] = [\n // AUTH\n { name: 'login', aliases: [], description: 'Authenticate with SquidCloud', requiresAuth: false, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/login.js') },\n { name: 'logout', aliases: [], description: 'End current CLI session and clear credentials', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/logout.js') },\n { name: 'whoami', aliases: ['auth whoami'], description: 'Show current authenticated account info', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/whoami.js') },\n { name: 'auth status', aliases: [], description: 'Detailed session health check', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/auth-status.js') },\n { name: 'auth sessions', aliases: [], description: 'List all active CLI sessions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'auth', handler: () => import('../commands/auth/auth-sessions.js') },\n { name: 'auth revoke', aliases: [], description: 'Revoke a session or all sessions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'destructive', category: 'auth', handler: () => import('../commands/auth/auth-revoke.js') },\n\n // STORAGE\n { name: 'storage ls', aliases: ['storage list'], description: 'List files and folders in storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-ls.js') },\n { name: 'storage upload', aliases: ['storage up'], description: 'Upload files or folders to storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-upload.js') },\n { name: 'storage download', aliases: ['storage dl'], description: 'Download files or folders from storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-download.js') },\n { name: 'storage cp', aliases: [], description: 'Copy files within storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-cp.js') },\n { name: 'storage mv', aliases: [], description: 'Move/rename files within storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'storage', handler: () => import('../commands/storage/storage-mv.js') },\n { name: 'storage rm', aliases: [], description: 'Delete files from storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'storage', handler: () => import('../commands/storage/storage-rm.js') },\n { name: 'storage mkdir', aliases: [], description: 'Create a folder in storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-mkdir.js') },\n { name: 'storage cat', aliases: [], description: 'Print file contents to terminal', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-cat.js') },\n { name: 'storage info', aliases: [], description: 'Show file metadata', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-info.js') },\n { name: 'storage share', aliases: [], description: 'Generate a share link for a file', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-share.js') },\n { name: 'storage unshare', aliases: [], description: 'Revoke all share links for a file', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'storage', handler: () => import('../commands/storage/storage-unshare.js') },\n { name: 'storage tag', aliases: [], description: 'Add or remove file tags', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-tag.js') },\n { name: 'storage search', aliases: [], description: 'Search storage by filename', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-search.js') },\n { name: 'storage diff', aliases: [], description: 'Compare local and remote storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'storage', handler: () => import('../commands/storage/storage-diff.js') },\n { name: 'storage clean', aliases: [], description: 'Clean orphaned files from storage', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'storage', handler: () => import('../commands/storage/storage-clean.js') },\n\n // DEPLOY\n { name: 'deploy', aliases: ['squidsite deploy'], description: 'Deploy a static website to SquidCloud Sites', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'deploy', handler: () => import('../commands/deploy/index.js') },\n\n // SITES\n { name: 'sites list', aliases: ['sites ls'], description: 'List all published sites', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-list.js') },\n { name: 'sites info', aliases: [], description: 'Show site details', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-info.js') },\n { name: 'sites open', aliases: [], description: 'Open site in browser', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-open.js') },\n { name: 'sites unpublish', aliases: [], description: 'Take a site offline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'sites', handler: () => import('../commands/sites/sites-unpublish.js') },\n { name: 'sites delete', aliases: [], description: 'Permanently delete a site', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'sites', handler: () => import('../commands/sites/sites-delete.js') },\n { name: 'sites visibility', aliases: [], description: 'Change site visibility (public/private)', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sites', handler: () => import('../commands/sites/sites-visibility.js') },\n { name: 'sites rename', aliases: [], description: 'Rename a site slug', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'sites', handler: () => import('../commands/sites/sites-rename.js') },\n { name: 'sites rollback', aliases: [], description: 'Rollback to a previous deployment', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sites', handler: () => import('../commands/sites/sites-rollback.js') },\n { name: 'sites deploys', aliases: [], description: 'Show deployment history', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-deploys.js') },\n { name: 'sites logs', aliases: [], description: 'Stream live site access logs', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-logs.js') },\n { name: 'sites analytics', aliases: [], description: 'Show site traffic analytics', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sites', handler: () => import('../commands/sites/sites-analytics.js') },\n { name: 'sites purge', aliases: [], description: 'Purge CDN cache for a site', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sites', handler: () => import('../commands/sites/sites-purge.js') },\n\n // SCRIPTS (Pipelines)\n { name: 'scripts list', aliases: [], description: 'List registered SquidScripts', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-list.js') },\n { name: 'scripts run', aliases: [], description: 'Run a SquidScript pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-run.js') },\n { name: 'scripts logs', aliases: [], description: 'View pipeline run logs', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-logs.js') },\n { name: 'scripts validate', aliases: [], description: 'Validate a .squid.yml file', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-validate.js') },\n { name: 'scripts init', aliases: [], description: 'Create a new pipeline interactively', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-init.js') },\n { name: 'scripts enable', aliases: [], description: 'Enable a disabled pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-enable.js') },\n { name: 'scripts disable', aliases: [], description: 'Disable a pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'scripts', handler: () => import('../commands/scripts/scripts-disable.js') },\n { name: 'scripts delete', aliases: [], description: 'Delete a pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'scripts', handler: () => import('../commands/scripts/scripts-delete.js') },\n { name: 'scripts status', aliases: [], description: 'Show pipeline status', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-status.js') },\n { name: 'scripts cancel', aliases: [], description: 'Cancel a running pipeline', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'scripts', handler: () => import('../commands/scripts/scripts-cancel.js') },\n { name: 'scripts watch', aliases: [], description: 'Watch .squid.yml for changes', requiresAuth: false, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'scripts', handler: () => import('../commands/scripts/scripts-watch.js') },\n\n // FORMS (File Requests)\n { name: 'filereq list', aliases: ['forms list', 'filereq ls'], description: 'List file requests', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-list.js') },\n { name: 'filereq create', aliases: ['forms create'], description: 'Create a file request', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-create.js') },\n { name: 'filereq info', aliases: ['forms info'], description: 'View file request details', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-info.js') },\n { name: 'filereq submissions', aliases: ['forms submissions'], description: 'View file request submissions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-submissions.js') },\n { name: 'filereq export', aliases: ['forms export'], description: 'Export submissions as CSV', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-export.js') },\n { name: 'filereq clear', aliases: ['forms clear'], description: 'Clear all submissions', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'forms', handler: () => import('../commands/forms/forms-clear.js') },\n { name: 'filereq delete', aliases: ['forms delete'], description: 'Delete a file request', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'forms', handler: () => import('../commands/forms/forms-delete.js') },\n { name: 'filereq embed', aliases: ['forms embed'], description: 'Get HTML embed snippet', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'forms', handler: () => import('../commands/forms/forms-embed.js') },\n\n // SQUIDTIME\n { name: 'time lock', aliases: [], description: 'Time-lock a file or folder', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'time', handler: () => import('../commands/time/time-lock.js') },\n { name: 'time unlock', aliases: [], description: 'Unlock a time-locked file', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-unlock.js') },\n { name: 'time status', aliases: [], description: 'Check time-lock status', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-status.js') },\n { name: 'time list', aliases: [], description: 'List all time-locked files', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-list.js') },\n { name: 'time proof', aliases: [], description: 'Export cryptographic existence proof', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'time', handler: () => import('../commands/time/time-proof.js') },\n\n // COLLAB\n { name: 'collab invite', aliases: [], description: 'Invite a collaborator to a folder', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'collab', handler: () => import('../commands/collab/collab-invite.js') },\n { name: 'collab list', aliases: [], description: 'List folder collaborators', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'collab', handler: () => import('../commands/collab/collab-list.js') },\n { name: 'collab remove', aliases: [], description: 'Remove a collaborator', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'collab', handler: () => import('../commands/collab/collab-remove.js') },\n { name: 'collab activity', aliases: [], description: 'View collaborator activity feed', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'collab', handler: () => import('../commands/collab/collab-activity.js') },\n { name: 'collab leave', aliases: [], description: 'Leave a shared folder', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'collab', handler: () => import('../commands/collab/collab-leave.js') },\n { name: 'collab transfer', aliases: [], description: 'Transfer folder ownership', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'collab', handler: () => import('../commands/collab/collab-transfer.js') },\n\n // SQUIDSIGN\n { name: 'sign request', aliases: [], description: 'Request a digital signature', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-request.js') },\n { name: 'sign status', aliases: [], description: 'Check signing request status', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-status.js') },\n { name: 'sign list', aliases: [], description: 'List signing requests', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-list.js') },\n { name: 'sign cancel', aliases: [], description: 'Cancel a signing request', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'caution', category: 'sign', handler: () => import('../commands/sign/sign-cancel.js') },\n { name: 'sign verify', aliases: [], description: 'Verify a signed document', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-verify.js') },\n { name: 'sign download', aliases: [], description: 'Download signed document', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'sign', handler: () => import('../commands/sign/sign-download.js') },\n\n // MONITOR\n { name: 'monitor', aliases: [], description: 'At-a-glance SquidCloud health dashboard', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor.js') },\n { name: 'monitor sites', aliases: [], description: 'Site health overview', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-sites.js') },\n { name: 'monitor pipelines', aliases: [], description: 'Pipeline health overview', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-pipelines.js') },\n { name: 'monitor storage', aliases: [], description: 'Storage health report', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-storage.js') },\n { name: 'monitor automations', aliases: [], description: 'Automation health overview', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'monitor', handler: () => import('../commands/monitor/monitor-automations.js') },\n\n // LOGS\n { name: 'logs tail', aliases: [], description: 'Stream live logs', requiresAuth: true, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'logs', handler: () => import('../commands/logs/logs-tail.js') },\n { name: 'logs search', aliases: [], description: 'Search historical logs', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'logs', handler: () => import('../commands/logs/logs-search.js') },\n { name: 'logs export', aliases: [], description: 'Export logs as JSONL or CSV', requiresAuth: true, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'logs', handler: () => import('../commands/logs/logs-export.js') },\n\n // UTILITY\n { name: 'doctor', aliases: [], description: 'Run system diagnostics', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/doctor.js') },\n { name: 'version', aliases: ['--version', '-v'], description: 'Show CLI version', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/version.js') },\n { name: 'config list', aliases: ['config ls'], description: 'List CLI configuration', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config.js') },\n { name: 'config set', aliases: [], description: 'Set a config value', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config-set.js') },\n { name: 'config get', aliases: [], description: 'Get a config value', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config-get.js') },\n { name: 'config delete', aliases: [], description: 'Delete a config value', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/config-delete.js') },\n { name: 'config reset', aliases: [], description: 'Reset all configuration', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'destructive', category: 'utility', handler: () => import('../commands/util/config-reset.js') },\n { name: 'completion', aliases: [], description: 'Generate shell completion scripts', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/completion.js') },\n { name: 'feedback', aliases: [], description: 'Submit feedback or report a bug', requiresAuth: false, requiresProject: false, ciSafe: false, jsonSupport: false, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/feedback.js') },\n { name: 'update', aliases: [], description: 'Update the CLI to latest version', requiresAuth: false, requiresProject: false, ciSafe: true, jsonSupport: true, dangerLevel: 'safe', category: 'utility', handler: () => import('../commands/util/update.js') },\n]\n\nexport function getCommand(name: string): CommandDescriptor | undefined {\n const parts = name.trim().toLowerCase().split(/\\s+/)\n return REGISTRY.find(cmd => {\n const cmdParts = cmd.name.split(/\\s+/)\n if (parts.join(' ') === cmd.name) return true\n for (const alias of cmd.aliases) {\n const aliasParts = alias.split(/\\s+/)\n const expandedAlias = (aliasParts[0] === cmdParts[0] && aliasParts.length > 1) ? alias : null\n if (parts.join(' ') === alias) return true\n }\n return false\n })\n}\n\nexport function getCategory(cat: CommandCategory): CommandDescriptor[] {\n return REGISTRY.filter(cmd => cmd.category === cat)\n}\n\nexport function getAllCommands(): CommandDescriptor[] {\n return [...REGISTRY]\n}\n\nexport function getCISafeCommands(): CommandDescriptor[] {\n return REGISTRY.filter(cmd => cmd.ciSafe)\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander'\nimport { setJsonMode, logError, writeAudit } from '../lib/output/index.js'\nimport { isCI } from '../lib/utils/ci-detect.js'\nimport { getAllCommands, CommandDescriptor } from '../registry/index.js'\nimport { loadSession, shouldRefreshToken } from '../lib/auth/session.js'\nimport { refreshAccessToken } from '../lib/auth/refresh.js'\n\nconst program = new Command()\nconst pkg = { version: '1.0.0', name: '@squidcloud/cli', description: 'SquidCloud CLI — static sites, storage, pipelines, and more.' }\n\nprogram\n .name('squidcloud')\n .description(pkg.description)\n .version(pkg.version, '-v, --version', 'Display CLI version')\n .option('--output <format>', 'Output format (json)', 'text')\n .hook('preAction', async (thisCommand) => {\n const opts = thisCommand.optsWithGlobals()\n if (opts.output === 'json') {\n setJsonMode(true)\n }\n if (isCI()) {\n setJsonMode(false)\n }\n })\n\nasync function ensureAuth(descriptor: CommandDescriptor): Promise<void> {\n if (!descriptor.requiresAuth) return\n const session = await loadSession()\n if (!session) {\n logError('Not authenticated. Run `squidcloud login` first.')\n process.exit(1)\n }\n if (shouldRefreshToken(session)) {\n const refreshed = await refreshAccessToken()\n if (!refreshed) {\n logError('Session expired. Please run `squidcloud login` again.')\n process.exit(1)\n }\n }\n}\n\nfunction buildCommandTree(commands: CommandDescriptor[]): void {\n const tree = new Map<string, Map<string, CommandDescriptor>>()\n\n for (const cmd of commands) {\n const parts = cmd.name.split(' ')\n if (parts.length === 1) {\n tree.set(cmd.name, new Map())\n } else if (parts.length === 2) {\n const [parent, child] = parts\n if (!tree.has(parent!)) {\n tree.set(parent!, new Map())\n }\n tree.get(parent!)!.set(child!, cmd)\n }\n }\n\n for (const [name, children] of tree) {\n if (children.size === 0) {\n const cmd = commands.find(c => c.name === name)!\n const c = program.command(name)\n c.description(cmd.description)\n if (cmd.aliases.length > 0) {\n c.aliases(cmd.aliases)\n }\n c.action(async (...args: unknown[]) => {\n try {\n await ensureAuth(cmd)\n const mod = await cmd.handler()\n if (typeof mod.default === 'function') {\n const actionArgs = args.slice(0, -2)\n await mod.default(...actionArgs)\n }\n writeAudit(cmd.name, process.argv.slice(2).join(' '), 0)\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n logError(message)\n writeAudit(cmd.name, process.argv.slice(2).join(' '), 1)\n process.exit(1)\n }\n })\n } else {\n const parentCmd = program.command(name)\n parentCmd.description(`SquidCloud ${name} commands`)\n for (const [childName, childCmd] of children) {\n const fullName = `${name} ${childName}`\n const c = parentCmd.command(childName)\n c.description(childCmd.description)\n if (childCmd.aliases.length > 0) {\n c.aliases(childCmd.aliases.map(a => a.replace(`${name} `, '')))\n }\n c.action(async (...args: unknown[]) => {\n try {\n await ensureAuth(childCmd)\n const mod = await childCmd.handler()\n if (typeof mod.default === 'function') {\n const actionArgs = args.slice(0, -2)\n await mod.default(...actionArgs)\n }\n writeAudit(fullName, process.argv.slice(2).join(' '), 0)\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n logError(message)\n writeAudit(fullName, process.argv.slice(2).join(' '), 1)\n process.exit(1)\n }\n })\n }\n }\n }\n}\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2)\n\n if (args.includes('--version') || args.includes('-v')) {\n const { showVersion } = await import('../commands/util/version.js')\n await showVersion()\n return\n }\n\n if (args.length === 0 && !args.includes('--help') && !args.includes('-h')) {\n const { showVersion } = await import('../commands/util/version.js')\n await showVersion()\n console.log('')\n program.outputHelp()\n return\n }\n\n const commands = getAllCommands()\n buildCommandTree(commands)\n\n program.addHelpText('beforeAll', '\\n')\n\n await program.parseAsync(process.argv)\n}\n\nmain().catch((err) => {\n logError(err instanceof Error ? err.message : String(err))\n process.exit(1)\n})\n"]}
@@ -0,0 +1,2 @@
1
+ import e from'os';import y from'path';import n,{existsSync,readFileSync}from'fs';import {concatBytes,randomBytes}from'@noble/hashes/utils';import {sha256}from'@noble/hashes/sha256';import {hkdf}from'@noble/hashes/hkdf';import {gcm}from'@noble/ciphers/aes';import {etc}from'@noble/ed25519';import'@noble/curves/ed25519.js';import {sha512}from'@noble/hashes/sha512';import'@noble/hashes/hmac';import {blake3}from'@noble/hashes/blake3';import {createHash}from'crypto';etc.sha512Sync=(...t)=>sha512(concatBytes(...t));function o(t){return Buffer.from(t).toString("hex")}function p(t){return new Uint8Array(Buffer.from(t,"hex"))}var B=["/etc/machine-id","/var/lib/dbus/machine-id","/etc/hostid"];function q(){for(let r of B)try{if(existsSync(r))return readFileSync(r,"utf-8").trim()}catch{continue}return createHash("sha256").update(e.hostname()+e.arch()+e.platform()).digest("hex")}function f(){let i=[q(),e.hostname(),e.platform(),e.arch(),e.release()].join(":");return o(blake3(i))}var m=y.join(e.homedir(),".squidcloud"),s=y.join(m,".session");function g(){let t=f(),r=new TextEncoder().encode(t);return hkdf(sha256,r,new Uint8Array(32),"squidcloud-fallback-v1",32)}async function l(t){let r=g(),i=randomBytes(12),c=new TextEncoder().encode(t),u=gcm(r,i).encrypt(c);n.existsSync(m)||n.mkdirSync(m,{recursive:true,mode:448});let x={iv:o(i),data:o(u)};n.writeFileSync(s,JSON.stringify(x),{mode:384,encoding:"utf-8"});}async function S(){try{if(!n.existsSync(s))return null;let t=n.readFileSync(s,"utf-8"),{iv:r,data:i}=JSON.parse(t),c=g(),u=gcm(c,p(r)).decrypt(p(i));return new TextDecoder().decode(u)}catch{return null}}async function a(){try{n.existsSync(s)&&n.unlinkSync(s);}catch{}}async function wt(){try{let t=await S();if(!t)return null;let r=JSON.parse(t);return !r.session_id||!r.access_token?(await a(),null):r}catch{return await a(),null}}async function bt(t){await l(JSON.stringify(t));}async function kt(){await a();}function Bt(t){return Date.now()>=t.expires_at}function qt(t){return t.expires_at-Date.now()<=12e4}function Pt(t){return t.expires_at-Date.now()}export{f as a,wt as b,bt as c,kt as d,Bt as e,qt as f,Pt as g};//# sourceMappingURL=chunk-2RMLR54M.js.map
2
+ //# sourceMappingURL=chunk-2RMLR54M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/crypto/ssp.ts","../src/lib/auth/fingerprint.ts","../src/lib/auth/keychain.ts","../src/lib/auth/session.ts"],"names":["etc","msgs","sha512","concatBytes","bytesToHex","buf","hexToBytes","hex","MACHINE_ID_PATHS","getMachineId","p","existsSync","readFileSync","createHash","os","computeDeviceFingerprint","data","blake3","FALLBACK_DIR","path","FALLBACK_FILE","getFallbackKey","fingerprint","ikm","hkdf","sha256","storeSession","sessionJson","key","iv","randomBytes","plaintext","encrypted","gcm","fs","payload","getSession","raw","decrypted","deleteSession","loadSession","session","saveSession","clearSession","isSessionExpired","shouldRefreshToken","getTimeUntilExpiry"],"mappings":"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","file":"chunk-2RMLR54M.js","sourcesContent":["import { getPublicKey, sign, verify, etc, utils as edUtils } from '@noble/ed25519'\nimport { x25519 } from '@noble/curves/ed25519.js'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { sha512 } from '@noble/hashes/sha512'\nimport { hmac } from '@noble/hashes/hmac'\nimport { hkdf } from '@noble/hashes/hkdf'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { randomBytes, concatBytes } from '@noble/hashes/utils'\nimport { gcm } from '@noble/ciphers/aes'\nimport { pbkdf2Sync } from 'node:crypto'\nimport { hostname, platform, arch } from 'node:os'\n\netc.sha512Sync = (...msgs: Uint8Array[]) => sha512(concatBytes(...msgs))\n\nconst HKDF_INFO = 'squidcloud-session-v1'\n\nexport interface SSPHello {\n email: string\n password_proof: string\n client_ephemeral_pub: string\n client_nonce: string\n device_fingerprint: string\n timestamp: number\n}\n\nexport interface SSPResponse {\n server_nonce: string\n server_ephemeral_pub: string\n server_signature: string\n encrypted_session: string\n session_iv: string\n session_tag: string\n}\n\nexport interface SquidSession {\n session_id: string\n access_token: string\n refresh_token: string\n refresh_token_id: string\n device_fingerprint: string\n issued_at: number\n expires_at: number\n user: {\n id: string\n email: string\n username: string\n plan: 'free' | 'pro' | 'team'\n }\n api_key?: string\n}\n\nexport function generateKeypair(): { pub: Uint8Array; priv: Uint8Array } {\n const priv = edUtils.randomPrivateKey()\n const pub = getPublicKey(priv)\n return { pub, priv }\n}\n\nexport function generateNonce(): Uint8Array {\n return randomBytes(32)\n}\n\nexport function hashPassword(password: string, email: string): Buffer {\n const salt = Buffer.from(email.slice(0, 32).padEnd(32, '\\x00'))\n return pbkdf2Sync(password, salt, 100000, 32, 'sha512')\n}\n\nexport function computeDeviceFingerprint(machineId: string): string {\n const data = `${machineId}:${hostname()}:${platform()}:${arch()}`\n return Buffer.from(blake3(data)).toString('hex')\n}\n\nexport function computeSignPayload(clientNonce: Uint8Array, serverNonce: Uint8Array, clientPub: Uint8Array, timestamp: number): Uint8Array {\n const payload = new Uint8Array(clientNonce.length + serverNonce.length + clientPub.length + 8)\n payload.set(clientNonce, 0)\n payload.set(serverNonce, clientNonce.length)\n payload.set(clientPub, clientNonce.length + serverNonce.length)\n const tsBuf = new Uint8Array(8)\n new DataView(tsBuf.buffer).setBigUint64(0, BigInt(timestamp), false)\n payload.set(tsBuf, clientNonce.length + serverNonce.length + clientPub.length)\n return blake3(payload)\n}\n\nexport function deriveSharedSecret(pub: Uint8Array, priv: Uint8Array): Uint8Array {\n return x25519.getSharedSecret(priv, pub)\n}\n\nexport function deriveEncryptionKey(ecdhSecret: Uint8Array, clientNonce: Uint8Array, serverNonce: Uint8Array): Uint8Array {\n const salt = new Uint8Array(clientNonce.length + serverNonce.length)\n salt.set(clientNonce, 0)\n salt.set(serverNonce, clientNonce.length)\n return hkdf(sha256, ecdhSecret, salt, HKDF_INFO, 32)\n}\n\nexport function encryptSession(session: SquidSession, key: Uint8Array): { ciphertext: Uint8Array; iv: Uint8Array; tag: Uint8Array } {\n const iv = randomBytes(12)\n const plaintext = new TextEncoder().encode(JSON.stringify(session))\n const aes = gcm(key, iv)\n const encrypted = aes.encrypt(plaintext)\n const ciphertext = encrypted.slice(0, -16)\n const tag = encrypted.slice(-16)\n return { ciphertext, iv, tag }\n}\n\nexport function decryptSession(encrypted: Uint8Array, iv: Uint8Array, tag: Uint8Array, key: Uint8Array): SquidSession {\n const combined = new Uint8Array(encrypted.length + tag.length)\n combined.set(encrypted, 0)\n combined.set(tag, encrypted.length)\n const aes = gcm(key, iv)\n const plaintext = aes.decrypt(combined)\n return JSON.parse(new TextDecoder().decode(plaintext)) as SquidSession\n}\n\nexport function verifyServerSignature(signature: Uint8Array, payload: Uint8Array, serverPub: Uint8Array): Promise<boolean> {\n return verify(signature, payload, serverPub)\n}\n\nexport function signPayload(priv: Uint8Array, payload: Uint8Array): Promise<Uint8Array> {\n return sign(payload, priv)\n}\n\nexport function computeHMAC(key: Uint8Array, data: string): string {\n return Buffer.from(hmac(sha256, key, data)).toString('hex')\n}\n\nexport function bytesToHex(buf: Uint8Array): string {\n return Buffer.from(buf).toString('hex')\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n return new Uint8Array(Buffer.from(hex, 'hex'))\n}\n","import { createHash, randomBytes } from 'node:crypto'\nimport os from 'node:os'\nimport { readFileSync, existsSync } from 'node:fs'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { bytesToHex } from '../crypto/ssp.js'\n\nconst MACHINE_ID_PATHS = [\n '/etc/machine-id',\n '/var/lib/dbus/machine-id',\n '/etc/hostid',\n]\n\nfunction getMachineId(): string {\n for (const p of MACHINE_ID_PATHS) {\n try {\n if (existsSync(p)) {\n return readFileSync(p, 'utf-8').trim()\n }\n } catch {\n continue\n }\n }\n const h = createHash('sha256').update(os.hostname() + os.arch() + os.platform()).digest('hex')\n return h\n}\n\nexport function computeDeviceFingerprint(): string {\n const machineId = getMachineId()\n const components = [\n machineId,\n os.hostname(),\n os.platform(),\n os.arch(),\n os.release(),\n ]\n const data = components.join(':')\n return bytesToHex(blake3(data))\n}\n\nexport function generateDeviceId(): string {\n return randomBytes(32).toString('hex')\n}\n","import os from 'node:os'\nimport path from 'node:path'\nimport fs from 'node:fs'\nimport { randomBytes } from '@noble/hashes/utils'\nimport { sha256 } from '@noble/hashes/sha256'\nimport { hkdf } from '@noble/hashes/hkdf'\nimport { blake3 } from '@noble/hashes/blake3'\nimport { gcm } from '@noble/ciphers/aes'\nimport { bytesToHex, hexToBytes } from '../crypto/ssp.js'\nimport { computeDeviceFingerprint } from './fingerprint.js'\n\nconst FALLBACK_DIR = path.join(os.homedir(), '.squidcloud')\nconst FALLBACK_FILE = path.join(FALLBACK_DIR, '.session')\n\nfunction getFallbackKey(): Uint8Array {\n const fingerprint = computeDeviceFingerprint()\n const ikm = new TextEncoder().encode(fingerprint)\n return hkdf(sha256, ikm, new Uint8Array(32), 'squidcloud-fallback-v1', 32)\n}\n\nexport async function storeSession(sessionJson: string): Promise<void> {\n const key = getFallbackKey()\n const iv = randomBytes(12)\n const plaintext = new TextEncoder().encode(sessionJson)\n const aes = gcm(key, iv)\n const encrypted = aes.encrypt(plaintext)\n if (!fs.existsSync(FALLBACK_DIR)) {\n fs.mkdirSync(FALLBACK_DIR, { recursive: true, mode: 0o700 })\n }\n const payload = {\n iv: bytesToHex(iv),\n data: bytesToHex(encrypted),\n }\n fs.writeFileSync(FALLBACK_FILE, JSON.stringify(payload), { mode: 0o600, encoding: 'utf-8' })\n}\n\nexport async function getSession(): Promise<string | null> {\n try {\n if (!fs.existsSync(FALLBACK_FILE)) return null\n const raw = fs.readFileSync(FALLBACK_FILE, 'utf-8')\n const { iv, data } = JSON.parse(raw) as { iv: string; data: string }\n const key = getFallbackKey()\n const aes = gcm(key, hexToBytes(iv))\n const decrypted = aes.decrypt(hexToBytes(data))\n return new TextDecoder().decode(decrypted)\n } catch {\n return null\n }\n}\n\nexport async function deleteSession(): Promise<void> {\n try {\n if (fs.existsSync(FALLBACK_FILE)) {\n fs.unlinkSync(FALLBACK_FILE)\n }\n } catch {\n // ignore\n }\n}\n","import { SquidSession } from '../crypto/ssp.js'\nimport { storeSession, getSession, deleteSession } from './keychain.js'\n\nexport async function loadSession(): Promise<SquidSession | null> {\n try {\n const raw = await getSession()\n if (!raw) return null\n const session = JSON.parse(raw) as SquidSession\n if (!session.session_id || !session.access_token) {\n await deleteSession()\n return null\n }\n return session\n } catch {\n await deleteSession()\n return null\n }\n}\n\nexport async function saveSession(session: SquidSession): Promise<void> {\n await storeSession(JSON.stringify(session))\n}\n\nexport async function clearSession(): Promise<void> {\n await deleteSession()\n}\n\nexport function isSessionExpired(session: SquidSession): boolean {\n return Date.now() >= session.expires_at\n}\n\nexport function shouldRefreshToken(session: SquidSession): boolean {\n const twoMinutes = 2 * 60 * 1000\n return (session.expires_at - Date.now()) <= twoMinutes\n}\n\nexport function getTimeUntilExpiry(session: SquidSession): number {\n return session.expires_at - Date.now()\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-NDB6KXYI.js';import {a as a$1}from'./chunk-Z74H5ACJ.js';import {b}from'./chunk-2RMLR54M.js';var q=3,x=1e3,h=1e3,R=a(),g=0;async function O(){let e=Date.now()-g;e<h&&await new Promise(n=>setTimeout(n,h-e)),g=Date.now();}async function T(t,e={}){let{method:n="GET",headers:s={},body:r,authenticated:p=false,retries:a=q}=e;await O();let c={"Content-Type":"application/json",...s};if(p){let o=await b();if(o?.api_key)c["x-squidcloud-key"]=o.api_key;else if(o?.access_token){let i=await a$1();i?.api_key&&(c["x-squidcloud-key"]=i.api_key);}}let f=`${R}${t}`,u={method:n,headers:c};r&&n!=="GET"&&(u.body=JSON.stringify(r));let l=null;for(let o=0;o<=a;o++)try{let i=await fetch(f,u);return k(i)}catch(i){if(l=i instanceof Error?i:new Error(String(i)),o<a){let E=x*Math.pow(2,o)*(.5+Math.random()*.5);await new Promise(P=>setTimeout(P,E));}}throw l||new Error(`Request failed: ${t}`)}async function k(t){if(t.status===204)return;if((t.headers.get("content-type")||"").includes("application/json")){let s=await t.json();if(!t.ok){let r=s?.error?.message||s?.message||`HTTP ${t.status}`;throw new d(r,t.status,s?.error)}return s}if(!t.ok){let s=await t.text();throw new d(s||`HTTP ${t.status}`,t.status)}return await t.text()}var d=class extends Error{constructor(n,s,r){super(n);this.status=s;this.details=r;this.name="ApiError";}status;details};async function A(t,e){return T(t,{...e,method:"GET"})}async function D(t,e,n){return T(t,{...n,method:"POST",body:e})}async function $(t,e,n){return T(t,{...n,method:"PUT",body:e})}async function I(t,e){return T(t,{...e,method:"DELETE"})}async function G(t,e,n){let{method:s="POST",headers:r={},authenticated:p=false}=n||{},a={...r};if(p){let u=await b();u?.api_key&&(a["x-squidcloud-key"]=u.api_key);}let c=`${R}${t}`,f=await fetch(c,{method:s,headers:a,body:e});return k(f)}export{T as a,d as b,A as c,D as d,$ as e,I as f,G as g};//# sourceMappingURL=chunk-6DKUVFZF.js.map
2
+ //# sourceMappingURL=chunk-6DKUVFZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/api/client.ts"],"names":["MAX_RETRIES","BASE_DELAY","RATE_LIMIT_WINDOW","API_BASE","getApiBase","lastRequestTime","rateLimit","elapsed","r","apiRequest","path","options","method","headers","body","authenticated","retries","reqHeaders","session","loadSession","newSession","refreshAccessToken","url","fetchOptions","lastError","attempt","response","handleResponse","err","delay","data","message","ApiError","text","status","details","apiGet","apiPost","apiPut","apiDelete","apiUpload","formData"],"mappings":"mHAIA,IAAMA,CAAAA,CAAc,CAAA,CACdC,CAAAA,CAAa,GAAA,CACbC,CAAAA,CAAoB,IACpBC,CAAAA,CAAWC,CAAAA,EAAW,CAUxBC,CAAAA,CAAkB,CAAA,CAEtB,eAAeC,GAA2B,CAExC,IAAMC,CAAAA,CADM,IAAA,CAAK,GAAA,EAAI,CACCF,EAClBE,CAAAA,CAAUL,CAAAA,EACZ,MAAM,IAAI,OAAA,CAAQM,CAAAA,EAAK,WAAWA,CAAAA,CAAGN,CAAAA,CAAoBK,CAAO,CAAC,CAAA,CAEnEF,CAAAA,CAAkB,KAAK,GAAA,GACzB,CAEA,eAAsBI,CAAAA,CAAcC,CAAAA,CAAcC,EAA0B,EAAC,CAAe,CAC1F,GAAM,CAAE,MAAA,CAAAC,EAAS,KAAA,CAAO,OAAA,CAAAC,CAAAA,CAAU,EAAC,CAAG,IAAA,CAAAC,EAAM,aAAA,CAAAC,CAAAA,CAAgB,KAAA,CAAO,OAAA,CAAAC,CAAAA,CAAUhB,CAAY,EAAIW,CAAAA,CAE7F,MAAML,CAAAA,EAAU,CAEhB,IAAMW,CAAAA,CAAqC,CACzC,cAAA,CAAgB,kBAAA,CAChB,GAAGJ,CACL,CAAA,CAEA,GAAIE,EAAe,CACjB,IAAMG,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAClC,GAAID,CAAAA,EAAS,OAAA,CACXD,CAAAA,CAAW,kBAAkB,CAAA,CAAIC,CAAAA,CAAQ,gBAChCA,CAAAA,EAAS,YAAA,CAAc,CAChC,IAAME,CAAAA,CAAa,MAAMC,KAAmB,CACxCD,CAAAA,EAAY,OAAA,GACdH,CAAAA,CAAW,kBAAkB,CAAA,CAAIG,EAAW,OAAA,EAEhD,CACF,CAEA,IAAME,CAAAA,CAAM,CAAA,EAAGnB,CAAQ,CAAA,EAAGO,CAAI,CAAA,CAAA,CACxBa,CAAAA,CAA4B,CAChC,MAAA,CAAAX,EACA,OAAA,CAASK,CACX,CAAA,CAEIH,CAAAA,EAAQF,CAAAA,GAAW,KAAA,GACrBW,EAAa,IAAA,CAAO,IAAA,CAAK,SAAA,CAAUT,CAAI,CAAA,CAAA,CAGzC,IAAIU,EAA0B,IAAA,CAC9B,IAAA,IAASC,CAAAA,CAAU,CAAA,CAAGA,CAAAA,EAAWT,CAAAA,CAASS,IACxC,GAAI,CACF,IAAMC,CAAAA,CAAW,MAAM,KAAA,CAAMJ,EAAKC,CAAY,CAAA,CAC9C,OAAOI,CAAAA,CAAkBD,CAAQ,CACnC,OAASE,CAAAA,CAAK,CAEZ,GADAJ,CAAAA,CAAYI,CAAAA,YAAe,KAAA,CAAQA,EAAM,IAAI,KAAA,CAAM,MAAA,CAAOA,CAAG,CAAC,CAAA,CAC1DH,EAAUT,CAAAA,CAAS,CACrB,IAAMa,CAAAA,CAAQ5B,CAAAA,CAAa,IAAA,CAAK,IAAI,CAAA,CAAGwB,CAAO,CAAA,EAAK,EAAA,CAAM,IAAA,CAAK,MAAA,GAAW,EAAA,CAAA,CACzE,MAAM,IAAI,OAAA,CAAQjB,CAAAA,EAAK,UAAA,CAAWA,EAAGqB,CAAK,CAAC,EAC7C,CACF,CAGF,MAAML,GAAa,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmBd,CAAI,CAAA,CAAE,CACxD,CAEA,eAAeiB,CAAAA,CAAkBD,CAAAA,CAAgC,CAC/D,GAAIA,CAAAA,CAAS,SAAW,GAAA,CACtB,OAGF,GAAA,CADoBA,CAAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,EAAK,EAAA,EAC5C,QAAA,CAAS,kBAAkB,CAAA,CAAG,CAC5C,IAAMI,EAAO,MAAMJ,CAAAA,CAAS,IAAA,EAAK,CACjC,GAAI,CAACA,EAAS,EAAA,CAAI,CAChB,IAAMK,CAAAA,CAAUD,CAAAA,EAAM,KAAA,EAAO,SAAWA,CAAAA,EAAM,OAAA,EAAW,CAAA,KAAA,EAAQJ,CAAAA,CAAS,MAAM,CAAA,CAAA,CAChF,MAAM,IAAIM,CAAAA,CAASD,CAAAA,CAASL,CAAAA,CAAS,MAAA,CAAQI,CAAAA,EAAM,KAAK,CAC1D,CACA,OAAOA,CACT,CACA,GAAI,CAACJ,CAAAA,CAAS,EAAA,CAAI,CAChB,IAAMO,CAAAA,CAAO,MAAMP,EAAS,IAAA,EAAK,CACjC,MAAM,IAAIM,CAAAA,CAASC,CAAAA,EAAQ,QAAQP,CAAAA,CAAS,MAAM,CAAA,CAAA,CAAIA,CAAAA,CAAS,MAAM,CACvE,CAEA,OADa,MAAMA,CAAAA,CAAS,IAAA,EAE9B,KAEaM,CAAAA,CAAN,cAAuB,KAAM,CAClC,WAAA,CACED,CAAAA,CACOG,EACAC,CAAAA,CACP,CACA,KAAA,CAAMJ,CAAO,CAAA,CAHN,IAAA,CAAA,MAAA,CAAAG,EACA,IAAA,CAAA,OAAA,CAAAC,CAAAA,CAGP,IAAA,CAAK,IAAA,CAAO,WACd,CALS,OACA,OAKX,EAEA,eAAsBC,CAAAA,CAAU1B,CAAAA,CAAcC,CAAAA,CAAsC,CAClF,OAAOF,CAAAA,CAAcC,CAAAA,CAAM,CAAE,GAAGC,CAAAA,CAAS,OAAQ,KAAM,CAAC,CAC1D,CAEA,eAAsB0B,CAAAA,CAAW3B,EAAcI,CAAAA,CAAgBH,CAAAA,CAAsC,CACnG,OAAOF,CAAAA,CAAcC,CAAAA,CAAM,CAAE,GAAGC,CAAAA,CAAS,MAAA,CAAQ,MAAA,CAAQ,IAAA,CAAAG,CAAK,CAAC,CACjE,CAEA,eAAsBwB,CAAAA,CAAU5B,CAAAA,CAAcI,CAAAA,CAAgBH,EAAsC,CAClG,OAAOF,CAAAA,CAAcC,CAAAA,CAAM,CAAE,GAAGC,EAAS,MAAA,CAAQ,KAAA,CAAO,IAAA,CAAAG,CAAK,CAAC,CAChE,CAEA,eAAsByB,CAAAA,CAAa7B,CAAAA,CAAcC,CAAAA,CAAsC,CACrF,OAAOF,EAAcC,CAAAA,CAAM,CAAE,GAAGC,CAAAA,CAAS,MAAA,CAAQ,QAAS,CAAC,CAC7D,CAEA,eAAsB6B,CAAAA,CAAa9B,CAAAA,CAAc+B,CAAAA,CAAoB9B,EAAsC,CACzG,GAAM,CAAE,MAAA,CAAAC,CAAAA,CAAS,MAAA,CAAQ,QAAAC,CAAAA,CAAU,EAAC,CAAG,aAAA,CAAAE,CAAAA,CAAgB,KAAM,EAAIJ,CAAAA,EAAW,EAAC,CAEvEM,CAAAA,CAAqC,CACzC,GAAGJ,CACL,CAAA,CAEA,GAAIE,CAAAA,CAAe,CACjB,IAAMG,CAAAA,CAAU,MAAMC,CAAAA,EAAY,CAC9BD,CAAAA,EAAS,OAAA,GACXD,CAAAA,CAAW,kBAAkB,EAAIC,CAAAA,CAAQ,OAAA,EAE7C,CAEA,IAAMI,CAAAA,CAAM,CAAA,EAAGnB,CAAQ,CAAA,EAAGO,CAAI,CAAA,CAAA,CACxBgB,CAAAA,CAAW,MAAM,KAAA,CAAMJ,EAAK,CAChC,MAAA,CAAAV,CAAAA,CACA,OAAA,CAASK,CAAAA,CACT,IAAA,CAAMwB,CACR,CAAC,CAAA,CAED,OAAOd,CAAAA,CAAkBD,CAAQ,CACnC","file":"chunk-6DKUVFZF.js","sourcesContent":["import { loadSession } from '../auth/session.js'\nimport { refreshAccessToken } from '../auth/refresh.js'\nimport { getApiBase } from './cert-pin.js'\n\nconst MAX_RETRIES = 3\nconst BASE_DELAY = 1000\nconst RATE_LIMIT_WINDOW = 1000\nconst API_BASE = getApiBase()\n\ninterface RequestOptions {\n method?: string\n headers?: Record<string, string>\n body?: unknown\n authenticated?: boolean\n retries?: number\n}\n\nlet lastRequestTime = 0\n\nasync function rateLimit(): Promise<void> {\n const now = Date.now()\n const elapsed = now - lastRequestTime\n if (elapsed < RATE_LIMIT_WINDOW) {\n await new Promise(r => setTimeout(r, RATE_LIMIT_WINDOW - elapsed))\n }\n lastRequestTime = Date.now()\n}\n\nexport async function apiRequest<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { method = 'GET', headers = {}, body, authenticated = false, retries = MAX_RETRIES } = options\n\n await rateLimit()\n\n const reqHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...headers,\n }\n\n if (authenticated) {\n const session = await loadSession()\n if (session?.api_key) {\n reqHeaders['x-squidcloud-key'] = session.api_key\n } else if (session?.access_token) {\n const newSession = await refreshAccessToken()\n if (newSession?.api_key) {\n reqHeaders['x-squidcloud-key'] = newSession.api_key\n }\n }\n }\n\n const url = `${API_BASE}${path}`\n const fetchOptions: RequestInit = {\n method,\n headers: reqHeaders,\n }\n\n if (body && method !== 'GET') {\n fetchOptions.body = JSON.stringify(body)\n }\n\n let lastError: Error | null = null\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, fetchOptions)\n return handleResponse<T>(response)\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err))\n if (attempt < retries) {\n const delay = BASE_DELAY * Math.pow(2, attempt) * (0.5 + Math.random() * 0.5)\n await new Promise(r => setTimeout(r, delay))\n }\n }\n }\n\n throw lastError || new Error(`Request failed: ${path}`)\n}\n\nasync function handleResponse<T>(response: Response): Promise<T> {\n if (response.status === 204) {\n return undefined as T\n }\n const contentType = response.headers.get('content-type') || ''\n if (contentType.includes('application/json')) {\n const data = await response.json()\n if (!response.ok) {\n const message = data?.error?.message || data?.message || `HTTP ${response.status}`\n throw new ApiError(message, response.status, data?.error)\n }\n return data as T\n }\n if (!response.ok) {\n const text = await response.text()\n throw new ApiError(text || `HTTP ${response.status}`, response.status)\n }\n const text = await response.text()\n return text as unknown as T\n}\n\nexport class ApiError extends Error {\n constructor(\n message: string,\n public status: number,\n public details?: unknown,\n ) {\n super(message)\n this.name = 'ApiError'\n }\n}\n\nexport async function apiGet<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'GET' })\n}\n\nexport async function apiPost<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'POST', body })\n}\n\nexport async function apiPut<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'PUT', body })\n}\n\nexport async function apiDelete<T>(path: string, options?: RequestOptions): Promise<T> {\n return apiRequest<T>(path, { ...options, method: 'DELETE' })\n}\n\nexport async function apiUpload<T>(path: string, formData: FormData, options?: RequestOptions): Promise<T> {\n const { method = 'POST', headers = {}, authenticated = false } = options || {}\n\n const reqHeaders: Record<string, string> = {\n ...headers,\n }\n\n if (authenticated) {\n const session = await loadSession()\n if (session?.api_key) {\n reqHeaders['x-squidcloud-key'] = session.api_key\n }\n }\n\n const url = `${API_BASE}${path}`\n const response = await fetch(url, {\n method,\n headers: reqHeaders,\n body: formData,\n })\n\n return handleResponse<T>(response)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import s from'chalk';var a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function i(t){return t<10?"0"+t:String(t)}function c(t){if(t===0)return "0 B";let n=["B","KB","MB","GB","TB"],e=1024,r=Math.floor(Math.log(t)/Math.log(e));return `${(t/Math.pow(e,r)).toFixed(r>0?1:0)} ${n[r]}`}function $(t){let n=typeof t=="string"?new Date(t):t;return `${a[n.getMonth()]} ${n.getDate()}, ${n.getFullYear()} ${i(n.getHours())}:${i(n.getMinutes())}`}function g(t){let n=typeof t=="string"?new Date(t):t,e=Date.now(),r=n.getTime()-e,o=Math.abs(r),u=r<0?"ago":"from now";return o<6e4?`${Math.round(o/1e3)}s ${u}`:o<36e5?`${Math.round(o/6e4)}m ${u}`:o<864e5?`${Math.round(o/36e5)}h ${u}`:o<2592e6?`${Math.round(o/864e5)}d ${u}`:`${Math.round(o/2592e6)}mo ${u}`}function h(t){if(t<=0)return s.red("expired");let n=Math.floor(t/36e5),e=Math.floor(t%36e5/6e4),r=Math.floor(t%6e4/1e3);return n>0?`${n}h ${e}m ${r}s`:e>0?`${e}m ${r}s`:`${r}s`}export{c as a,$ as b,g as c,h as d};//# sourceMappingURL=chunk-FZKCZRJZ.js.map
2
+ //# sourceMappingURL=chunk-FZKCZRJZ.js.map