@runcofactor/cli 0.57.0 → 0.58.0

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 (248) hide show
  1. package/README.md +40 -0
  2. package/dist/{account-S7VHLHYX.js → account-CWSADXJD.js} +5 -5
  3. package/dist/{alert-DZUI3JEU.js → alert-VEZZJPIH.js} +8 -8
  4. package/dist/{api-catalog-WP6AQYUG.js → api-catalog-OBE6ITCJ.js} +5 -5
  5. package/dist/{api-key-U57EC2YF.js → api-key-265DBPSR.js} +5 -5
  6. package/dist/{attachment-MICVVXUW.js → attachment-QE65VNDG.js} +5 -5
  7. package/dist/{auth-UDD77PG6.js → auth-DG6RD4UA.js} +3 -3
  8. package/dist/{benchmark-Q5BVGQ3I.js → benchmark-3R75GENH.js} +5 -5
  9. package/dist/billing-AGY6VUCA.js +64 -0
  10. package/dist/billing-AGY6VUCA.js.map +1 -0
  11. package/dist/{blackcat-TZNSDQAC.js → blackcat-EKZS3TBD.js} +3 -3
  12. package/dist/{chunk-AHS2HMEH.js → chunk-4KFJQPJF.js} +3 -3
  13. package/dist/{chunk-LP4X7TWI.js → chunk-56WV7CFM.js} +2 -2
  14. package/dist/{chunk-3EKIGWMN.js → chunk-A6VDLUMH.js} +3 -3
  15. package/dist/{chunk-XQZJWDM4.js → chunk-B7G4TOYC.js} +5 -5
  16. package/dist/{chunk-U3MXJTTD.js → chunk-BDPNJKUZ.js} +10 -10
  17. package/dist/{chunk-IIDQM4MY.js → chunk-BMFD4OPC.js} +2 -2
  18. package/dist/{chunk-EYHJ5FIA.js → chunk-C6SNLHVE.js} +10 -1
  19. package/dist/chunk-C6SNLHVE.js.map +1 -0
  20. package/dist/{chunk-T5MU76RA.js → chunk-C77XIO2W.js} +4 -4
  21. package/dist/{chunk-FBEQNW2P.js → chunk-DFN2NH37.js} +2 -2
  22. package/dist/{chunk-4SQKKD3R.js → chunk-EDX47DXT.js} +2 -2
  23. package/dist/{chunk-BSCEOIYX.js → chunk-FQ6P522C.js} +2 -2
  24. package/dist/{chunk-6IMNRYC3.js → chunk-GQSW6ZY3.js} +5 -5
  25. package/dist/{chunk-4GDEKB5S.js → chunk-GVNSCSIC.js} +4 -4
  26. package/dist/{chunk-W4P6BGJ7.js → chunk-IN3AF6LI.js} +4 -4
  27. package/dist/{chunk-CZOYFKTY.js → chunk-IVJU3LP6.js} +3 -3
  28. package/dist/{chunk-H2K3ABPO.js → chunk-K54XL64A.js} +6 -6
  29. package/dist/{chunk-T6ZNIMI4.js → chunk-LRIP5IQD.js} +3 -3
  30. package/dist/chunk-LRIP5IQD.js.map +1 -0
  31. package/dist/{chunk-T6KTBHWD.js → chunk-LZLSRN5Q.js} +6 -6
  32. package/dist/{chunk-YILSW5ZY.js → chunk-MCJOF3JX.js} +4 -4
  33. package/dist/{chunk-SBQLD7X6.js → chunk-PN5IK7CJ.js} +2 -2
  34. package/dist/{chunk-K3MG2ZMH.js → chunk-RIBSXEAM.js} +2 -2
  35. package/dist/{chunk-DTB5HUD2.js → chunk-SPTLZJOF.js} +5 -4
  36. package/dist/chunk-SPTLZJOF.js.map +1 -0
  37. package/dist/{chunk-K2USFSTX.js → chunk-T7NZHHC5.js} +3 -3
  38. package/dist/{chunk-5MFHNT56.js → chunk-TWPCN4DV.js} +2 -2
  39. package/dist/chunk-UPP4F2BE.js +519 -0
  40. package/dist/chunk-UPP4F2BE.js.map +1 -0
  41. package/dist/{chunk-KD7VGZX7.js → chunk-UZZ5OHXT.js} +7 -7
  42. package/dist/{chunk-N55RKCGR.js → chunk-V22CGGHO.js} +6 -1
  43. package/dist/chunk-V22CGGHO.js.map +1 -0
  44. package/dist/{chunk-YFXTMFYB.js → chunk-V6OC2WQL.js} +5 -5
  45. package/dist/{chunk-YV4RASGX.js → chunk-W43YGZOP.js} +18 -6
  46. package/dist/chunk-W43YGZOP.js.map +1 -0
  47. package/dist/{chunk-TG32WC4J.js → chunk-W6TPKE5S.js} +2 -2
  48. package/dist/{chunk-72Y65NWI.js → chunk-WY4R4IL5.js} +3 -3
  49. package/dist/{chunk-XGGHOHZS.js → chunk-XD3PSGFG.js} +3 -3
  50. package/dist/chunk-XD3PSGFG.js.map +1 -0
  51. package/dist/{chunk-ETXIGTS7.js → chunk-XKR275VJ.js} +3 -3
  52. package/dist/{credential-HM4THJOS.js → credential-DPUCDGYC.js} +5 -5
  53. package/dist/{credential-template-JBV3FZBY.js → credential-template-67RQWMH2.js} +5 -5
  54. package/dist/{dev-D2HS5XXN.js → dev-MU45HWAN.js} +456 -170
  55. package/dist/dev-MU45HWAN.js.map +1 -0
  56. package/dist/{digest-54VJ7KTF.js → digest-4PABSK2F.js} +8 -8
  57. package/dist/{docs-PPQSNRP6.js → docs-ZL5QOHCB.js} +5 -5
  58. package/dist/{doctor-CXFGSPWH.js → doctor-J5X2HSLJ.js} +3 -3
  59. package/dist/{environment-6MXRQV5L.js → environment-7Q6WDKMM.js} +7 -7
  60. package/dist/{eval-HCDXL4QT.js → eval-37P36M53.js} +51 -358
  61. package/dist/eval-37P36M53.js.map +1 -0
  62. package/dist/{exploration-U2WMYBZ3.js → exploration-7PHVC753.js} +5 -5
  63. package/dist/{exploratory-test-FD7VGUKE.js → exploratory-test-NE7ECFWS.js} +6 -6
  64. package/dist/{external-run-THSD26B7.js → external-run-KZGHVSHY.js} +134 -11
  65. package/dist/external-run-KZGHVSHY.js.map +1 -0
  66. package/dist/{feature-flag-D5IZ6OEG.js → feature-flag-YFWCPWIR.js} +5 -5
  67. package/dist/{feedback-6YCQMQQ3.js → feedback-HVR7LMFL.js} +6 -6
  68. package/dist/{flow-OVEA7273.js → flow-M6QBA4WR.js} +5 -5
  69. package/dist/{github-L2AFIEVN.js → github-HUBAWWFS.js} +6 -6
  70. package/dist/index.js +87 -80
  71. package/dist/index.js.map +1 -1
  72. package/dist/{init-ADOE2D6R.js → init-5A7VDZU4.js} +5 -5
  73. package/dist/{install-SB6NLXDQ.js → install-HM3USHVU.js} +5 -5
  74. package/dist/{issues-V2DSZXAN.js → issues-W6WIQ4RX.js} +8 -8
  75. package/dist/{knobs-MR4H55EB.js → knobs-NR52HEAL.js} +5 -5
  76. package/dist/{landing-KTYDL7QJ.js → landing-FHE7RWCR.js} +7 -7
  77. package/dist/{list-DFBHWU77.js → list-6J6BCU2L.js} +5 -5
  78. package/dist/{local-QXSTGDFN.js → local-DNRUTJBN.js} +7 -7
  79. package/dist/{login-KGIZAZCR.js → login-K7CNO4QS.js} +5 -5
  80. package/dist/{mcp-EDYHUOFI.js → mcp-G72SEYO5.js} +10 -10
  81. package/dist/mcp-eval-X4AGPFWW.js +450 -0
  82. package/dist/mcp-eval-X4AGPFWW.js.map +1 -0
  83. package/dist/{metrics-JUONV7EL.js → metrics-WXQPVDQY.js} +5 -5
  84. package/dist/{monitor-F7F7EJAL.js → monitor-URPOJOER.js} +5 -5
  85. package/dist/{perf-L2YL4Z2L.js → perf-WG6DAZBT.js} +11 -11
  86. package/dist/{product-UBLNRF5Y.js → product-TGOCFPCC.js} +5 -5
  87. package/dist/{product-map-7K5I5TVU.js → product-map-PKDPF2FB.js} +7 -7
  88. package/dist/{prompts-3JNN4M46.js → prompts-63KKMXLZ.js} +5 -5
  89. package/dist/{proofs-MJ7MGBCW.js → proofs-XRQ3BMM2.js} +9 -9
  90. package/dist/{property-TCDBREZL.js → property-O3PMHQLJ.js} +6 -6
  91. package/dist/{psql-YD54GQMP.js → psql-SUE2TORV.js} +5 -5
  92. package/dist/{record-OWBURAZ4.js → record-C245ESQA.js} +6 -6
  93. package/dist/{redis-3SIKQULP.js → redis-CAOX2ODS.js} +5 -5
  94. package/dist/{release-DMCBRVA5.js → release-ALUGJZTN.js} +5 -5
  95. package/dist/{runbook-ZRKWCLZE.js → runbook-63HBD7WH.js} +5 -5
  96. package/dist/{sandbox-HMZR6SKM.js → sandbox-IC5E53CC.js} +9 -9
  97. package/dist/{scenarios-2QHT5A4F.js → scenarios-JR2H7SZC.js} +5 -5
  98. package/dist/{schedule-4L7LOUDB.js → schedule-FHMCSKPL.js} +8 -8
  99. package/dist/{session-JHLYECKM.js → session-BKHVVZS3.js} +9 -9
  100. package/dist/{skill-ARJSVWCZ.js → skill-TZE27TIN.js} +3 -3
  101. package/dist/{slack-T7CR4SAU.js → slack-3BQ2T3ZS.js} +6 -6
  102. package/dist/{spec-RDNTNUE2.js → spec-PCAK2BX5.js} +5 -5
  103. package/dist/{src-DJETLMXP.js → src-BCJZMHSQ.js} +3 -3
  104. package/dist/{src-H7IBLPDW.js → src-BPKBSXKX.js} +4 -4
  105. package/dist/{src-DPJGVNYG.js → src-PNV4HGUY.js} +3 -3
  106. package/dist/{src-UKPMEXXT.js → src-ZJGBNWYB.js} +5 -5
  107. package/dist/{start-NR7W2LIP.js → start-BA5UEI3W.js} +5 -5
  108. package/dist/{status-UDNXR5GK.js → status-TUXK57H4.js} +5 -5
  109. package/dist/{tag-ADP2MZ3V.js → tag-IBDEJZM7.js} +6 -6
  110. package/dist/{task-KQOUTIJU.js → task-WXZQM4BW.js} +6 -6
  111. package/dist/{teams-D4QXSVDA.js → teams-656T2IHZ.js} +7 -7
  112. package/dist/{test-suite-DYMY4YAG.js → test-suite-ETXWE5HB.js} +12 -12
  113. package/dist/{tickets-BX3LFWUS.js → tickets-LWP3XIHG.js} +5 -5
  114. package/dist/{trace-MBRU6DLE.js → trace-RNEY6XCJ.js} +8 -8
  115. package/dist/{triage-IXAU73VL.js → triage-VZIIN7KB.js} +6 -6
  116. package/dist/{trigger-CHSWCUV3.js → trigger-KTTSNSRU.js} +10 -10
  117. package/dist/{update-check-LLETICM4.js → update-check-SLGKNOUC.js} +4 -4
  118. package/dist/{upgrade-35WVNUEG.js → upgrade-2KSYA4GE.js} +5 -5
  119. package/dist/{usage-YUYXUNF2.js → usage-SC4NWQ5A.js} +99 -14
  120. package/dist/usage-SC4NWQ5A.js.map +1 -0
  121. package/dist/{utilities-MOHIKBBF.js → utilities-O4VVADHM.js} +6 -6
  122. package/dist/{visual-RNYERKX4.js → visual-ZWQTVXTM.js} +5 -5
  123. package/dist/{workflow-NM5IC7ZQ.js → workflow-7HKA2WKO.js} +30 -30
  124. package/dist/{workflow-cache-JNN7BS2K.js → workflow-cache-FDN2N5HH.js} +18 -18
  125. package/dist/{workflow-cache-convergence-resolve-4SO2MP7T.js → workflow-cache-convergence-resolve-BGEUM7WV.js} +5 -5
  126. package/dist/{workflow-debug-E7BXSSOG.js → workflow-debug-KNE7SVXQ.js} +11 -11
  127. package/dist/{workflow-feedback-EWAK45AB.js → workflow-feedback-YY2FZTV4.js} +5 -5
  128. package/dist/{workflow-fork-NO5IFBD4.js → workflow-fork-FH5KBVWP.js} +5 -5
  129. package/dist/{workflow-promotion-NWIZNAR4.js → workflow-promotion-RRI53FB6.js} +5 -5
  130. package/dist/{workflow-proposals-XMAZJT3X.js → workflow-proposals-5XGCOTEU.js} +5 -5
  131. package/dist/{workflow-revisions-4EQMLZGY.js → workflow-revisions-M6WPGXAT.js} +5 -5
  132. package/dist/{workflow-status-AZMXQZLC.js → workflow-status-I5BSSWHY.js} +5 -5
  133. package/package.json +2 -2
  134. package/dist/chunk-DTB5HUD2.js.map +0 -1
  135. package/dist/chunk-EYHJ5FIA.js.map +0 -1
  136. package/dist/chunk-N55RKCGR.js.map +0 -1
  137. package/dist/chunk-T6ZNIMI4.js.map +0 -1
  138. package/dist/chunk-XGGHOHZS.js.map +0 -1
  139. package/dist/chunk-YV4RASGX.js.map +0 -1
  140. package/dist/dev-D2HS5XXN.js.map +0 -1
  141. package/dist/eval-HCDXL4QT.js.map +0 -1
  142. package/dist/external-run-THSD26B7.js.map +0 -1
  143. package/dist/mcp-eval-YT2RFIC5.js +0 -196
  144. package/dist/mcp-eval-YT2RFIC5.js.map +0 -1
  145. package/dist/usage-YUYXUNF2.js.map +0 -1
  146. /package/dist/{account-S7VHLHYX.js.map → account-CWSADXJD.js.map} +0 -0
  147. /package/dist/{alert-DZUI3JEU.js.map → alert-VEZZJPIH.js.map} +0 -0
  148. /package/dist/{api-catalog-WP6AQYUG.js.map → api-catalog-OBE6ITCJ.js.map} +0 -0
  149. /package/dist/{api-key-U57EC2YF.js.map → api-key-265DBPSR.js.map} +0 -0
  150. /package/dist/{attachment-MICVVXUW.js.map → attachment-QE65VNDG.js.map} +0 -0
  151. /package/dist/{auth-UDD77PG6.js.map → auth-DG6RD4UA.js.map} +0 -0
  152. /package/dist/{benchmark-Q5BVGQ3I.js.map → benchmark-3R75GENH.js.map} +0 -0
  153. /package/dist/{blackcat-TZNSDQAC.js.map → blackcat-EKZS3TBD.js.map} +0 -0
  154. /package/dist/{chunk-AHS2HMEH.js.map → chunk-4KFJQPJF.js.map} +0 -0
  155. /package/dist/{chunk-LP4X7TWI.js.map → chunk-56WV7CFM.js.map} +0 -0
  156. /package/dist/{chunk-3EKIGWMN.js.map → chunk-A6VDLUMH.js.map} +0 -0
  157. /package/dist/{chunk-XQZJWDM4.js.map → chunk-B7G4TOYC.js.map} +0 -0
  158. /package/dist/{chunk-U3MXJTTD.js.map → chunk-BDPNJKUZ.js.map} +0 -0
  159. /package/dist/{chunk-IIDQM4MY.js.map → chunk-BMFD4OPC.js.map} +0 -0
  160. /package/dist/{chunk-T5MU76RA.js.map → chunk-C77XIO2W.js.map} +0 -0
  161. /package/dist/{chunk-FBEQNW2P.js.map → chunk-DFN2NH37.js.map} +0 -0
  162. /package/dist/{chunk-4SQKKD3R.js.map → chunk-EDX47DXT.js.map} +0 -0
  163. /package/dist/{chunk-BSCEOIYX.js.map → chunk-FQ6P522C.js.map} +0 -0
  164. /package/dist/{chunk-6IMNRYC3.js.map → chunk-GQSW6ZY3.js.map} +0 -0
  165. /package/dist/{chunk-4GDEKB5S.js.map → chunk-GVNSCSIC.js.map} +0 -0
  166. /package/dist/{chunk-W4P6BGJ7.js.map → chunk-IN3AF6LI.js.map} +0 -0
  167. /package/dist/{chunk-CZOYFKTY.js.map → chunk-IVJU3LP6.js.map} +0 -0
  168. /package/dist/{chunk-H2K3ABPO.js.map → chunk-K54XL64A.js.map} +0 -0
  169. /package/dist/{chunk-T6KTBHWD.js.map → chunk-LZLSRN5Q.js.map} +0 -0
  170. /package/dist/{chunk-YILSW5ZY.js.map → chunk-MCJOF3JX.js.map} +0 -0
  171. /package/dist/{chunk-SBQLD7X6.js.map → chunk-PN5IK7CJ.js.map} +0 -0
  172. /package/dist/{chunk-K3MG2ZMH.js.map → chunk-RIBSXEAM.js.map} +0 -0
  173. /package/dist/{chunk-K2USFSTX.js.map → chunk-T7NZHHC5.js.map} +0 -0
  174. /package/dist/{chunk-5MFHNT56.js.map → chunk-TWPCN4DV.js.map} +0 -0
  175. /package/dist/{chunk-KD7VGZX7.js.map → chunk-UZZ5OHXT.js.map} +0 -0
  176. /package/dist/{chunk-YFXTMFYB.js.map → chunk-V6OC2WQL.js.map} +0 -0
  177. /package/dist/{chunk-TG32WC4J.js.map → chunk-W6TPKE5S.js.map} +0 -0
  178. /package/dist/{chunk-72Y65NWI.js.map → chunk-WY4R4IL5.js.map} +0 -0
  179. /package/dist/{chunk-ETXIGTS7.js.map → chunk-XKR275VJ.js.map} +0 -0
  180. /package/dist/{credential-HM4THJOS.js.map → credential-DPUCDGYC.js.map} +0 -0
  181. /package/dist/{credential-template-JBV3FZBY.js.map → credential-template-67RQWMH2.js.map} +0 -0
  182. /package/dist/{digest-54VJ7KTF.js.map → digest-4PABSK2F.js.map} +0 -0
  183. /package/dist/{docs-PPQSNRP6.js.map → docs-ZL5QOHCB.js.map} +0 -0
  184. /package/dist/{doctor-CXFGSPWH.js.map → doctor-J5X2HSLJ.js.map} +0 -0
  185. /package/dist/{environment-6MXRQV5L.js.map → environment-7Q6WDKMM.js.map} +0 -0
  186. /package/dist/{exploration-U2WMYBZ3.js.map → exploration-7PHVC753.js.map} +0 -0
  187. /package/dist/{exploratory-test-FD7VGUKE.js.map → exploratory-test-NE7ECFWS.js.map} +0 -0
  188. /package/dist/{feature-flag-D5IZ6OEG.js.map → feature-flag-YFWCPWIR.js.map} +0 -0
  189. /package/dist/{feedback-6YCQMQQ3.js.map → feedback-HVR7LMFL.js.map} +0 -0
  190. /package/dist/{flow-OVEA7273.js.map → flow-M6QBA4WR.js.map} +0 -0
  191. /package/dist/{github-L2AFIEVN.js.map → github-HUBAWWFS.js.map} +0 -0
  192. /package/dist/{init-ADOE2D6R.js.map → init-5A7VDZU4.js.map} +0 -0
  193. /package/dist/{install-SB6NLXDQ.js.map → install-HM3USHVU.js.map} +0 -0
  194. /package/dist/{issues-V2DSZXAN.js.map → issues-W6WIQ4RX.js.map} +0 -0
  195. /package/dist/{knobs-MR4H55EB.js.map → knobs-NR52HEAL.js.map} +0 -0
  196. /package/dist/{landing-KTYDL7QJ.js.map → landing-FHE7RWCR.js.map} +0 -0
  197. /package/dist/{list-DFBHWU77.js.map → list-6J6BCU2L.js.map} +0 -0
  198. /package/dist/{local-QXSTGDFN.js.map → local-DNRUTJBN.js.map} +0 -0
  199. /package/dist/{login-KGIZAZCR.js.map → login-K7CNO4QS.js.map} +0 -0
  200. /package/dist/{mcp-EDYHUOFI.js.map → mcp-G72SEYO5.js.map} +0 -0
  201. /package/dist/{metrics-JUONV7EL.js.map → metrics-WXQPVDQY.js.map} +0 -0
  202. /package/dist/{monitor-F7F7EJAL.js.map → monitor-URPOJOER.js.map} +0 -0
  203. /package/dist/{perf-L2YL4Z2L.js.map → perf-WG6DAZBT.js.map} +0 -0
  204. /package/dist/{product-UBLNRF5Y.js.map → product-TGOCFPCC.js.map} +0 -0
  205. /package/dist/{product-map-7K5I5TVU.js.map → product-map-PKDPF2FB.js.map} +0 -0
  206. /package/dist/{prompts-3JNN4M46.js.map → prompts-63KKMXLZ.js.map} +0 -0
  207. /package/dist/{proofs-MJ7MGBCW.js.map → proofs-XRQ3BMM2.js.map} +0 -0
  208. /package/dist/{property-TCDBREZL.js.map → property-O3PMHQLJ.js.map} +0 -0
  209. /package/dist/{psql-YD54GQMP.js.map → psql-SUE2TORV.js.map} +0 -0
  210. /package/dist/{record-OWBURAZ4.js.map → record-C245ESQA.js.map} +0 -0
  211. /package/dist/{redis-3SIKQULP.js.map → redis-CAOX2ODS.js.map} +0 -0
  212. /package/dist/{release-DMCBRVA5.js.map → release-ALUGJZTN.js.map} +0 -0
  213. /package/dist/{runbook-ZRKWCLZE.js.map → runbook-63HBD7WH.js.map} +0 -0
  214. /package/dist/{sandbox-HMZR6SKM.js.map → sandbox-IC5E53CC.js.map} +0 -0
  215. /package/dist/{scenarios-2QHT5A4F.js.map → scenarios-JR2H7SZC.js.map} +0 -0
  216. /package/dist/{schedule-4L7LOUDB.js.map → schedule-FHMCSKPL.js.map} +0 -0
  217. /package/dist/{session-JHLYECKM.js.map → session-BKHVVZS3.js.map} +0 -0
  218. /package/dist/{skill-ARJSVWCZ.js.map → skill-TZE27TIN.js.map} +0 -0
  219. /package/dist/{slack-T7CR4SAU.js.map → slack-3BQ2T3ZS.js.map} +0 -0
  220. /package/dist/{spec-RDNTNUE2.js.map → spec-PCAK2BX5.js.map} +0 -0
  221. /package/dist/{src-DJETLMXP.js.map → src-BCJZMHSQ.js.map} +0 -0
  222. /package/dist/{src-H7IBLPDW.js.map → src-BPKBSXKX.js.map} +0 -0
  223. /package/dist/{src-DPJGVNYG.js.map → src-PNV4HGUY.js.map} +0 -0
  224. /package/dist/{src-UKPMEXXT.js.map → src-ZJGBNWYB.js.map} +0 -0
  225. /package/dist/{start-NR7W2LIP.js.map → start-BA5UEI3W.js.map} +0 -0
  226. /package/dist/{status-UDNXR5GK.js.map → status-TUXK57H4.js.map} +0 -0
  227. /package/dist/{tag-ADP2MZ3V.js.map → tag-IBDEJZM7.js.map} +0 -0
  228. /package/dist/{task-KQOUTIJU.js.map → task-WXZQM4BW.js.map} +0 -0
  229. /package/dist/{teams-D4QXSVDA.js.map → teams-656T2IHZ.js.map} +0 -0
  230. /package/dist/{test-suite-DYMY4YAG.js.map → test-suite-ETXWE5HB.js.map} +0 -0
  231. /package/dist/{tickets-BX3LFWUS.js.map → tickets-LWP3XIHG.js.map} +0 -0
  232. /package/dist/{trace-MBRU6DLE.js.map → trace-RNEY6XCJ.js.map} +0 -0
  233. /package/dist/{triage-IXAU73VL.js.map → triage-VZIIN7KB.js.map} +0 -0
  234. /package/dist/{trigger-CHSWCUV3.js.map → trigger-KTTSNSRU.js.map} +0 -0
  235. /package/dist/{update-check-LLETICM4.js.map → update-check-SLGKNOUC.js.map} +0 -0
  236. /package/dist/{upgrade-35WVNUEG.js.map → upgrade-2KSYA4GE.js.map} +0 -0
  237. /package/dist/{utilities-MOHIKBBF.js.map → utilities-O4VVADHM.js.map} +0 -0
  238. /package/dist/{visual-RNYERKX4.js.map → visual-ZWQTVXTM.js.map} +0 -0
  239. /package/dist/{workflow-NM5IC7ZQ.js.map → workflow-7HKA2WKO.js.map} +0 -0
  240. /package/dist/{workflow-cache-JNN7BS2K.js.map → workflow-cache-FDN2N5HH.js.map} +0 -0
  241. /package/dist/{workflow-cache-convergence-resolve-4SO2MP7T.js.map → workflow-cache-convergence-resolve-BGEUM7WV.js.map} +0 -0
  242. /package/dist/{workflow-debug-E7BXSSOG.js.map → workflow-debug-KNE7SVXQ.js.map} +0 -0
  243. /package/dist/{workflow-feedback-EWAK45AB.js.map → workflow-feedback-YY2FZTV4.js.map} +0 -0
  244. /package/dist/{workflow-fork-NO5IFBD4.js.map → workflow-fork-FH5KBVWP.js.map} +0 -0
  245. /package/dist/{workflow-promotion-NWIZNAR4.js.map → workflow-promotion-RRI53FB6.js.map} +0 -0
  246. /package/dist/{workflow-proposals-XMAZJT3X.js.map → workflow-proposals-5XGCOTEU.js.map} +0 -0
  247. /package/dist/{workflow-revisions-4EQMLZGY.js.map → workflow-revisions-M6WPGXAT.js.map} +0 -0
  248. /package/dist/{workflow-status-AZMXQZLC.js.map → workflow-status-I5BSSWHY.js.map} +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/command-registry.ts","../src/command-suggestion.ts","../src/debug-session.ts","../src/orgs.ts","../src/rename-notice.ts"],"sourcesContent":["import process from 'node:process';\nimport { pathToFileURL } from 'node:url';\nimport { installConsoleBranding, shouldBrandConsoleOutput, version } from './brand.js';\nimport { executeCommand, maybeCheckForUpdate } from './command-registry.js';\nimport { printRenameNoticeIfLegacy } from './rename-notice.js';\nimport { printVersion, showGlobalHelp } from './help.js';\nimport { splitAtSeparator } from './argv.js';\nimport { assertWellFormedGlobalFlags } from './auth.js';\nimport { getCliDiagnosticMetadata } from './cli-diagnostics.js';\nimport { normalizeGlobalCommandOptions } from './trigger-options.js';\nimport {\n ProcessExitSignal,\n createCliUserEventRecorder,\n isExpectedCliInputError,\n recordCliInstrumentationFailure,\n} from './user-event-tracking.js';\n\nfunction normalizeExitCode(value: string | number | null | undefined): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : 1;\n }\n return 0;\n}\n\nexport async function main(argv: string[]) {\n // Words after `--` belong to the command being run (`sandbox exec`), never to the CLI:\n // every flag check, config lookup and telemetry call below reads `options` only.\n const { options } = splitAtSeparator(argv);\n printRenameNoticeIfLegacy(options);\n // Rebrand human-readable output for the `cofactor` binary (no-op for\n // `canary`). Skipped for the `mcp` JSON-RPC transport, `--json`/`--format`\n // output, and raw data-query commands, so neither structured payloads nor\n // datastore values are ever rewritten — display branding only.\n if (shouldBrandConsoleOutput(options)) {\n installConsoleBranding();\n }\n const wantsMachineOutput = options.includes('--json') || options.includes('--format');\n\n if (options.includes('--version') || options.includes('-V')) {\n printVersion();\n return;\n }\n\n const [command, ...rest] = argv;\n const commandOptions = normalizeGlobalCommandOptions(command, rest, options);\n const hasHelpFlag = options.includes('--help') || options.includes('-h');\n\n // Global help only without a command: every command prints its own --help.\n if (!command || command === 'help' || (hasHelpFlag && command.startsWith('-'))) {\n await showGlobalHelp();\n return;\n }\n\n if (command === 'version') {\n printVersion();\n return;\n }\n\n assertWellFormedGlobalFlags(options);\n\n // Upgrade check, started without waiting so it never delays the command. With a stale cache the\n // process can stay up to the registry timeout after the output, the one-line stderr nudge can\n // land mid-output, and a command that exits non-zero drops it: it is advisory. Interactive humans\n // logged in via `canary login` only, except `guide` runs, which are nudged whatever the auth\n // source. Other API-key auth (--token / *_API_TOKEN env var, i.e. CI/automation) and\n // machine-readable (`--json`/`--format`) runs are never nagged; the nudge is never part of stdout.\n const isGuide = rest[0] === 'guide';\n // `dev proxy` is ssh's ProxyCommand, run for every ssh/scp/rsync: its stdout is the\n // connection and it must start and end promptly, so it gets no nudge and no tracking.\n const isSshProxy = command === 'dev' && (rest[0] === 'proxy' || rest[0] === 'aws-credentials');\n if ((!wantsMachineOutput || isGuide) && !isSshProxy) {\n void maybeCheckForUpdate(command, isGuide, commandOptions, version);\n }\n let tracking: Awaited<ReturnType<typeof createCliUserEventRecorder>> = null;\n if (!isSshProxy) {\n try {\n tracking = await createCliUserEventRecorder(commandOptions, version);\n } catch (error) {\n await recordCliInstrumentationFailure(commandOptions, version, 'recorder-init', error);\n }\n }\n const startedAt = Date.now();\n const originalExit = process.exit.bind(process);\n let finalExitCode = 0;\n let handledExpectedInputError = false;\n\n if (tracking) {\n await tracking.recorder.recordCommandStarted(tracking.metadata);\n }\n\n (process as typeof process & { exit: typeof process.exit }).exit = ((code?: number) => {\n throw new ProcessExitSignal(code ?? normalizeExitCode(process.exitCode));\n }) as typeof process.exit;\n\n try {\n await executeCommand(command, rest);\n finalExitCode = normalizeExitCode(process.exitCode);\n if (tracking) {\n const metadata = {\n ...tracking.metadata,\n durationMs: Date.now() - startedAt,\n exitCode: finalExitCode,\n };\n if (finalExitCode === 0) {\n await tracking.recorder.recordCommandCompleted(metadata);\n } else {\n await tracking.recorder.recordCommandFailed({\n ...metadata,\n errorKind: 'exit-code',\n });\n }\n }\n } catch (error) {\n if (error instanceof ProcessExitSignal) {\n finalExitCode = error.exitCode;\n if (tracking) {\n const metadata = {\n ...tracking.metadata,\n durationMs: Date.now() - startedAt,\n exitCode: finalExitCode,\n };\n if (finalExitCode === 0) {\n await tracking.recorder.recordCommandCompleted(metadata);\n } else {\n await tracking.recorder.recordCommandFailed({\n ...metadata,\n errorKind: 'process-exit',\n });\n }\n }\n } else {\n finalExitCode = normalizeExitCode(process.exitCode) || 1;\n const expectedInputError = isExpectedCliInputError(error);\n if (tracking) {\n const diagnostics = command === 'external-run' ? getCliDiagnosticMetadata(error) : {};\n await tracking.recorder.recordCommandFailed({\n ...tracking.metadata,\n durationMs: Date.now() - startedAt,\n exitCode: finalExitCode,\n cliExternalRunOperation:\n typeof diagnostics.cliExternalRunOperation === 'string'\n ? diagnostics.cliExternalRunOperation\n : undefined,\n cliExternalRunId:\n diagnostics.cliExternalRunId === null\n ? null\n : typeof diagnostics.cliExternalRunId === 'string'\n ? diagnostics.cliExternalRunId\n : undefined,\n cliExternalRunPhase:\n typeof diagnostics.cliExternalRunPhase === 'string'\n ? diagnostics.cliExternalRunPhase\n : undefined,\n cliExternalRunFormat:\n typeof diagnostics.cliExternalRunFormat === 'string'\n ? diagnostics.cliExternalRunFormat\n : undefined,\n errorKind: error instanceof Error ? error.name : typeof error,\n errorName: error instanceof Error ? error.name : undefined,\n errorMessage: error instanceof Error ? error.message : String(error),\n ...(expectedInputError\n ? {}\n : {\n reportToSentry: true,\n sentryFingerprint: [\n 'canary-cli',\n tracking.metadata.commandPath,\n error instanceof Error ? error.name : typeof error,\n ],\n }),\n });\n }\n if (expectedInputError) {\n console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);\n handledExpectedInputError = true;\n } else {\n throw error;\n }\n }\n } finally {\n (process as typeof process & { exit: typeof process.exit }).exit = originalExit;\n }\n\n if (finalExitCode !== 0 || handledExpectedInputError) {\n originalExit(finalExitCode);\n }\n}\n\nif (import.meta.url === pathToFileURL(process.argv[1]).href) {\n void main(process.argv.slice(2));\n}\n","import process from 'node:process';\nimport { command as brandCommand } from './brand.js';\nimport { suggestCommand } from './command-suggestion.js';\nimport { resolveAuthSource } from './auth';\nimport { splitAtSeparator } from './argv';\nimport { runDebugSession } from './debug-session';\nimport { printTestHelp, resolveIsSuperadmin, showGlobalHelp } from './help.js';\nimport { runLogin } from './login';\nimport { runOrgs } from './orgs';\nimport { runRemoteTest } from './remote-test';\n\ntype CommandRunner = (rest: string[], command: string) => Promise<void>;\ntype CommandMetadataFlag = true | readonly string[];\n\nexport type CommandDefinition = {\n name: string;\n aliases?: readonly string[];\n updateCheck?: CommandMetadataFlag;\n run: CommandRunner;\n};\n\n// Lazy-load playwright-dependent modules.\nconst loadMcp = () => import('./mcp').then((m) => m.runMcp);\nconst loadRecord = () => import('./record.js').then((m) => m.runRecord);\nconst loadSession = () => import('./session/index.js').then((m) => m.runSession);\nconst loadLocal = () => import('./local/index.js').then((m) => m.runLocal);\n\nasync function runDeprecatedTest(rest: string[]) {\n // Sub-command help\n if (rest.includes('--help') || rest.includes('-h')) {\n printTestHelp();\n return;\n }\n // Check for --remote flag — deprecated, forward to test-suite run\n if (rest.includes('--remote')) {\n console.warn(\n '\\x1b[33m⚠ `canary test --remote` is deprecated and will be removed in a future release.\\x1b[0m'\n );\n console.warn(' Use `canary test-suite run` instead.\\n');\n const remoteArgs = rest.filter((arg) => arg !== '--remote');\n await runRemoteTest(remoteArgs);\n return;\n }\n // Local Playwright test runner has been removed\n console.error(\n '`canary test` (local Playwright runner) has been removed.\\n' +\n 'Use `canary test-suite run` for remote workflow tests.\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' canary test-suite run\\n' +\n ' canary test-suite run --tag smoke\\n' +\n ' canary test-suite run --property \"My App\" --environment staging'\n );\n process.exit(1);\n}\n\nasync function runSpec(rest: string[]) {\n const { resolveConfig } = await import('./auth.js');\n const { handleSpec } = await import('./spec/index.js');\n // Anywhere in argv: `spec compile <file> --help` must print help, not compile.\n if (rest.includes('--help') || rest.includes('-h')) {\n await handleSpec(['help'], '', '');\n return;\n }\n // `validate` is purely offline — don't fail on missing auth config.\n const wantsAuth = rest[0] === 'compile' || rest[0] === 'pull' || rest[0] === 'diff';\n if (wantsAuth) {\n const { apiUrl, token, appSubdomain } = await resolveConfig(rest);\n await handleSpec(rest, apiUrl, token, appSubdomain);\n } else {\n await handleSpec(rest, '', '');\n }\n}\n\nasync function runApiCatalogCommand(rest: string[]) {\n const { resolveConfig } = await import('./auth.js');\n const { runApiCatalog } = await import('./api-catalog.js');\n // Help needs no session; runApiCatalog prints it before using the config.\n if (rest.length === 0 || rest[0] === 'help' || rest.includes('--help') || rest.includes('-h')) {\n await runApiCatalog(rest, '', '');\n return;\n }\n const { apiUrl, token } = await resolveConfig(rest);\n await runApiCatalog(rest, apiUrl, token);\n}\n\nasync function runStatusCommand(rest: string[], command: string) {\n // Help is static text (the command ships in the public CLI), so it skips the gate.\n if (rest.includes('--help') || rest.includes('-h')) {\n const { runStatus } = await import('./status.js');\n await runStatus(['help']);\n return;\n }\n // Superadmin-only. Gated client-side (the command talks to AWS directly,\n // not the cofactor API, so there is no server-side 403 to rely on). Treat\n // non-superadmins as if the command does not exist.\n if (!(await resolveIsSuperadmin())) {\n console.log(`Unknown command \"${command}\".`);\n await showGlobalHelp();\n process.exit(1);\n }\n const { runStatus } = await import('./status.js');\n await runStatus(rest);\n}\n\nasync function runBlackcatCommand(rest: string[], command: string) {\n const { options: cliArgv } = splitAtSeparator(rest);\n if (cliArgv.length === 0 || cliArgv.includes('--help') || cliArgv.includes('-h')) {\n const { runBlackcat } = await import('./blackcat.js');\n await runBlackcat(rest);\n return;\n }\n if (!(await resolveIsSuperadmin())) {\n console.log(`Unknown command \"${command}\".`);\n await showGlobalHelp();\n process.exit(1);\n }\n const { runBlackcat } = await import('./blackcat.js');\n await runBlackcat(rest);\n}\n\nasync function runAuthCommand(rest: string[]) {\n const sub = rest[0];\n if (!sub || sub === 'help' || rest.includes('--help') || rest.includes('-h')) {\n console.log(\n [\n 'Usage: canary auth doctor [--env <env>]',\n '',\n 'Diagnose login, token and corporate-proxy (TLS interception) problems.',\n ].join('\\n')\n );\n return;\n }\n if (sub === 'doctor') {\n const { runAuthDoctor } = await import('./doctor.js');\n await runAuthDoctor(rest.slice(1));\n return;\n }\n console.error('Usage: canary auth doctor [--env <env>]');\n process.exit(1);\n}\n\nexport const COMMAND_DEFINITIONS: readonly CommandDefinition[] = [\n {\n name: 'upgrade',\n run: async (rest) => {\n const { runUpgrade } = await import('./upgrade.js');\n await runUpgrade(rest);\n },\n },\n {\n name: 'test',\n updateCheck: true,\n run: async (rest) => runDeprecatedTest(rest),\n },\n {\n name: 'mcp',\n run: async (rest) => {\n const runMcp = await loadMcp();\n await runMcp(rest);\n },\n },\n {\n name: 'install',\n run: async (rest) => {\n const { runInstall } = await import('./install.js');\n await runInstall(rest);\n },\n },\n {\n name: 'login',\n updateCheck: true,\n run: async (rest) => runLogin(rest),\n },\n {\n name: 'orgs',\n aliases: ['org'],\n updateCheck: true,\n run: async (rest) => runOrgs(rest),\n },\n {\n name: 'record',\n updateCheck: true,\n run: async (rest) => {\n const runRecord = await loadRecord();\n await runRecord(rest);\n },\n },\n {\n name: 'session',\n updateCheck: true,\n run: async (rest) => {\n const runSession = await loadSession();\n await runSession(rest);\n },\n },\n {\n name: 'local',\n updateCheck: true,\n run: async (rest) => {\n const runLocal = await loadLocal();\n await runLocal(rest);\n },\n },\n {\n name: 'debug-session',\n run: async (rest) => runDebugSession(rest),\n },\n {\n name: 'psql',\n run: async (rest) => {\n const { runPsql } = await import('./psql.js');\n await runPsql(rest);\n },\n },\n {\n name: 'redis',\n run: async (rest) => {\n const { runRedis } = await import('./redis.js');\n await runRedis(rest);\n },\n },\n {\n name: 'release',\n updateCheck: true,\n run: async (rest) => {\n const { runRelease } = await import('./release.js');\n await runRelease(rest);\n },\n },\n {\n name: 'perf',\n updateCheck: true,\n run: async (rest) => {\n const { runPerf } = await import('./perf.js');\n await runPerf(rest);\n },\n },\n {\n name: 'eval',\n updateCheck: true,\n run: async (rest) => {\n const { runEvalCommand } = await import('./eval.js');\n await runEvalCommand(rest);\n },\n },\n {\n name: 'mcp-eval',\n updateCheck: true,\n run: async (rest) => {\n const { runMcpEvalCommand } = await import('./mcp-eval.js');\n await runMcpEvalCommand(rest);\n },\n },\n {\n name: 'runbook',\n updateCheck: true,\n run: async (rest) => {\n const { runRunbook } = await import('./runbook.js');\n await runRunbook(rest);\n },\n },\n {\n name: 'monitor',\n updateCheck: true,\n run: async (rest) => {\n const { runMonitor } = await import('./monitor.js');\n await runMonitor(rest);\n },\n },\n {\n name: 'product-map',\n aliases: ['pm'],\n updateCheck: true,\n run: async (rest) => {\n const { runProductMap } = await import('./product-map.js');\n await runProductMap(rest);\n },\n },\n {\n name: 'exploration',\n aliases: ['explore'],\n updateCheck: true,\n run: async (rest) => {\n const { runExploration } = await import('./exploration.js');\n await runExploration(rest);\n },\n },\n {\n name: 'exploratory-test',\n updateCheck: true,\n run: async (rest) => {\n const { runExploratoryTest } = await import('./exploratory-test.js');\n await runExploratoryTest(rest);\n },\n },\n {\n name: 'docs',\n run: async (rest) => {\n const { runDocs } = await import('./docs.js');\n await runDocs(rest);\n },\n },\n {\n name: 'landing',\n run: async (rest) => {\n const { runLanding } = await import('./landing.js');\n await runLanding(rest);\n },\n },\n {\n name: 'feature-flag',\n run: async (rest) => {\n const { runFeatureFlag } = await import('./feature-flag.js');\n await runFeatureFlag(rest);\n },\n },\n {\n name: 'schedule',\n updateCheck: true,\n run: async (rest) => {\n const { runSchedule } = await import('./schedule.js');\n await runSchedule(rest);\n },\n },\n {\n name: 'alert',\n updateCheck: true,\n run: async (rest) => {\n const { runAlert } = await import('./alert.js');\n await runAlert(rest);\n },\n },\n {\n name: 'product',\n run: async (rest) => {\n const { runProduct } = await import('./product.js');\n await runProduct(rest);\n },\n },\n {\n // Not in the global help until the PLG launch PR (self-serve billing spec, D11).\n name: 'usage',\n run: async (rest) => {\n const { runUsage } = await import('./usage.js');\n await runUsage(rest);\n },\n },\n {\n name: 'metrics',\n run: async (rest) => {\n const { runMetrics } = await import('./metrics.js');\n await runMetrics(rest);\n },\n },\n {\n name: 'benchmark',\n aliases: ['benchmarks'],\n run: async (rest) => {\n const { runBenchmark } = await import('./benchmark.js');\n await runBenchmark(rest);\n },\n },\n {\n name: 'account',\n run: async (rest) => {\n const { runAccount } = await import('./account.js');\n await runAccount(rest);\n },\n },\n {\n name: 'scenario',\n aliases: ['scenarios'],\n run: async (rest) => {\n const { runScenarios } = await import('./scenarios.js');\n await runScenarios(rest);\n },\n },\n {\n name: 'knobs',\n run: async (rest) => {\n const { runKnobs } = await import('./knobs.js');\n await runKnobs(rest);\n },\n },\n {\n name: 'proofs',\n updateCheck: true,\n run: async (rest) => {\n const { runProofs } = await import('./proofs.js');\n await runProofs(rest);\n },\n },\n {\n name: 'trigger',\n updateCheck: true,\n run: async (rest) => {\n const { runTrigger } = await import('./trigger.js');\n await runTrigger(rest);\n },\n },\n {\n name: 'issues',\n aliases: ['issue'],\n updateCheck: true,\n run: async (rest) => {\n const { runIssues } = await import('./issues.js');\n await runIssues(rest);\n },\n },\n {\n name: 'tickets',\n updateCheck: true,\n run: async (rest) => {\n const { runTickets } = await import('./tickets.js');\n await runTickets(rest);\n },\n },\n {\n name: 'credential',\n updateCheck: true,\n run: async (rest) => {\n const { runCredential } = await import('./credential.js');\n await runCredential(rest);\n },\n },\n {\n name: 'persona',\n aliases: ['personas', 'credential-template', 'credential-templates'],\n run: async (rest) => {\n const { runCredentialTemplate } = await import('./credential-template.js');\n await runCredentialTemplate(rest);\n },\n },\n {\n name: 'workflow',\n updateCheck: true,\n run: async (rest) => {\n const { runWorkflow } = await import('./workflow.js');\n await runWorkflow(rest);\n },\n },\n {\n name: 'flow',\n updateCheck: true,\n run: async (rest) => {\n const { runFlow } = await import('./flow/index.js');\n await runFlow(rest);\n },\n },\n {\n name: 'spec',\n run: async (rest) => runSpec(rest),\n },\n {\n name: 'api-catalog',\n updateCheck: true,\n run: async (rest) => runApiCatalogCommand(rest),\n },\n {\n name: 'skill',\n aliases: ['skills'],\n updateCheck: ['skill', 'skills'],\n run: async (rest) => {\n const { runSkill } = await import('./skill.js');\n await runSkill(rest);\n },\n },\n {\n name: 'digest',\n aliases: ['digests'],\n run: async (rest) => {\n const { runDigest } = await import('./digest.js');\n await runDigest(rest);\n },\n },\n {\n name: 'feedback',\n run: async (rest) => {\n const { runFeedback } = await import('./feedback.js');\n await runFeedback(rest);\n },\n },\n {\n name: 'github',\n run: async (rest) => {\n const { runGithub } = await import('./github.js');\n await runGithub(rest);\n },\n },\n {\n name: 'slack',\n run: async (rest) => {\n const { runSlack } = await import('./slack.js');\n await runSlack(rest);\n },\n },\n {\n name: 'teams',\n run: async (rest) => {\n const { runTeams } = await import('./teams.js');\n await runTeams(rest);\n },\n },\n {\n name: 'prompts',\n aliases: ['prompt'],\n run: async (rest) => {\n const { runPrompts } = await import('./prompts.js');\n await runPrompts(rest);\n },\n },\n {\n name: 'task',\n updateCheck: true,\n run: async (rest) => {\n const { runTask } = await import('./task.js');\n await runTask(rest);\n },\n },\n {\n name: 'test-suite',\n updateCheck: true,\n run: async (rest) => {\n const { runTestSuite } = await import('./test-suite.js');\n await runTestSuite(rest);\n },\n },\n {\n name: 'visual',\n updateCheck: true,\n run: async (rest) => {\n const { runVisual } = await import('./visual.js');\n await runVisual(rest);\n },\n },\n {\n name: 'external-run',\n aliases: ['external-runs'],\n updateCheck: true,\n run: async (rest) => {\n const { runExternalRun } = await import('./external-run.js');\n await runExternalRun(rest);\n },\n },\n {\n name: 'triage',\n run: async (rest) => {\n const { runTriage } = await import('./triage.js');\n await runTriage(rest);\n },\n },\n {\n // \"application\" is the user-facing name; \"property\" stays as a backwards-compat alias.\n name: 'application',\n aliases: ['applications', 'property', 'properties'],\n run: async (rest) => {\n const { runProperty } = await import('./property.js');\n await runProperty(rest);\n },\n },\n {\n name: 'api-key',\n aliases: ['api-keys'],\n updateCheck: true,\n run: async (rest) => {\n const { runApiKey } = await import('./api-key.js');\n await runApiKey(rest);\n },\n },\n {\n name: 'environment',\n aliases: ['env'],\n run: async (rest) => {\n const { runEnvironment } = await import('./environment.js');\n await runEnvironment(rest);\n },\n },\n {\n name: 'sandbox',\n updateCheck: true,\n run: async (rest) => {\n const { runSandbox } = await import('./sandbox.js');\n await runSandbox(rest);\n },\n },\n {\n name: 'dev',\n run: async (rest) => {\n const { runDev } = await import('./dev.js');\n await runDev(rest);\n },\n },\n {\n name: 'attachment',\n aliases: ['attachments'],\n updateCheck: ['attachment', 'attachments'],\n run: async (rest) => {\n const { runAttachment } = await import('./attachment.js');\n await runAttachment(rest);\n },\n },\n {\n name: 'utilities',\n updateCheck: true,\n run: async (rest) => {\n const { runUtilities } = await import('./utilities.js');\n await runUtilities(rest);\n },\n },\n {\n name: 'tag',\n aliases: ['tags'],\n updateCheck: ['tag', 'tags'],\n run: async (rest) => {\n const { runTag } = await import('./tag.js');\n await runTag(rest);\n },\n },\n {\n name: 'trace',\n run: async (rest) => {\n const { runTrace } = await import('./trace.js');\n await runTrace(rest);\n },\n },\n {\n name: 'status',\n run: async (rest, command) => runStatusCommand(rest, command),\n },\n {\n name: 'blackcat',\n run: async (rest, command) => runBlackcatCommand(rest, command),\n },\n {\n name: 'auth',\n run: async (rest) => runAuthCommand(rest),\n },\n];\n\nfunction namesForMetadata(\n definition: CommandDefinition,\n value: CommandMetadataFlag | undefined\n): readonly string[] {\n if (value === true) return [definition.name];\n return value ?? [];\n}\n\nconst commandDefinitionMap = new Map<string, CommandDefinition>();\n\nfor (const definition of COMMAND_DEFINITIONS) {\n commandDefinitionMap.set(definition.name, definition);\n for (const alias of definition.aliases ?? []) {\n commandDefinitionMap.set(alias, definition);\n }\n}\n\n/** Commands that trigger the upgrade-available warning. */\nexport const COMMANDS_WITH_UPDATE_CHECK = new Set(\n COMMAND_DEFINITIONS.flatMap((definition) =>\n Array.from(namesForMetadata(definition, definition.updateCheck))\n )\n);\n\nexport function getCommandDefinition(command: string): CommandDefinition | undefined {\n return commandDefinitionMap.get(command);\n}\n\n/**\n * Print an upgrade nudge if the CLI is behind. Advisory: never throws and is not awaited by `main`.\n * A guide is where stale guidance costs the most, so `guide` runs are nudged whatever the auth source\n * (or none), on every run while behind. Other commands: stored login only, at most once a day.\n */\nexport async function maybeCheckForUpdate(\n command: string,\n isGuide: boolean,\n argv: string[],\n version: string\n) {\n try {\n if (!isGuide) {\n if (!COMMANDS_WITH_UPDATE_CHECK.has(command)) return;\n if ((await resolveAuthSource(argv)) !== 'stored') return;\n }\n\n const { checkForUpdate } = await import('./update-check.js');\n const { installCommandLine } = await import('./upgrade.js');\n await checkForUpdate(version, installCommandLine, isGuide);\n } catch {\n // The nudge is advisory: a failure here must never reach the command the user ran.\n }\n}\n\nexport async function executeCommand(command: string, rest: string[]) {\n const definition = getCommandDefinition(command);\n if (!definition) {\n console.log(`Unknown command \"${command}\".`);\n // Superadmin-only commands are hidden from non-superadmins, so never suggest them.\n const suggestable = [...commandDefinitionMap.keys()].filter(\n (n) => n !== 'status' && n !== 'blackcat'\n );\n const suggestion = suggestCommand(command, suggestable);\n if (suggestion) console.log(`Did you mean \\`${brandCommand} ${suggestion}\\`?`);\n await showGlobalHelp();\n process.exit(1);\n }\n\n await definition.run(rest, command);\n}\n","function editDistance(a: string, b: string): number {\n let prev = Array.from({ length: b.length + 1 }, (_, j) => j);\n for (let i = 1; i <= a.length; i++) {\n const row = [i];\n for (let j = 1; j <= b.length; j++) {\n row[j] = Math.min(prev[j] + 1, row[j - 1] + 1, prev[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));\n }\n prev = row;\n }\n return prev[b.length];\n}\n\n/**\n * The command a mistyped `input` most likely meant: a command it is a prefix of (3+ characters),\n * else the nearest within two edits. Null when nothing is close.\n */\nexport function suggestCommand(input: string, names: readonly string[]): string | null {\n if (input.length >= 3) {\n const prefixed = names.filter((n) => n.startsWith(input)).sort((a, b) => a.length - b.length);\n if (prefixed.length > 0) return prefixed[0];\n }\n let best: { name: string; distance: number } | null = null;\n for (const name of names) {\n const distance = editDistance(input, name);\n if (distance <= 2 && distance < name.length / 2 && (!best || distance < best.distance)) {\n best = { name, distance };\n }\n }\n return best?.name ?? null;\n}\n","/**\n * CLI Debug Session Generator\n *\n * Creates a debug login token for browser-based debugging with Playwright.\n * Requires superadmin authentication.\n *\n * Usage:\n * canary debug-session [--env dev|prod|local] [--api-url <url>]\n *\n * Outputs the login URL that can be used with Playwright to authenticate\n * as the debug agent user for read-only browser access.\n */\n\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { resolveConfig, hasFlag } from \"./auth.js\";\nimport { fetchOrExit } from \"./api-fetch.js\";\nimport { writeRawOutput } from './brand.js';\n\ntype DebugSessionResponse = {\n ok: boolean;\n loginUrl?: string;\n expiresAt?: string;\n error?: string;\n message?: string;\n};\n\nasync function writeDebugSession(loginUrl: string, expiresAt: string, apiUrl: string) {\n const dir = path.join(os.homedir(), \".config\", \"canary-cli\");\n const filePath = path.join(dir, \"debug-session.json\");\n await fs.mkdir(dir, { recursive: true, mode: 0o700 });\n await fs.writeFile(\n filePath,\n JSON.stringify({ loginUrl, expiresAt, apiUrl, createdAt: new Date().toISOString() }, null, 2),\n { encoding: \"utf8\", mode: 0o600 }\n );\n return filePath;\n}\n\nexport async function runDebugSession(argv: string[]): Promise<void> {\n if (hasFlag(argv, \"--help\", \"-h\")) {\n console.log(\n [\n \"Usage: canary debug-session [--env dev|local] [--json]\",\n \"\",\n \"Create a browser debug session (superadmin).\",\n ].join(\"\\n\")\n );\n return;\n }\n const { apiUrl, token } = await resolveConfig(argv);\n const jsonOutput = hasFlag(argv, \"--json\");\n\n try {\n const res = await fetchOrExit(`${apiUrl}/auth/debug-session/create`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n token,\n });\n\n // Handle HTTP errors before parsing JSON\n if (!res.ok) {\n const text = await res.text();\n\n if (res.status === 403) {\n console.error(\"Error: Forbidden. Debug session creation requires superadmin access.\");\n process.exit(1);\n }\n\n if (res.status === 404) {\n console.error(\n \"Error: Endpoint not found. The debug-session feature may not be deployed to this environment.\"\n );\n process.exit(1);\n }\n\n // Try to parse error as JSON, fallback to raw text\n try {\n const errorJson = JSON.parse(text) as { error?: string; message?: string };\n console.error(`Error: ${errorJson.message ?? errorJson.error ?? text}`);\n } catch {\n console.error(`Error (${res.status}): ${text || res.statusText}`);\n }\n process.exit(1);\n }\n\n const json = (await res.json()) as DebugSessionResponse;\n\n if (!json.ok || !json.loginUrl) {\n console.error(`Error: ${json.message ?? json.error ?? \"Failed to create debug session\"}`);\n process.exit(1);\n }\n\n // Save session info\n const filePath = await writeDebugSession(json.loginUrl, json.expiresAt ?? \"\", apiUrl);\n\n if (jsonOutput) {\n writeRawOutput(JSON.stringify(\n {\n loginUrl: json.loginUrl,\n expiresAt: json.expiresAt,\n sessionFile: filePath,\n },\n null,\n 2\n )\n );\n } else {\n console.log(\"Debug session created successfully.\");\n console.log(\"\");\n console.log(`Login URL: ${json.loginUrl}`);\n console.log(`Expires: ${json.expiresAt}`);\n console.log(`Session saved to: ${filePath}`);\n console.log(\"\");\n console.log(\"Use this URL with Playwright to authenticate as the debug agent.\");\n console.log(\"The token is single-use and expires in 5 minutes.\");\n }\n } catch (err) {\n console.error(`Failed to create debug session: ${err}`);\n process.exit(1);\n }\n}\n","import process from 'node:process';\nimport {\n getArgValue,\n hasFlag,\n resolveConfig,\n readAllProfiles,\n findSessionByOrg,\n setDefaultProfile,\n printAmbiguousOrg,\n type StoredAuth,\n} from './auth';\nimport { decodeJwtPayload, isSuperadminToken } from './jwt.js';\nimport { writeRawOutput } from './brand.js';\nimport { apiRequest } from './cli-helpers.js';\n\ntype OrgsResponse = {\n ok: boolean;\n currentOrgId?: string;\n organizations?: Array<{ id: string; name: string; role: string }>;\n error?: string;\n};\n\ntype SuperadminOrgsResponse = {\n ok: boolean;\n organizations?: Array<{ id: string; name: string; memberCount?: number }>;\n error?: string;\n};\n\ntype OrgMembersResponse = {\n ok: boolean;\n error?: string;\n items?: Array<{\n userId: string;\n displayName: string | null;\n primaryEmail: string | null;\n role: string;\n isActive: boolean;\n slackLinked: boolean;\n }>;\n};\n\n/**\n * `cofactor org members` — list members of the current org, annotated with\n * whether each has linked their Slack user. Powers recipient lookup for the\n * `utilities email` / `utilities slack` commands.\n */\nasync function runOrgMembers(argv: string[]) {\n const { apiUrl, token } = await resolveConfig(argv);\n const res = await fetch(`${apiUrl}/org/members`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n if (!res.ok) {\n console.error('Failed to fetch members. You may need to re-login: cofactor login');\n process.exit(1);\n }\n const data = (await res.json()) as OrgMembersResponse;\n if (!data.ok || !data.items) {\n console.error('Failed to fetch members:', data.error ?? 'Unknown error');\n process.exit(1);\n }\n\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify(data.items, null, 2));\n return;\n }\n\n if (data.items.length === 0) {\n console.log('No members.');\n return;\n }\n console.log('Members (✓ = Slack-linked, can receive utilities slack DMs):\\n');\n for (const m of data.items) {\n const slack = m.slackLinked ? '✓' : ' ';\n const name = m.displayName ?? '(no name)';\n const email = m.primaryEmail ?? '(no email)';\n console.log(` ${slack} ${name} <${email}> [${m.role}]`);\n }\n}\n\n/** Short \"in ~N days\" / \"expired\" rendering of a JWT `exp` (seconds). */\nfunction fmtExpShort(expSec: number | undefined): string {\n if (!expSec) return '';\n const deltaSec = expSec - Math.floor(Date.now() / 1000);\n if (deltaSec < 0) return 'expired';\n const days = Math.round(deltaSec / 86400);\n return days >= 1 ? `~${days}d left` : '<1d left';\n}\n\n/**\n * `cofactor org use <name|id>` — point the persistent default at one of your\n * logged-in sessions, so bare (no `--org`) commands act as that org.\n */\n/** Value-taking global flags — used to skip a flag's value when scanning for a\n * positional argument (so `org use --env dev acme` picks `acme`, not `dev`). */\nconst VALUE_FLAGS = new Set(['--env', '--api-url', '--token', '--org']);\n\n/** First positional token, skipping flags, their values, and any `skip` words. */\nfunction firstPositional(argv: string[], skip: Set<string>): string | undefined {\n for (let i = 0; i < argv.length; i++) {\n const a = argv[i];\n if (a.startsWith('-')) continue;\n if (i > 0 && VALUE_FLAGS.has(argv[i - 1])) continue; // this token is a flag value\n if (skip.has(a)) continue;\n return a;\n }\n return undefined;\n}\n\nasync function runOrgUse(argv: string[]) {\n const selector = firstPositional(argv, new Set(['use']));\n if (!selector) {\n console.error('Usage: canary org use <name|id>');\n process.exit(1);\n }\n const env = getArgValue(argv, '--env');\n const match = await findSessionByOrg(selector, env);\n if (match.kind === 'none') {\n console.error(`No logged-in session for org \"${selector}\".`);\n console.error(`Add one with: canary login --org \"${selector}\"`);\n process.exit(1);\n }\n if (match.kind === 'ambiguous') {\n printAmbiguousOrg(selector, match.candidates);\n process.exit(1);\n }\n await setDefaultProfile(match.key);\n const envLabel = match.auth.envLabel ? ` [${match.auth.envLabel}]` : '';\n console.log(`Active org set to ${match.auth.orgName ?? match.auth.orgId}${envLabel}.`);\n console.log('Bare commands (no --org) will now act as this org.');\n}\n\nfunction printOrgsHelp(): void {\n console.log(\n [\n 'canary orgs: Your organizations and their members (alias: canary org)',\n '',\n 'Sub-commands:',\n ' (none) [--all] List your organizations and logged-in sessions',\n ' (--all: every organization, superadmin)',\n ' use <name|id> Set the active org for bare commands',\n ' members [--json] List members of the current org',\n ' invite <email> [--role member|admin] Invite a teammate by email (admin; default role: member)',\n ' invites [--json] List pending invitations',\n ' create --name <name> [--owner-email <email>]',\n ' Create an organization and invite its owner as admin',\n ' (superadmin; you become its first admin)',\n ' settings get Read organization settings',\n ' settings set max-parallel-external-tests <n>',\n ' Set organization-wide external-test concurrency',\n '',\n 'An invite link lets whoever holds it join the org: share it only with the invitee,',\n 'and keep `invite --json` / `create --json` output (which carries it) out of logs.',\n ].join('\\n')\n );\n}\n\ntype CreateInviteResponse = {\n ok: boolean;\n error?: string;\n invitation?: { id: string; token: string; expiresAt: string };\n inviteUrl?: string;\n emailSent?: boolean;\n};\ntype CreatedInvite = {\n invitation: { id: string; token: string; expiresAt: string };\n /** Absent from an API older than this CLI; the invitation still exists. */\n inviteUrl?: string;\n emailSent?: boolean;\n};\n\n/**\n * `cofactor org invite <email> [--role member|admin]`: the Settings → Members\n * invite, over the same `/org/invites` route. The invitee gets an email; the\n * link is printed too, for when the email does not arrive.\n */\nexport async function runOrgInvite(argv: string[], apiUrl: string, token: string) {\n const email = orgPositionals(argv)[1];\n if (!email) {\n console.error('Usage: canary org invite <email> [--role member|admin]');\n process.exit(1);\n }\n const role = getArgValue(argv, '--role') ?? 'member';\n if (role !== 'member' && role !== 'admin') {\n console.error(`--role must be member or admin (got \"${role}\").`);\n process.exit(1);\n }\n const data = await createInvite(apiUrl, token, email, role);\n if (typeof data === 'string') {\n console.error(`Failed to create the invitation: ${data}`);\n process.exit(1);\n }\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify(data, null, 2));\n return;\n }\n printInvite(data, email, role);\n}\n\n/** POST /org/invites as the org `token` belongs to; the error message on failure. */\nasync function createInvite(\n apiUrl: string,\n token: string,\n email: string,\n role: 'member' | 'admin'\n): Promise<CreatedInvite | string> {\n const data = await apiRequest<CreateInviteResponse>(apiUrl, token, 'POST', '/org/invites', {\n email,\n role,\n });\n if (!data.ok || !data.invitation) return data.error ?? 'Unknown error';\n return { invitation: data.invitation, inviteUrl: data.inviteUrl, emailSent: data.emailSent };\n}\n\n/** The link is a bearer credential for joining the org: share it only with the invitee. */\nfunction printInvite(data: CreatedInvite, email: string, role: string) {\n writeRawOutput(\n data.emailSent\n ? `Invited ${email} as ${role}; the invitation email is on its way.`\n : `Invited ${email} as ${role}, but the email did not send. Share the link with them yourself.`\n );\n if (data.inviteUrl) writeRawOutput(` link: ${data.inviteUrl}`);\n console.log(` expires: ${data.invitation.expiresAt}`);\n}\n\n/**\n * `cofactor org create --name <n> [--owner-email <email>]` (superadmin): create\n * an organization for someone else and invite its owner as admin. Uses the\n * existing routes: POST /organizations (the caller becomes its first admin),\n * a CLI token for the new org (POST /cli-login/switch-org, not stored), and\n * POST /org/invites as that org.\n */\nasync function runOrgCreate(argv: string[]) {\n const name = getArgValue(argv, '--name');\n if (!name) {\n console.error('Usage: canary org create --name <name> [--owner-email <email>]');\n process.exit(1);\n }\n const ownerEmail = getArgValue(argv, '--owner-email');\n const { apiUrl, token } = await resolveConfig(argv);\n if (!isSuperadminToken(token)) {\n // A convenience gate, not authorization: POST /organizations is the same\n // route sign-up uses. The creator stays an admin member of the new org.\n console.error('canary org create is for superadmins. Sign-up creates an organization for everyone else.');\n process.exit(1);\n }\n\n const created = await apiRequest<{ ok: boolean; id?: string; error?: string }>(\n apiUrl,\n token,\n 'POST',\n '/organizations',\n { name }\n );\n if (!created.ok || !created.id) {\n console.error(`Failed to create the organization: ${created.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n const orgId = created.id;\n\n let invite: CreatedInvite | null = null;\n if (ownerEmail) {\n const retry = `canary login --org ${orgId} && canary org invite ${ownerEmail} --role admin --org ${orgId}`;\n // A token for the new org, held in memory for this one request and never stored.\n const switched = await apiRequest<{ ok: boolean; accessToken?: string; error?: string }>(\n apiUrl,\n token,\n 'POST',\n '/cli-login/switch-org',\n { orgId }\n );\n if (!switched.ok || !switched.accessToken) {\n console.error(\n `Created organization ${orgId}, but could not act as it to invite the owner: ${switched.error ?? 'Unknown error'}`\n );\n console.error(`Invite them with: ${retry}`);\n process.exit(1);\n }\n const ownerInvite = await createInvite(apiUrl, switched.accessToken, ownerEmail, 'admin');\n if (typeof ownerInvite === 'string') {\n console.error(`Created organization ${orgId}, but inviting ${ownerEmail} failed: ${ownerInvite}`);\n console.error(`Do not run org create again; invite them with: ${retry}`);\n process.exit(1);\n }\n invite = ownerInvite;\n }\n\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify({ ok: true, id: orgId, name, invite }, null, 2));\n return;\n }\n writeRawOutput(`Created organization \"${name}\" (${orgId}). You are its admin.`);\n if (invite && ownerEmail) printInvite(invite, ownerEmail, 'admin');\n console.log(`Act in it: canary login --org ${orgId}`);\n}\n\ntype PendingInvitesResponse = {\n ok: boolean;\n error?: string;\n items?: Array<{\n id: string;\n email: string | null;\n role: string;\n createdAt: string;\n expiresAt: string;\n inviterDisplayName?: string | null;\n inviterPrimaryEmail?: string | null;\n }>;\n};\n\nasync function runOrgInvites(argv: string[]) {\n const { apiUrl, token } = await resolveConfig(argv);\n const data = await apiRequest<PendingInvitesResponse>(apiUrl, token, 'GET', '/org/invites/pending');\n if (!data.ok || !data.items) {\n console.error(`Failed to list invitations: ${data.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify(data.items, null, 2));\n return;\n }\n if (data.items.length === 0) {\n console.log('No pending invitations.');\n return;\n }\n console.log('Pending invitations:\\n');\n for (const i of data.items) {\n const by = i.inviterDisplayName ?? i.inviterPrimaryEmail ?? 'unknown';\n writeRawOutput(` ${i.email ?? '(link only)'} [${i.role}] by ${by} expires ${i.expiresAt}`);\n }\n}\n\nexport async function runOrgs(argv: string[]) {\n // Sub-commands: `orgs members`, `org use <name|id>`, invitations, and org settings.\n if (hasFlag(argv, '--help', '-h') || orgPositionals(argv)[0] === 'help') {\n printOrgsHelp();\n return;\n }\n const sub = orgPositionals(argv)[0];\n if (sub === 'invite') {\n const { apiUrl, token } = await resolveConfig(argv);\n return runOrgInvite(argv, apiUrl, token);\n }\n if (sub === 'invites') {\n return runOrgInvites(argv);\n }\n if (sub === 'create') {\n return runOrgCreate(argv);\n }\n if (sub === 'members') {\n return runOrgMembers(argv.filter((a) => a !== 'members'));\n }\n if (sub === 'use') {\n return runOrgUse(argv);\n }\n if (sub === 'settings') {\n return runOrgSettings(argv.filter((a) => a !== 'settings'));\n }\n\n const { apiUrl, token } = await resolveConfig(argv);\n // The \"* = active\" marker reflects the org we actually resolved for this\n // invocation (honors --org / --env / default), read straight off the token.\n const resolvedOrgId = (() => {\n const payload = decodeJwtPayload(token);\n return typeof payload?.org_id === 'string' ? payload.org_id : undefined;\n })();\n const showAll = hasFlag(argv, '--all');\n\n if (showAll) {\n // Superadmin: list all organizations\n const res = await fetch(`${apiUrl}/superadmin/organizations`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!res.ok) {\n if (res.status === 403) {\n console.error('Superadmin access required for --all');\n } else {\n console.error('Failed to fetch organizations. You may need to re-login: canary login');\n }\n process.exit(1);\n }\n\n const data = (await res.json()) as SuperadminOrgsResponse;\n if (!data.ok || !data.organizations) {\n console.error('Failed to fetch organizations:', data.error ?? 'Unknown error');\n process.exit(1);\n }\n\n console.log('All Organizations:\\n');\n for (const org of data.organizations) {\n const members = org.memberCount !== undefined && org.memberCount !== null ? ` (${org.memberCount} members)` : '';\n console.log(` ${org.name}${members} [${org.id}]`);\n }\n\n console.log(`\\nTotal: ${data.organizations.length} organizations`);\n return;\n }\n\n const res = await fetch(`${apiUrl}/cli-login/orgs`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!res.ok) {\n console.error('Failed to fetch organizations. You may need to re-login: canary login');\n process.exit(1);\n }\n\n const data = (await res.json()) as OrgsResponse;\n if (!data.ok || !data.organizations) {\n console.error('Failed to fetch organizations:', data.error ?? 'Unknown error');\n process.exit(1);\n }\n\n const currentOrgId = resolvedOrgId ?? data.currentOrgId;\n\n // Map orgId → stored session (env-mirror + org-keyed profiles share an orgId;\n // keep the first — they hold the same token).\n const { profiles } = await readAllProfiles();\n const sessionByOrg = new Map<string, StoredAuth>();\n for (const { auth: a } of profiles) {\n if (a.orgId && !sessionByOrg.has(a.orgId)) sessionByOrg.set(a.orgId, a);\n }\n\n console.log('Organizations:\\n');\n for (const org of data.organizations) {\n const marker = org.id === currentOrgId ? ' *' : '';\n const session = sessionByOrg.get(org.id);\n let sessionInfo: string;\n if (session?.token) {\n const payload = decodeJwtPayload(session.token);\n const exp = typeof payload?.exp === 'number' ? payload.exp : undefined;\n const parts = [session.envLabel, fmtExpShort(exp)].filter(Boolean);\n sessionInfo = ` — logged in${parts.length ? ` (${parts.join(', ')})` : ''}`;\n } else {\n sessionInfo = ' — no local session';\n }\n console.log(` ${org.name} (${org.role}) [${org.id}]${marker}${sessionInfo}`);\n }\n\n console.log('\\n* = active org (used when no --org is given)');\n console.log('Run one command as an org: canary <command> --org <name>');\n console.log('Switch the active org: canary org use <name>');\n console.log('Add / refresh a session: canary login --org <name>');\n}\n\nasync function runOrgSettings(argv: string[]) {\n const positional = orgPositionals(argv);\n const [operation, key, rawValue] = positional;\n if (!operation || operation === 'get') {\n const { apiUrl, token } = await resolveConfig(argv);\n const response = await fetch(`${apiUrl}/org/settings`, { headers: { Authorization: `Bearer ${token}` } });\n const body = (await response.json()) as { ok: boolean; data?: { maxParallelExternalTests?: unknown }; error?: string };\n if (!response.ok || !body.ok || !body.data || typeof body.data.maxParallelExternalTests !== 'number') {\n console.error(`Failed to fetch organization settings: ${body.error ?? response.statusText}`);\n process.exit(1);\n }\n if (hasFlag(argv, '--json')) writeRawOutput(JSON.stringify(body.data, null, 2));\n else console.log(`maxParallelExternalTests: ${body.data.maxParallelExternalTests}`);\n return;\n }\n if (operation !== 'set' || key !== 'max-parallel-external-tests' || !rawValue || !/^\\d+$/.test(rawValue)) {\n console.error('Usage: cofactor org settings get | set max-parallel-external-tests <positive integer>');\n process.exit(1);\n }\n const value = Number(rawValue);\n if (!Number.isSafeInteger(value) || value < 1 || value > 1000) {\n console.error('max-parallel-external-tests must be an integer from 1 to 1000.');\n process.exit(1);\n }\n const { apiUrl, token } = await resolveConfig(argv);\n const response = await fetch(`${apiUrl}/org/settings`, {\n method: 'PUT',\n headers: { Authorization: `Bearer ${token}`, 'content-type': 'application/json' },\n body: JSON.stringify({ maxParallelExternalTests: value }),\n });\n const body = (await response.json()) as { ok: boolean; data?: { maxParallelExternalTests?: unknown }; error?: string };\n if (!response.ok || !body.ok || !body.data || typeof body.data.maxParallelExternalTests !== 'number') {\n console.error(`Failed to update organization settings: ${body.error ?? response.statusText}`);\n process.exit(1);\n }\n console.log(`maxParallelExternalTests set to ${body.data.maxParallelExternalTests}.`);\n}\n\nfunction orgPositionals(argv: string[]): string[] {\n const positional: string[] = [];\n const valueOptions = new Set([\n '--env',\n '--org',\n '--token',\n '--api-url',\n '--profile',\n '--role',\n '--name',\n '--owner-email',\n ]);\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index]!;\n if (valueOptions.has(arg)) { index += 1; continue; }\n if (arg.startsWith('--')) continue;\n positional.push(arg);\n }\n return positional;\n}\n","import process from 'node:process';\nimport { command, shouldBrandConsoleOutput } from './brand.js';\nimport { installCommandLine } from './upgrade.js';\n\n/**\n * The legacy `canary` binary is renamed `cofactor`. Any `canary` invocation prints one line\n * to stderr, then runs normally. Machine output (`mcp`, `--json`, `--format`) gets nothing,\n * so a caller merging stderr into a parser still sees clean output.\n */\nexport function printRenameNoticeIfLegacy(argv: string[]): void {\n if (command !== 'canary' || !shouldBrandConsoleOutput(argv)) return;\n process.stderr.write(\n `The \"canary\" CLI has been renamed to \"cofactor\". Install it with: ${installCommandLine()}\\n`,\n );\n}\n"],"mappings":"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","names":["process","process","process","process","apiUrl","token","res","data","response","body","process","resolveConfig","command","runStatus","runBlackcat","version","installCommandLine","process","process","command","process"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/command-registry.ts","../src/command-suggestion.ts","../src/debug-session.ts","../src/orgs.ts","../src/rename-notice.ts"],"sourcesContent":["import process from 'node:process';\nimport { pathToFileURL } from 'node:url';\nimport { installConsoleBranding, shouldBrandConsoleOutput, version } from './brand.js';\nimport { executeCommand, maybeCheckForUpdate } from './command-registry.js';\nimport { printRenameNoticeIfLegacy } from './rename-notice.js';\nimport { printVersion, showGlobalHelp } from './help.js';\nimport { splitAtSeparator } from './argv.js';\nimport { assertWellFormedGlobalFlags } from './auth.js';\nimport { getCliDiagnosticMetadata } from './cli-diagnostics.js';\nimport { normalizeGlobalCommandOptions } from './trigger-options.js';\nimport {\n ProcessExitSignal,\n createCliUserEventRecorder,\n isExpectedCliInputError,\n recordCliInstrumentationFailure,\n} from './user-event-tracking.js';\n\nfunction normalizeExitCode(value: string | number | null | undefined): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : 1;\n }\n return 0;\n}\n\nexport async function main(argv: string[]) {\n // Words after `--` belong to the command being run (`sandbox exec`), never to the CLI:\n // every flag check, config lookup and telemetry call below reads `options` only.\n const { options } = splitAtSeparator(argv);\n printRenameNoticeIfLegacy(options);\n // Rebrand human-readable output for the `cofactor` binary (no-op for\n // `canary`). Skipped for the `mcp` JSON-RPC transport, `--json`/`--format`\n // output, and raw data-query commands, so neither structured payloads nor\n // datastore values are ever rewritten — display branding only.\n if (shouldBrandConsoleOutput(options)) {\n installConsoleBranding();\n }\n const wantsMachineOutput = options.includes('--json') || options.includes('--format');\n\n if (options.includes('--version') || options.includes('-V')) {\n printVersion();\n return;\n }\n\n const [command, ...rest] = argv;\n const commandOptions = normalizeGlobalCommandOptions(command, rest, options);\n const hasHelpFlag = options.includes('--help') || options.includes('-h');\n\n // Global help only without a command: every command prints its own --help.\n if (!command || command === 'help' || (hasHelpFlag && command.startsWith('-'))) {\n await showGlobalHelp();\n return;\n }\n\n if (command === 'version') {\n printVersion();\n return;\n }\n\n assertWellFormedGlobalFlags(options);\n\n // Upgrade check, started without waiting so it never delays the command. With a stale cache the\n // process can stay up to the registry timeout after the output, the one-line stderr nudge can\n // land mid-output, and a command that exits non-zero drops it: it is advisory. Interactive humans\n // logged in via `canary login` only, except `guide` runs, which are nudged whatever the auth\n // source. Other API-key auth (--token / *_API_TOKEN env var, i.e. CI/automation) and\n // machine-readable (`--json`/`--format`) runs are never nagged; the nudge is never part of stdout.\n const isGuide = rest[0] === 'guide';\n // `dev proxy` is ssh's ProxyCommand, run for every ssh/scp/rsync: its stdout is the\n // connection and it must start and end promptly, so it gets no nudge and no tracking.\n const isSshProxy = command === 'dev' && (rest[0] === 'proxy' || rest[0] === 'aws-credentials');\n if ((!wantsMachineOutput || isGuide) && !isSshProxy) {\n void maybeCheckForUpdate(command, isGuide, commandOptions, version);\n }\n let tracking: Awaited<ReturnType<typeof createCliUserEventRecorder>> = null;\n if (!isSshProxy) {\n try {\n tracking = await createCliUserEventRecorder(commandOptions, version);\n } catch (error) {\n await recordCliInstrumentationFailure(commandOptions, version, 'recorder-init', error);\n }\n }\n const startedAt = Date.now();\n const originalExit = process.exit.bind(process);\n let finalExitCode = 0;\n let handledExpectedInputError = false;\n\n if (tracking) {\n await tracking.recorder.recordCommandStarted(tracking.metadata);\n }\n\n (process as typeof process & { exit: typeof process.exit }).exit = ((code?: number) => {\n throw new ProcessExitSignal(code ?? normalizeExitCode(process.exitCode));\n }) as typeof process.exit;\n\n try {\n await executeCommand(command, rest);\n finalExitCode = normalizeExitCode(process.exitCode);\n if (tracking) {\n const metadata = {\n ...tracking.metadata,\n durationMs: Date.now() - startedAt,\n exitCode: finalExitCode,\n };\n if (finalExitCode === 0) {\n await tracking.recorder.recordCommandCompleted(metadata);\n } else {\n await tracking.recorder.recordCommandFailed({\n ...metadata,\n errorKind: 'exit-code',\n });\n }\n }\n } catch (error) {\n if (error instanceof ProcessExitSignal) {\n finalExitCode = error.exitCode;\n if (tracking) {\n const metadata = {\n ...tracking.metadata,\n durationMs: Date.now() - startedAt,\n exitCode: finalExitCode,\n };\n if (finalExitCode === 0) {\n await tracking.recorder.recordCommandCompleted(metadata);\n } else {\n await tracking.recorder.recordCommandFailed({\n ...metadata,\n errorKind: 'process-exit',\n });\n }\n }\n } else {\n finalExitCode = normalizeExitCode(process.exitCode) || 1;\n const expectedInputError = isExpectedCliInputError(error);\n if (tracking) {\n const diagnostics = command === 'external-run' ? getCliDiagnosticMetadata(error) : {};\n await tracking.recorder.recordCommandFailed({\n ...tracking.metadata,\n durationMs: Date.now() - startedAt,\n exitCode: finalExitCode,\n cliExternalRunOperation:\n typeof diagnostics.cliExternalRunOperation === 'string'\n ? diagnostics.cliExternalRunOperation\n : undefined,\n cliExternalRunId:\n diagnostics.cliExternalRunId === null\n ? null\n : typeof diagnostics.cliExternalRunId === 'string'\n ? diagnostics.cliExternalRunId\n : undefined,\n cliExternalRunPhase:\n typeof diagnostics.cliExternalRunPhase === 'string'\n ? diagnostics.cliExternalRunPhase\n : undefined,\n cliExternalRunFormat:\n typeof diagnostics.cliExternalRunFormat === 'string'\n ? diagnostics.cliExternalRunFormat\n : undefined,\n errorKind: error instanceof Error ? error.name : typeof error,\n errorName: error instanceof Error ? error.name : undefined,\n errorMessage: error instanceof Error ? error.message : String(error),\n ...(expectedInputError\n ? {}\n : {\n reportToSentry: true,\n sentryFingerprint: [\n 'canary-cli',\n tracking.metadata.commandPath,\n error instanceof Error ? error.name : typeof error,\n ],\n }),\n });\n }\n if (expectedInputError) {\n console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);\n handledExpectedInputError = true;\n } else {\n throw error;\n }\n }\n } finally {\n (process as typeof process & { exit: typeof process.exit }).exit = originalExit;\n }\n\n if (finalExitCode !== 0 || handledExpectedInputError) {\n originalExit(finalExitCode);\n }\n}\n\nif (import.meta.url === pathToFileURL(process.argv[1]).href) {\n void main(process.argv.slice(2));\n}\n","import process from 'node:process';\nimport { command as brandCommand } from './brand.js';\nimport { suggestCommand } from './command-suggestion.js';\nimport { resolveAuthSource } from './auth';\nimport { splitAtSeparator } from './argv';\nimport { runDebugSession } from './debug-session';\nimport { printTestHelp, resolveIsSuperadmin, showGlobalHelp } from './help.js';\nimport { runLogin } from './login';\nimport { runOrgs } from './orgs';\nimport { runRemoteTest } from './remote-test';\n\ntype CommandRunner = (rest: string[], command: string) => Promise<void>;\ntype CommandMetadataFlag = true | readonly string[];\n\nexport type CommandDefinition = {\n name: string;\n aliases?: readonly string[];\n updateCheck?: CommandMetadataFlag;\n run: CommandRunner;\n};\n\n// Lazy-load playwright-dependent modules.\nconst loadMcp = () => import('./mcp').then((m) => m.runMcp);\nconst loadRecord = () => import('./record.js').then((m) => m.runRecord);\nconst loadSession = () => import('./session/index.js').then((m) => m.runSession);\nconst loadLocal = () => import('./local/index.js').then((m) => m.runLocal);\n\nasync function runDeprecatedTest(rest: string[]) {\n // Sub-command help\n if (rest.includes('--help') || rest.includes('-h')) {\n printTestHelp();\n return;\n }\n // Check for --remote flag — deprecated, forward to test-suite run\n if (rest.includes('--remote')) {\n console.warn(\n '\\x1b[33m⚠ `canary test --remote` is deprecated and will be removed in a future release.\\x1b[0m'\n );\n console.warn(' Use `canary test-suite run` instead.\\n');\n const remoteArgs = rest.filter((arg) => arg !== '--remote');\n await runRemoteTest(remoteArgs);\n return;\n }\n // Local Playwright test runner has been removed\n console.error(\n '`canary test` (local Playwright runner) has been removed.\\n' +\n 'Use `canary test-suite run` for remote workflow tests.\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' canary test-suite run\\n' +\n ' canary test-suite run --tag smoke\\n' +\n ' canary test-suite run --property \"My App\" --environment staging'\n );\n process.exit(1);\n}\n\nasync function runSpec(rest: string[]) {\n const { resolveConfig } = await import('./auth.js');\n const { handleSpec } = await import('./spec/index.js');\n // Anywhere in argv: `spec compile <file> --help` must print help, not compile.\n if (rest.includes('--help') || rest.includes('-h')) {\n await handleSpec(['help'], '', '');\n return;\n }\n // `validate` is purely offline — don't fail on missing auth config.\n const wantsAuth = rest[0] === 'compile' || rest[0] === 'pull' || rest[0] === 'diff';\n if (wantsAuth) {\n const { apiUrl, token, appSubdomain } = await resolveConfig(rest);\n await handleSpec(rest, apiUrl, token, appSubdomain);\n } else {\n await handleSpec(rest, '', '');\n }\n}\n\nasync function runApiCatalogCommand(rest: string[]) {\n const { resolveConfig } = await import('./auth.js');\n const { runApiCatalog } = await import('./api-catalog.js');\n // Help needs no session; runApiCatalog prints it before using the config.\n if (rest.length === 0 || rest[0] === 'help' || rest.includes('--help') || rest.includes('-h')) {\n await runApiCatalog(rest, '', '');\n return;\n }\n const { apiUrl, token } = await resolveConfig(rest);\n await runApiCatalog(rest, apiUrl, token);\n}\n\nasync function runStatusCommand(rest: string[], command: string) {\n // Help is static text (the command ships in the public CLI), so it skips the gate.\n if (rest.includes('--help') || rest.includes('-h')) {\n const { runStatus } = await import('./status.js');\n await runStatus(['help']);\n return;\n }\n // Superadmin-only. Gated client-side (the command talks to AWS directly,\n // not the cofactor API, so there is no server-side 403 to rely on). Treat\n // non-superadmins as if the command does not exist.\n if (!(await resolveIsSuperadmin())) {\n console.log(`Unknown command \"${command}\".`);\n await showGlobalHelp();\n process.exit(1);\n }\n const { runStatus } = await import('./status.js');\n await runStatus(rest);\n}\n\nasync function runBlackcatCommand(rest: string[], command: string) {\n const { options: cliArgv } = splitAtSeparator(rest);\n if (cliArgv.length === 0 || cliArgv.includes('--help') || cliArgv.includes('-h')) {\n const { runBlackcat } = await import('./blackcat.js');\n await runBlackcat(rest);\n return;\n }\n if (!(await resolveIsSuperadmin())) {\n console.log(`Unknown command \"${command}\".`);\n await showGlobalHelp();\n process.exit(1);\n }\n const { runBlackcat } = await import('./blackcat.js');\n await runBlackcat(rest);\n}\n\nasync function runAuthCommand(rest: string[]) {\n const sub = rest[0];\n if (!sub || sub === 'help' || rest.includes('--help') || rest.includes('-h')) {\n console.log(\n [\n 'Usage: canary auth doctor [--env <env>]',\n '',\n 'Diagnose login, token and corporate-proxy (TLS interception) problems.',\n ].join('\\n')\n );\n return;\n }\n if (sub === 'doctor') {\n const { runAuthDoctor } = await import('./doctor.js');\n await runAuthDoctor(rest.slice(1));\n return;\n }\n console.error('Usage: canary auth doctor [--env <env>]');\n process.exit(1);\n}\n\nexport const COMMAND_DEFINITIONS: readonly CommandDefinition[] = [\n {\n name: 'upgrade',\n run: async (rest) => {\n const { runUpgrade } = await import('./upgrade.js');\n await runUpgrade(rest);\n },\n },\n {\n name: 'test',\n updateCheck: true,\n run: async (rest) => runDeprecatedTest(rest),\n },\n {\n name: 'mcp',\n run: async (rest) => {\n const runMcp = await loadMcp();\n await runMcp(rest);\n },\n },\n {\n name: 'install',\n run: async (rest) => {\n const { runInstall } = await import('./install.js');\n await runInstall(rest);\n },\n },\n {\n name: 'login',\n updateCheck: true,\n run: async (rest) => runLogin(rest),\n },\n {\n name: 'orgs',\n aliases: ['org'],\n updateCheck: true,\n run: async (rest) => runOrgs(rest),\n },\n {\n name: 'record',\n updateCheck: true,\n run: async (rest) => {\n const runRecord = await loadRecord();\n await runRecord(rest);\n },\n },\n {\n name: 'session',\n updateCheck: true,\n run: async (rest) => {\n const runSession = await loadSession();\n await runSession(rest);\n },\n },\n {\n name: 'local',\n updateCheck: true,\n run: async (rest) => {\n const runLocal = await loadLocal();\n await runLocal(rest);\n },\n },\n {\n name: 'debug-session',\n run: async (rest) => runDebugSession(rest),\n },\n {\n name: 'psql',\n run: async (rest) => {\n const { runPsql } = await import('./psql.js');\n await runPsql(rest);\n },\n },\n {\n name: 'redis',\n run: async (rest) => {\n const { runRedis } = await import('./redis.js');\n await runRedis(rest);\n },\n },\n {\n name: 'release',\n updateCheck: true,\n run: async (rest) => {\n const { runRelease } = await import('./release.js');\n await runRelease(rest);\n },\n },\n {\n name: 'perf',\n updateCheck: true,\n run: async (rest) => {\n const { runPerf } = await import('./perf.js');\n await runPerf(rest);\n },\n },\n {\n name: 'eval',\n updateCheck: true,\n run: async (rest) => {\n const { runEvalCommand } = await import('./eval.js');\n await runEvalCommand(rest);\n },\n },\n {\n name: 'mcp-eval',\n updateCheck: true,\n run: async (rest) => {\n const { runMcpEvalCommand } = await import('./mcp-eval.js');\n await runMcpEvalCommand(rest);\n },\n },\n {\n name: 'runbook',\n updateCheck: true,\n run: async (rest) => {\n const { runRunbook } = await import('./runbook.js');\n await runRunbook(rest);\n },\n },\n {\n name: 'monitor',\n updateCheck: true,\n run: async (rest) => {\n const { runMonitor } = await import('./monitor.js');\n await runMonitor(rest);\n },\n },\n {\n name: 'product-map',\n aliases: ['pm'],\n updateCheck: true,\n run: async (rest) => {\n const { runProductMap } = await import('./product-map.js');\n await runProductMap(rest);\n },\n },\n {\n name: 'exploration',\n aliases: ['explore'],\n updateCheck: true,\n run: async (rest) => {\n const { runExploration } = await import('./exploration.js');\n await runExploration(rest);\n },\n },\n {\n name: 'exploratory-test',\n updateCheck: true,\n run: async (rest) => {\n const { runExploratoryTest } = await import('./exploratory-test.js');\n await runExploratoryTest(rest);\n },\n },\n {\n name: 'docs',\n run: async (rest) => {\n const { runDocs } = await import('./docs.js');\n await runDocs(rest);\n },\n },\n {\n name: 'landing',\n run: async (rest) => {\n const { runLanding } = await import('./landing.js');\n await runLanding(rest);\n },\n },\n {\n name: 'feature-flag',\n run: async (rest) => {\n const { runFeatureFlag } = await import('./feature-flag.js');\n await runFeatureFlag(rest);\n },\n },\n {\n name: 'schedule',\n updateCheck: true,\n run: async (rest) => {\n const { runSchedule } = await import('./schedule.js');\n await runSchedule(rest);\n },\n },\n {\n name: 'alert',\n updateCheck: true,\n run: async (rest) => {\n const { runAlert } = await import('./alert.js');\n await runAlert(rest);\n },\n },\n {\n name: 'product',\n run: async (rest) => {\n const { runProduct } = await import('./product.js');\n await runProduct(rest);\n },\n },\n {\n // Not in the global help until the PLG launch PR (self-serve billing spec, D11).\n name: 'usage',\n run: async (rest) => {\n const { runUsage } = await import('./usage.js');\n await runUsage(rest);\n },\n },\n {\n name: 'billing',\n run: async (rest) => {\n const { runBilling } = await import('./billing.js');\n await runBilling(rest);\n },\n },\n {\n name: 'metrics',\n run: async (rest) => {\n const { runMetrics } = await import('./metrics.js');\n await runMetrics(rest);\n },\n },\n {\n name: 'benchmark',\n aliases: ['benchmarks'],\n run: async (rest) => {\n const { runBenchmark } = await import('./benchmark.js');\n await runBenchmark(rest);\n },\n },\n {\n name: 'account',\n run: async (rest) => {\n const { runAccount } = await import('./account.js');\n await runAccount(rest);\n },\n },\n {\n name: 'scenario',\n aliases: ['scenarios'],\n run: async (rest) => {\n const { runScenarios } = await import('./scenarios.js');\n await runScenarios(rest);\n },\n },\n {\n name: 'knobs',\n run: async (rest) => {\n const { runKnobs } = await import('./knobs.js');\n await runKnobs(rest);\n },\n },\n {\n name: 'proofs',\n updateCheck: true,\n run: async (rest) => {\n const { runProofs } = await import('./proofs.js');\n await runProofs(rest);\n },\n },\n {\n name: 'trigger',\n updateCheck: true,\n run: async (rest) => {\n const { runTrigger } = await import('./trigger.js');\n await runTrigger(rest);\n },\n },\n {\n name: 'issues',\n aliases: ['issue'],\n updateCheck: true,\n run: async (rest) => {\n const { runIssues } = await import('./issues.js');\n await runIssues(rest);\n },\n },\n {\n name: 'tickets',\n updateCheck: true,\n run: async (rest) => {\n const { runTickets } = await import('./tickets.js');\n await runTickets(rest);\n },\n },\n {\n name: 'credential',\n updateCheck: true,\n run: async (rest) => {\n const { runCredential } = await import('./credential.js');\n await runCredential(rest);\n },\n },\n {\n name: 'persona',\n aliases: ['personas', 'credential-template', 'credential-templates'],\n run: async (rest) => {\n const { runCredentialTemplate } = await import('./credential-template.js');\n await runCredentialTemplate(rest);\n },\n },\n {\n name: 'workflow',\n updateCheck: true,\n run: async (rest) => {\n const { runWorkflow } = await import('./workflow.js');\n await runWorkflow(rest);\n },\n },\n {\n name: 'flow',\n updateCheck: true,\n run: async (rest) => {\n const { runFlow } = await import('./flow/index.js');\n await runFlow(rest);\n },\n },\n {\n name: 'spec',\n run: async (rest) => runSpec(rest),\n },\n {\n name: 'api-catalog',\n updateCheck: true,\n run: async (rest) => runApiCatalogCommand(rest),\n },\n {\n name: 'skill',\n aliases: ['skills'],\n updateCheck: ['skill', 'skills'],\n run: async (rest) => {\n const { runSkill } = await import('./skill.js');\n await runSkill(rest);\n },\n },\n {\n name: 'digest',\n aliases: ['digests'],\n run: async (rest) => {\n const { runDigest } = await import('./digest.js');\n await runDigest(rest);\n },\n },\n {\n name: 'feedback',\n run: async (rest) => {\n const { runFeedback } = await import('./feedback.js');\n await runFeedback(rest);\n },\n },\n {\n name: 'github',\n run: async (rest) => {\n const { runGithub } = await import('./github.js');\n await runGithub(rest);\n },\n },\n {\n name: 'slack',\n run: async (rest) => {\n const { runSlack } = await import('./slack.js');\n await runSlack(rest);\n },\n },\n {\n name: 'teams',\n run: async (rest) => {\n const { runTeams } = await import('./teams.js');\n await runTeams(rest);\n },\n },\n {\n name: 'prompts',\n aliases: ['prompt'],\n run: async (rest) => {\n const { runPrompts } = await import('./prompts.js');\n await runPrompts(rest);\n },\n },\n {\n name: 'task',\n updateCheck: true,\n run: async (rest) => {\n const { runTask } = await import('./task.js');\n await runTask(rest);\n },\n },\n {\n name: 'test-suite',\n updateCheck: true,\n run: async (rest) => {\n const { runTestSuite } = await import('./test-suite.js');\n await runTestSuite(rest);\n },\n },\n {\n name: 'visual',\n updateCheck: true,\n run: async (rest) => {\n const { runVisual } = await import('./visual.js');\n await runVisual(rest);\n },\n },\n {\n name: 'external-run',\n aliases: ['external-runs'],\n updateCheck: true,\n run: async (rest) => {\n const { runExternalRun } = await import('./external-run.js');\n await runExternalRun(rest);\n },\n },\n {\n name: 'triage',\n run: async (rest) => {\n const { runTriage } = await import('./triage.js');\n await runTriage(rest);\n },\n },\n {\n // \"application\" is the user-facing name; \"property\" stays as a backwards-compat alias.\n name: 'application',\n aliases: ['applications', 'property', 'properties'],\n run: async (rest) => {\n const { runProperty } = await import('./property.js');\n await runProperty(rest);\n },\n },\n {\n name: 'api-key',\n aliases: ['api-keys'],\n updateCheck: true,\n run: async (rest) => {\n const { runApiKey } = await import('./api-key.js');\n await runApiKey(rest);\n },\n },\n {\n name: 'environment',\n aliases: ['env'],\n run: async (rest) => {\n const { runEnvironment } = await import('./environment.js');\n await runEnvironment(rest);\n },\n },\n {\n name: 'sandbox',\n updateCheck: true,\n run: async (rest) => {\n const { runSandbox } = await import('./sandbox.js');\n await runSandbox(rest);\n },\n },\n {\n name: 'dev',\n run: async (rest) => {\n const { runDev } = await import('./dev.js');\n await runDev(rest);\n },\n },\n {\n name: 'attachment',\n aliases: ['attachments'],\n updateCheck: ['attachment', 'attachments'],\n run: async (rest) => {\n const { runAttachment } = await import('./attachment.js');\n await runAttachment(rest);\n },\n },\n {\n name: 'utilities',\n updateCheck: true,\n run: async (rest) => {\n const { runUtilities } = await import('./utilities.js');\n await runUtilities(rest);\n },\n },\n {\n name: 'tag',\n aliases: ['tags'],\n updateCheck: ['tag', 'tags'],\n run: async (rest) => {\n const { runTag } = await import('./tag.js');\n await runTag(rest);\n },\n },\n {\n name: 'trace',\n run: async (rest) => {\n const { runTrace } = await import('./trace.js');\n await runTrace(rest);\n },\n },\n {\n name: 'status',\n run: async (rest, command) => runStatusCommand(rest, command),\n },\n {\n name: 'blackcat',\n run: async (rest, command) => runBlackcatCommand(rest, command),\n },\n {\n name: 'auth',\n run: async (rest) => runAuthCommand(rest),\n },\n];\n\nfunction namesForMetadata(\n definition: CommandDefinition,\n value: CommandMetadataFlag | undefined\n): readonly string[] {\n if (value === true) return [definition.name];\n return value ?? [];\n}\n\nconst commandDefinitionMap = new Map<string, CommandDefinition>();\n\nfor (const definition of COMMAND_DEFINITIONS) {\n commandDefinitionMap.set(definition.name, definition);\n for (const alias of definition.aliases ?? []) {\n commandDefinitionMap.set(alias, definition);\n }\n}\n\n/** Commands that trigger the upgrade-available warning. */\nexport const COMMANDS_WITH_UPDATE_CHECK = new Set(\n COMMAND_DEFINITIONS.flatMap((definition) =>\n Array.from(namesForMetadata(definition, definition.updateCheck))\n )\n);\n\nexport function getCommandDefinition(command: string): CommandDefinition | undefined {\n return commandDefinitionMap.get(command);\n}\n\n/**\n * Print an upgrade nudge if the CLI is behind. Advisory: never throws and is not awaited by `main`.\n * A guide is where stale guidance costs the most, so `guide` runs are nudged whatever the auth source\n * (or none), on every run while behind. Other commands: stored login only, at most once a day.\n */\nexport async function maybeCheckForUpdate(\n command: string,\n isGuide: boolean,\n argv: string[],\n version: string\n) {\n try {\n if (!isGuide) {\n if (!COMMANDS_WITH_UPDATE_CHECK.has(command)) return;\n if ((await resolveAuthSource(argv)) !== 'stored') return;\n }\n\n const { checkForUpdate } = await import('./update-check.js');\n const { installCommandLine } = await import('./upgrade.js');\n await checkForUpdate(version, installCommandLine, isGuide);\n } catch {\n // The nudge is advisory: a failure here must never reach the command the user ran.\n }\n}\n\nexport async function executeCommand(command: string, rest: string[]) {\n const definition = getCommandDefinition(command);\n if (!definition) {\n console.log(`Unknown command \"${command}\".`);\n // Superadmin-only commands are hidden from non-superadmins, so never suggest them.\n const suggestable = [...commandDefinitionMap.keys()].filter(\n (n) => n !== 'status' && n !== 'blackcat'\n );\n const suggestion = suggestCommand(command, suggestable);\n if (suggestion) console.log(`Did you mean \\`${brandCommand} ${suggestion}\\`?`);\n await showGlobalHelp();\n process.exit(1);\n }\n\n await definition.run(rest, command);\n}\n","function editDistance(a: string, b: string): number {\n let prev = Array.from({ length: b.length + 1 }, (_, j) => j);\n for (let i = 1; i <= a.length; i++) {\n const row = [i];\n for (let j = 1; j <= b.length; j++) {\n row[j] = Math.min(prev[j] + 1, row[j - 1] + 1, prev[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));\n }\n prev = row;\n }\n return prev[b.length];\n}\n\n/**\n * The command a mistyped `input` most likely meant: a command it is a prefix of (3+ characters),\n * else the nearest within two edits. Null when nothing is close.\n */\nexport function suggestCommand(input: string, names: readonly string[]): string | null {\n if (input.length >= 3) {\n const prefixed = names.filter((n) => n.startsWith(input)).sort((a, b) => a.length - b.length);\n if (prefixed.length > 0) return prefixed[0];\n }\n let best: { name: string; distance: number } | null = null;\n for (const name of names) {\n const distance = editDistance(input, name);\n if (distance <= 2 && distance < name.length / 2 && (!best || distance < best.distance)) {\n best = { name, distance };\n }\n }\n return best?.name ?? null;\n}\n","/**\n * CLI Debug Session Generator\n *\n * Creates a debug login token for browser-based debugging with Playwright.\n * Requires superadmin authentication.\n *\n * Usage:\n * canary debug-session [--env dev|prod|local] [--api-url <url>]\n *\n * Outputs the login URL that can be used with Playwright to authenticate\n * as the debug agent user for read-only browser access.\n */\n\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { resolveConfig, hasFlag } from \"./auth.js\";\nimport { fetchOrExit } from \"./api-fetch.js\";\nimport { writeRawOutput } from './brand.js';\n\ntype DebugSessionResponse = {\n ok: boolean;\n loginUrl?: string;\n expiresAt?: string;\n error?: string;\n message?: string;\n};\n\nasync function writeDebugSession(loginUrl: string, expiresAt: string, apiUrl: string) {\n const dir = path.join(os.homedir(), \".config\", \"canary-cli\");\n const filePath = path.join(dir, \"debug-session.json\");\n await fs.mkdir(dir, { recursive: true, mode: 0o700 });\n await fs.writeFile(\n filePath,\n JSON.stringify({ loginUrl, expiresAt, apiUrl, createdAt: new Date().toISOString() }, null, 2),\n { encoding: \"utf8\", mode: 0o600 }\n );\n return filePath;\n}\n\nexport async function runDebugSession(argv: string[]): Promise<void> {\n if (hasFlag(argv, \"--help\", \"-h\")) {\n console.log(\n [\n \"Usage: canary debug-session [--env dev|local] [--json]\",\n \"\",\n \"Create a browser debug session (superadmin).\",\n ].join(\"\\n\")\n );\n return;\n }\n const { apiUrl, token } = await resolveConfig(argv);\n const jsonOutput = hasFlag(argv, \"--json\");\n\n try {\n const res = await fetchOrExit(`${apiUrl}/auth/debug-session/create`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n },\n token,\n });\n\n // Handle HTTP errors before parsing JSON\n if (!res.ok) {\n const text = await res.text();\n\n if (res.status === 403) {\n console.error(\"Error: Forbidden. Debug session creation requires superadmin access.\");\n process.exit(1);\n }\n\n if (res.status === 404) {\n console.error(\n \"Error: Endpoint not found. The debug-session feature may not be deployed to this environment.\"\n );\n process.exit(1);\n }\n\n // Try to parse error as JSON, fallback to raw text\n try {\n const errorJson = JSON.parse(text) as { error?: string; message?: string };\n console.error(`Error: ${errorJson.message ?? errorJson.error ?? text}`);\n } catch {\n console.error(`Error (${res.status}): ${text || res.statusText}`);\n }\n process.exit(1);\n }\n\n const json = (await res.json()) as DebugSessionResponse;\n\n if (!json.ok || !json.loginUrl) {\n console.error(`Error: ${json.message ?? json.error ?? \"Failed to create debug session\"}`);\n process.exit(1);\n }\n\n // Save session info\n const filePath = await writeDebugSession(json.loginUrl, json.expiresAt ?? \"\", apiUrl);\n\n if (jsonOutput) {\n writeRawOutput(JSON.stringify(\n {\n loginUrl: json.loginUrl,\n expiresAt: json.expiresAt,\n sessionFile: filePath,\n },\n null,\n 2\n )\n );\n } else {\n console.log(\"Debug session created successfully.\");\n console.log(\"\");\n console.log(`Login URL: ${json.loginUrl}`);\n console.log(`Expires: ${json.expiresAt}`);\n console.log(`Session saved to: ${filePath}`);\n console.log(\"\");\n console.log(\"Use this URL with Playwright to authenticate as the debug agent.\");\n console.log(\"The token is single-use and expires in 5 minutes.\");\n }\n } catch (err) {\n console.error(`Failed to create debug session: ${err}`);\n process.exit(1);\n }\n}\n","import process from 'node:process';\nimport {\n getArgValue,\n hasFlag,\n resolveConfig,\n readAllProfiles,\n findSessionByOrg,\n setDefaultProfile,\n printAmbiguousOrg,\n type StoredAuth,\n} from './auth';\nimport { decodeJwtPayload, isSuperadminToken } from './jwt.js';\nimport { writeRawOutput } from './brand.js';\nimport { apiRequest } from './cli-helpers.js';\n\ntype OrgsResponse = {\n ok: boolean;\n currentOrgId?: string;\n organizations?: Array<{ id: string; name: string; role: string }>;\n error?: string;\n};\n\ntype SuperadminOrgsResponse = {\n ok: boolean;\n organizations?: Array<{ id: string; name: string; memberCount?: number }>;\n error?: string;\n};\n\ntype OrgMembersResponse = {\n ok: boolean;\n error?: string;\n items?: Array<{\n userId: string;\n displayName: string | null;\n primaryEmail: string | null;\n role: string;\n isActive: boolean;\n slackLinked: boolean;\n }>;\n};\n\n/**\n * `cofactor org members` — list members of the current org, annotated with\n * whether each has linked their Slack user. Powers recipient lookup for the\n * `utilities email` / `utilities slack` commands.\n */\nasync function runOrgMembers(argv: string[]) {\n const { apiUrl, token } = await resolveConfig(argv);\n const res = await fetch(`${apiUrl}/org/members`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n if (!res.ok) {\n console.error('Failed to fetch members. You may need to re-login: cofactor login');\n process.exit(1);\n }\n const data = (await res.json()) as OrgMembersResponse;\n if (!data.ok || !data.items) {\n console.error('Failed to fetch members:', data.error ?? 'Unknown error');\n process.exit(1);\n }\n\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify(data.items, null, 2));\n return;\n }\n\n if (data.items.length === 0) {\n console.log('No members.');\n return;\n }\n console.log('Members (✓ = Slack-linked, can receive utilities slack DMs):\\n');\n for (const m of data.items) {\n const slack = m.slackLinked ? '✓' : ' ';\n const name = m.displayName ?? '(no name)';\n const email = m.primaryEmail ?? '(no email)';\n console.log(` ${slack} ${name} <${email}> [${m.role}]`);\n }\n}\n\n/** Short \"in ~N days\" / \"expired\" rendering of a JWT `exp` (seconds). */\nfunction fmtExpShort(expSec: number | undefined): string {\n if (!expSec) return '';\n const deltaSec = expSec - Math.floor(Date.now() / 1000);\n if (deltaSec < 0) return 'expired';\n const days = Math.round(deltaSec / 86400);\n return days >= 1 ? `~${days}d left` : '<1d left';\n}\n\n/**\n * `cofactor org use <name|id>` — point the persistent default at one of your\n * logged-in sessions, so bare (no `--org`) commands act as that org.\n */\n/** Value-taking global flags — used to skip a flag's value when scanning for a\n * positional argument (so `org use --env dev acme` picks `acme`, not `dev`). */\nconst VALUE_FLAGS = new Set(['--env', '--api-url', '--token', '--org']);\n\n/** First positional token, skipping flags, their values, and any `skip` words. */\nfunction firstPositional(argv: string[], skip: Set<string>): string | undefined {\n for (let i = 0; i < argv.length; i++) {\n const a = argv[i];\n if (a.startsWith('-')) continue;\n if (i > 0 && VALUE_FLAGS.has(argv[i - 1])) continue; // this token is a flag value\n if (skip.has(a)) continue;\n return a;\n }\n return undefined;\n}\n\nasync function runOrgUse(argv: string[]) {\n const selector = firstPositional(argv, new Set(['use']));\n if (!selector) {\n console.error('Usage: canary org use <name|id>');\n process.exit(1);\n }\n const env = getArgValue(argv, '--env');\n const match = await findSessionByOrg(selector, env);\n if (match.kind === 'none') {\n console.error(`No logged-in session for org \"${selector}\".`);\n console.error(`Add one with: canary login --org \"${selector}\"`);\n process.exit(1);\n }\n if (match.kind === 'ambiguous') {\n printAmbiguousOrg(selector, match.candidates);\n process.exit(1);\n }\n await setDefaultProfile(match.key);\n const envLabel = match.auth.envLabel ? ` [${match.auth.envLabel}]` : '';\n console.log(`Active org set to ${match.auth.orgName ?? match.auth.orgId}${envLabel}.`);\n console.log('Bare commands (no --org) will now act as this org.');\n}\n\nfunction printOrgsHelp(): void {\n console.log(\n [\n 'canary orgs: Your organizations and their members (alias: canary org)',\n '',\n 'Sub-commands:',\n ' (none) [--all] List your organizations and logged-in sessions',\n ' (--all: every organization, superadmin)',\n ' use <name|id> Set the active org for bare commands',\n ' members [--json] List members of the current org',\n ' invite <email> [--role member|admin] Invite a teammate by email (admin; default role: member)',\n ' invites [--json] List pending invitations',\n ' create --name <name> [--owner-email <email>]',\n ' Create an organization and invite its owner as admin',\n ' (superadmin; you become its first admin)',\n ' settings get Read organization settings',\n ' settings set max-parallel-external-tests <n>',\n ' Set organization-wide external-test concurrency',\n '',\n 'An invite link lets whoever holds it join the org: share it only with the invitee,',\n 'and keep `invite --json` / `create --json` output (which carries it) out of logs.',\n ].join('\\n')\n );\n}\n\ntype CreateInviteResponse = {\n ok: boolean;\n error?: string;\n invitation?: { id: string; token: string; expiresAt: string };\n inviteUrl?: string;\n emailSent?: boolean;\n};\ntype CreatedInvite = {\n invitation: { id: string; token: string; expiresAt: string };\n /** Absent from an API older than this CLI; the invitation still exists. */\n inviteUrl?: string;\n emailSent?: boolean;\n};\n\n/**\n * `cofactor org invite <email> [--role member|admin]`: the Settings → Members\n * invite, over the same `/org/invites` route. The invitee gets an email; the\n * link is printed too, for when the email does not arrive.\n */\nexport async function runOrgInvite(argv: string[], apiUrl: string, token: string) {\n const email = orgPositionals(argv)[1];\n if (!email) {\n console.error('Usage: canary org invite <email> [--role member|admin]');\n process.exit(1);\n }\n const role = getArgValue(argv, '--role') ?? 'member';\n if (role !== 'member' && role !== 'admin') {\n console.error(`--role must be member or admin (got \"${role}\").`);\n process.exit(1);\n }\n const data = await createInvite(apiUrl, token, email, role);\n if (typeof data === 'string') {\n console.error(`Failed to create the invitation: ${data}`);\n process.exit(1);\n }\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify(data, null, 2));\n return;\n }\n printInvite(data, email, role);\n}\n\n/** POST /org/invites as the org `token` belongs to; the error message on failure. */\nasync function createInvite(\n apiUrl: string,\n token: string,\n email: string,\n role: 'member' | 'admin'\n): Promise<CreatedInvite | string> {\n const data = await apiRequest<CreateInviteResponse>(apiUrl, token, 'POST', '/org/invites', {\n email,\n role,\n });\n if (!data.ok || !data.invitation) return data.error ?? 'Unknown error';\n return { invitation: data.invitation, inviteUrl: data.inviteUrl, emailSent: data.emailSent };\n}\n\n/** The link is a bearer credential for joining the org: share it only with the invitee. */\nfunction printInvite(data: CreatedInvite, email: string, role: string) {\n writeRawOutput(\n data.emailSent\n ? `Invited ${email} as ${role}; the invitation email is on its way.`\n : `Invited ${email} as ${role}, but the email did not send. Share the link with them yourself.`\n );\n if (data.inviteUrl) writeRawOutput(` link: ${data.inviteUrl}`);\n console.log(` expires: ${data.invitation.expiresAt}`);\n}\n\n/**\n * `cofactor org create --name <n> [--owner-email <email>]` (superadmin): create\n * an organization for someone else and invite its owner as admin. Uses the\n * existing routes: POST /organizations (the caller becomes its first admin),\n * a CLI token for the new org (POST /cli-login/switch-org, not stored), and\n * POST /org/invites as that org.\n */\nasync function runOrgCreate(argv: string[]) {\n const name = getArgValue(argv, '--name');\n if (!name) {\n console.error('Usage: canary org create --name <name> [--owner-email <email>]');\n process.exit(1);\n }\n const ownerEmail = getArgValue(argv, '--owner-email');\n const { apiUrl, token } = await resolveConfig(argv);\n if (!isSuperadminToken(token)) {\n // A convenience gate, not authorization: POST /organizations is the same\n // route sign-up uses. The creator stays an admin member of the new org.\n console.error('canary org create is for superadmins. Sign-up creates an organization for everyone else.');\n process.exit(1);\n }\n\n const created = await apiRequest<{ ok: boolean; id?: string; error?: string }>(\n apiUrl,\n token,\n 'POST',\n '/organizations',\n { name }\n );\n if (!created.ok || !created.id) {\n console.error(`Failed to create the organization: ${created.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n const orgId = created.id;\n\n let invite: CreatedInvite | null = null;\n if (ownerEmail) {\n const retry = `canary login --org ${orgId} && canary org invite ${ownerEmail} --role admin --org ${orgId}`;\n // A token for the new org, held in memory for this one request and never stored.\n const switched = await apiRequest<{ ok: boolean; accessToken?: string; error?: string }>(\n apiUrl,\n token,\n 'POST',\n '/cli-login/switch-org',\n { orgId }\n );\n if (!switched.ok || !switched.accessToken) {\n console.error(\n `Created organization ${orgId}, but could not act as it to invite the owner: ${switched.error ?? 'Unknown error'}`\n );\n console.error(`Invite them with: ${retry}`);\n process.exit(1);\n }\n const ownerInvite = await createInvite(apiUrl, switched.accessToken, ownerEmail, 'admin');\n if (typeof ownerInvite === 'string') {\n console.error(`Created organization ${orgId}, but inviting ${ownerEmail} failed: ${ownerInvite}`);\n console.error(`Do not run org create again; invite them with: ${retry}`);\n process.exit(1);\n }\n invite = ownerInvite;\n }\n\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify({ ok: true, id: orgId, name, invite }, null, 2));\n return;\n }\n writeRawOutput(`Created organization \"${name}\" (${orgId}). You are its admin.`);\n if (invite && ownerEmail) printInvite(invite, ownerEmail, 'admin');\n console.log(`Act in it: canary login --org ${orgId}`);\n}\n\ntype PendingInvitesResponse = {\n ok: boolean;\n error?: string;\n items?: Array<{\n id: string;\n email: string | null;\n role: string;\n createdAt: string;\n expiresAt: string;\n inviterDisplayName?: string | null;\n inviterPrimaryEmail?: string | null;\n }>;\n};\n\nasync function runOrgInvites(argv: string[]) {\n const { apiUrl, token } = await resolveConfig(argv);\n const data = await apiRequest<PendingInvitesResponse>(apiUrl, token, 'GET', '/org/invites/pending');\n if (!data.ok || !data.items) {\n console.error(`Failed to list invitations: ${data.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n if (hasFlag(argv, '--json')) {\n writeRawOutput(JSON.stringify(data.items, null, 2));\n return;\n }\n if (data.items.length === 0) {\n console.log('No pending invitations.');\n return;\n }\n console.log('Pending invitations:\\n');\n for (const i of data.items) {\n const by = i.inviterDisplayName ?? i.inviterPrimaryEmail ?? 'unknown';\n writeRawOutput(` ${i.email ?? '(link only)'} [${i.role}] by ${by} expires ${i.expiresAt}`);\n }\n}\n\nexport async function runOrgs(argv: string[]) {\n // Sub-commands: `orgs members`, `org use <name|id>`, invitations, and org settings.\n if (hasFlag(argv, '--help', '-h') || orgPositionals(argv)[0] === 'help') {\n printOrgsHelp();\n return;\n }\n const sub = orgPositionals(argv)[0];\n if (sub === 'invite') {\n const { apiUrl, token } = await resolveConfig(argv);\n return runOrgInvite(argv, apiUrl, token);\n }\n if (sub === 'invites') {\n return runOrgInvites(argv);\n }\n if (sub === 'create') {\n return runOrgCreate(argv);\n }\n if (sub === 'members') {\n return runOrgMembers(argv.filter((a) => a !== 'members'));\n }\n if (sub === 'use') {\n return runOrgUse(argv);\n }\n if (sub === 'settings') {\n return runOrgSettings(argv.filter((a) => a !== 'settings'));\n }\n\n const { apiUrl, token } = await resolveConfig(argv);\n // The \"* = active\" marker reflects the org we actually resolved for this\n // invocation (honors --org / --env / default), read straight off the token.\n const resolvedOrgId = (() => {\n const payload = decodeJwtPayload(token);\n return typeof payload?.org_id === 'string' ? payload.org_id : undefined;\n })();\n const showAll = hasFlag(argv, '--all');\n\n if (showAll) {\n // Superadmin: list all organizations\n const res = await fetch(`${apiUrl}/superadmin/organizations`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!res.ok) {\n if (res.status === 403) {\n console.error('Superadmin access required for --all');\n } else {\n console.error('Failed to fetch organizations. You may need to re-login: canary login');\n }\n process.exit(1);\n }\n\n const data = (await res.json()) as SuperadminOrgsResponse;\n if (!data.ok || !data.organizations) {\n console.error('Failed to fetch organizations:', data.error ?? 'Unknown error');\n process.exit(1);\n }\n\n console.log('All Organizations:\\n');\n for (const org of data.organizations) {\n const members = org.memberCount !== undefined && org.memberCount !== null ? ` (${org.memberCount} members)` : '';\n console.log(` ${org.name}${members} [${org.id}]`);\n }\n\n console.log(`\\nTotal: ${data.organizations.length} organizations`);\n return;\n }\n\n const res = await fetch(`${apiUrl}/cli-login/orgs`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (!res.ok) {\n console.error('Failed to fetch organizations. You may need to re-login: canary login');\n process.exit(1);\n }\n\n const data = (await res.json()) as OrgsResponse;\n if (!data.ok || !data.organizations) {\n console.error('Failed to fetch organizations:', data.error ?? 'Unknown error');\n process.exit(1);\n }\n\n const currentOrgId = resolvedOrgId ?? data.currentOrgId;\n\n // Map orgId → stored session (env-mirror + org-keyed profiles share an orgId;\n // keep the first — they hold the same token).\n const { profiles } = await readAllProfiles();\n const sessionByOrg = new Map<string, StoredAuth>();\n for (const { auth: a } of profiles) {\n if (a.orgId && !sessionByOrg.has(a.orgId)) sessionByOrg.set(a.orgId, a);\n }\n\n console.log('Organizations:\\n');\n for (const org of data.organizations) {\n const marker = org.id === currentOrgId ? ' *' : '';\n const session = sessionByOrg.get(org.id);\n let sessionInfo: string;\n if (session?.token) {\n const payload = decodeJwtPayload(session.token);\n const exp = typeof payload?.exp === 'number' ? payload.exp : undefined;\n const parts = [session.envLabel, fmtExpShort(exp)].filter(Boolean);\n sessionInfo = ` — logged in${parts.length ? ` (${parts.join(', ')})` : ''}`;\n } else {\n sessionInfo = ' — no local session';\n }\n console.log(` ${org.name} (${org.role}) [${org.id}]${marker}${sessionInfo}`);\n }\n\n console.log('\\n* = active org (used when no --org is given)');\n console.log('Run one command as an org: canary <command> --org <name>');\n console.log('Switch the active org: canary org use <name>');\n console.log('Add / refresh a session: canary login --org <name>');\n}\n\nasync function runOrgSettings(argv: string[]) {\n const positional = orgPositionals(argv);\n const [operation, key, rawValue] = positional;\n if (!operation || operation === 'get') {\n const { apiUrl, token } = await resolveConfig(argv);\n const response = await fetch(`${apiUrl}/org/settings`, { headers: { Authorization: `Bearer ${token}` } });\n const body = (await response.json()) as { ok: boolean; data?: { maxParallelExternalTests?: unknown }; error?: string };\n if (!response.ok || !body.ok || !body.data || typeof body.data.maxParallelExternalTests !== 'number') {\n console.error(`Failed to fetch organization settings: ${body.error ?? response.statusText}`);\n process.exit(1);\n }\n if (hasFlag(argv, '--json')) writeRawOutput(JSON.stringify(body.data, null, 2));\n else console.log(`maxParallelExternalTests: ${body.data.maxParallelExternalTests}`);\n return;\n }\n if (operation !== 'set' || key !== 'max-parallel-external-tests' || !rawValue || !/^\\d+$/.test(rawValue)) {\n console.error('Usage: cofactor org settings get | set max-parallel-external-tests <positive integer>');\n process.exit(1);\n }\n const value = Number(rawValue);\n if (!Number.isSafeInteger(value) || value < 1 || value > 1000) {\n console.error('max-parallel-external-tests must be an integer from 1 to 1000.');\n process.exit(1);\n }\n const { apiUrl, token } = await resolveConfig(argv);\n const response = await fetch(`${apiUrl}/org/settings`, {\n method: 'PUT',\n headers: { Authorization: `Bearer ${token}`, 'content-type': 'application/json' },\n body: JSON.stringify({ maxParallelExternalTests: value }),\n });\n const body = (await response.json()) as { ok: boolean; data?: { maxParallelExternalTests?: unknown }; error?: string };\n if (!response.ok || !body.ok || !body.data || typeof body.data.maxParallelExternalTests !== 'number') {\n console.error(`Failed to update organization settings: ${body.error ?? response.statusText}`);\n process.exit(1);\n }\n console.log(`maxParallelExternalTests set to ${body.data.maxParallelExternalTests}.`);\n}\n\nfunction orgPositionals(argv: string[]): string[] {\n const positional: string[] = [];\n const valueOptions = new Set([\n '--env',\n '--org',\n '--token',\n '--api-url',\n '--profile',\n '--role',\n '--name',\n '--owner-email',\n ]);\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index]!;\n if (valueOptions.has(arg)) { index += 1; continue; }\n if (arg.startsWith('--')) continue;\n positional.push(arg);\n }\n return positional;\n}\n","import process from 'node:process';\nimport { command, shouldBrandConsoleOutput } from './brand.js';\nimport { installCommandLine } from './upgrade.js';\n\n/**\n * The legacy `canary` binary is renamed `cofactor`. Any `canary` invocation prints one line\n * to stderr, then runs normally. Machine output (`mcp`, `--json`, `--format`) gets nothing,\n * so a caller merging stderr into a parser still sees clean output.\n */\nexport function printRenameNoticeIfLegacy(argv: string[]): void {\n if (command !== 'canary' || !shouldBrandConsoleOutput(argv)) return;\n process.stderr.write(\n `The \"canary\" CLI has been renamed to \"cofactor\". Install it with: ${installCommandLine()}\\n`,\n );\n}\n"],"mappings":"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","names":["process","process","process","process","apiUrl","token","res","data","response","body","process","resolveConfig","command","runStatus","runBlackcat","version","installCommandLine","process","process","command","process"]}
@@ -10,15 +10,15 @@ import {
10
10
  promptInput,
11
11
  selectProperty,
12
12
  uploadStorageState
13
- } from "./chunk-72Y65NWI.js";
13
+ } from "./chunk-WY4R4IL5.js";
14
14
  import "./chunk-W7CFLOEI.js";
