@qwen-code/qwen-code 0.21.5 → 0.21.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/model-providers.md +8 -8
- package/bundled/qc-helper/docs/configuration/settings.md +15 -15
- package/bundled/qc-helper/docs/features/channels/github.md +31 -19
- package/bundled/qc-helper/docs/features/code-review.md +5 -1
- package/bundled/qc-helper/docs/features/headless.md +31 -0
- package/bundled/qc-helper/docs/qwen-serve.md +75 -0
- package/bundled/review/SKILL.md +72 -60
- package/chunks/{MaxSizedBox-2MWU5JYB.js → MaxSizedBox-2HFKP4LI.js} +11 -10
- package/chunks/{StandaloneSessionPicker-B6MI5NTB.js → StandaloneSessionPicker-RBV72M5N.js} +26 -25
- package/chunks/{acp-startup-profiler-3RICG2YW.js → acp-startup-profiler-ORIQ2CCQ.js} +2 -2
- package/chunks/{acpAgent-MRPYN6FH.js → acpAgent-WO6JFCVQ.js} +1232 -139
- package/chunks/{agent-NAOXNW4I.js → agent-AHGLYNZ4.js} +11 -10
- package/chunks/{agent-headless-L4PPVFKW.js → agent-headless-NTXKKGRO.js} +11 -10
- package/chunks/{bridge-LHXGYNCO.js → bridge-RPAU64CA.js} +17 -15
- package/chunks/{channel-management-service-UHX56NBO.js → channel-management-service-IGEUOVRT.js} +3 -3
- package/chunks/{channel-settings-store-QB54TLYE.js → channel-settings-store-ON64MF7G.js} +18 -17
- package/chunks/{channel-worker-group-NDG4WOOZ.js → channel-worker-group-JWQK224X.js} +6 -5
- package/chunks/{channel-worker-manager-ZCW6UW34.js → channel-worker-manager-77E3OXRQ.js} +6 -5
- package/chunks/{channel-worker-supervisor-ATGFTZRN.js → channel-worker-supervisor-62YWUGP2.js} +4 -3
- package/chunks/{chunk-EXHQZBVJ.js → chunk-2POQWYM6.js} +2 -2
- package/chunks/{chunk-YMUZQ3MQ.js → chunk-3LZKY4V4.js} +3 -3
- package/chunks/{chunk-7MFQLOHZ.js → chunk-3PRJYMXC.js} +1 -1
- package/chunks/{chunk-SJMCYCUQ.js → chunk-3UOLYNTF.js} +5 -5
- package/chunks/{chunk-Q2V4AOQL.js → chunk-4JH77A2U.js} +1 -1
- package/chunks/{chunk-MISUEWB4.js → chunk-4S4OEQ6U.js} +10 -6
- package/chunks/{chunk-URJHXOSO.js → chunk-4WTAQEHV.js} +1 -1
- package/chunks/{chunk-ZLGPHA34.js → chunk-536SWZTA.js} +5 -5
- package/chunks/{chunk-WU5NBSLD.js → chunk-5MJGUQU5.js} +3 -3
- package/chunks/{chunk-3P4GP4S2.js → chunk-75QMRMO7.js} +4 -4
- package/chunks/{chunk-YLL3SC5S.js → chunk-A4VTILZT.js} +1032 -913
- package/chunks/{chunk-B3EBIZUY.js → chunk-ACZRB7AD.js} +8 -3
- package/chunks/chunk-BKHCW2BI.js +41 -0
- package/chunks/{chunk-XD2PNH3K.js → chunk-BOGOR4HB.js} +5 -5
- package/chunks/{chunk-QL4TN4HS.js → chunk-BRVWYMKV.js} +1 -1
- package/chunks/{chunk-TCOJPG2P.js → chunk-C4CBJQKY.js} +1 -1
- package/chunks/{chunk-4O6HLCOF.js → chunk-CA4UIDFU.js} +1 -1
- package/chunks/{chunk-SQTA6PAY.js → chunk-CJ5WLD5Y.js} +6 -2
- package/chunks/{chunk-7W5KOBYU.js → chunk-DIT4V3XH.js} +1 -1
- package/chunks/{chunk-OIGB253L.js → chunk-DVBEGGLG.js} +8 -8
- package/chunks/{chunk-DTAPI453.js → chunk-EMYZIABH.js} +1 -1
- package/chunks/{chunk-GBY3ODW7.js → chunk-EXCEQD22.js} +3 -3
- package/chunks/{chunk-VJPF6GF2.js → chunk-FZFP7RZI.js} +3 -3
- package/chunks/{chunk-3GOCVBYR.js → chunk-G5NNWEYE.js} +5 -5
- package/chunks/{chunk-IWYXZAGT.js → chunk-GESMMPAK.js} +33 -33
- package/chunks/{chunk-SVIEVA3L.js → chunk-GK2H5GRC.js} +29 -4
- package/chunks/{chunk-7M2RLFNX.js → chunk-GWRHVJY2.js} +11 -11
- package/chunks/{chunk-BK2UNYWD.js → chunk-HIBNSEJE.js} +12 -0
- package/chunks/{chunk-4LLUH3A7.js → chunk-HU5TUALO.js} +95 -8
- package/chunks/{chunk-J7I2BZHS.js → chunk-HY25ULVN.js} +23 -6
- package/chunks/{chunk-G2UXFO2B.js → chunk-IMOQO6YL.js} +1 -1
- package/chunks/{chunk-CAX76R46.js → chunk-JE44IPH6.js} +1 -1
- package/chunks/{chunk-IK3RYLAD.js → chunk-K2B3X3E7.js} +3 -3
- package/chunks/{chunk-OWAK7LMW.js → chunk-KGJGEEVR.js} +7 -0
- package/chunks/{chunk-K64OI7S7.js → chunk-KHUA3NQV.js} +2 -2
- package/chunks/{chunk-LEZFUYPM.js → chunk-LAAFLUQV.js} +4 -4
- package/chunks/{chunk-FHPKHXHT.js → chunk-MKVZE4ZJ.js} +5 -1
- package/chunks/{chunk-4NEBUDWS.js → chunk-N2GJU6KI.js} +9 -9
- package/chunks/{chunk-N3RERU5N.js → chunk-NGJOAKJY.js} +3 -3
- package/chunks/chunk-NKLP3DCK.js +22 -0
- package/chunks/{chunk-K6VEL5KP.js → chunk-NKSF7HYF.js} +1 -1
- package/chunks/{chunk-LMNM37OE.js → chunk-O7V7N4G7.js} +1 -1
- package/chunks/{chunk-3H5RFLTS.js → chunk-ODPXHGLL.js} +2 -2
- package/chunks/{chunk-KH2BIJ4H.js → chunk-OP2OHZ7K.js} +267 -11
- package/chunks/{chunk-VOA2UPZM.js → chunk-OWSW7EYP.js} +5 -5
- package/chunks/{chunk-B2RBYP7Z.js → chunk-OXX3FG2N.js} +2 -2
- package/chunks/{chunk-RM3F46UT.js → chunk-PPUOYL77.js} +71 -6
- package/chunks/{chunk-ZPGMDT4S.js → chunk-PX5DNLSA.js} +19 -92
- package/chunks/{chunk-FEUXV3DC.js → chunk-Q5RM32DR.js} +1 -1
- package/chunks/{chunk-AEWOKOJY.js → chunk-QZKYZCN3.js} +1 -1
- package/chunks/{chunk-UKZEXS6K.js → chunk-R574ATRM.js} +11 -0
- package/chunks/{chunk-OGAARVN7.js → chunk-R5RBXLNC.js} +3 -3
- package/chunks/{chunk-5HWAJ4BK.js → chunk-RFUHDCNF.js} +1 -1
- package/chunks/{chunk-LSYVASZS.js → chunk-RHTTKJTP.js} +1 -1
- package/chunks/{chunk-LYPXNRBX.js → chunk-RK2EE3T7.js} +1 -1
- package/chunks/{chunk-CIUUYB23.js → chunk-S7CV4KO6.js} +3 -3
- package/chunks/{chunk-4NNR24EP.js → chunk-SKNE3KQC.js} +3 -3
- package/chunks/{chunk-JDNWIXHJ.js → chunk-SLSWFHDF.js} +3 -3
- package/chunks/{chunk-UWSXFI6E.js → chunk-SQC6K5HI.js} +6 -2
- package/chunks/{chunk-P3SLTSNY.js → chunk-SQOMTWQT.js} +4 -4
- package/chunks/{chunk-D7QAZ5DF.js → chunk-SUKEUUAA.js} +1 -1
- package/chunks/{chunk-WTM5QONI.js → chunk-T4JSA7KU.js} +2 -2
- package/chunks/{chunk-I7JDGNG6.js → chunk-T5U6IM4C.js} +6 -2
- package/chunks/{chunk-2JBETW4S.js → chunk-TGGEZINK.js} +5 -5
- package/chunks/{chunk-C6ARWPCG.js → chunk-TOGZTG4X.js} +2 -2
- package/chunks/{chunk-A6SX5TAH.js → chunk-TSERKWCX.js} +6 -2
- package/chunks/{chunk-IWGMDSC3.js → chunk-U4AF3QLU.js} +355 -17
- package/chunks/{chunk-PDDYAXL2.js → chunk-UGTWD35F.js} +14 -1
- package/chunks/{chunk-BWLUCN35.js → chunk-ULPQQSDN.js} +2 -2
- package/chunks/{chunk-GEP54CHX.js → chunk-VGFPFM4U.js} +3 -3
- package/chunks/{chunk-NLQIEY6W.js → chunk-VNQCPBC2.js} +3 -3
- package/chunks/{chunk-K2ETEWG6.js → chunk-VSALQLT7.js} +1 -1
- package/chunks/{chunk-YO4JI7B4.js → chunk-W5DXUTXD.js} +12 -6
- package/chunks/{chunk-M744OFVE.js → chunk-W7U4ESW2.js} +1 -1
- package/chunks/{chunk-TJ56V3AR.js → chunk-WNU7TZTO.js} +4 -4
- package/chunks/{chunk-GTM6IHBB.js → chunk-WO2B5E5B.js} +1 -0
- package/chunks/chunk-WOJZWRAZ.js +123 -0
- package/chunks/{chunk-5XNO4AW7.js → chunk-XA4TMLFN.js} +11 -11
- package/chunks/{chunk-GP4IMBX5.js → chunk-XM2O73NC.js} +1696 -476
- package/chunks/{chunk-IZ2CMEYO.js → chunk-YMBOEAF4.js} +1 -1
- package/chunks/{chunk-QONSRAEV.js → chunk-YP5KH5Y7.js} +1 -1
- package/chunks/{chunk-ZLJQIGCH.js → chunk-YZQTA3ID.js} +28 -11
- package/chunks/{computer-use-XDOGP2KA.js → computer-use-5HXJ2P4X.js} +11 -10
- package/chunks/{config-utils-E3ZQTHGM.js → config-utils-VXD4SPVR.js} +2 -2
- package/chunks/{contextCommand-N3LQDCYJ.js → contextCommand-7BEHRX2H.js} +14 -13
- package/chunks/{core-runtime-STAFP45W.js → core-runtime-U4VJ5TIV.js} +11 -10
- package/chunks/create-sub-session-QZNQY332.js +772 -0
- package/chunks/{daemon-CCIX4BMG.js → daemon-YI5RY62O.js} +115 -3
- package/chunks/{daemon-status-provider-PPAH3ATF.js → daemon-status-provider-UJUGTDTL.js} +21 -19
- package/chunks/{daemon-trust-policy-X6XL3MB4.js → daemon-trust-policy-ZHDD5VYQ.js} +17 -16
- package/chunks/{daemon-trust-policy-monitor-M5LBL2HD.js → daemon-trust-policy-monitor-5SHYBDGA.js} +17 -16
- package/chunks/{deferred-core-runtime-O54YPTBU.js → deferred-core-runtime-QWAEBTR5.js} +11 -10
- package/chunks/discovery-XLHITE74.js +220 -0
- package/chunks/{dist-IKGVITP3.js → dist-KS4O2NKE.js} +99 -6
- package/chunks/{earlyInputCapture-CBIT2RGT.js → earlyInputCapture-5BMSGKOI.js} +11 -10
- package/chunks/{edit-KW2TOC6A.js → edit-IVQQVYYK.js} +11 -10
- package/chunks/{enter-worktree-YL34NEU5.js → enter-worktree-P3DF2N6O.js} +11 -10
- package/chunks/{enterPlanMode-JFJTDASQ.js → enterPlanMode-KKTDVLAD.js} +11 -10
- package/chunks/{environment-IATU5GXG.js → environment-W5TRDM3G.js} +14 -13
- package/chunks/{errors-SAVRDE7Q.js → errors-GJJB36IG.js} +14 -13
- package/chunks/{exit-worktree-5M43QPBB.js → exit-worktree-LV5RLOCU.js} +11 -10
- package/chunks/{exitPlanMode-W4EICZ4N.js → exitPlanMode-TUGOB2LL.js} +11 -10
- package/chunks/external-tool-guard-provider-5HTGOPGU.js +273 -0
- package/chunks/{fast-path-YQJPIKMP.js → fast-path-2FU23PAQ.js} +5 -5
- package/chunks/{gemini-FUF5SSPR.js → gemini-KDULDQPP.js} +70 -55
- package/chunks/{geminiContentGenerator-LLLZBOUG.js → geminiContentGenerator-LOCFHNVA.js} +1 -1
- package/chunks/{glob-LJFFMN4D.js → glob-Z4NQFKWS.js} +11 -10
- package/chunks/{grep-Q64EAM73.js → grep-Z67Z7EN6.js} +11 -10
- package/chunks/{handleAutoUpdate-QBMPRTSQ.js → handleAutoUpdate-DFUZE6I6.js} +16 -15
- package/chunks/{i18n-LDUW5DMN.js → i18n-R4FMZ7N2.js} +13 -12
- package/chunks/{image-gen-G7RLG3KR.js → image-gen-4CQJPQP5.js} +1 -1
- package/chunks/{initializer-74A7DMMD.js → initializer-DK672ZVE.js} +17 -16
- package/chunks/{installationInfo-OFDYLDFD.js → installationInfo-PO4Z3ES7.js} +12 -11
- package/chunks/{list-JA2EWRHJ.js → list-QXQF6C53.js} +20 -19
- package/chunks/{loadedSettingsAdapter-2GNJOQ3L.js → loadedSettingsAdapter-4D7GUGW6.js} +17 -16
- package/chunks/{loggingContentGenerator-B6B5EGB3.js → loggingContentGenerator-2P3MNACM.js} +4 -3
- package/chunks/{managed-npm-update-4YZHLUER.js → managed-npm-update-LWVJQTWO.js} +24 -14
- package/chunks/{mcp-LLK5YJVH.js → mcp-GHETAR6V.js} +17 -16
- package/chunks/{monitor-NYJPAWVP.js → monitor-4T7W4M6Q.js} +11 -10
- package/chunks/{nonInteractiveCli-HZBBBDJD.js → nonInteractiveCli-P4UKCJFM.js} +47 -45
- package/chunks/{notebook-edit-LLM6UXFX.js → notebook-edit-OC2V7U5D.js} +11 -10
- package/chunks/{openaiContentGenerator-2AEXDN55.js → openaiContentGenerator-RAJUFWQY.js} +5 -4
- package/chunks/{pidfile-3JUWX7G2.js → pidfile-HVPYVRLS.js} +11 -10
- package/chunks/{processUtils-JLLRVZHT.js → processUtils-VIQ4JHVX.js} +2 -2
- package/chunks/{qwenContentGenerator-2FESCF27.js → qwenContentGenerator-2QLCUFNZ.js} +12 -11
- package/chunks/{qwenOAuth2-2KKPYA5J.js → qwenOAuth2-J2X3EN43.js} +1 -1
- package/chunks/{read-file-5GVXLY74.js → read-file-ZNAN2B26.js} +3 -2
- package/chunks/{record-artifact-L3BAHQFN.js → record-artifact-E6AWQU2Z.js} +1 -1
- package/chunks/{resumeHistoryUtils-Z4OFBXPM.js → resumeHistoryUtils-RCY7AL5Y.js} +15 -14
- package/chunks/{ripGrep-TKOJTIAB.js → ripGrep-C3KMLZM5.js} +11 -10
- package/chunks/{run-qwen-serve-K5W6MM6M.js → run-qwen-serve-3JN75CIQ.js} +518 -75
- package/chunks/{runtime-IADXMRCY.js → runtime-VUA4WQYD.js} +20 -19
- package/chunks/{scheduler-T7AV37LD.js → scheduler-Z4IBXCOY.js} +11 -10
- package/chunks/{serve-ROEGMS3I.js → serve-67T3P7XI.js} +18 -16
- package/chunks/{server-NGXMRODI.js → server-46ZO2CLV.js} +7556 -397
- package/chunks/{session-RCDLDJA4.js → session-B4IFAFC4.js} +50 -48
- package/chunks/{settings-E6H3AURD.js → settings-AI2BTBOZ.js} +16 -15
- package/chunks/{shell-RHGGJ6BE.js → shell-BKII3B6E.js} +11 -10
- package/chunks/{skill-GQ7PBS25.js → skill-6CFOWVGA.js} +4 -3
- package/chunks/{skill-settings-E2F7OCBL.js → skill-settings-6BFQWMW4.js} +16 -15
- package/chunks/{spawnChannel-Q2IQBHME.js → spawnChannel-FJXW35U7.js} +14 -12
- package/chunks/{standalone-update-NYYZEHLD.js → standalone-update-WVINHRNS.js} +14 -13
- package/chunks/{startInteractiveUI-IX6I3Y2Z.js → startInteractiveUI-YE57CJ57.js} +140 -138
- package/chunks/{stdioHelpers-HGIYTWAY.js → stdioHelpers-7A2EE64Z.js} +5 -3
- package/chunks/{task-create-2X4UP4F3.js → task-create-Q727MXHJ.js} +2 -2
- package/chunks/{task-list-WOLJPZ64.js → task-list-G6KPQ5JT.js} +1 -1
- package/chunks/{task-update-VDUSN36E.js → task-update-YB7PXO4R.js} +2 -2
- package/chunks/{team-create-UTRVUEDA.js → team-create-GNC7NFY6.js} +11 -10
- package/chunks/{team-delete-D2VMSDOT.js → team-delete-GDO7H2T4.js} +1 -1
- package/chunks/{team-plan-approval-YZNB4U5U.js → team-plan-approval-ECALJLIO.js} +11 -10
- package/chunks/{terminal-image-renderer-QRSCS2BE.js → terminal-image-renderer-II74TFVW.js} +11 -10
- package/chunks/{theme-manager-EKZBY34I.js → theme-manager-2MGEDD22.js} +11 -10
- package/chunks/{tool-search-N2R7LVMC.js → tool-search-S6LRRACA.js} +3 -2
- package/chunks/{total-session-admission-HBIYARPO.js → total-session-admission-7WVAWQPU.js} +17 -15
- package/chunks/{trustedFolders-ZQLYRCSY.js → trustedFolders-NFS4KHO4.js} +13 -12
- package/chunks/{update-relaunch-PJWXMPCR.js → update-relaunch-Q5HLZ6UW.js} +6 -6
- package/chunks/{updateCheck-ZXRCGY66.js → updateCheck-UOVZSTP7.js} +15 -14
- package/chunks/{useAutoAcceptIndicator-ZYQW5SGJ.js → useAutoAcceptIndicator-PC6MOJCO.js} +19 -18
- package/chunks/{validateNonInterActiveAuth-M7J7OTRH.js → validateNonInterActiveAuth-YMQP3ZM7.js} +44 -42
- package/chunks/{version-2AOHMPK3.js → version-T4AQFZJH.js} +1 -1
- package/chunks/{web-fetch-DS34CJ3R.js → web-fetch-JQCJHEEX.js} +3 -2
- package/chunks/{web-search-ITFPD7V4.js → web-search-QGZ2KY4G.js} +4 -3
- package/chunks/{workflow-LZQ4PGNS.js → workflow-YIT27YWZ.js} +12 -11
- package/chunks/{workspace-providers-status-ZPTLKOBM.js → workspace-providers-status-FIDZQ2PL.js} +20 -19
- package/chunks/{workspace-registration-store-OTFKSGG7.js → workspace-registration-store-RCSPE4DU.js} +1 -1
- package/chunks/{workspace-registry-YZ3OXPHP.js → workspace-registry-5PEUCY6E.js} +17 -15
- package/chunks/{workspace-service-OCZXOOSQ.js → workspace-service-LANDVPL7.js} +21 -20
- package/chunks/{workspace-skills-status-K2ALGUCD.js → workspace-skills-status-2IQVJNIN.js} +18 -17
- package/chunks/{workspace-trust-reconciler-KMRZISJP.js → workspace-trust-reconciler-CZPZZCZC.js} +26 -24
- package/chunks/{write-file-AWBI4GJS.js → write-file-G5VNGCOG.js} +11 -10
- package/chunks/{zoom-image-NHKN6F77.js → zoom-image-6RBLD7X6.js} +3 -2
- package/cli-entry.js +14 -0
- package/cli.js +19 -15
- package/package.json +3 -3
- package/web-shell/assets/{arc-Dpg66jw7.js → arc-B-Vtkp1W.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BJ4FIBxN.js → architectureDiagram-3BPJPVTR-qmTXIj64.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-VXmYdtYT.js → blockDiagram-GPEHLZMM-ZlnXEtdP.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BNLDb8FE.js → c4Diagram-AAUBKEIU-Wyoirf6Z.js} +1 -1
- package/web-shell/assets/channel-DXaHnfjS.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DR5yHxr0.js → chunk-2J33WTMH-WQwbq9d8.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-Czkq8UZU.js → chunk-4BX2VUAB-DQKnAXC4.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DugUgM6s.js → chunk-55IACEB6-DIdgXNcO.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Dw6quA1K.js → chunk-727SXJPM-CUwGOLEd.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BoVYOTTz.js → chunk-AQP2D5EJ-CCBGZFZ4.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4--Amcse-j.js → chunk-FMBD7UC4-DMGXProk.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-ajaEYAC8.js → chunk-ND2GUHAM-yejcFqsh.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-CUNDZ7im.js → chunk-QZHKN3VN-DxCyqTf7.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BigU82A0.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BigU82A0.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BnfkD-m1.js → cose-bilkent-S5V4N54A-DOrF3cg_.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BuUdFk7Z.js → dagre-BM42HDAG-Be6CdYQ_.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-B2ZXxoab.js → diagram-2AECGRRQ-B_Rjsft2.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BsgOICzM.js → diagram-5GNKFQAL-BvQbKSm1.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-DTTjG6U-.js → diagram-KO2AKTUF-BsdmMdpS.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-temLf1x7.js → diagram-LMA3HP47-CrQlBaNr.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CRFjScs2.js → diagram-OG6HWLK6-aB1MD_DL.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-D4oaY-rQ.js → erDiagram-TEJ5UH35-F-eUUn9n.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BqG8B49b.js → flowDiagram-I6XJVG4X-DY_d8lUK.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-DffQBdd5.js → ganttDiagram-6RSMTGT7-Dqu7KBPg.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CMDPfseF.js → gitGraphDiagram-PVQCEYII-2IkU_VEj.js} +1 -1
- package/web-shell/assets/{index-qTQR_smP.js → index-BuSbqggh.js} +1 -1
- package/web-shell/assets/index-DrfC2e9s.js +1768 -0
- package/web-shell/assets/index-QQlUCJGg.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-Cn3T83MA.js → infoDiagram-5YYISTIA-C4orwzPw.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-ijFs7e25.js → ishikawaDiagram-YF4QCWOH-fXUEfef_.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CINTv8VB.js → journeyDiagram-JHISSGLW-Bs0I1_J5.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-CMGRZCxx.js → kanban-definition-UN3LZRKU-BPRj1dw_.js} +1 -1
- package/web-shell/assets/{linear-Co-2_37d.js → linear-DFS6ZDpW.js} +1 -1
- package/web-shell/assets/{mermaid.core-DijbyaN5.js → mermaid.core-CZxjWMaO.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-k_sDYDPZ.js → mindmap-definition-RKZ34NQL-Dsr3PmNs.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-CG-oz8V3.js → pieDiagram-4H26LBE5-D5Ngpz5Y.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Baq7HIG2.js → quadrantDiagram-W4KKPZXB-WJK9I25z.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CDM3ZvBt.js → requirementDiagram-4Y6WPE33-CmrYcwOH.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C2dJbWKN.js → sankeyDiagram-5OEKKPKP-7SjCc4Mv.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Cf1_h59p.js → sequenceDiagram-3UESZ5HK-Dl9E0IRM.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CI5clUEc.js → stateDiagram-AJRCARHV-CRRio7yV.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-1atT7XaU.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-B2O8cAZX.js → timeline-definition-PNZ67QCA-DVyXjjfq.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BLsJ_h9s.js → vennDiagram-CIIHVFJN-Nb2Lckzq.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BlPU4FTA.js → wardley-L42UT6IY-DuL_otIP.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D_U-RdU4.js → wardleyDiagram-YWT4CUSO-DVI9Q4Aa.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-BynXGSTl.js → xychartDiagram-2RQKCTM6-BNjAm7KD.js} +1 -1
- package/web-shell/index.html +2 -2
- package/bundled/review/DESIGN.md +0 -724
- package/chunks/create-sub-session-2B3JENWD.js +0 -400
- package/web-shell/assets/channel-Bd9wOnaA.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-XhCT8FE3.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-XhCT8FE3.js +0 -1
- package/web-shell/assets/index-2F4RsNzd.js +0 -1756
- package/web-shell/assets/index-CaucmEO_.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDc8asKD.js +0 -1
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
LIVE_HOST_PROTOCOL_VERSION
|
|
5
|
+
} from "./chunk-NKLP3DCK.js";
|
|
6
|
+
import {
|
|
7
|
+
require_proper_lockfile
|
|
8
|
+
} from "./chunk-KRXPRVGL.js";
|
|
9
|
+
import {
|
|
10
|
+
init_esbuild_shims
|
|
11
|
+
} from "./chunk-5O2XNYP6.js";
|
|
12
|
+
import {
|
|
13
|
+
__name,
|
|
14
|
+
__toESM
|
|
15
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
16
|
+
|
|
17
|
+
// packages/cli/src/serve/live/discovery.ts
|
|
18
|
+
init_esbuild_shims();
|
|
19
|
+
var import_proper_lockfile = __toESM(require_proper_lockfile(), 1);
|
|
20
|
+
import { randomUUID } from "node:crypto";
|
|
21
|
+
import * as fs from "node:fs/promises";
|
|
22
|
+
import { isIP } from "node:net";
|
|
23
|
+
import { homedir } from "node:os";
|
|
24
|
+
import * as path from "node:path";
|
|
25
|
+
var LIVE_DISCOVERY_RELATIVE_PATH = path.join("live", "daemon.json");
|
|
26
|
+
var MAX_DISCOVERY_BYTES = 16 * 1024;
|
|
27
|
+
var NONCE_PATTERN = /^[A-Za-z0-9_-]{16,256}$/;
|
|
28
|
+
var LOCK_OPTIONS = {
|
|
29
|
+
realpath: false,
|
|
30
|
+
stale: 1e4,
|
|
31
|
+
update: 2e3,
|
|
32
|
+
retries: {
|
|
33
|
+
retries: 120,
|
|
34
|
+
minTimeout: 10,
|
|
35
|
+
maxTimeout: 100,
|
|
36
|
+
factor: 1.2,
|
|
37
|
+
randomize: true
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var LiveDiscoveryOwnerActiveError = class extends Error {
|
|
41
|
+
constructor(ownerPid) {
|
|
42
|
+
super(`Live discovery is owned by active daemon pid ${ownerPid}.`);
|
|
43
|
+
this.ownerPid = ownerPid;
|
|
44
|
+
this.name = "LiveDiscoveryOwnerActiveError";
|
|
45
|
+
}
|
|
46
|
+
static {
|
|
47
|
+
__name(this, "LiveDiscoveryOwnerActiveError");
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
function getStableLiveDiscoveryBaseDir(homeDirectory = homedir()) {
|
|
51
|
+
return path.join(homeDirectory, ".qwen");
|
|
52
|
+
}
|
|
53
|
+
__name(getStableLiveDiscoveryBaseDir, "getStableLiveDiscoveryBaseDir");
|
|
54
|
+
function getLiveDiscoveryPath(runtimeBaseDir) {
|
|
55
|
+
return path.join(runtimeBaseDir, LIVE_DISCOVERY_RELATIVE_PATH);
|
|
56
|
+
}
|
|
57
|
+
__name(getLiveDiscoveryPath, "getLiveDiscoveryPath");
|
|
58
|
+
function assertSafeRecord(record) {
|
|
59
|
+
if (typeof record.url !== "string" || typeof record.instanceNonce !== "string" || record.token !== void 0 && typeof record.token !== "string") {
|
|
60
|
+
throw new Error("Live discovery record is invalid.");
|
|
61
|
+
}
|
|
62
|
+
let url;
|
|
63
|
+
try {
|
|
64
|
+
url = new URL(record.url);
|
|
65
|
+
} catch {
|
|
66
|
+
throw new Error("Live discovery URL is invalid.");
|
|
67
|
+
}
|
|
68
|
+
const hostname = url.hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
69
|
+
const loopback = hostname === "localhost" || hostname === "::1" || isIP(hostname) === 4 && hostname.startsWith("127.");
|
|
70
|
+
if (url.protocol !== "http:" && url.protocol !== "https:" || !loopback || url.username.length > 0 || url.password.length > 0) {
|
|
71
|
+
throw new Error("Live discovery URL must be a loopback HTTP URL.");
|
|
72
|
+
}
|
|
73
|
+
if (!Number.isSafeInteger(record.protocolVersion) || record.protocolVersion <= 0 || !Number.isSafeInteger(record.pid) || record.pid <= 0 || !NONCE_PATTERN.test(record.instanceNonce) || record.token !== void 0 && (record.token.length === 0 || record.token.length > 4096)) {
|
|
74
|
+
throw new Error("Live discovery record is invalid.");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
__name(assertSafeRecord, "assertSafeRecord");
|
|
78
|
+
function assertRecord(record) {
|
|
79
|
+
assertSafeRecord(record);
|
|
80
|
+
if (record.protocolVersion !== LIVE_HOST_PROTOCOL_VERSION) {
|
|
81
|
+
throw new Error("Live discovery record is invalid.");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
__name(assertRecord, "assertRecord");
|
|
85
|
+
function processIsAlive(pid) {
|
|
86
|
+
try {
|
|
87
|
+
process.kill(pid, 0);
|
|
88
|
+
return true;
|
|
89
|
+
} catch (error) {
|
|
90
|
+
return error.code !== "ESRCH";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
__name(processIsAlive, "processIsAlive");
|
|
94
|
+
async function readExistingRecord(filePath) {
|
|
95
|
+
let stat;
|
|
96
|
+
try {
|
|
97
|
+
stat = await fs.lstat(filePath);
|
|
98
|
+
} catch (error) {
|
|
99
|
+
if (error.code === "ENOENT") return void 0;
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
if (!stat.isFile() || stat.isSymbolicLink() || (stat.mode & 511) !== 384 || typeof process.getuid === "function" && stat.uid !== process.getuid() || stat.size <= 0 || stat.size > MAX_DISCOVERY_BYTES) {
|
|
103
|
+
throw new Error("Existing Live discovery record is invalid.");
|
|
104
|
+
}
|
|
105
|
+
let parsed;
|
|
106
|
+
try {
|
|
107
|
+
parsed = JSON.parse(await fs.readFile(filePath, "utf8"));
|
|
108
|
+
} catch {
|
|
109
|
+
throw new Error("Existing Live discovery record is invalid.");
|
|
110
|
+
}
|
|
111
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
112
|
+
throw new Error("Existing Live discovery record is invalid.");
|
|
113
|
+
}
|
|
114
|
+
const record = parsed;
|
|
115
|
+
try {
|
|
116
|
+
assertSafeRecord(record);
|
|
117
|
+
} catch {
|
|
118
|
+
throw new Error("Existing Live discovery record is invalid.");
|
|
119
|
+
}
|
|
120
|
+
return record;
|
|
121
|
+
}
|
|
122
|
+
__name(readExistingRecord, "readExistingRecord");
|
|
123
|
+
async function prepareDirectory(runtimeBaseDir) {
|
|
124
|
+
const directory = path.dirname(getLiveDiscoveryPath(runtimeBaseDir));
|
|
125
|
+
await fs.mkdir(directory, { recursive: true, mode: 448 });
|
|
126
|
+
const stat = await fs.lstat(directory);
|
|
127
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
128
|
+
throw new Error("Live discovery directory is not a regular directory.");
|
|
129
|
+
}
|
|
130
|
+
await fs.chmod(directory, 448);
|
|
131
|
+
return directory;
|
|
132
|
+
}
|
|
133
|
+
__name(prepareDirectory, "prepareDirectory");
|
|
134
|
+
async function writeLiveDiscoveryFile(runtimeBaseDir, record, options = {}) {
|
|
135
|
+
assertRecord(record);
|
|
136
|
+
const directory = await prepareDirectory(runtimeBaseDir);
|
|
137
|
+
const filePath = getLiveDiscoveryPath(runtimeBaseDir);
|
|
138
|
+
const temporaryPath = path.join(
|
|
139
|
+
directory,
|
|
140
|
+
`.daemon.${process.pid}.${randomUUID()}.tmp`
|
|
141
|
+
);
|
|
142
|
+
const release = await import_proper_lockfile.default.lock(directory, LOCK_OPTIONS);
|
|
143
|
+
let handle;
|
|
144
|
+
try {
|
|
145
|
+
const current = await readExistingRecord(filePath);
|
|
146
|
+
if (current && (current.pid !== record.pid || current.instanceNonce !== record.instanceNonce) && (options.isProcessAlive ?? processIsAlive)(current.pid)) {
|
|
147
|
+
throw new LiveDiscoveryOwnerActiveError(current.pid);
|
|
148
|
+
}
|
|
149
|
+
handle = await fs.open(temporaryPath, "wx", 384);
|
|
150
|
+
const serialized = `${JSON.stringify(record)}
|
|
151
|
+
`;
|
|
152
|
+
if (Buffer.byteLength(serialized) > MAX_DISCOVERY_BYTES) {
|
|
153
|
+
throw new Error("Live discovery record is too large.");
|
|
154
|
+
}
|
|
155
|
+
await handle.writeFile(serialized, "utf8");
|
|
156
|
+
await handle.sync();
|
|
157
|
+
await handle.chmod(384);
|
|
158
|
+
await handle.close();
|
|
159
|
+
handle = void 0;
|
|
160
|
+
await fs.rename(temporaryPath, filePath);
|
|
161
|
+
await fs.chmod(filePath, 384);
|
|
162
|
+
return filePath;
|
|
163
|
+
} finally {
|
|
164
|
+
await handle?.close().catch(() => {
|
|
165
|
+
});
|
|
166
|
+
await fs.unlink(temporaryPath).catch(() => {
|
|
167
|
+
});
|
|
168
|
+
await release().catch(() => {
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
__name(writeLiveDiscoveryFile, "writeLiveDiscoveryFile");
|
|
173
|
+
async function removeLiveDiscoveryFile(runtimeBaseDir, owner) {
|
|
174
|
+
if (!NONCE_PATTERN.test(owner.instanceNonce) || !Number.isSafeInteger(owner.pid) || owner.pid <= 0) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
const directory = await prepareDirectory(runtimeBaseDir);
|
|
178
|
+
const filePath = getLiveDiscoveryPath(runtimeBaseDir);
|
|
179
|
+
const release = await import_proper_lockfile.default.lock(directory, LOCK_OPTIONS);
|
|
180
|
+
try {
|
|
181
|
+
let stat;
|
|
182
|
+
try {
|
|
183
|
+
stat = await fs.lstat(filePath);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
if (error.code === "ENOENT") return false;
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size <= 0 || stat.size > MAX_DISCOVERY_BYTES) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
let current;
|
|
192
|
+
try {
|
|
193
|
+
current = JSON.parse(await fs.readFile(filePath, "utf8"));
|
|
194
|
+
} catch {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
if (typeof current !== "object" || current === null || Array.isArray(current) || current.instanceNonce !== owner.instanceNonce || current.pid !== owner.pid) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
await fs.unlink(filePath);
|
|
201
|
+
return true;
|
|
202
|
+
} finally {
|
|
203
|
+
await release().catch(() => {
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
__name(removeLiveDiscoveryFile, "removeLiveDiscoveryFile");
|
|
208
|
+
export {
|
|
209
|
+
LIVE_DISCOVERY_RELATIVE_PATH,
|
|
210
|
+
LiveDiscoveryOwnerActiveError,
|
|
211
|
+
getLiveDiscoveryPath,
|
|
212
|
+
getStableLiveDiscoveryBaseDir,
|
|
213
|
+
removeLiveDiscoveryFile,
|
|
214
|
+
writeLiveDiscoveryFile
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* @license
|
|
218
|
+
* Copyright 2026 Qwen Team
|
|
219
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
220
|
+
*/
|
|
@@ -127,6 +127,7 @@ init_esbuild_shims();
|
|
|
127
127
|
// packages/channels/github/dist/GithubAdapter.js
|
|
128
128
|
init_esbuild_shims();
|
|
129
129
|
import { createHash, randomUUID } from "node:crypto";
|
|
130
|
+
import { execFile } from "node:child_process";
|
|
130
131
|
import { appendFileSync, chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
131
132
|
import { dirname, join } from "node:path";
|
|
132
133
|
import process2 from "node:process";
|
|
@@ -3804,6 +3805,69 @@ function stripBotMention(text, username) {
|
|
|
3804
3805
|
__name(stripBotMention, "stripBotMention");
|
|
3805
3806
|
|
|
3806
3807
|
// packages/channels/github/dist/GithubAdapter.js
|
|
3808
|
+
var GH_AUTH_TIMEOUT_MS = 1e4;
|
|
3809
|
+
var GH_AUTH_MAX_BUFFER = 64 * 1024;
|
|
3810
|
+
var GH_HOSTNAME_RE = /^[A-Za-z0-9.-]+$/;
|
|
3811
|
+
function ghHostname(channelName, baseUrl) {
|
|
3812
|
+
let url;
|
|
3813
|
+
try {
|
|
3814
|
+
url = new URL(baseUrl);
|
|
3815
|
+
} catch {
|
|
3816
|
+
throw new Error(`[Channel:${channelName}] baseUrl is not a valid URL: ${baseUrl}`);
|
|
3817
|
+
}
|
|
3818
|
+
if (!url.hostname) {
|
|
3819
|
+
throw new Error(`[Channel:${channelName}] baseUrl is not a valid URL: ${baseUrl}`);
|
|
3820
|
+
}
|
|
3821
|
+
if (url.protocol !== "https:") {
|
|
3822
|
+
throw new Error(`[Channel:${channelName}] local GitHub CLI authentication requires an HTTPS baseUrl.`);
|
|
3823
|
+
}
|
|
3824
|
+
const hostname = url.hostname === "api.github.com" ? "github.com" : url.hostname;
|
|
3825
|
+
if (hostname.startsWith("-") || !GH_HOSTNAME_RE.test(hostname)) {
|
|
3826
|
+
throw new Error(`[Channel:${channelName}] baseUrl hostname is invalid: ${hostname}`);
|
|
3827
|
+
}
|
|
3828
|
+
return hostname;
|
|
3829
|
+
}
|
|
3830
|
+
__name(ghHostname, "ghHostname");
|
|
3831
|
+
function resolveGhAuthToken(channelName, hostname) {
|
|
3832
|
+
const env = { ...process2.env };
|
|
3833
|
+
delete env["GH_TOKEN"];
|
|
3834
|
+
delete env["GITHUB_TOKEN"];
|
|
3835
|
+
delete env["GH_ENTERPRISE_TOKEN"];
|
|
3836
|
+
delete env["GITHUB_ENTERPRISE_TOKEN"];
|
|
3837
|
+
return new Promise((resolve, reject) => {
|
|
3838
|
+
execFile("gh", ["auth", "token", "--hostname", hostname], {
|
|
3839
|
+
timeout: GH_AUTH_TIMEOUT_MS,
|
|
3840
|
+
maxBuffer: GH_AUTH_MAX_BUFFER,
|
|
3841
|
+
windowsHide: true,
|
|
3842
|
+
encoding: "utf8",
|
|
3843
|
+
env
|
|
3844
|
+
}, (error, stdout, stderr) => {
|
|
3845
|
+
if (error) {
|
|
3846
|
+
const code = error.code;
|
|
3847
|
+
let message;
|
|
3848
|
+
if (code === "ENOENT") {
|
|
3849
|
+
message = "GitHub CLI (gh) is not installed on the daemon host or is not on the daemon PATH.";
|
|
3850
|
+
} else if (error.killed === true) {
|
|
3851
|
+
message = `GitHub CLI authentication lookup for ${hostname} timed out after ${GH_AUTH_TIMEOUT_MS / 1e3} seconds.`;
|
|
3852
|
+
} else if (typeof code === "number") {
|
|
3853
|
+
message = `No GitHub CLI authentication is available for ${hostname}. Run \`gh auth login --hostname ${hostname}\` on the daemon host. gh config dir: ${env["GH_CONFIG_DIR"] || (env["XDG_CONFIG_HOME"] ? `${env["XDG_CONFIG_HOME"]}/gh` : process2.platform === "win32" && env["APPDATA"] ? `${env["APPDATA"]}\\GitHub CLI` : env["HOME"] ? `${env["HOME"]}/.config/gh` : "unknown")}`;
|
|
3854
|
+
} else {
|
|
3855
|
+
message = `GitHub CLI authentication lookup for ${hostname} failed to execute.`;
|
|
3856
|
+
}
|
|
3857
|
+
const stderrHint = stderr ? sanitizeLogText(stderr, 256).trim() : "";
|
|
3858
|
+
reject(new Error(`[Channel:${channelName}] ${message}${stderrHint ? ` gh stderr: ${stderrHint}` : ""}`));
|
|
3859
|
+
return;
|
|
3860
|
+
}
|
|
3861
|
+
const token = stdout.trim();
|
|
3862
|
+
if (!token) {
|
|
3863
|
+
reject(new Error(`[Channel:${channelName}] GitHub CLI returned an empty token for ${hostname}. Run \`gh auth login --hostname ${hostname}\` on the daemon host.`));
|
|
3864
|
+
return;
|
|
3865
|
+
}
|
|
3866
|
+
resolve(token);
|
|
3867
|
+
});
|
|
3868
|
+
});
|
|
3869
|
+
}
|
|
3870
|
+
__name(resolveGhAuthToken, "resolveGhAuthToken");
|
|
3807
3871
|
var KNOWN_NOTIFICATION_REASONS = /* @__PURE__ */ new Set([
|
|
3808
3872
|
"mention",
|
|
3809
3873
|
"review_requested",
|
|
@@ -3962,15 +4026,33 @@ var GithubChannel = class extends PollingChannelBase {
|
|
|
3962
4026
|
const cfg = this.config;
|
|
3963
4027
|
this.reasonFilter = normalizeReasonFilter(cfg, this.name);
|
|
3964
4028
|
const baseUrl = cfg.baseUrl || "https://api.github.com";
|
|
4029
|
+
const configuredToken = cfg.token?.trim() ?? "";
|
|
4030
|
+
if (cfg.useLocalGh !== void 0 && typeof cfg.useLocalGh !== "boolean") {
|
|
4031
|
+
throw new Error(`[Channel:${this.name}] useLocalGh must be a boolean.`);
|
|
4032
|
+
}
|
|
4033
|
+
if (!configuredToken && cfg.useLocalGh !== true) {
|
|
4034
|
+
throw new Error(`[Channel:${this.name}] configure a GitHub token or enable local GitHub CLI authentication.`);
|
|
4035
|
+
}
|
|
4036
|
+
let auth2 = configuredToken;
|
|
4037
|
+
let credential = "configured token";
|
|
4038
|
+
if (!configuredToken) {
|
|
4039
|
+
const hostname = ghHostname(this.name, baseUrl);
|
|
4040
|
+
auth2 = await resolveGhAuthToken(this.name, hostname);
|
|
4041
|
+
credential = `local gh credential for ${hostname}`;
|
|
4042
|
+
}
|
|
4043
|
+
process2.stderr.write(`[Channel:${this.name}] using ${credential}
|
|
4044
|
+
`);
|
|
3965
4045
|
this.webOrigin = baseUrl.replace(/\/api\/v3\/?$/, "").replace(/^https:\/\/api\.github\.com/, "https://github.com");
|
|
3966
4046
|
this.octokit = new Octokit2({
|
|
3967
|
-
auth:
|
|
4047
|
+
auth: auth2,
|
|
3968
4048
|
baseUrl,
|
|
3969
4049
|
...this.proxy ? { request: { agent: new import_https_proxy_agent.HttpsProxyAgent(this.proxy) } } : {}
|
|
3970
4050
|
});
|
|
3971
4051
|
try {
|
|
3972
4052
|
const { data } = await this.octokit.rest.users.getAuthenticated();
|
|
3973
4053
|
this.botUsername = data.login;
|
|
4054
|
+
process2.stderr.write(`[Channel:${this.name}] authenticated as "${sanitizeLogText(data.login, 64)}"
|
|
4055
|
+
`);
|
|
3974
4056
|
} catch (err) {
|
|
3975
4057
|
throw new Error(`[Channel:${this.name}] failed to resolve bot identity: ${err}`);
|
|
3976
4058
|
}
|
|
@@ -3979,7 +4061,7 @@ var GithubChannel = class extends PollingChannelBase {
|
|
|
3979
4061
|
const botUsername = this.botUsername?.toLowerCase();
|
|
3980
4062
|
if (this.config.senderPolicy === "allowlist" && botUsername && allowed.includes(botUsername)) {
|
|
3981
4063
|
if (allowed.every((user) => user === botUsername)) {
|
|
3982
|
-
throw new Error(`[Channel:${this.name}] GitHub allowlist only contains the authenticated GitHub account "${this.botUsername}", which cannot trigger this channel because self-authored comments are ignored. Use a separate bot-owned PAT and allowlist the operator account.`);
|
|
4064
|
+
throw new Error(`[Channel:${this.name}] GitHub allowlist only contains the authenticated GitHub account "${this.botUsername}", which cannot trigger this channel because self-authored comments are ignored. Use a separate bot account (or a separate bot-owned PAT) and allowlist the operator account.`);
|
|
3983
4065
|
}
|
|
3984
4066
|
process2.stderr.write(`[Channel:${this.name}] warning: authenticated GitHub account "${this.botUsername}" is allowlisted but cannot trigger this channel; use a separate operator account.
|
|
3985
4067
|
`);
|
|
@@ -5036,7 +5118,6 @@ ${buildTriggerGuidance(ctx.reason)}`;
|
|
|
5036
5118
|
var plugin = {
|
|
5037
5119
|
channelType: "github",
|
|
5038
5120
|
displayName: "GitHub",
|
|
5039
|
-
requiredConfigFields: ["token"],
|
|
5040
5121
|
envResolvableConfigFields: ["baseUrl"],
|
|
5041
5122
|
defaultSessionScope: "chat_thread",
|
|
5042
5123
|
management: {
|
|
@@ -5045,9 +5126,14 @@ var plugin = {
|
|
|
5045
5126
|
key: "token",
|
|
5046
5127
|
label: "Personal Access Token",
|
|
5047
5128
|
kind: "secret",
|
|
5048
|
-
required: true,
|
|
5049
5129
|
envResolvable: true,
|
|
5050
|
-
description: '
|
|
5130
|
+
description: 'Optional classic PAT with "notifications" scope. Overrides local gh authentication'
|
|
5131
|
+
},
|
|
5132
|
+
{
|
|
5133
|
+
key: "useLocalGh",
|
|
5134
|
+
label: "Use Local GitHub CLI Authentication",
|
|
5135
|
+
kind: "boolean",
|
|
5136
|
+
description: "Reuse the daemon host GitHub CLI login when no token is configured"
|
|
5051
5137
|
},
|
|
5052
5138
|
{
|
|
5053
5139
|
key: "baseUrl",
|
|
@@ -5116,7 +5202,14 @@ var plugin = {
|
|
|
5116
5202
|
}
|
|
5117
5203
|
]
|
|
5118
5204
|
}
|
|
5119
|
-
]
|
|
5205
|
+
],
|
|
5206
|
+
validateConfig: /* @__PURE__ */ __name((config) => {
|
|
5207
|
+
const token = typeof config["token"] === "string" ? config["token"].trim() : "";
|
|
5208
|
+
if (!token && config["useLocalGh"] !== true) {
|
|
5209
|
+
return "Channel requires a token or local GitHub CLI authentication (useLocalGh).";
|
|
5210
|
+
}
|
|
5211
|
+
return void 0;
|
|
5212
|
+
}, "validateConfig")
|
|
5120
5213
|
},
|
|
5121
5214
|
createChannel: /* @__PURE__ */ __name((name, config, bridge, options) => new GithubChannel(name, config, bridge, options), "createChannel")
|
|
5122
5215
|
};
|
|
@@ -8,26 +8,26 @@ import {
|
|
|
8
8
|
stopAndGetCapturedInput,
|
|
9
9
|
stopEarlyInputCapture
|
|
10
10
|
} from "./chunk-KVUBYJDM.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-A4VTILZT.js";
|
|
12
12
|
import "./chunk-GOFAQQZA.js";
|
|
13
13
|
import "./chunk-5M6IDOMF.js";
|
|
14
14
|
import "./chunk-TWPJO254.js";
|
|
15
15
|
import "./chunk-H6XPXXMH.js";
|
|
16
16
|
import "./chunk-Z7JILXGX.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-T5U6IM4C.js";
|
|
18
|
+
import "./chunk-TSERKWCX.js";
|
|
19
19
|
import "./chunk-33FNCQSY.js";
|
|
20
20
|
import "./chunk-6PVPNMXU.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-DIT4V3XH.js";
|
|
22
22
|
import "./chunk-IRH27ZC2.js";
|
|
23
23
|
import "./chunk-QHWCP53L.js";
|
|
24
24
|
import "./chunk-MOHAWIAW.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-3PRJYMXC.js";
|
|
26
26
|
import "./chunk-O6GEWCJA.js";
|
|
27
27
|
import "./chunk-T26EAKDL.js";
|
|
28
28
|
import "./chunk-ZPJWUGCS.js";
|
|
29
29
|
import "./chunk-CPBF7KYF.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-4S4OEQ6U.js";
|
|
31
31
|
import "./chunk-KRXPRVGL.js";
|
|
32
32
|
import "./chunk-A5YZ3FA2.js";
|
|
33
33
|
import "./chunk-YAVY33G4.js";
|
|
@@ -39,7 +39,7 @@ import "./chunk-WVAESIM6.js";
|
|
|
39
39
|
import "./chunk-K623ENWT.js";
|
|
40
40
|
import "./chunk-AQ37AY7B.js";
|
|
41
41
|
import "./chunk-432XCUHF.js";
|
|
42
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-HU5TUALO.js";
|
|
43
43
|
import "./chunk-XC656O42.js";
|
|
44
44
|
import "./chunk-NAVJD2PQ.js";
|
|
45
45
|
import "./chunk-QYPT3QUD.js";
|
|
@@ -48,19 +48,20 @@ import "./chunk-DGEIYUC3.js";
|
|
|
48
48
|
import "./chunk-MPHPFVKK.js";
|
|
49
49
|
import "./chunk-GLNBDYUX.js";
|
|
50
50
|
import "./chunk-DJ2GSRLV.js";
|
|
51
|
-
import "./chunk-
|
|
51
|
+
import "./chunk-QZKYZCN3.js";
|
|
52
52
|
import "./chunk-MGSSJT27.js";
|
|
53
53
|
import "./chunk-2J3OJGTL.js";
|
|
54
54
|
import "./chunk-P3QQPMQA.js";
|
|
55
55
|
import "./chunk-6O5DVH27.js";
|
|
56
56
|
import "./chunk-GLCZKT5V.js";
|
|
57
57
|
import "./chunk-2DNKEBXY.js";
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-PX5DNLSA.js";
|
|
59
|
+
import "./chunk-WOJZWRAZ.js";
|
|
59
60
|
import "./chunk-VGC4I5JJ.js";
|
|
60
61
|
import "./chunk-E4WHKETF.js";
|
|
61
62
|
import "./chunk-ZPPP6VCL.js";
|
|
62
63
|
import "./chunk-D7D7RXIJ.js";
|
|
63
|
-
import "./chunk-
|
|
64
|
+
import "./chunk-BOGOR4HB.js";
|
|
64
65
|
import "./chunk-46UV252V.js";
|
|
65
66
|
import "./chunk-ZBVS26BY.js";
|
|
66
67
|
import "./chunk-BFHXDAR7.js";
|
|
@@ -10,26 +10,26 @@ import {
|
|
|
10
10
|
getDiffStat,
|
|
11
11
|
needsUtf8Bom,
|
|
12
12
|
safeLiteralReplace
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-A4VTILZT.js";
|
|
14
14
|
import "./chunk-GOFAQQZA.js";
|
|
15
15
|
import "./chunk-5M6IDOMF.js";
|
|
16
16
|
import "./chunk-TWPJO254.js";
|
|
17
17
|
import "./chunk-H6XPXXMH.js";
|
|
18
18
|
import "./chunk-Z7JILXGX.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-T5U6IM4C.js";
|
|
20
|
+
import "./chunk-TSERKWCX.js";
|
|
21
21
|
import "./chunk-33FNCQSY.js";
|
|
22
22
|
import "./chunk-6PVPNMXU.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-DIT4V3XH.js";
|
|
24
24
|
import "./chunk-IRH27ZC2.js";
|
|
25
25
|
import "./chunk-QHWCP53L.js";
|
|
26
26
|
import "./chunk-MOHAWIAW.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-3PRJYMXC.js";
|
|
28
28
|
import "./chunk-O6GEWCJA.js";
|
|
29
29
|
import "./chunk-T26EAKDL.js";
|
|
30
30
|
import "./chunk-ZPJWUGCS.js";
|
|
31
31
|
import "./chunk-CPBF7KYF.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-4S4OEQ6U.js";
|
|
33
33
|
import "./chunk-KRXPRVGL.js";
|
|
34
34
|
import "./chunk-A5YZ3FA2.js";
|
|
35
35
|
import "./chunk-YAVY33G4.js";
|
|
@@ -41,7 +41,7 @@ import "./chunk-WVAESIM6.js";
|
|
|
41
41
|
import "./chunk-K623ENWT.js";
|
|
42
42
|
import "./chunk-AQ37AY7B.js";
|
|
43
43
|
import "./chunk-432XCUHF.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-HU5TUALO.js";
|
|
45
45
|
import "./chunk-XC656O42.js";
|
|
46
46
|
import "./chunk-NAVJD2PQ.js";
|
|
47
47
|
import "./chunk-QYPT3QUD.js";
|
|
@@ -50,7 +50,7 @@ import "./chunk-DGEIYUC3.js";
|
|
|
50
50
|
import "./chunk-MPHPFVKK.js";
|
|
51
51
|
import "./chunk-GLNBDYUX.js";
|
|
52
52
|
import "./chunk-DJ2GSRLV.js";
|
|
53
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-QZKYZCN3.js";
|
|
54
54
|
import "./chunk-MGSSJT27.js";
|
|
55
55
|
import "./chunk-2J3OJGTL.js";
|
|
56
56
|
import "./chunk-P3QQPMQA.js";
|
|
@@ -64,7 +64,8 @@ import {
|
|
|
64
64
|
getLanguageFromFilePath,
|
|
65
65
|
getSpecificMimeType,
|
|
66
66
|
logFileOperation
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-PX5DNLSA.js";
|
|
68
|
+
import "./chunk-WOJZWRAZ.js";
|
|
68
69
|
import "./chunk-VGC4I5JJ.js";
|
|
69
70
|
import {
|
|
70
71
|
isAnyAutoMemPath,
|
|
@@ -77,7 +78,7 @@ import {
|
|
|
77
78
|
ToolDisplayNames,
|
|
78
79
|
ToolNames
|
|
79
80
|
} from "./chunk-D7D7RXIJ.js";
|
|
80
|
-
import "./chunk-
|
|
81
|
+
import "./chunk-BOGOR4HB.js";
|
|
81
82
|
import "./chunk-46UV252V.js";
|
|
82
83
|
import "./chunk-ZBVS26BY.js";
|
|
83
84
|
import "./chunk-BFHXDAR7.js";
|
|
@@ -4,26 +4,26 @@ import {
|
|
|
4
4
|
GitWorktreeService,
|
|
5
5
|
writeWorktreeSession,
|
|
6
6
|
writeWorktreeSessionMarker
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-A4VTILZT.js";
|
|
8
8
|
import "./chunk-GOFAQQZA.js";
|
|
9
9
|
import "./chunk-5M6IDOMF.js";
|
|
10
10
|
import "./chunk-TWPJO254.js";
|
|
11
11
|
import "./chunk-H6XPXXMH.js";
|
|
12
12
|
import "./chunk-Z7JILXGX.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-T5U6IM4C.js";
|
|
14
|
+
import "./chunk-TSERKWCX.js";
|
|
15
15
|
import "./chunk-33FNCQSY.js";
|
|
16
16
|
import "./chunk-6PVPNMXU.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-DIT4V3XH.js";
|
|
18
18
|
import "./chunk-IRH27ZC2.js";
|
|
19
19
|
import "./chunk-QHWCP53L.js";
|
|
20
20
|
import "./chunk-MOHAWIAW.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-3PRJYMXC.js";
|
|
22
22
|
import "./chunk-O6GEWCJA.js";
|
|
23
23
|
import "./chunk-T26EAKDL.js";
|
|
24
24
|
import "./chunk-ZPJWUGCS.js";
|
|
25
25
|
import "./chunk-CPBF7KYF.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-4S4OEQ6U.js";
|
|
27
27
|
import "./chunk-KRXPRVGL.js";
|
|
28
28
|
import "./chunk-A5YZ3FA2.js";
|
|
29
29
|
import "./chunk-YAVY33G4.js";
|
|
@@ -35,7 +35,7 @@ import "./chunk-WVAESIM6.js";
|
|
|
35
35
|
import "./chunk-K623ENWT.js";
|
|
36
36
|
import "./chunk-AQ37AY7B.js";
|
|
37
37
|
import "./chunk-432XCUHF.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-HU5TUALO.js";
|
|
39
39
|
import "./chunk-XC656O42.js";
|
|
40
40
|
import "./chunk-NAVJD2PQ.js";
|
|
41
41
|
import "./chunk-QYPT3QUD.js";
|
|
@@ -44,14 +44,15 @@ import "./chunk-DGEIYUC3.js";
|
|
|
44
44
|
import "./chunk-MPHPFVKK.js";
|
|
45
45
|
import "./chunk-GLNBDYUX.js";
|
|
46
46
|
import "./chunk-DJ2GSRLV.js";
|
|
47
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-QZKYZCN3.js";
|
|
48
48
|
import "./chunk-MGSSJT27.js";
|
|
49
49
|
import "./chunk-2J3OJGTL.js";
|
|
50
50
|
import "./chunk-P3QQPMQA.js";
|
|
51
51
|
import "./chunk-6O5DVH27.js";
|
|
52
52
|
import "./chunk-GLCZKT5V.js";
|
|
53
53
|
import "./chunk-2DNKEBXY.js";
|
|
54
|
-
import "./chunk-
|
|
54
|
+
import "./chunk-PX5DNLSA.js";
|
|
55
|
+
import "./chunk-WOJZWRAZ.js";
|
|
55
56
|
import "./chunk-VGC4I5JJ.js";
|
|
56
57
|
import "./chunk-E4WHKETF.js";
|
|
57
58
|
import "./chunk-ZPPP6VCL.js";
|
|
@@ -61,7 +62,7 @@ import {
|
|
|
61
62
|
ToolDisplayNames,
|
|
62
63
|
ToolNames
|
|
63
64
|
} from "./chunk-D7D7RXIJ.js";
|
|
64
|
-
import "./chunk-
|
|
65
|
+
import "./chunk-BOGOR4HB.js";
|
|
65
66
|
import "./chunk-46UV252V.js";
|
|
66
67
|
import "./chunk-ZBVS26BY.js";
|
|
67
68
|
import "./chunk-BFHXDAR7.js";
|
|
@@ -2,26 +2,26 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
getPlanModeSystemReminder
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-A4VTILZT.js";
|
|
6
6
|
import "./chunk-GOFAQQZA.js";
|
|
7
7
|
import "./chunk-5M6IDOMF.js";
|
|
8
8
|
import "./chunk-TWPJO254.js";
|
|
9
9
|
import "./chunk-H6XPXXMH.js";
|
|
10
10
|
import "./chunk-Z7JILXGX.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-T5U6IM4C.js";
|
|
12
|
+
import "./chunk-TSERKWCX.js";
|
|
13
13
|
import "./chunk-33FNCQSY.js";
|
|
14
14
|
import "./chunk-6PVPNMXU.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-DIT4V3XH.js";
|
|
16
16
|
import "./chunk-IRH27ZC2.js";
|
|
17
17
|
import "./chunk-QHWCP53L.js";
|
|
18
18
|
import "./chunk-MOHAWIAW.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-3PRJYMXC.js";
|
|
20
20
|
import "./chunk-O6GEWCJA.js";
|
|
21
21
|
import "./chunk-T26EAKDL.js";
|
|
22
22
|
import "./chunk-ZPJWUGCS.js";
|
|
23
23
|
import "./chunk-CPBF7KYF.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-4S4OEQ6U.js";
|
|
25
25
|
import "./chunk-KRXPRVGL.js";
|
|
26
26
|
import "./chunk-A5YZ3FA2.js";
|
|
27
27
|
import "./chunk-YAVY33G4.js";
|
|
@@ -36,7 +36,7 @@ import "./chunk-WVAESIM6.js";
|
|
|
36
36
|
import "./chunk-K623ENWT.js";
|
|
37
37
|
import "./chunk-AQ37AY7B.js";
|
|
38
38
|
import "./chunk-432XCUHF.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-HU5TUALO.js";
|
|
40
40
|
import "./chunk-XC656O42.js";
|
|
41
41
|
import "./chunk-NAVJD2PQ.js";
|
|
42
42
|
import "./chunk-QYPT3QUD.js";
|
|
@@ -45,14 +45,15 @@ import "./chunk-DGEIYUC3.js";
|
|
|
45
45
|
import "./chunk-MPHPFVKK.js";
|
|
46
46
|
import "./chunk-GLNBDYUX.js";
|
|
47
47
|
import "./chunk-DJ2GSRLV.js";
|
|
48
|
-
import "./chunk-
|
|
48
|
+
import "./chunk-QZKYZCN3.js";
|
|
49
49
|
import "./chunk-MGSSJT27.js";
|
|
50
50
|
import "./chunk-2J3OJGTL.js";
|
|
51
51
|
import "./chunk-P3QQPMQA.js";
|
|
52
52
|
import "./chunk-6O5DVH27.js";
|
|
53
53
|
import "./chunk-GLCZKT5V.js";
|
|
54
54
|
import "./chunk-2DNKEBXY.js";
|
|
55
|
-
import "./chunk-
|
|
55
|
+
import "./chunk-PX5DNLSA.js";
|
|
56
|
+
import "./chunk-WOJZWRAZ.js";
|
|
56
57
|
import "./chunk-VGC4I5JJ.js";
|
|
57
58
|
import "./chunk-E4WHKETF.js";
|
|
58
59
|
import "./chunk-ZPPP6VCL.js";
|
|
@@ -62,7 +63,7 @@ import {
|
|
|
62
63
|
ToolDisplayNames,
|
|
63
64
|
ToolNames
|
|
64
65
|
} from "./chunk-D7D7RXIJ.js";
|
|
65
|
-
import "./chunk-
|
|
66
|
+
import "./chunk-BOGOR4HB.js";
|
|
66
67
|
import "./chunk-46UV252V.js";
|
|
67
68
|
import "./chunk-ZBVS26BY.js";
|
|
68
69
|
import "./chunk-BFHXDAR7.js";
|