@runcofactor/cli 0.52.0 → 0.53.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.
- package/README.md +2 -0
- package/dist/{account-3ZG24MOE.js → account-MRZ54P5P.js} +5 -5
- package/dist/{alert-5G7PTAX2.js → alert-XBHELHEI.js} +8 -8
- package/dist/{api-catalog-IBYAFKKQ.js → api-catalog-GWYRX53L.js} +5 -5
- package/dist/{api-key-UXC44BDR.js → api-key-FH6JN447.js} +5 -5
- package/dist/{attachment-T6IRFQW3.js → attachment-J7GRVT5F.js} +5 -5
- package/dist/{auth-SHOCJE6Z.js → auth-VZZQXRDR.js} +3 -3
- package/dist/{benchmark-NJ2U6VTC.js → benchmark-A3SNDARF.js} +5 -5
- package/dist/{blackcat-RQJVFGXQ.js → blackcat-UM6TBQBN.js} +3 -3
- package/dist/{chunk-DHAGRM2F.js → chunk-33U56YGD.js} +14 -5
- package/dist/{chunk-DHAGRM2F.js.map → chunk-33U56YGD.js.map} +1 -1
- package/dist/{chunk-M752EUK3.js → chunk-3JU4UYYN.js} +5 -5
- package/dist/{chunk-G6BCST3G.js → chunk-3ZOUNCA5.js} +7 -7
- package/dist/{chunk-76Z6E7XX.js → chunk-4UZN6TVT.js} +74 -131
- package/dist/chunk-4UZN6TVT.js.map +1 -0
- package/dist/{chunk-ABT3BLRC.js → chunk-5TKXHS3X.js} +3 -3
- package/dist/{chunk-QCYSONXI.js → chunk-CRYHWO4M.js} +2 -2
- package/dist/{chunk-QTYUM4ZB.js → chunk-EJ3ZPH5U.js} +23 -187
- package/dist/chunk-EJ3ZPH5U.js.map +1 -0
- package/dist/{chunk-I5RHTCPY.js → chunk-EL6KJ4PO.js} +4 -4
- package/dist/{chunk-ZL4O6C42.js → chunk-HXBK3AGD.js} +2 -2
- package/dist/{chunk-PRERH4DN.js → chunk-I2SOHQ2C.js} +3 -3
- package/dist/{chunk-CYSPCGO6.js → chunk-JEHHEMUL.js} +5 -5
- package/dist/{chunk-LIEADTEF.js → chunk-LJFVRJCA.js} +2 -2
- package/dist/{chunk-UEJ2HTKU.js → chunk-MJVUMVLO.js} +19 -1
- package/dist/chunk-MJVUMVLO.js.map +1 -0
- package/dist/chunk-N55RKCGR.js +24 -0
- package/dist/chunk-N55RKCGR.js.map +1 -0
- package/dist/{chunk-PHNH3CEU.js → chunk-O4Z44BR7.js} +5 -5
- package/dist/{chunk-QA37WVF6.js → chunk-OQFCZERZ.js} +6 -6
- package/dist/{chunk-EUVB6Y3C.js → chunk-P7L5KELH.js} +8 -8
- package/dist/chunk-P7L5KELH.js.map +1 -0
- package/dist/{chunk-Z3MDQSZG.js → chunk-PJFFGQSB.js} +2 -2
- package/dist/{chunk-IY3ZK46I.js → chunk-QOVJUSSL.js} +2 -2
- package/dist/{chunk-RPJMQBB5.js → chunk-QXU4G4YN.js} +3 -3
- package/dist/{chunk-SZSTJIYU.js → chunk-RRSUKARV.js} +4 -4
- package/dist/{chunk-775FI436.js → chunk-RVD6J6IZ.js} +2 -2
- package/dist/{chunk-5UUIBY6E.js → chunk-TAVBFLCR.js} +3 -3
- package/dist/{chunk-ROX7N3RK.js → chunk-V7HB5LAU.js} +10 -7
- package/dist/chunk-V7HB5LAU.js.map +1 -0
- package/dist/{chunk-LL6TSQWV.js → chunk-VKZOHJCE.js} +3 -3
- package/dist/chunk-VKZOHJCE.js.map +1 -0
- package/dist/{chunk-3HI6QC4V.js → chunk-WRBU6TX7.js} +2 -2
- package/dist/{proofs-TXJGAP5F.js → chunk-X7SUSIY3.js} +118 -20
- package/dist/chunk-X7SUSIY3.js.map +1 -0
- package/dist/{chunk-BF3IPGMP.js → chunk-XSSZMG65.js} +4 -4
- package/dist/{credential-TWSWV64F.js → credential-4RFRU6OH.js} +5 -5
- package/dist/{credential-template-XO5D5AI3.js → credential-template-36PFUTBN.js} +5 -5
- package/dist/{digest-SLEFOLPV.js → digest-THMKFMP7.js} +8 -8
- package/dist/{docs-IDC4V4WQ.js → docs-ZGM53L67.js} +5 -5
- package/dist/{doctor-SDAYEA6C.js → doctor-Z2XBGBM3.js} +3 -3
- package/dist/{environment-VBUIBQ6O.js → environment-5YVZXBN7.js} +7 -7
- package/dist/eval-SO5TPD37.js +1177 -0
- package/dist/eval-SO5TPD37.js.map +1 -0
- package/dist/{exploration-IREIR5PO.js → exploration-GZ4WUJJH.js} +5 -5
- package/dist/{exploratory-test-4Q7BMEFT.js → exploratory-test-Y7P4ZDLD.js} +5 -5
- package/dist/{external-run-S7LULKPT.js → external-run-IJGGZOGI.js} +7 -7
- package/dist/{feature-flag-IASHTUGU.js → feature-flag-UH6Z7774.js} +5 -5
- package/dist/{flow-IBEZFZTU.js → flow-MRWAQYZZ.js} +5 -5
- package/dist/{github-HAEZRULP.js → github-VDJU3PU3.js} +6 -6
- package/dist/index.js +101 -82
- package/dist/index.js.map +1 -1
- package/dist/{init-LT2TZMQY.js → init-CROSTPA6.js} +5 -5
- package/dist/{install-RTEYH6TK.js → install-ECR7OLAY.js} +5 -5
- package/dist/{issues-5GE277R2.js → issues-K5TL2S4Z.js} +7 -7
- package/dist/{knobs-AMIWGYUZ.js → knobs-OKQFBQLK.js} +5 -5
- package/dist/{landing-3VLVVQL5.js → landing-XANIBPVM.js} +7 -7
- package/dist/{list-GDJR6UY6.js → list-64GX47Q4.js} +5 -5
- package/dist/{local-4R6GVW7U.js → local-QMQY2ZUX.js} +7 -7
- package/dist/{login-IXVAWTLO.js → login-I7UQ3GTM.js} +5 -5
- package/dist/{mcp-BM2MJWX4.js → mcp-XZV63DX5.js} +11 -11
- package/dist/{mcp-BM2MJWX4.js.map → mcp-XZV63DX5.js.map} +1 -1
- package/dist/{metrics-SSIP5CEB.js → metrics-KBTQ3KGZ.js} +5 -5
- package/dist/{monitor-ESZYHXT2.js → monitor-UGWY43IU.js} +5 -5
- package/dist/perf-CCHWHCSR.js +961 -0
- package/dist/perf-CCHWHCSR.js.map +1 -0
- package/dist/{product-VCGUV5TH.js → product-KLG2ZTHC.js} +5 -5
- package/dist/{product-map-AXKZNQDM.js → product-map-AMEZ76EQ.js} +5 -5
- package/dist/{prompts-FVPSON2N.js → prompts-ZVQNGL7X.js} +5 -5
- package/dist/proofs-QCNSQAPX.js +20 -0
- package/dist/{property-XEPCC7KQ.js → property-PJDQFHAL.js} +6 -6
- package/dist/{psql-JKF3OYYJ.js → psql-AURAN27C.js} +5 -5
- package/dist/{record-REQ37S54.js → record-SYWBTUOB.js} +6 -6
- package/dist/{redis-WGHT2GJB.js → redis-2H752SKO.js} +5 -5
- package/dist/{release-SNDIVIA6.js → release-OSIYUXSC.js} +5 -5
- package/dist/{runbook-XFJG2LFC.js → runbook-7LVHF6KV.js} +5 -5
- package/dist/{sandbox-DYCKLCMY.js → sandbox-TJQPMRGS.js} +18 -30
- package/dist/sandbox-TJQPMRGS.js.map +1 -0
- package/dist/{scenarios-PVHCKP55.js → scenarios-P2ABU4HK.js} +5 -5
- package/dist/{schedule-DGC7CX23.js → schedule-XLS56NP5.js} +8 -8
- package/dist/{session-ERGUFDDI.js → session-ACSFC3UB.js} +8 -8
- package/dist/{skill-6QO2E3TB.js → skill-F7I5P6AI.js} +43 -28
- package/dist/{skill-6QO2E3TB.js.map → skill-F7I5P6AI.js.map} +1 -1
- package/dist/{slack-WE7THLLH.js → slack-ZEK4GRND.js} +6 -6
- package/dist/{spec-SEOY7N3L.js → spec-XPIRRSV6.js} +5 -5
- package/dist/{src-CCK3TKBX.js → src-N7ZCYCXU.js} +4 -4
- package/dist/{src-AEWV5HYH.js → src-XSBBMVGW.js} +3 -3
- package/dist/{start-EPGLHTND.js → start-DKWLOQI6.js} +5 -5
- package/dist/{status-DTE2GXM2.js → status-K7KH5DI3.js} +5 -5
- package/dist/{tag-GIFEWGBL.js → tag-2Y3OMQQC.js} +6 -6
- package/dist/{task-VLJCHSFB.js → task-4PIOC4QV.js} +6 -6
- package/dist/{teams-J2OOJBL4.js → teams-KUM56BE2.js} +83 -47
- package/dist/teams-KUM56BE2.js.map +1 -0
- package/dist/{test-suite-CTACGIAZ.js → test-suite-SW25YGJV.js} +138 -96
- package/dist/test-suite-SW25YGJV.js.map +1 -0
- package/dist/{trace-RWQDYL4K.js → trace-QPXHYBLA.js} +7 -7
- package/dist/{triage-6UAXLCGU.js → triage-EZABRZZM.js} +6 -6
- package/dist/trigger-7C7KX5KH.js +137 -0
- package/dist/trigger-7C7KX5KH.js.map +1 -0
- package/dist/{update-check-QRREAM3N.js → update-check-E3X7UIY6.js} +3 -3
- package/dist/{upgrade-5Y655TQ6.js → upgrade-EJGTMW44.js} +4 -4
- package/dist/{usage-KCXFY46V.js → usage-GZCQDULF.js} +7 -7
- package/dist/{utilities-SUON2KZK.js → utilities-RIITD53A.js} +6 -6
- package/dist/{visual-GJZVJC32.js → visual-FH67OKS2.js} +5 -5
- package/dist/{workflow-R5QAXWBX.js → workflow-34YJZ2QQ.js} +38 -86
- package/dist/workflow-34YJZ2QQ.js.map +1 -0
- package/dist/{workflow-cache-PFBTWLGM.js → workflow-cache-YQ3BGJIG.js} +17 -17
- package/dist/{workflow-cache-convergence-resolve-UZGRPC3B.js → workflow-cache-convergence-resolve-SPLBRSNK.js} +5 -5
- package/dist/{workflow-debug-RACNWWOL.js → workflow-debug-HZB7TJGK.js} +10 -10
- package/dist/workflow-debug-HZB7TJGK.js.map +1 -0
- package/dist/{workflow-feedback-RJIQ5R3R.js → workflow-feedback-6UOTIWIQ.js} +5 -5
- package/dist/{workflow-fork-LINDCYJ3.js → workflow-fork-IDYHAHCX.js} +5 -5
- package/dist/workflow-promotion-U6WYFY5U.js +62 -0
- package/dist/workflow-promotion-U6WYFY5U.js.map +1 -0
- package/dist/{workflow-proposals-E4EXKAGM.js → workflow-proposals-MMVNIQT3.js} +5 -5
- package/dist/{workflow-revisions-5M6APN6R.js → workflow-revisions-BPUOLCZB.js} +5 -5
- package/dist/{workflow-status-7KL73WS2.js → workflow-status-RA3IEMEW.js} +5 -5
- package/package.json +3 -2
- package/dist/chat-target-IZ7YLLU3.js +0 -502
- package/dist/chat-target-IZ7YLLU3.js.map +0 -1
- package/dist/chunk-76Z6E7XX.js.map +0 -1
- package/dist/chunk-EUVB6Y3C.js.map +0 -1
- package/dist/chunk-LL6TSQWV.js.map +0 -1
- package/dist/chunk-QTYUM4ZB.js.map +0 -1
- package/dist/chunk-ROX7N3RK.js.map +0 -1
- package/dist/chunk-UEJ2HTKU.js.map +0 -1
- package/dist/proofs-TXJGAP5F.js.map +0 -1
- package/dist/sandbox-DYCKLCMY.js.map +0 -1
- package/dist/teams-J2OOJBL4.js.map +0 -1
- package/dist/test-suite-CTACGIAZ.js.map +0 -1
- package/dist/workflow-R5QAXWBX.js.map +0 -1
- /package/dist/{account-3ZG24MOE.js.map → account-MRZ54P5P.js.map} +0 -0
- /package/dist/{alert-5G7PTAX2.js.map → alert-XBHELHEI.js.map} +0 -0
- /package/dist/{api-catalog-IBYAFKKQ.js.map → api-catalog-GWYRX53L.js.map} +0 -0
- /package/dist/{api-key-UXC44BDR.js.map → api-key-FH6JN447.js.map} +0 -0
- /package/dist/{attachment-T6IRFQW3.js.map → attachment-J7GRVT5F.js.map} +0 -0
- /package/dist/{auth-SHOCJE6Z.js.map → auth-VZZQXRDR.js.map} +0 -0
- /package/dist/{benchmark-NJ2U6VTC.js.map → benchmark-A3SNDARF.js.map} +0 -0
- /package/dist/{blackcat-RQJVFGXQ.js.map → blackcat-UM6TBQBN.js.map} +0 -0
- /package/dist/{chunk-M752EUK3.js.map → chunk-3JU4UYYN.js.map} +0 -0
- /package/dist/{chunk-G6BCST3G.js.map → chunk-3ZOUNCA5.js.map} +0 -0
- /package/dist/{chunk-ABT3BLRC.js.map → chunk-5TKXHS3X.js.map} +0 -0
- /package/dist/{chunk-QCYSONXI.js.map → chunk-CRYHWO4M.js.map} +0 -0
- /package/dist/{chunk-I5RHTCPY.js.map → chunk-EL6KJ4PO.js.map} +0 -0
- /package/dist/{chunk-ZL4O6C42.js.map → chunk-HXBK3AGD.js.map} +0 -0
- /package/dist/{chunk-PRERH4DN.js.map → chunk-I2SOHQ2C.js.map} +0 -0
- /package/dist/{chunk-CYSPCGO6.js.map → chunk-JEHHEMUL.js.map} +0 -0
- /package/dist/{chunk-LIEADTEF.js.map → chunk-LJFVRJCA.js.map} +0 -0
- /package/dist/{chunk-PHNH3CEU.js.map → chunk-O4Z44BR7.js.map} +0 -0
- /package/dist/{chunk-QA37WVF6.js.map → chunk-OQFCZERZ.js.map} +0 -0
- /package/dist/{chunk-Z3MDQSZG.js.map → chunk-PJFFGQSB.js.map} +0 -0
- /package/dist/{chunk-IY3ZK46I.js.map → chunk-QOVJUSSL.js.map} +0 -0
- /package/dist/{chunk-RPJMQBB5.js.map → chunk-QXU4G4YN.js.map} +0 -0
- /package/dist/{chunk-SZSTJIYU.js.map → chunk-RRSUKARV.js.map} +0 -0
- /package/dist/{chunk-775FI436.js.map → chunk-RVD6J6IZ.js.map} +0 -0
- /package/dist/{chunk-5UUIBY6E.js.map → chunk-TAVBFLCR.js.map} +0 -0
- /package/dist/{chunk-3HI6QC4V.js.map → chunk-WRBU6TX7.js.map} +0 -0
- /package/dist/{chunk-BF3IPGMP.js.map → chunk-XSSZMG65.js.map} +0 -0
- /package/dist/{credential-TWSWV64F.js.map → credential-4RFRU6OH.js.map} +0 -0
- /package/dist/{credential-template-XO5D5AI3.js.map → credential-template-36PFUTBN.js.map} +0 -0
- /package/dist/{digest-SLEFOLPV.js.map → digest-THMKFMP7.js.map} +0 -0
- /package/dist/{docs-IDC4V4WQ.js.map → docs-ZGM53L67.js.map} +0 -0
- /package/dist/{doctor-SDAYEA6C.js.map → doctor-Z2XBGBM3.js.map} +0 -0
- /package/dist/{environment-VBUIBQ6O.js.map → environment-5YVZXBN7.js.map} +0 -0
- /package/dist/{exploration-IREIR5PO.js.map → exploration-GZ4WUJJH.js.map} +0 -0
- /package/dist/{exploratory-test-4Q7BMEFT.js.map → exploratory-test-Y7P4ZDLD.js.map} +0 -0
- /package/dist/{external-run-S7LULKPT.js.map → external-run-IJGGZOGI.js.map} +0 -0
- /package/dist/{feature-flag-IASHTUGU.js.map → feature-flag-UH6Z7774.js.map} +0 -0
- /package/dist/{flow-IBEZFZTU.js.map → flow-MRWAQYZZ.js.map} +0 -0
- /package/dist/{github-HAEZRULP.js.map → github-VDJU3PU3.js.map} +0 -0
- /package/dist/{init-LT2TZMQY.js.map → init-CROSTPA6.js.map} +0 -0
- /package/dist/{install-RTEYH6TK.js.map → install-ECR7OLAY.js.map} +0 -0
- /package/dist/{issues-5GE277R2.js.map → issues-K5TL2S4Z.js.map} +0 -0
- /package/dist/{knobs-AMIWGYUZ.js.map → knobs-OKQFBQLK.js.map} +0 -0
- /package/dist/{landing-3VLVVQL5.js.map → landing-XANIBPVM.js.map} +0 -0
- /package/dist/{list-GDJR6UY6.js.map → list-64GX47Q4.js.map} +0 -0
- /package/dist/{local-4R6GVW7U.js.map → local-QMQY2ZUX.js.map} +0 -0
- /package/dist/{login-IXVAWTLO.js.map → login-I7UQ3GTM.js.map} +0 -0
- /package/dist/{metrics-SSIP5CEB.js.map → metrics-KBTQ3KGZ.js.map} +0 -0
- /package/dist/{monitor-ESZYHXT2.js.map → monitor-UGWY43IU.js.map} +0 -0
- /package/dist/{product-VCGUV5TH.js.map → product-KLG2ZTHC.js.map} +0 -0
- /package/dist/{product-map-AXKZNQDM.js.map → product-map-AMEZ76EQ.js.map} +0 -0
- /package/dist/{prompts-FVPSON2N.js.map → prompts-ZVQNGL7X.js.map} +0 -0
- /package/dist/{src-AEWV5HYH.js.map → proofs-QCNSQAPX.js.map} +0 -0
- /package/dist/{property-XEPCC7KQ.js.map → property-PJDQFHAL.js.map} +0 -0
- /package/dist/{psql-JKF3OYYJ.js.map → psql-AURAN27C.js.map} +0 -0
- /package/dist/{record-REQ37S54.js.map → record-SYWBTUOB.js.map} +0 -0
- /package/dist/{redis-WGHT2GJB.js.map → redis-2H752SKO.js.map} +0 -0
- /package/dist/{release-SNDIVIA6.js.map → release-OSIYUXSC.js.map} +0 -0
- /package/dist/{runbook-XFJG2LFC.js.map → runbook-7LVHF6KV.js.map} +0 -0
- /package/dist/{scenarios-PVHCKP55.js.map → scenarios-P2ABU4HK.js.map} +0 -0
- /package/dist/{schedule-DGC7CX23.js.map → schedule-XLS56NP5.js.map} +0 -0
- /package/dist/{session-ERGUFDDI.js.map → session-ACSFC3UB.js.map} +0 -0
- /package/dist/{slack-WE7THLLH.js.map → slack-ZEK4GRND.js.map} +0 -0
- /package/dist/{spec-SEOY7N3L.js.map → spec-XPIRRSV6.js.map} +0 -0
- /package/dist/{src-CCK3TKBX.js.map → src-N7ZCYCXU.js.map} +0 -0
- /package/dist/{tag-GIFEWGBL.js.map → src-XSBBMVGW.js.map} +0 -0
- /package/dist/{start-EPGLHTND.js.map → start-DKWLOQI6.js.map} +0 -0
- /package/dist/{status-DTE2GXM2.js.map → status-K7KH5DI3.js.map} +0 -0
- /package/dist/{trace-RWQDYL4K.js.map → tag-2Y3OMQQC.js.map} +0 -0
- /package/dist/{task-VLJCHSFB.js.map → task-4PIOC4QV.js.map} +0 -0
- /package/dist/{triage-6UAXLCGU.js.map → trace-QPXHYBLA.js.map} +0 -0
- /package/dist/{update-check-QRREAM3N.js.map → triage-EZABRZZM.js.map} +0 -0
- /package/dist/{upgrade-5Y655TQ6.js.map → update-check-E3X7UIY6.js.map} +0 -0
- /package/dist/{utilities-SUON2KZK.js.map → upgrade-EJGTMW44.js.map} +0 -0
- /package/dist/{usage-KCXFY46V.js.map → usage-GZCQDULF.js.map} +0 -0
- /package/dist/{workflow-debug-RACNWWOL.js.map → utilities-RIITD53A.js.map} +0 -0
- /package/dist/{visual-GJZVJC32.js.map → visual-FH67OKS2.js.map} +0 -0
- /package/dist/{workflow-cache-PFBTWLGM.js.map → workflow-cache-YQ3BGJIG.js.map} +0 -0
- /package/dist/{workflow-cache-convergence-resolve-UZGRPC3B.js.map → workflow-cache-convergence-resolve-SPLBRSNK.js.map} +0 -0
- /package/dist/{workflow-feedback-RJIQ5R3R.js.map → workflow-feedback-6UOTIWIQ.js.map} +0 -0
- /package/dist/{workflow-fork-LINDCYJ3.js.map → workflow-fork-IDYHAHCX.js.map} +0 -0
- /package/dist/{workflow-proposals-E4EXKAGM.js.map → workflow-proposals-MMVNIQT3.js.map} +0 -0
- /package/dist/{workflow-revisions-5M6APN6R.js.map → workflow-revisions-BPUOLCZB.js.map} +0 -0
- /package/dist/{workflow-status-7KL73WS2.js.map → workflow-status-RA3IEMEW.js.map} +0 -0
|
@@ -1,22 +1,25 @@
|
|
|
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
|
loadTeamsChannels
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LJFVRJCA.js";
|
|
5
5
|
import {
|
|
6
6
|
openUrl
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5TKXHS3X.js";
|
|
8
8
|
import {
|
|
9
|
-
apiRequest
|
|
10
|
-
|
|
9
|
+
apiRequest,
|
|
10
|
+
requireOrgAdmin
|
|
11
|
+
} from "./chunk-VKZOHJCE.js";
|
|
11
12
|
import "./chunk-S3Q7MDCS.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-4UZN6TVT.js";
|
|
13
14
|
import {
|
|
15
|
+
decodeJwtPayload,
|
|
14
16
|
hasFlag,
|
|
15
|
-
resolveConfig
|
|
16
|
-
|
|
17
|
+
resolveConfig,
|
|
18
|
+
resolveOrgAppUrl
|
|
19
|
+
} from "./chunk-WRBU6TX7.js";
|
|
17
20
|
import {
|
|
18
21
|
writeRawOutput
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-MJVUMVLO.js";
|
|
20
23
|
import "./chunk-TOWZAG3I.js";
|
|
21
24
|
|
|
22
25
|
// src/teams.ts
|
|
@@ -26,13 +29,13 @@ function isTenantId(value) {
|
|
|
26
29
|
return TENANT_ID_RE.test(value);
|
|
27
30
|
}
|
|
28
31
|
var yesNo = (value) => value ? "yes" : "no";
|
|
29
|
-
function formatStatus(
|
|
32
|
+
function formatStatus(connection2) {
|
|
30
33
|
return [
|
|
31
34
|
"Microsoft Teams",
|
|
32
|
-
` Tenant: ${
|
|
33
|
-
` App in catalog: ${yesNo(
|
|
34
|
-
` Teams enabled: ${yesNo(
|
|
35
|
-
` Installed in: ${
|
|
35
|
+
` Tenant: ${connection2.tenantId ?? "not bound"}`,
|
|
36
|
+
` App in catalog: ${yesNo(connection2.isInCatalog)}`,
|
|
37
|
+
` Teams enabled: ${yesNo(connection2.isFlagEnabled)}`,
|
|
38
|
+
` Installed in: ${connection2.installCount} channel${connection2.installCount === 1 ? "" : "s"}`
|
|
36
39
|
].join("\n");
|
|
37
40
|
}
|
|
38
41
|
function formatChannels(channels) {
|
|
@@ -49,7 +52,7 @@ function printHelp() {
|
|
|
49
52
|
"Usage:",
|
|
50
53
|
" cofactor teams status [--json] Tenant, catalog, enabled flag, installed channels",
|
|
51
54
|
" cofactor teams channels [--json] Channels the app is installed in, with their references",
|
|
52
|
-
" cofactor teams install [--no-open] Open the Microsoft consent
|
|
55
|
+
" cofactor teams install [--no-open] Open Settings \u2192 Microsoft Teams in your browser (signing in first if needed), which starts the Microsoft consent (binds the tenant and publishes the app), and wait for it; organization admins only",
|
|
53
56
|
" cofactor teams bind <tenant-id> Bind a Microsoft tenant without publishing the app (the id comes first)",
|
|
54
57
|
" cofactor teams disconnect --yes Disconnect the organization (clears binding, catalog link, channels)",
|
|
55
58
|
"",
|
|
@@ -61,13 +64,9 @@ function fail(message) {
|
|
|
61
64
|
console.error(`Error: ${message}`);
|
|
62
65
|
process.exit(1);
|
|
63
66
|
}
|
|
67
|
+
var connection = (apiUrl, token) => apiRequest(apiUrl, token, "GET", "/integrations/teams/connection");
|
|
64
68
|
async function teamsStatus(argv, apiUrl, token) {
|
|
65
|
-
const result = await
|
|
66
|
-
apiUrl,
|
|
67
|
-
token,
|
|
68
|
-
"GET",
|
|
69
|
-
"/integrations/teams/connection"
|
|
70
|
-
);
|
|
69
|
+
const result = await connection(apiUrl, token);
|
|
71
70
|
if (!result.ok) fail(result.error ?? "failed to read the Teams connection");
|
|
72
71
|
if (hasFlag(argv, "--json")) return writeRawOutput(JSON.stringify(result, null, 2));
|
|
73
72
|
console.log(formatStatus(result));
|
|
@@ -77,34 +76,69 @@ async function teamsChannels(argv, apiUrl, token) {
|
|
|
77
76
|
if (hasFlag(argv, "--json")) return writeRawOutput(JSON.stringify(channels, null, 2));
|
|
78
77
|
console.log(formatChannels(channels));
|
|
79
78
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
79
|
+
var CONNECT_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
80
|
+
var POLL_INTERVAL_MS = 3e3;
|
|
81
|
+
var REMIND_AFTER_MS = 60 * 1e3;
|
|
82
|
+
var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
83
|
+
function teamsConnectUrl(appUrl, orgId) {
|
|
84
|
+
const query = new URLSearchParams({ cofactor_org_id: orgId, connect: "teams" });
|
|
85
|
+
return `${appUrl}/settings/teams?${query.toString()}`;
|
|
86
|
+
}
|
|
87
|
+
async function teamsInstall(argv, apiUrl, token, appSubdomain) {
|
|
88
|
+
const orgId = decodeJwtPayload(token)?.org_id;
|
|
89
|
+
if (typeof orgId !== "string") {
|
|
90
|
+
return fail('this command needs a signed-in session with an organization. Run "cofactor login" and try again.');
|
|
90
91
|
}
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
await requireOrgAdmin(apiUrl, token, "teams", "install");
|
|
93
|
+
const current = await connection(apiUrl, token);
|
|
94
|
+
if (!current.ok) return fail(current.error ?? "failed to read the Teams connection");
|
|
95
|
+
if (current.isInCatalog) {
|
|
96
|
+
console.log("Microsoft Teams is already installed for this organization (to republish the manifest, press Re-run install on Settings \u2192 Microsoft Teams).");
|
|
97
|
+
console.log(formatStatus(current));
|
|
98
|
+
return;
|
|
93
99
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
100
|
+
if (!current.isFlagEnabled) {
|
|
101
|
+
return fail(
|
|
102
|
+
'Microsoft Teams is not enabled for this organization yet, so the Settings page will not start the install. Ask support to enable it, then run "cofactor teams install" again.'
|
|
103
|
+
);
|
|
98
104
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
105
|
+
const link = teamsConnectUrl(resolveOrgAppUrl(apiUrl, appSubdomain), orgId);
|
|
106
|
+
console.log(
|
|
107
|
+
`Open this link to install Microsoft Teams (press Install in Teams on the page if it does not send you to Microsoft):
|
|
108
|
+
${link}`
|
|
109
|
+
);
|
|
110
|
+
if (!process.stdout.isTTY) return;
|
|
111
|
+
let launcherFailed = false;
|
|
112
|
+
if (!hasFlag(argv, "--no-open")) {
|
|
113
|
+
openUrl(link, () => {
|
|
114
|
+
launcherFailed = true;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
console.log("Waiting for you to approve the Microsoft consent in the browser...");
|
|
118
|
+
const startedAt = Date.now();
|
|
119
|
+
const deadline = startedAt + CONNECT_TIMEOUT_MS;
|
|
120
|
+
let reminded = false;
|
|
121
|
+
while (Date.now() < deadline) {
|
|
122
|
+
await sleep(POLL_INTERVAL_MS);
|
|
123
|
+
if (launcherFailed) {
|
|
124
|
+
return fail('could not open a browser. Open the link above manually, then run "cofactor teams status" to check the install.');
|
|
125
|
+
}
|
|
126
|
+
const status = await connection(apiUrl, token);
|
|
127
|
+
if (status.ok && status.isInCatalog) {
|
|
128
|
+
console.log("Installed Microsoft Teams.");
|
|
129
|
+
console.log(formatStatus(status));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (!reminded && Date.now() - startedAt > REMIND_AFTER_MS) {
|
|
133
|
+
reminded = true;
|
|
134
|
+
console.log(
|
|
135
|
+
"Still waiting. Sign in to Cofactor in that browser as a member of this organization if it asks, then press Install in Teams on the Settings page if it does not send you to Microsoft."
|
|
136
|
+
);
|
|
137
|
+
}
|
|
102
138
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
() => console.error('Could not open a browser. Run "cofactor teams install --no-open" to print the link.')
|
|
139
|
+
return fail(
|
|
140
|
+
'timed out waiting for the install. Approve it in a browser signed in to Cofactor as a member of this organization (the page shows any error Microsoft reported), then run "cofactor teams install" again.'
|
|
106
141
|
);
|
|
107
|
-
console.log("Opening the Microsoft consent page. Approve it in the browser, then run: cofactor teams status");
|
|
108
142
|
}
|
|
109
143
|
async function teamsBind(argv, apiUrl, token) {
|
|
110
144
|
const tenantId = argv[0];
|
|
@@ -140,14 +174,14 @@ async function runTeams(argv) {
|
|
|
140
174
|
printHelp();
|
|
141
175
|
return;
|
|
142
176
|
}
|
|
143
|
-
const { apiUrl, token } = await resolveConfig(rest);
|
|
177
|
+
const { apiUrl, token, appSubdomain } = await resolveConfig(rest);
|
|
144
178
|
switch (sub) {
|
|
145
179
|
case "status":
|
|
146
180
|
return teamsStatus(rest, apiUrl, token);
|
|
147
181
|
case "channels":
|
|
148
182
|
return teamsChannels(rest, apiUrl, token);
|
|
149
183
|
case "install":
|
|
150
|
-
return teamsInstall(rest, apiUrl, token);
|
|
184
|
+
return teamsInstall(rest, apiUrl, token, appSubdomain);
|
|
151
185
|
case "bind":
|
|
152
186
|
return teamsBind(rest, apiUrl, token);
|
|
153
187
|
case "disconnect":
|
|
@@ -162,6 +196,8 @@ export {
|
|
|
162
196
|
formatChannels,
|
|
163
197
|
formatStatus,
|
|
164
198
|
isTenantId,
|
|
165
|
-
runTeams
|
|
199
|
+
runTeams,
|
|
200
|
+
teamsConnectUrl,
|
|
201
|
+
teamsInstall
|
|
166
202
|
};
|
|
167
|
-
//# sourceMappingURL=teams-
|
|
203
|
+
//# sourceMappingURL=teams-KUM56BE2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/teams.ts"],"sourcesContent":["/**\n * CLI Teams\n *\n * Manage the organization's Microsoft Teams connection from the terminal, over\n * the same routes the Settings → Microsoft Teams page uses (CAP-CLI-001..003;\n * the connection itself is CAP-IAU-006). `install` hands the Microsoft consent\n * step to the browser (via the Settings page); everything else is a plain API call.\n */\n\nimport process from 'node:process';\nimport { resolveConfig, resolveOrgAppUrl, hasFlag } from './auth.js';\nimport { writeRawOutput } from './brand.js';\nimport { apiRequest, requireOrgAdmin } from './cli-helpers.js';\nimport { decodeJwtPayload } from './jwt.js';\nimport { openUrl } from './login.js';\nimport type { TeamsChannel } from '@chatsdet/mcp-tools';\nimport { loadTeamsChannels } from './teams-channels.js';\n\nexport interface TeamsConnection {\n tenantId: string | null;\n isInCatalog: boolean;\n isFlagEnabled: boolean;\n installCount: number;\n}\n\nconst TENANT_ID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/** A Microsoft tenant id is a GUID; reject anything else before calling the service. */\nexport function isTenantId(value: string): boolean {\n return TENANT_ID_RE.test(value);\n}\n\nconst yesNo = (value: boolean): string => (value ? 'yes' : 'no');\n\nexport function formatStatus(connection: TeamsConnection): string {\n return [\n 'Microsoft Teams',\n ` Tenant: ${connection.tenantId ?? 'not bound'}`,\n ` App in catalog: ${yesNo(connection.isInCatalog)}`,\n ` Teams enabled: ${yesNo(connection.isFlagEnabled)}`,\n ` Installed in: ${connection.installCount} channel${connection.installCount === 1 ? '' : 's'}`,\n ].join('\\n');\n}\n\nexport function formatChannels(channels: TeamsChannel[]): string {\n if (channels.length === 0) {\n return 'No channels. Add the Cofactor app to a Teams channel (and make sure Teams is enabled for this organization).';\n }\n return channels\n .map((channel) => ` ${channel.parentName ? `${channel.parentName} › ` : ''}${channel.name} ${channel.channelRef}`)\n .join('\\n');\n}\n\nfunction printHelp(): void {\n console.log(\n [\n \"Manage the organization's Microsoft Teams connection.\",\n '',\n 'Usage:',\n ' cofactor teams status [--json] Tenant, catalog, enabled flag, installed channels',\n ' cofactor teams channels [--json] Channels the app is installed in, with their references',\n ' cofactor teams install [--no-open] Open Settings → Microsoft Teams in your browser (signing in first if needed), which starts the Microsoft consent (binds the tenant and publishes the app), and wait for it; organization admins only',\n ' cofactor teams bind <tenant-id> Bind a Microsoft tenant without publishing the app (the id comes first)',\n ' cofactor teams disconnect --yes Disconnect the organization (clears binding, catalog link, channels)',\n '',\n 'All commands accept --org <name> and --env <prod|dev|local>.',\n ].join('\\n')\n );\n}\n\nfunction fail(message: string): never {\n console.error(`Error: ${message}`);\n process.exit(1);\n}\n\nconst connection = (apiUrl: string, token: string) =>\n apiRequest<{ ok: boolean; error?: string } & TeamsConnection>(apiUrl, token, 'GET', '/integrations/teams/connection');\n\nasync function teamsStatus(argv: string[], apiUrl: string, token: string): Promise<void> {\n const result = await connection(apiUrl, token);\n if (!result.ok) fail(result.error ?? 'failed to read the Teams connection');\n if (hasFlag(argv, '--json')) return writeRawOutput(JSON.stringify(result, null, 2));\n console.log(formatStatus(result));\n}\n\nasync function teamsChannels(argv: string[], apiUrl: string, token: string): Promise<void> {\n const channels = await loadTeamsChannels(apiUrl, token);\n if (hasFlag(argv, '--json')) return writeRawOutput(JSON.stringify(channels, null, 2));\n console.log(formatChannels(channels));\n}\n\nconst CONNECT_TIMEOUT_MS = 10 * 60 * 1000;\nconst POLL_INTERVAL_MS = 3000;\nconst REMIND_AFTER_MS = 60 * 1000;\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\n/**\n * The browser link: Settings → Microsoft Teams in `orgId` (the web app switches the\n * browser session to it from `cofactor_org_id`), with `connect=teams` asking the\n * page to start the Microsoft consent. `appUrl` is the org's own app host when it\n * has one ({@link resolveOrgAppUrl}).\n */\nexport function teamsConnectUrl(appUrl: string, orgId: string): string {\n const query = new URLSearchParams({ cofactor_org_id: orgId, connect: 'teams' });\n return `${appUrl}/settings/teams?${query.toString()}`;\n}\n\n/**\n * Like `cofactor slack connect`, the human step happens in the browser: the CLI opens\n * Settings → Microsoft Teams on the org's own app host, where a signed-out browser\n * gets the login form in place and comes back to the same URL, and the page starts\n * the Microsoft consent. The CLI polls the connection until the app is in the catalog.\n */\nexport async function teamsInstall(\n argv: string[],\n apiUrl: string,\n token: string,\n appSubdomain: string | null | undefined\n): Promise<void> {\n const orgId = decodeJwtPayload(token)?.org_id;\n if (typeof orgId !== 'string') {\n return fail('this command needs a signed-in session with an organization. Run \"cofactor login\" and try again.');\n }\n await requireOrgAdmin(apiUrl, token, 'teams', 'install');\n\n const current = await connection(apiUrl, token);\n if (!current.ok) return fail(current.error ?? 'failed to read the Teams connection');\n if (current.isInCatalog) {\n console.log('Microsoft Teams is already installed for this organization (to republish the manifest, press Re-run install on Settings → Microsoft Teams).');\n console.log(formatStatus(current));\n return;\n }\n\n if (!current.isFlagEnabled) {\n return fail(\n 'Microsoft Teams is not enabled for this organization yet, so the Settings page will not start the install. Ask support to enable it, then run \"cofactor teams install\" again.'\n );\n }\n\n const link = teamsConnectUrl(resolveOrgAppUrl(apiUrl, appSubdomain), orgId);\n console.log(\n `Open this link to install Microsoft Teams (press Install in Teams on the page if it does not send you to Microsoft):\\n${link}`\n );\n // No terminal (a script, CI, a headless box): print the link and return. Waiting needs a person at a\n // browser; without this a headless run hung polling for ten minutes (bot review on PR 5353).\n if (!process.stdout.isTTY) return;\n // `openUrl` reports a missing launcher (headless Linux, no xdg-open) on a later tick; the loop checks it\n // after its first sleep, so it never polls for a browser that cannot open.\n let launcherFailed = false;\n if (!hasFlag(argv, '--no-open')) {\n openUrl(link, () => {\n launcherFailed = true;\n });\n }\n console.log('Waiting for you to approve the Microsoft consent in the browser...');\n\n const startedAt = Date.now();\n const deadline = startedAt + CONNECT_TIMEOUT_MS;\n let reminded = false;\n while (Date.now() < deadline) {\n await sleep(POLL_INTERVAL_MS);\n if (launcherFailed) {\n return fail('could not open a browser. Open the link above manually, then run \"cofactor teams status\" to check the install.');\n }\n const status = await connection(apiUrl, token);\n if (status.ok && status.isInCatalog) {\n console.log('Installed Microsoft Teams.');\n console.log(formatStatus(status));\n return;\n }\n if (!reminded && Date.now() - startedAt > REMIND_AFTER_MS) {\n reminded = true;\n console.log(\n 'Still waiting. Sign in to Cofactor in that browser as a member of this organization if it asks, then press Install in Teams on the Settings page if it does not send you to Microsoft.'\n );\n }\n }\n return fail(\n 'timed out waiting for the install. Approve it in a browser signed in to Cofactor as a member of this organization (the page shows any error Microsoft reported), then run \"cofactor teams install\" again.'\n );\n}\n\nasync function teamsBind(argv: string[], apiUrl: string, token: string): Promise<void> {\n // `argv` still carries --org/--env and their values, so the id must be the first token.\n const tenantId = argv[0];\n if (!tenantId || tenantId.startsWith('-')) fail('missing tenant id (it must come first). Usage: cofactor teams bind <tenant-id> [--org <name>] [--env <env>]');\n if (!isTenantId(tenantId)) fail(`\"${tenantId}\" is not a Microsoft tenant id (expected a GUID like ea0aaad4-730f-4f9d-8e58-9d3cc3f4643a)`);\n const result = await apiRequest<{ ok: boolean; error?: string; tenantId?: string }>(\n apiUrl,\n token,\n 'PUT',\n '/integrations/teams/connection',\n { tenantId }\n );\n if (!result.ok) fail(result.error ?? 'failed to bind the tenant');\n console.log(`Bound tenant ${result.tenantId ?? tenantId}. The app is not published to its catalog; use \"cofactor teams install\" for that.`);\n}\n\nasync function teamsDisconnect(argv: string[], apiUrl: string, token: string): Promise<void> {\n if (!hasFlag(argv, '--yes')) {\n console.error('Nothing changed. Disconnecting clears the tenant binding, the catalog link, the stored channels and buffered messages. Re-run with --yes to confirm.');\n process.exit(1);\n }\n const result = await apiRequest<{ ok: boolean; error?: string }>(\n apiUrl,\n token,\n 'DELETE',\n '/integrations/teams/connection'\n );\n if (!result.ok) fail(result.error ?? 'failed to disconnect');\n console.log('Disconnected Microsoft Teams. Run \"cofactor teams status\" to confirm.');\n}\n\nexport async function runTeams(argv: string[]): Promise<void> {\n const [sub, ...rest] = argv;\n\n if (!sub || sub === 'help' || hasFlag(argv, '--help', '-h')) {\n printHelp();\n return;\n }\n\n const { apiUrl, token, appSubdomain } = await resolveConfig(rest);\n\n switch (sub) {\n case 'status':\n return teamsStatus(rest, apiUrl, token);\n case 'channels':\n return teamsChannels(rest, apiUrl, token);\n case 'install':\n return teamsInstall(rest, apiUrl, token, appSubdomain);\n case 'bind':\n return teamsBind(rest, apiUrl, token);\n case 'disconnect':\n return teamsDisconnect(rest, apiUrl, token);\n default:\n console.error(`Unknown teams subcommand: ${sub}`);\n printHelp();\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["connection"]}
|