15
15
  import "./chunk-S3Q7MDCS.js";
16
16
  import {
17
17
  getArgValue,
18
18
  resolveConfig
19
- } from "./chunk-IIDQM4MY.js";
20
- import "./chunk-T6ZNIMI4.js";
21
- import "./chunk-EYHJ5FIA.js";
19
+ } from "./chunk-BMFD4OPC.js";
20
+ import "./chunk-LRIP5IQD.js";
21
+ import "./chunk-C6SNLHVE.js";
22
22
  import "./chunk-TOWZAG3I.js";
23
23
 
24
24
  // src/local/init.ts
@@ -206,4 +206,4 @@ async function handleManualLogin(config, propertyId, environmentId, localUrl) {
206
206
  export {
207
207
  runLocalInit
208
208
  };
209
- //# sourceMappingURL=init-ADOE2D6R.js.map
209
+ //# sourceMappingURL=init-5A7VDZU4.js.map
@@ -1,16 +1,16 @@
1
1
  import { createRequire as __cr } from "module"; import { fileURLToPath as __fup } from "url"; import { dirname as __dn } from "path"; const require = __cr(import.meta.url); const __filename = __fup(import.meta.url); const __dirname = __dn(__filename);
2
2
  import {
3
3
  promptChoice
4
- } from "./chunk-72Y65NWI.js";
4
+ } from "./chunk-WY4R4IL5.js";
5
5
  import "./chunk-S3Q7MDCS.js";
6
6
  import {
7
7
  getArgValue,
8
8
  hasFlag
9
- } from "./chunk-IIDQM4MY.js";
9
+ } from "./chunk-BMFD4OPC.js";
10
10
  import {
11
11
  command
12
- } from "./chunk-T6ZNIMI4.js";
13
- import "./chunk-EYHJ5FIA.js";
12
+ } from "./chunk-LRIP5IQD.js";
13
+ import "./chunk-C6SNLHVE.js";
14
14
  import "./chunk-TOWZAG3I.js";
15
15
 
16
16
  // src/install.ts
@@ -291,4 +291,4 @@ Installed Canary MCP server to ${configPath}`);
291
291
  export {
292
292
  runInstall
293
293
  };
294
- //# sourceMappingURL=install-SB6NLXDQ.js.map
294
+ //# sourceMappingURL=install-HM3USHVU.js.map
@@ -5,10 +5,10 @@ import {
5
5
  resolveTagNames,
6
6
  splitCsv,
7
7
  updateEntityTags
8
- } from "./chunk-YILSW5ZY.js";
8
+ } from "./chunk-MCJOF3JX.js";
9
9
  import {
10
10
  printServedGuide
11
- } from "./chunk-YV4RASGX.js";
11
+ } from "./chunk-W43YGZOP.js";
12
12
  import {
13
13
  MEDIA_FIELDS,
14
14
  MEDIA_NAMES,
@@ -21,7 +21,7 @@ import {
21
21
  toCommentsView,
22
22
  uploadEvidenceImage,
23
23
  writableKind
24
- } from "./chunk-FBEQNW2P.js";
24
+ } from "./chunk-DFN2NH37.js";
25
25
  import "./chunk-DEK6B6LX.js";
26
26
  import {
27
27
  apiRequest,
@@ -29,19 +29,19 @@ import {
29
29
  getArgValues,
30
30
  getScalarArgValue,
31
31
  readTextOrFile
32
- } from "./chunk-72Y65NWI.js";
32
+ } from "./chunk-WY4R4IL5.js";
33
33
  import "./chunk-S3Q7MDCS.js";
34
34
  import {
35
35
  getArgValue,
36
36
  hasFlag,
37
37
  resolveConfig,
38
38
  resolveOrgAppUrl
39
- } from "./chunk-IIDQM4MY.js";
39
+ } from "./chunk-BMFD4OPC.js";
40
40
  import {
41
41
  stripTerminalControls,
42
42
  writeRawOutput
43
- } from "./chunk-T6ZNIMI4.js";
44
- import "./chunk-EYHJ5FIA.js";
43
+ } from "./chunk-LRIP5IQD.js";
44
+ import "./chunk-C6SNLHVE.js";
45
45
  import "./chunk-TOWZAG3I.js";
46
46
 
47
47
  // src/issues.ts
@@ -1538,4 +1538,4 @@ export {
1538
1538
  consumeIntendedBehaviorStream,
1539
1539
  runIssues
1540
1540
  };
1541
- //# sourceMappingURL=issues-V2DSZXAN.js.map
1541
+ //# sourceMappingURL=issues-W6WIQ4RX.js.map
@@ -5,17 +5,17 @@ import {
5
5
  fetchList,
6
6
  parseLifecycleStage,
7
7
  toLifecycleLabel
8
- } from "./chunk-72Y65NWI.js";
8
+ } from "./chunk-WY4R4IL5.js";
9
9
  import "./chunk-S3Q7MDCS.js";
10
10
  import {
11
11
  getArgValue,
12
12
  hasFlag,
13
13
  resolveConfig
14
- } from "./chunk-IIDQM4MY.js";
14
+ } from "./chunk-BMFD4OPC.js";
15
15
  import {
16
16
  writeRawOutput
17
- } from "./chunk-T6ZNIMI4.js";
18
- import "./chunk-EYHJ5FIA.js";
17
+ } from "./chunk-LRIP5IQD.js";
18
+ import "./chunk-C6SNLHVE.js";
19
19
  import "./chunk-TOWZAG3I.js";
20
20
 
21
21
  // src/knobs.ts
@@ -295,4 +295,4 @@ async function runKnobs(argv) {
295
295
  export {
296
296
  runKnobs
297
297
  };
298
- //# sourceMappingURL=knobs-MR4H55EB.js.map
298
+ //# sourceMappingURL=knobs-NR52HEAL.js.map
@@ -6,13 +6,13 @@ import {
6
6
  parseSinceFlag,
7
7
  renderStatsTable,
8
8
  runLanding
9
- } from "./chunk-6IMNRYC3.js";
10
- import "./chunk-DTB5HUD2.js";
11
- import "./chunk-72Y65NWI.js";
9
+ } from "./chunk-GQSW6ZY3.js";
10
+ import "./chunk-SPTLZJOF.js";
11
+ import "./chunk-WY4R4IL5.js";
12
12
  import "./chunk-S3Q7MDCS.js";
13
- import "./chunk-IIDQM4MY.js";
14
- import "./chunk-T6ZNIMI4.js";
15
- import "./chunk-EYHJ5FIA.js";
13
+ import "./chunk-BMFD4OPC.js";
14
+ import "./chunk-LRIP5IQD.js";
15
+ import "./chunk-C6SNLHVE.js";
16
16
  import "./chunk-TOWZAG3I.js";
17
17
  export {
18
18
  buildLandingUrl,
@@ -22,4 +22,4 @@ export {
22
22
  renderStatsTable,
23
23
  runLanding
24
24
  };
25
- //# sourceMappingURL=landing-KTYDL7QJ.js.map
25
+ //# sourceMappingURL=landing-FHE7RWCR.js.map
@@ -2,13 +2,13 @@ import { createRequire as __cr } from "module"; import { fileURLToPath as __fup
2
2
  import {
3
3
  fetchList,
4
4
  fetchProperties
5
- } from "./chunk-72Y65NWI.js";
5
+ } from "./chunk-WY4R4IL5.js";
6
6
  import "./chunk-S3Q7MDCS.js";
7
7
  import {
8
8
  resolveConfig
9
- } from "./chunk-IIDQM4MY.js";
10
- import "./chunk-T6ZNIMI4.js";
11
- import "./chunk-EYHJ5FIA.js";
9
+ } from "./chunk-BMFD4OPC.js";
10
+ import "./chunk-LRIP5IQD.js";
11
+ import "./chunk-C6SNLHVE.js";
12
12
  import "./chunk-TOWZAG3I.js";
13
13
 
14
14
  // src/local/list.ts
@@ -56,4 +56,4 @@ async function runLocalList(argv) {
56
56
  export {
57
57
  runLocalList
58
58
  };
59
- //# sourceMappingURL=list-DFBHWU77.js.map
59
+ //# sourceMappingURL=list-6J6BCU2L.js.map