@qwen-code/qwen-code 0.19.12 → 0.20.0-nightly.20260721.cda0e0348
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/settings.md +1 -1
- package/bundled/qc-helper/docs/features/commands.md +54 -0
- package/bundled/qc-helper/docs/integration-github-action.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +44 -6
- package/bundled/review/DESIGN.md +2 -2
- package/bundled/review/SKILL.md +13 -9
- package/chunks/{MaxSizedBox-QOXLJGAF.js → MaxSizedBox-EE76OHAP.js} +30 -27
- package/chunks/{StandaloneSessionPicker-FLV6CGYJ.js → StandaloneSessionPicker-WZH4PC3K.js} +50 -45
- package/chunks/{acpAgent-OB2CTF3P.js → acpAgent-2ATF4LMP.js} +437 -156
- package/chunks/{agent-CKSI7BTR.js → agent-KTOOFWMV.js} +22 -22
- package/chunks/{agent-headless-U36LIYTU.js → agent-headless-WVJCQ27D.js} +22 -22
- package/chunks/{anthropicContentGenerator-ZZRGFEES.js → anthropicContentGenerator-W4JLNYWQ.js} +6 -5
- package/chunks/{artifact-tool-PHO5XEGZ.js → artifact-tool-WBCAMD3O.js} +2 -2
- package/chunks/{askUserQuestion-CEPBT47X.js → askUserQuestion-6DZC4UV5.js} +2 -2
- package/chunks/{bridge-AIKTINJG.js → bridge-T4TLAZSJ.js} +25 -25
- package/chunks/build-SSCNEHZZ.js +62 -0
- package/chunks/{ca-2SL2BXTK.js → ca-ISKASTR5.js} +606 -200
- package/chunks/{channel-worker-group-NEUVTPB2.js → channel-worker-group-QZV2SP5U.js} +4 -4
- package/chunks/{channel-worker-manager-7CQVOVWV.js → channel-worker-manager-3GMAU45H.js} +4 -4
- package/chunks/{channel-worker-supervisor-3BU2KNCZ.js → channel-worker-supervisor-QCXSXCRY.js} +3 -3
- package/chunks/{chunk-6ETOSWAO.js → chunk-246TW4IX.js} +3 -3
- package/chunks/{chunk-2CCDMJM7.js → chunk-25Y6JSH2.js} +3 -3
- package/chunks/{chunk-XSEWNUMZ.js → chunk-2CWOJ2FA.js} +8 -8
- package/chunks/{chunk-UZC5VPOJ.js → chunk-2GFRA3MN.js} +3 -3
- package/chunks/chunk-2GOPPEHK.js +442 -0
- package/chunks/{chunk-MRE77ST5.js → chunk-2ITGJJE2.js} +69 -2216
- package/chunks/{chunk-BABX5XRO.js → chunk-2LI23QA6.js} +1 -1
- package/chunks/{chunk-EFAXBOQO.js → chunk-32F7BZSK.js} +7 -7
- package/chunks/chunk-43T5WDQ7.js +127 -0
- package/chunks/{chunk-DJ4VHAFJ.js → chunk-4CWPMWCD.js} +7 -3
- package/chunks/{chunk-GMUPIMHF.js → chunk-4RA7PWIY.js} +3 -3
- package/chunks/{chunk-6IITZE7O.js → chunk-5JX5EWR5.js} +7 -7
- package/chunks/{chunk-OBSLEYCD.js → chunk-5PZ6R37W.js} +29 -2
- package/chunks/{chunk-HTHUX2T5.js → chunk-5QWWOFGG.js} +0 -1
- package/chunks/{chunk-3DJY4IFO.js → chunk-5SCI6E3E.js} +1 -1
- package/chunks/{chunk-GSPWDTYY.js → chunk-5WG2K5RH.js} +53 -16
- package/chunks/{chunk-NPMVLWYL.js → chunk-5YVZ2XLV.js} +6 -6
- package/chunks/{chunk-TKASNYDS.js → chunk-6DHWO5ZF.js} +3 -3
- package/chunks/{chunk-4CHDYDG3.js → chunk-6EFTQYW7.js} +1 -1
- package/chunks/{chunk-RKUMFUFM.js → chunk-6MC5ASQK.js} +4 -4
- package/chunks/{chunk-HZ4M2UQD.js → chunk-6RVJRVQR.js} +1 -1
- package/chunks/{chunk-W6CQPLWM.js → chunk-6ZBPS62S.js} +1 -1
- package/chunks/chunk-7KGXAXF7.js +114 -0
- package/chunks/{chunk-PK7COE5O.js → chunk-ABIL4ZQU.js} +1 -1
- package/chunks/{chunk-OEHCAWUA.js → chunk-ACW3VNUE.js} +2 -2
- package/chunks/{chunk-APOFULHK.js → chunk-AWVS63WA.js} +7 -6
- package/chunks/{chunk-KGWA7XYL.js → chunk-AY3CSB6F.js} +6 -226
- package/chunks/{chunk-XAAEDML2.js → chunk-AYCDXHZB.js} +1 -1
- package/chunks/{chunk-42VIHAYT.js → chunk-B452RETY.js} +1 -1
- package/chunks/{chunk-VAJS2E2D.js → chunk-BDBMYST4.js} +1 -1
- package/chunks/{chunk-5N7M4XYN.js → chunk-BUKOHGBE.js} +5 -5
- package/chunks/{chunk-F2RR4HO2.js → chunk-BVLROR2T.js} +1 -1
- package/chunks/{chunk-WIYV7CSF.js → chunk-BWK3FX3K.js} +3 -3
- package/chunks/{chunk-UE5TZ55T.js → chunk-C27BYUX6.js} +29 -2
- package/chunks/{chunk-KRMARA3A.js → chunk-CG2HPAVD.js} +29 -13
- package/chunks/{chunk-UOA2IHRI.js → chunk-CPCVCKKF.js} +1 -1
- package/chunks/{chunk-HD6EGS5K.js → chunk-CUJX3F4X.js} +31 -6
- package/chunks/{chunk-4RPARQ5D.js → chunk-D2VIDMVM.js} +2 -2
- package/chunks/{chunk-PUKUUASO.js → chunk-DMRO4GU2.js} +1 -1
- package/chunks/{chunk-64GC5EMF.js → chunk-DZZIOIVF.js} +1 -1
- package/chunks/{chunk-FUSMC3SZ.js → chunk-E5QFCC4X.js} +13 -8
- package/chunks/{chunk-LKR7QQ63.js → chunk-EAUYY7SS.js} +3 -3
- package/chunks/{chunk-NE6HHLL3.js → chunk-EDMGFJ3E.js} +2 -2
- package/chunks/{chunk-J2MKYJKZ.js → chunk-EIAK6Q2B.js} +2 -2
- package/chunks/{chunk-WEPXQKGP.js → chunk-EZVDJFZ7.js} +1 -1
- package/chunks/{chunk-NALRQ3SG.js → chunk-FCUUJKZF.js} +394 -128
- package/chunks/{chunk-4XCVGEEX.js → chunk-FSL5W5TI.js} +3 -3
- package/chunks/{chunk-CHPQFLW6.js → chunk-FYA3Y5JR.js} +5 -5
- package/chunks/{chunk-V4PCIS25.js → chunk-FZVSFBNW.js} +69 -7
- package/chunks/{chunk-4MPYGENG.js → chunk-G45NOBV7.js} +6 -6
- package/chunks/{chunk-OSSDHJDU.js → chunk-G45X5TRN.js} +1 -1
- package/chunks/{chunk-3B6PSWHE.js → chunk-GH7OEOYU.js} +4 -4
- package/chunks/{chunk-KANTXY7B.js → chunk-GKY2OJ7R.js} +2 -2
- package/chunks/chunk-GMGDLUC7.js +37 -0
- package/chunks/{chunk-2476XGOU.js → chunk-GPILFVPY.js} +1 -1
- package/chunks/{chunk-EISVEV45.js → chunk-H24SOJIQ.js} +2 -2
- package/chunks/{chunk-J6NT5YTN.js → chunk-H2XVO6NE.js} +1 -289
- package/chunks/{chunk-QIFTJDBY.js → chunk-IM2A6YO3.js} +1 -1
- package/chunks/{chunk-R3EDIMYZ.js → chunk-IYZENXFW.js} +1 -1
- package/chunks/{chunk-LPHGXXZX.js → chunk-JD3MKVKL.js} +1 -1
- package/chunks/{chunk-NUHSLBJZ.js → chunk-JNWZQ27S.js} +15 -9
- package/chunks/{chunk-ETN2G32U.js → chunk-JPRLCXAO.js} +4 -4
- package/chunks/{chunk-WHQNBBWW.js → chunk-JQMBPGOU.js} +2 -2
- package/chunks/{chunk-5QSVANRT.js → chunk-JR6UJ24K.js} +2 -2
- package/chunks/{chunk-VLHQMOZK.js → chunk-JRW46GQX.js} +3 -3
- package/chunks/{chunk-DUR7BZYK.js → chunk-KRI4VCHX.js} +53 -28
- package/chunks/{chunk-PR5XQ73G.js → chunk-KTNIZG2C.js} +2 -2
- package/chunks/{chunk-QSG4ZFG4.js → chunk-KTUQMDEP.js} +1 -1
- package/chunks/{chunk-HVGJWOR6.js → chunk-L4YSPHR4.js} +2 -2
- package/chunks/{chunk-BEZPRKD3.js → chunk-LC5CAVMS.js} +160 -2
- package/chunks/{chunk-67Q33DQY.js → chunk-LLDGOZMJ.js} +4 -4
- package/chunks/{chunk-UCTCDLDS.js → chunk-LWQ4IAOJ.js} +136 -4
- package/chunks/{chunk-GEHSF7MS.js → chunk-NEEB7UEN.js} +2545 -1974
- package/chunks/{chunk-GCY7QTCE.js → chunk-NO6XTCYT.js} +1822 -424
- package/chunks/{chunk-JCJPZMJV.js → chunk-OOCI5VVU.js} +1 -1
- package/chunks/{chunk-XSPFQQRE.js → chunk-OONJNQ42.js} +3 -3
- package/chunks/{chunk-ANRANWVE.js → chunk-OP4MOGXF.js} +1 -1
- package/chunks/{chunk-GW7BONBU.js → chunk-OV2KB55J.js} +5 -5
- package/chunks/{chunk-CPU6I5YV.js → chunk-P64HXIC5.js} +115 -32
- package/chunks/{chunk-SGPFJMRP.js → chunk-PBATSWUQ.js} +1 -1
- package/chunks/{chunk-GXFYV7MP.js → chunk-PFKNXN67.js} +1106 -592
- package/chunks/{chunk-KNGZ5EYL.js → chunk-PYNCSQSI.js} +198 -120
- package/chunks/{chunk-I7RRHHYG.js → chunk-QKTHJXCS.js} +1 -1
- package/chunks/chunk-QKYTTBYW.js +624 -0
- package/chunks/{chunk-76BFY7AF.js → chunk-QTERJVPZ.js} +1 -6
- package/chunks/{chunk-W4UN42YP.js → chunk-R3VZNHRX.js} +85 -21
- package/chunks/chunk-R5N7NF5D.js +1187 -0
- package/chunks/{chunk-ZSDFNE6Y.js → chunk-RF34V75B.js} +3 -3
- package/chunks/{chunk-HCCR43AY.js → chunk-RFIAR4YL.js} +1 -1
- package/chunks/chunk-RS7MT2QG.js +305 -0
- package/chunks/{chunk-BKNPMEN6.js → chunk-RVLZCXEE.js} +162 -17
- package/chunks/chunk-SV5PQVQE.js +71 -0
- package/chunks/{chunk-3ESL7JXA.js → chunk-U4VGYZN7.js} +3 -3
- package/chunks/{chunk-4CA4WUMS.js → chunk-UEY4AYUL.js} +2 -2
- package/chunks/{chunk-ZGT623SG.js → chunk-USTF7LPI.js} +12 -12
- package/chunks/chunk-V7RNNPGC.js +44 -0
- package/chunks/{chunk-VEFR4XJQ.js → chunk-W3BKN3LO.js} +1 -1
- package/chunks/{chunk-4SJJT466.js → chunk-WQQDJE2P.js} +94 -177
- package/chunks/{chunk-KMJOMWHE.js → chunk-WRRF6TEQ.js} +1 -1
- package/chunks/{chunk-GLH2NTPB.js → chunk-XCHUDLER.js} +1 -1
- package/chunks/{chunk-7SX6WZNO.js → chunk-XVVH63JG.js} +3 -3
- package/chunks/{chunk-N47VAEAJ.js → chunk-XZOBDSDG.js} +2379 -1291
- package/chunks/chunk-YGIUIIIF.js +125 -0
- package/chunks/{chunk-335ECZTA.js → chunk-ZEOZL37W.js} +1 -1
- package/chunks/{computer-use-4PUGCUQK.js → computer-use-M6MGRJF2.js} +22 -22
- package/chunks/{config-utils-6PJUXHLI.js → config-utils-MOGE4EVB.js} +3 -3
- package/chunks/{contextCommand-C57KTWFV.js → contextCommand-HTRJJYNE.js} +25 -26
- package/chunks/{create-sub-session-5Q42XR6I.js → create-sub-session-MB35IHCR.js} +22 -22
- package/chunks/{create-sub-session-DIJOV6HV.js → create-sub-session-P26FE5GG.js} +2 -2
- package/chunks/{cron-create-X462ERYA.js → cron-create-JWFHBDRQ.js} +4 -4
- package/chunks/{cron-delete-SL5UJUM3.js → cron-delete-GDX4E26G.js} +4 -4
- package/chunks/{cron-list-3MD6SVXI.js → cron-list-USMAIWPT.js} +4 -4
- package/chunks/{daemon-ZW6LHOXT.js → daemon-KLPTQIE4.js} +287 -143
- package/chunks/{daemon-status-provider-YPV3UXHT.js → daemon-status-provider-67EKK6S3.js} +29 -29
- package/chunks/{dist-NUXRQHC5.js → dist-OAV7LJGJ.js} +1 -1
- package/chunks/{dist-XLE6ODMB.js → dist-OMW6WDEO.js} +1 -1
- package/chunks/{dist-J2H4KTLB.js → dist-PJLG2XYX.js} +1 -1
- package/chunks/{dist-IEQSDXS7.js → dist-UIFWIFRO.js} +2 -2
- package/chunks/{dist-IGZMVS5R.js → dist-VGJTZL4E.js} +33 -22
- package/chunks/{dist-3DQNQJ6H.js → dist-XBJVSWS2.js} +1 -1
- package/chunks/{earlyInputCapture-5VDWSYAM.js → earlyInputCapture-7QJX25AC.js} +23 -23
- package/chunks/{edit-GORZTX2U.js → edit-BTPQWGAA.js} +23 -23
- package/chunks/{enter-worktree-LJB2AW4L.js → enter-worktree-N3SEYKOO.js} +22 -22
- package/chunks/{enterPlanMode-LIIPP37T.js → enterPlanMode-TN2JV5MY.js} +28 -23
- package/chunks/{environment-HQ2UHJ35.js → environment-HP6RK262.js} +24 -24
- package/chunks/{errors-6JD5VMVQ.js → errors-VHGRDDOQ.js} +24 -24
- package/chunks/{exit-worktree-IEP2WHOV.js → exit-worktree-FI3SQY3U.js} +22 -22
- package/chunks/{exitPlanMode-U5Z6XBLO.js → exitPlanMode-NZWRVIIY.js} +22 -22
- package/chunks/{fast-path-HFKNMP23.js → fast-path-EGP7AXNR.js} +3 -2
- package/chunks/{gemini-C2SCJH3N.js → gemini-AN5YMD5O.js} +70 -68
- package/chunks/{geminiContentGenerator-ADZTXEKV.js → geminiContentGenerator-ABTMU4FE.js} +4 -4
- package/chunks/{glob-GOAPGD6G.js → glob-5YABOPJB.js} +22 -22
- package/chunks/{grep-HZLSTX7D.js → grep-U67FKUJT.js} +22 -22
- package/chunks/{handleAutoUpdate-UF74WGFE.js → handleAutoUpdate-OOKBP5VD.js} +27 -28
- package/chunks/{i18n-FMXIYUOC.js → i18n-GMQV324P.js} +23 -23
- package/chunks/{initializer-ERDBM3DU.js → initializer-NWALZGQ5.js} +28 -28
- package/chunks/{installationInfo-LROMXYLX.js → installationInfo-Y3M433E7.js} +25 -23
- package/chunks/{keychain-token-storage-K23CFKGN.js → keychain-token-storage-DWRJMNH3.js} +2 -2
- package/chunks/{list-6JPJROU5.js → list-CQDDWHTS.js} +30 -30
- package/chunks/{loadedSettingsAdapter-QCWYUBBF.js → loadedSettingsAdapter-I5KG37EI.js} +27 -27
- package/chunks/{loop-wakeup-6H7OENTB.js → loop-wakeup-5GLTUBHA.js} +5 -5
- package/chunks/{ls-APTSOOS5.js → ls-FHBY3Y7I.js} +4 -4
- package/chunks/{lsp-HPACPJAN.js → lsp-B6VMEW6Y.js} +2 -2
- package/chunks/{mcp-3P3KWYWO.js → mcp-24HHCBSP.js} +27 -27
- package/chunks/{monitor-LMYKCF6R.js → monitor-Z7NZNNRC.js} +22 -22
- package/chunks/nonInteractiveCli-GVF2XDJT.js +126 -0
- package/chunks/{notebook-edit-IBEOVZ6A.js → notebook-edit-GFOYAQAZ.js} +23 -23
- package/chunks/{openaiContentGenerator-42PZKET5.js → openaiContentGenerator-XAAYV6WR.js} +11 -11
- package/chunks/{pidfile-VTBDIGOH.js → pidfile-ILI37KRQ.js} +23 -23
- package/chunks/{processUtils-L7ZKOGDG.js → processUtils-LIPJMLVZ.js} +2 -2
- package/chunks/{qwenContentGenerator-VR2CNFGI.js → qwenContentGenerator-DLJ3KKGZ.js} +24 -24
- package/chunks/{qwenOAuth2-6LS2T3Q6.js → qwenOAuth2-J47FU5PW.js} +11 -11
- package/chunks/react-SG7JAQSZ.js +8 -0
- package/chunks/{read-file-VSKOE22I.js → read-file-LCQ2KNNP.js} +8 -8
- package/chunks/{read-mcp-resource-C6NT52T6.js → read-mcp-resource-AKCL7I43.js} +2 -2
- package/chunks/{record-artifact-ENCU7QCL.js → record-artifact-PEUB7727.js} +2 -2
- package/chunks/resumeHistoryUtils-PSCSAKA6.js +78 -0
- package/chunks/{ripGrep-5V5FLW2A.js → ripGrep-Y2XW4EFC.js} +22 -22
- package/chunks/{run-qwen-serve-LSOPP4R2.js → run-qwen-serve-DQ5ZIR36.js} +1459 -148
- package/chunks/{runtime-LT7R4CS5.js → runtime-6MQFF2A6.js} +33 -31
- package/chunks/{scheduler-YOWQ7KZP.js → scheduler-K4S7NY3G.js} +22 -22
- package/chunks/{send-message-5GZ4FX2V.js → send-message-3RHE7HSM.js} +3 -3
- package/chunks/{serve-VWLBXKGK.js → serve-JFAAPC5J.js} +27 -27
- package/chunks/{server-3RW3FYOH.js → server-QB6CHRZN.js} +866 -271
- package/chunks/{session-ZONXFOBQ.js → session-FKPVXAAB.js} +79 -163
- package/chunks/{settings-JC3VC53L.js → settings-CADELKSU.js} +26 -26
- package/chunks/{shell-2NGEMAVM.js → shell-EON6WVVH.js} +22 -22
- package/chunks/{skill-3U2T6H3E.js → skill-FKSYXJ5U.js} +10 -10
- package/chunks/{spawnChannel-QEAUPARQ.js → spawnChannel-VM5IHLJO.js} +24 -24
- package/chunks/{src-75ZPXO7B.js → src-Q4XB6SVD.js} +66 -22
- package/chunks/{standalone-update-UUJWJWYY.js → standalone-update-KGZHPBMA.js} +24 -24
- package/chunks/{startInteractiveUI-V7XISPQ6.js → startInteractiveUI-EYDJIIIZ.js} +5484 -2045
- package/chunks/{syntheticOutput-ULOVVLY4.js → syntheticOutput-FG5PQKIR.js} +3 -3
- package/chunks/{task-create-DUE2PMNI.js → task-create-HX32YXO7.js} +7 -7
- package/chunks/{task-list-WVPNX7BZ.js → task-list-QWSY4ZIU.js} +5 -5
- package/chunks/{task-stop-CPEQWOT6.js → task-stop-GWC6UWAL.js} +2 -2
- package/chunks/{task-update-HY2LNFFB.js → task-update-NCTAB73Q.js} +7 -7
- package/chunks/{team-create-R6AXDYPG.js → team-create-CYP3YKYT.js} +22 -22
- package/chunks/{team-delete-JJV6IUOA.js → team-delete-KK37HTOG.js} +5 -5
- package/chunks/{team-plan-approval-O2ZPPT64.js → team-plan-approval-5LXIFKNV.js} +22 -22
- package/chunks/{theme-manager-YIX2IC2D.js → theme-manager-QOUMDWMP.js} +23 -23
- package/chunks/{todoWrite-JHHIDOIV.js → todoWrite-ERCAMLFS.js} +4 -4
- package/chunks/{tool-search-5IE2VO7X.js → tool-search-Q27QHQU3.js} +9 -9
- package/chunks/{total-session-admission-K6APQYEF.js → total-session-admission-HWVCZ2WR.js} +25 -25
- package/chunks/{trustedFolders-GPSSPVBF.js → trustedFolders-C6664IQC.js} +23 -23
- package/chunks/{update-relaunch-4BVAPX6Y.js → update-relaunch-QC3E4FZW.js} +9 -9
- package/chunks/{updateCheck-AHTHWLAM.js → updateCheck-MVUKJMBX.js} +33 -26
- package/chunks/useAutoAcceptIndicator-J234IFIS.js +80 -0
- package/chunks/{validateNonInterActiveAuth-UKAPCWDM.js → validateNonInterActiveAuth-YPPEKX4N.js} +61 -63
- package/chunks/{version-EXGWKKQE.js → version-5IXFQ4PT.js} +1 -1
- package/chunks/{web-fetch-ZDNE6FF2.js → web-fetch-L62NQVKN.js} +10 -10
- package/chunks/{workflow-G7U6OQWS.js → workflow-6MHBBFQU.js} +23 -23
- package/chunks/{workspace-providers-status-W6CEA6YM.js → workspace-providers-status-ZTW2B5QU.js} +30 -30
- package/chunks/{workspace-registration-store-OGBMWCLC.js → workspace-registration-store-P6QHCSMU.js} +7 -1
- package/chunks/{workspace-registry-ZUWQM44P.js → workspace-registry-R54M5O3W.js} +25 -25
- package/chunks/{workspace-service-UXX5P7GU.js → workspace-service-WYLRGM4A.js} +32 -32
- package/chunks/{workspace-skills-status-635B5R7N.js → workspace-skills-status-NN5QFU3A.js} +28 -28
- package/chunks/{write-file-DR3HN7IH.js → write-file-EAT3CHUK.js} +23 -23
- package/cli.js +11 -11
- package/locales/ca.js +763 -201
- package/package.json +3 -3
- package/web-shell/assets/{arc-_dVIKMdB.js → arc-B0iTWRo2.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-MuN3nKpL.js → architectureDiagram-3BPJPVTR-DSQP4-9D.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BtmvJjzx.js → blockDiagram-GPEHLZMM-BNPVXVT3.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Dvi58_BU.js → c4Diagram-AAUBKEIU-DEHfJFiD.js} +1 -1
- package/web-shell/assets/channel-tVz-qNSq.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-YqxOVhS1.js → chunk-2J33WTMH-VZ0uL1p9.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DoBgbC9z.js → chunk-4BX2VUAB-D5TKmvwG.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-3NEQrBAr.js → chunk-55IACEB6-BDW1Lcq-.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DrCZQxp0.js → chunk-727SXJPM-Cj4h85iM.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-m_g3zjgv.js → chunk-AQP2D5EJ-5LeqiOhZ.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-D1_crABJ.js → chunk-FMBD7UC4-BaTgsco7.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BdhgVtBx.js → chunk-ND2GUHAM-t3uGlIUk.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BlmThhm-.js → chunk-QZHKN3VN-rOnNXL2Q.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CWuaBxYV.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CWuaBxYV.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-Cbjm_00Z.js → cose-bilkent-S5V4N54A-CcqXykgA.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-C39QNVgC.js → dagre-BM42HDAG-Dkjrchoy.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-DNXSAixC.js → diagram-2AECGRRQ-B6lcra9M.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BCbGUPEA.js → diagram-5GNKFQAL-bAIzq3PT.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-1eujKSDC.js → diagram-KO2AKTUF-G9MAZDNW.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DUMKXgql.js → diagram-LMA3HP47-DVLF1uWZ.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-BFktU3_u.js → diagram-OG6HWLK6-Cf7y20Tc.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-BvJC7DLk.js → erDiagram-TEJ5UH35-C7ETZB3o.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-Cgu3PlOt.js → flowDiagram-I6XJVG4X-Cl2xgL6J.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-DLNXN5Xh.js → ganttDiagram-6RSMTGT7-BgjbMs3q.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BQFRDv6R.js → gitGraphDiagram-PVQCEYII-JVX34Omm.js} +1 -1
- package/web-shell/assets/index-48bIcdqF.js +1197 -0
- package/web-shell/assets/{index-CdC3pjP3.js → index-BG7Zc4f_.js} +1 -1
- package/web-shell/assets/index-BI-JAO07.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DT2mOSvp.js → infoDiagram-5YYISTIA-3NYyMeZU.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-9fy_K4bd.js → ishikawaDiagram-YF4QCWOH-C03VCu-U.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CoGSEuhE.js → journeyDiagram-JHISSGLW-C9PuBRZW.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BP9hHYIj.js → kanban-definition-UN3LZRKU-C3LvioWR.js} +1 -1
- package/web-shell/assets/{linear-uIroDsmp.js → linear-Du6Yw8N_.js} +1 -1
- package/web-shell/assets/{mermaid.core-BUwoStsA.js → mermaid.core-BXY5D2-X.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DZB-FWim.js → mindmap-definition-RKZ34NQL-2UrHLaDp.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-YPptloKl.js → pieDiagram-4H26LBE5-dC03ml45.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-dgk3DSzm.js → quadrantDiagram-W4KKPZXB-CD6jARrp.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BH2En2i9.js → requirementDiagram-4Y6WPE33-BrK8aXfv.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BB98feeI.js → sankeyDiagram-5OEKKPKP-B5Vitki_.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CunAIGh8.js → sequenceDiagram-3UESZ5HK-CBy2t6Bo.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DTJs_-I2.js → stateDiagram-AJRCARHV-Enrka6T2.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DUtYfXpW.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-Cd4AN7O0.js → timeline-definition-PNZ67QCA-CwFq78ss.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-xIG-rUU9.js → vennDiagram-CIIHVFJN-BkOidM0g.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-D1UyjIcG.js → wardley-L42UT6IY-D_j13hQW.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BVM0Mb99.js → wardleyDiagram-YWT4CUSO-7EveB1w6.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-BX31JDSz.js → xychartDiagram-2RQKCTM6-DRkBhMXr.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-EDFD7VOX.js +0 -368
- package/chunks/chunk-GFYFLDEG.js +0 -709
- package/chunks/chunk-LUJQUNKY.js +0 -3288
- package/chunks/nonInteractiveCli-YURFHZV5.js +0 -129
- package/web-shell/assets/channel-Bi5TehaT.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-BKhhRdd1.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BKhhRdd1.js +0 -1
- package/web-shell/assets/index-C_ouplMQ.js +0 -1187
- package/web-shell/assets/index-XGDFJE-X.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DrfFMYta.js +0 -1
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
scanForSecrets
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NO6XTCYT.js";
|
|
6
6
|
import {
|
|
7
7
|
isTeamAutoMemPath
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JD3MKVKL.js";
|
|
9
9
|
import {
|
|
10
10
|
createDebugLogger
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-C27BYUX6.js";
|
|
12
12
|
import {
|
|
13
13
|
init_esbuild_shims
|
|
14
14
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
stringWidth
|
|
5
|
+
} from "./chunk-H2XVO6NE.js";
|
|
6
|
+
import {
|
|
7
|
+
ansiRegex,
|
|
8
|
+
init_ansi_regex,
|
|
9
|
+
stripAnsi
|
|
10
|
+
} from "./chunk-T4TZQJ7W.js";
|
|
11
|
+
import {
|
|
12
|
+
init_esbuild_shims
|
|
13
|
+
} from "./chunk-5O2XNYP6.js";
|
|
14
|
+
import {
|
|
15
|
+
__name
|
|
16
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
17
|
+
|
|
18
|
+
// packages/cli/src/ui/utils/textUtils.ts
|
|
19
|
+
init_esbuild_shims();
|
|
20
|
+
init_ansi_regex();
|
|
21
|
+
import { stripVTControlCharacters } from "node:util";
|
|
22
|
+
var getAsciiArtWidth = /* @__PURE__ */ __name((asciiArt) => {
|
|
23
|
+
if (!asciiArt) {
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
const lines = asciiArt.split("\n");
|
|
27
|
+
return Math.max(...lines.map((line) => getCachedStringWidth(line)));
|
|
28
|
+
}, "getAsciiArtWidth");
|
|
29
|
+
var codePointsCache = /* @__PURE__ */ new Map();
|
|
30
|
+
var MAX_STRING_LENGTH_TO_CACHE = 1e3;
|
|
31
|
+
function toCodePoints(str) {
|
|
32
|
+
let isAscii = true;
|
|
33
|
+
for (let i = 0; i < str.length; i++) {
|
|
34
|
+
if (str.charCodeAt(i) > 127) {
|
|
35
|
+
isAscii = false;
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (isAscii) {
|
|
40
|
+
return str.split("");
|
|
41
|
+
}
|
|
42
|
+
if (str.length <= MAX_STRING_LENGTH_TO_CACHE) {
|
|
43
|
+
const cached = codePointsCache.get(str);
|
|
44
|
+
if (cached) {
|
|
45
|
+
return cached;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const result = Array.from(str);
|
|
49
|
+
if (str.length <= MAX_STRING_LENGTH_TO_CACHE) {
|
|
50
|
+
codePointsCache.set(str, result);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
__name(toCodePoints, "toCodePoints");
|
|
55
|
+
function cpLen(str) {
|
|
56
|
+
return toCodePoints(str).length;
|
|
57
|
+
}
|
|
58
|
+
__name(cpLen, "cpLen");
|
|
59
|
+
function cpSlice(str, start, end) {
|
|
60
|
+
const arr = toCodePoints(str).slice(start, end);
|
|
61
|
+
return arr.join("");
|
|
62
|
+
}
|
|
63
|
+
__name(cpSlice, "cpSlice");
|
|
64
|
+
function stripUnsafeCharacters(str) {
|
|
65
|
+
const strippedAnsi = stripAnsi(str);
|
|
66
|
+
const strippedVT = stripVTControlCharacters(strippedAnsi);
|
|
67
|
+
return toCodePoints(strippedVT).filter((char) => {
|
|
68
|
+
const code = char.codePointAt(0);
|
|
69
|
+
if (code === void 0) return false;
|
|
70
|
+
if (code === 9 || code === 10 || code === 13) return true;
|
|
71
|
+
if (code >= 0 && code <= 31) return false;
|
|
72
|
+
if (code >= 128 && code <= 159) return false;
|
|
73
|
+
return true;
|
|
74
|
+
}).join("");
|
|
75
|
+
}
|
|
76
|
+
__name(stripUnsafeCharacters, "stripUnsafeCharacters");
|
|
77
|
+
var stringWidthCache = /* @__PURE__ */ new Map();
|
|
78
|
+
var getCachedStringWidth = /* @__PURE__ */ __name((str) => {
|
|
79
|
+
if (/^[\x20-\x7E]*$/.test(str)) {
|
|
80
|
+
return str.length;
|
|
81
|
+
}
|
|
82
|
+
if (stringWidthCache.has(str)) {
|
|
83
|
+
return stringWidthCache.get(str);
|
|
84
|
+
}
|
|
85
|
+
const width = stringWidth(str);
|
|
86
|
+
stringWidthCache.set(str, width);
|
|
87
|
+
return width;
|
|
88
|
+
}, "getCachedStringWidth");
|
|
89
|
+
var graphemeSegmenter = new Intl.Segmenter(void 0, {
|
|
90
|
+
granularity: "grapheme"
|
|
91
|
+
});
|
|
92
|
+
function truncateToWidth(text, maxWidth) {
|
|
93
|
+
if (maxWidth <= 0) {
|
|
94
|
+
return "";
|
|
95
|
+
}
|
|
96
|
+
if (getCachedStringWidth(text) <= maxWidth) {
|
|
97
|
+
return text;
|
|
98
|
+
}
|
|
99
|
+
const ellipsis = "\u2026";
|
|
100
|
+
const budget = Math.max(0, maxWidth - getCachedStringWidth(ellipsis));
|
|
101
|
+
let width = 0;
|
|
102
|
+
let result = "";
|
|
103
|
+
for (const { segment } of graphemeSegmenter.segment(text)) {
|
|
104
|
+
const segmentWidth = getCachedStringWidth(segment);
|
|
105
|
+
if (width + segmentWidth > budget) {
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
result += segment;
|
|
109
|
+
width += segmentWidth;
|
|
110
|
+
}
|
|
111
|
+
return `${result}${ellipsis}`;
|
|
112
|
+
}
|
|
113
|
+
__name(truncateToWidth, "truncateToWidth");
|
|
114
|
+
function wrapToVisualLines(text, width) {
|
|
115
|
+
if (width <= 0) {
|
|
116
|
+
return [""];
|
|
117
|
+
}
|
|
118
|
+
const visualLines = [];
|
|
119
|
+
for (const logicalLine of text.split("\n")) {
|
|
120
|
+
if (logicalLine === "") {
|
|
121
|
+
visualLines.push("");
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
let currentLine = "";
|
|
125
|
+
let currentWidth = 0;
|
|
126
|
+
for (const char of logicalLine) {
|
|
127
|
+
const charWidth = getCachedStringWidth(char);
|
|
128
|
+
if (currentWidth + charWidth > width && currentWidth > 0) {
|
|
129
|
+
visualLines.push(currentLine);
|
|
130
|
+
currentLine = "";
|
|
131
|
+
currentWidth = 0;
|
|
132
|
+
}
|
|
133
|
+
currentLine += char;
|
|
134
|
+
currentWidth += charWidth;
|
|
135
|
+
}
|
|
136
|
+
if (currentLine) {
|
|
137
|
+
visualLines.push(currentLine);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (visualLines.length === 0) {
|
|
141
|
+
visualLines.push("");
|
|
142
|
+
}
|
|
143
|
+
return visualLines;
|
|
144
|
+
}
|
|
145
|
+
__name(wrapToVisualLines, "wrapToVisualLines");
|
|
146
|
+
var regex = ansiRegex();
|
|
147
|
+
var BARE_C0_CONTROL_CHARS_REGEX = /[\x00-\x08\x0b-\x1f\x7f-\x9f]/g;
|
|
148
|
+
var BIDI_OVERRIDE_CHARS_REGEX = /[\u200e\u200f\u202a-\u202e\u2066-\u2069]/g;
|
|
149
|
+
function sanitizeTerminalText(value) {
|
|
150
|
+
return escapeAnsiCtrlCodes(value).replace(BARE_C0_CONTROL_CHARS_REGEX, "").replace(BIDI_OVERRIDE_CHARS_REGEX, "");
|
|
151
|
+
}
|
|
152
|
+
__name(sanitizeTerminalText, "sanitizeTerminalText");
|
|
153
|
+
function escapeAnsiCtrlCodes(obj) {
|
|
154
|
+
if (typeof obj === "string") {
|
|
155
|
+
if (obj.search(regex) === -1) {
|
|
156
|
+
return obj;
|
|
157
|
+
}
|
|
158
|
+
regex.lastIndex = 0;
|
|
159
|
+
return obj.replace(
|
|
160
|
+
regex,
|
|
161
|
+
(match) => JSON.stringify(match).slice(1, -1)
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
if (obj === null || typeof obj !== "object") {
|
|
165
|
+
return obj;
|
|
166
|
+
}
|
|
167
|
+
if (Array.isArray(obj)) {
|
|
168
|
+
let newArr = null;
|
|
169
|
+
for (let i = 0; i < obj.length; i++) {
|
|
170
|
+
const value = obj[i];
|
|
171
|
+
const escapedValue = escapeAnsiCtrlCodes(value);
|
|
172
|
+
if (escapedValue !== value) {
|
|
173
|
+
if (newArr === null) {
|
|
174
|
+
newArr = [...obj];
|
|
175
|
+
}
|
|
176
|
+
newArr[i] = escapedValue;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return newArr !== null ? newArr : obj;
|
|
180
|
+
}
|
|
181
|
+
let newObj = null;
|
|
182
|
+
const keys = Object.keys(obj);
|
|
183
|
+
for (const key of keys) {
|
|
184
|
+
const value = obj[key];
|
|
185
|
+
const escapedValue = escapeAnsiCtrlCodes(value);
|
|
186
|
+
if (escapedValue !== value) {
|
|
187
|
+
if (newObj === null) {
|
|
188
|
+
newObj = { ...obj };
|
|
189
|
+
}
|
|
190
|
+
newObj[key] = escapedValue;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return newObj !== null ? newObj : obj;
|
|
194
|
+
}
|
|
195
|
+
__name(escapeAnsiCtrlCodes, "escapeAnsiCtrlCodes");
|
|
196
|
+
var SENSITIVE_PATTERNS = [
|
|
197
|
+
// API keys with common prefixes
|
|
198
|
+
{
|
|
199
|
+
pattern: /(sk-[a-zA-Z0-9]{20,})/g,
|
|
200
|
+
replacement: "sk-***REDACTED***"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
pattern: /(api[_-]?key[_-]?[=:]\s*)[a-zA-Z0-9_-]{20,}/gi,
|
|
204
|
+
replacement: "$1***REDACTED***"
|
|
205
|
+
},
|
|
206
|
+
// Bearer tokens
|
|
207
|
+
{
|
|
208
|
+
pattern: /(Bearer\s+)[a-zA-Z0-9._-]+/gi,
|
|
209
|
+
replacement: "$1***REDACTED***"
|
|
210
|
+
},
|
|
211
|
+
// Generic tokens
|
|
212
|
+
{
|
|
213
|
+
pattern: /(token[_-]?[=:]\s*)[a-zA-Z0-9._-]{10,}/gi,
|
|
214
|
+
replacement: "$1***REDACTED***"
|
|
215
|
+
},
|
|
216
|
+
// Passwords in connection strings or assignments
|
|
217
|
+
{
|
|
218
|
+
pattern: /(password[_-]?[=:]\s*)[^\s]+/gi,
|
|
219
|
+
replacement: "$1***REDACTED***"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
pattern: /(pwd[_-]?[=:]\s*)[^\s]+/gi,
|
|
223
|
+
replacement: "$1***REDACTED***"
|
|
224
|
+
},
|
|
225
|
+
// AWS keys
|
|
226
|
+
{
|
|
227
|
+
pattern: /(AKIA[A-Z0-9]{16})/g,
|
|
228
|
+
replacement: "***REDACTED***"
|
|
229
|
+
},
|
|
230
|
+
// Generic secret patterns
|
|
231
|
+
{
|
|
232
|
+
pattern: /(secret[_-]?[=:]\s*)[a-zA-Z0-9._-]{10,}/gi,
|
|
233
|
+
replacement: "$1***REDACTED***"
|
|
234
|
+
}
|
|
235
|
+
];
|
|
236
|
+
function sanitizeSensitiveText(text, maxLength = 200) {
|
|
237
|
+
let result = text;
|
|
238
|
+
for (const { pattern, replacement } of SENSITIVE_PATTERNS) {
|
|
239
|
+
result = result.replace(pattern, replacement);
|
|
240
|
+
}
|
|
241
|
+
if (result.length > maxLength) {
|
|
242
|
+
if (maxLength <= 3) {
|
|
243
|
+
return result.slice(0, maxLength);
|
|
244
|
+
}
|
|
245
|
+
return result.slice(0, maxLength - 3) + "...";
|
|
246
|
+
}
|
|
247
|
+
return result;
|
|
248
|
+
}
|
|
249
|
+
__name(sanitizeSensitiveText, "sanitizeSensitiveText");
|
|
250
|
+
var FILENAME_CONTROL_CHARS_REGEX = /[\x00-\x1f\x7f-\x9f\u202a-\u202e\u2066-\u2069]/g;
|
|
251
|
+
var MULTILINE_CONTROL_CHARS_REGEX = /[\x00-\x08\x0b-\x1f\x7f-\x9f\u202a-\u202e\u2066-\u2069]/g;
|
|
252
|
+
function escapeControlChar(ch) {
|
|
253
|
+
switch (ch) {
|
|
254
|
+
case "\b":
|
|
255
|
+
return "\\b";
|
|
256
|
+
case " ":
|
|
257
|
+
return "\\t";
|
|
258
|
+
case "\n":
|
|
259
|
+
return "\\n";
|
|
260
|
+
case "\f":
|
|
261
|
+
return "\\f";
|
|
262
|
+
case "\r":
|
|
263
|
+
return "\\r";
|
|
264
|
+
default: {
|
|
265
|
+
const code = ch.charCodeAt(0);
|
|
266
|
+
return `\\u${code.toString(16).padStart(4, "0")}`;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
__name(escapeControlChar, "escapeControlChar");
|
|
271
|
+
function sanitizeFilenameForDisplay(name) {
|
|
272
|
+
return escapeAnsiCtrlCodes(name).replace(
|
|
273
|
+
FILENAME_CONTROL_CHARS_REGEX,
|
|
274
|
+
escapeControlChar
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
__name(sanitizeFilenameForDisplay, "sanitizeFilenameForDisplay");
|
|
278
|
+
function sanitizeMultilineForDisplay(text) {
|
|
279
|
+
return escapeAnsiCtrlCodes(text).replace(
|
|
280
|
+
MULTILINE_CONTROL_CHARS_REGEX,
|
|
281
|
+
escapeControlChar
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
__name(sanitizeMultilineForDisplay, "sanitizeMultilineForDisplay");
|
|
285
|
+
|
|
286
|
+
export {
|
|
287
|
+
getAsciiArtWidth,
|
|
288
|
+
toCodePoints,
|
|
289
|
+
cpLen,
|
|
290
|
+
cpSlice,
|
|
291
|
+
stripUnsafeCharacters,
|
|
292
|
+
getCachedStringWidth,
|
|
293
|
+
truncateToWidth,
|
|
294
|
+
wrapToVisualLines,
|
|
295
|
+
sanitizeTerminalText,
|
|
296
|
+
escapeAnsiCtrlCodes,
|
|
297
|
+
sanitizeSensitiveText,
|
|
298
|
+
sanitizeFilenameForDisplay,
|
|
299
|
+
sanitizeMultilineForDisplay
|
|
300
|
+
};
|
|
301
|
+
/**
|
|
302
|
+
* @license
|
|
303
|
+
* Copyright 2025 Google LLC
|
|
304
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
305
|
+
*/
|
|
@@ -461,6 +461,12 @@ var AcpBridge = class extends EventEmitter {
|
|
|
461
461
|
break;
|
|
462
462
|
}
|
|
463
463
|
const content = update["content"];
|
|
464
|
+
if (meta?.["qwenDiscreteMessage"] === true) {
|
|
465
|
+
if (meta["source"] === "background_notification_response" && meta["rewritten"] !== true && content?.type === "text" && content.text) {
|
|
466
|
+
this.emit("backgroundResponse", sessionId, content.text);
|
|
467
|
+
}
|
|
468
|
+
break;
|
|
469
|
+
}
|
|
464
470
|
if (content?.type === "text" && content.text) {
|
|
465
471
|
this.emit(meta?.["source"] === "slash_command" ? "slashCommandOutput" : "textChunk", sessionId, content.text);
|
|
466
472
|
}
|
|
@@ -1080,6 +1086,12 @@ var DaemonChannelBridge = class extends EventEmitter2 {
|
|
|
1080
1086
|
break;
|
|
1081
1087
|
}
|
|
1082
1088
|
const text = getTextContent(update["content"]);
|
|
1089
|
+
if (meta?.["qwenDiscreteMessage"] === true) {
|
|
1090
|
+
if (meta["source"] === "background_notification_response" && meta["rewritten"] !== true && text) {
|
|
1091
|
+
this.emit("backgroundResponse", sessionId, text);
|
|
1092
|
+
}
|
|
1093
|
+
break;
|
|
1094
|
+
}
|
|
1083
1095
|
if (text) {
|
|
1084
1096
|
this.emit(meta?.["source"] === "slash_command" ? "slashCommandOutput" : "textChunk", sessionId, text);
|
|
1085
1097
|
}
|
|
@@ -3146,16 +3158,29 @@ function truncateEntryToRecallBudget(entry) {
|
|
|
3146
3158
|
}
|
|
3147
3159
|
__name(truncateEntryToRecallBudget, "truncateEntryToRecallBudget");
|
|
3148
3160
|
function selectRelevantChannelMemory(message, entries) {
|
|
3161
|
+
return selectRelevantChannelMemoryFromIndex(message, createChannelMemoryRecallIndex(entries));
|
|
3162
|
+
}
|
|
3163
|
+
__name(selectRelevantChannelMemory, "selectRelevantChannelMemory");
|
|
3164
|
+
function createChannelMemoryRecallIndex(entries) {
|
|
3165
|
+
return {
|
|
3166
|
+
candidates: entries.map((entry, index) => {
|
|
3167
|
+
const normalized = normalize(entry.text);
|
|
3168
|
+
return {
|
|
3169
|
+
entry: { ...entry },
|
|
3170
|
+
index,
|
|
3171
|
+
entryTerms: terms(normalized),
|
|
3172
|
+
normalizedLength: Array.from(normalized).length
|
|
3173
|
+
};
|
|
3174
|
+
})
|
|
3175
|
+
};
|
|
3176
|
+
}
|
|
3177
|
+
__name(createChannelMemoryRecallIndex, "createChannelMemoryRecallIndex");
|
|
3178
|
+
function selectRelevantChannelMemoryFromIndex(message, recallIndex) {
|
|
3149
3179
|
const messageTerms = terms(normalize(message));
|
|
3150
|
-
const candidates =
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
index,
|
|
3155
|
-
score: overlapSize(messageTerms, terms(normalized)),
|
|
3156
|
-
normalizedLength: Array.from(normalized).length
|
|
3157
|
-
};
|
|
3158
|
-
});
|
|
3180
|
+
const candidates = recallIndex.candidates.map((candidate) => ({
|
|
3181
|
+
...candidate,
|
|
3182
|
+
score: overlapSize(messageTerms, candidate.entryTerms)
|
|
3183
|
+
}));
|
|
3159
3184
|
const positive = candidates.filter(({ score }) => score > 0).sort((left, right) => right.score - left.score || left.index - right.index);
|
|
3160
3185
|
const fallback = candidates.filter(({ score, normalizedLength }) => score === 0 && normalizedLength <= CHANNEL_MEMORY_RECALL_FALLBACK_CODE_POINTS);
|
|
3161
3186
|
const selected = [];
|
|
@@ -3176,10 +3201,11 @@ function selectRelevantChannelMemory(message, entries) {
|
|
|
3176
3201
|
}
|
|
3177
3202
|
return selected;
|
|
3178
3203
|
}
|
|
3179
|
-
__name(
|
|
3204
|
+
__name(selectRelevantChannelMemoryFromIndex, "selectRelevantChannelMemoryFromIndex");
|
|
3180
3205
|
|
|
3181
3206
|
// packages/channels/base/dist/ChannelBase.js
|
|
3182
3207
|
var CLEAR_CANCEL_TIMEOUT_MS = 3e3;
|
|
3208
|
+
var CHANNEL_MEMORY_RECALL_CACHE_MAX_TARGETS = 128;
|
|
3183
3209
|
var GROUP_HISTORY_CONTEXT_MARKER = "[Chat messages since your last reply - for context]";
|
|
3184
3210
|
var CURRENT_MESSAGE_MARKER = "[Current message - respond to this]";
|
|
3185
3211
|
var GROUP_HISTORY_ENTRY_TEXT_LIMIT = 1e3;
|
|
@@ -3253,6 +3279,7 @@ var ChannelBase = class {
|
|
|
3253
3279
|
proxy;
|
|
3254
3280
|
channelMemory;
|
|
3255
3281
|
memoryIntentClassifier;
|
|
3282
|
+
channelMemoryRecallObserver;
|
|
3256
3283
|
groupHistory;
|
|
3257
3284
|
loopController;
|
|
3258
3285
|
observedContacts;
|
|
@@ -3260,6 +3287,7 @@ var ChannelBase = class {
|
|
|
3260
3287
|
instructedSessions = /* @__PURE__ */ new Set();
|
|
3261
3288
|
unattendedMemorySessions = /* @__PURE__ */ new Set();
|
|
3262
3289
|
channelMemoryReads = /* @__PURE__ */ new Map();
|
|
3290
|
+
channelMemoryRecallCache = /* @__PURE__ */ new Map();
|
|
3263
3291
|
commands = /* @__PURE__ */ new Map();
|
|
3264
3292
|
/** Per-session promise chain to serialize prompt + send (followup mode). */
|
|
3265
3293
|
sessionQueues = /* @__PURE__ */ new Map();
|
|
@@ -3280,6 +3308,12 @@ var ChannelBase = class {
|
|
|
3280
3308
|
bridgeToolCallListener = /* @__PURE__ */ __name((event) => {
|
|
3281
3309
|
this.dispatchToolCall(event);
|
|
3282
3310
|
}, "bridgeToolCallListener");
|
|
3311
|
+
bridgeBackgroundResponseListener = /* @__PURE__ */ __name((sessionId, text) => {
|
|
3312
|
+
void this.dispatchBackgroundResponse(sessionId, text).catch((err) => {
|
|
3313
|
+
process.stderr.write(`[${this.name}] background response delivery failed for session ${sanitizeLogText(sessionId, 128)}: ${this.lifecycleError(err)}
|
|
3314
|
+
`);
|
|
3315
|
+
});
|
|
3316
|
+
}, "bridgeBackgroundResponseListener");
|
|
3283
3317
|
bridgeSessionDiedListener = /* @__PURE__ */ __name((event) => {
|
|
3284
3318
|
this.onSessionDied(event.sessionId);
|
|
3285
3319
|
}, "bridgeSessionDiedListener");
|
|
@@ -3323,6 +3357,17 @@ var ChannelBase = class {
|
|
|
3323
3357
|
}
|
|
3324
3358
|
this.onToolCall(chatId, event);
|
|
3325
3359
|
}
|
|
3360
|
+
async dispatchBackgroundResponse(sessionId, text) {
|
|
3361
|
+
const target = this.router.getTarget(sessionId);
|
|
3362
|
+
if (!target || target.channelName !== this.name || text.trim().length === 0) {
|
|
3363
|
+
return;
|
|
3364
|
+
}
|
|
3365
|
+
if (this.supportsProactiveSend() && this.supportsProactiveTarget(target)) {
|
|
3366
|
+
await this.pushProactive(target, text);
|
|
3367
|
+
return;
|
|
3368
|
+
}
|
|
3369
|
+
await this.sendResponseMessage(target.chatId, text, sessionId);
|
|
3370
|
+
}
|
|
3326
3371
|
async dispatchPermissionRequest(event) {
|
|
3327
3372
|
const target = this.permissionTargetForEvent(event);
|
|
3328
3373
|
if (!target) {
|
|
@@ -3404,6 +3449,7 @@ var ChannelBase = class {
|
|
|
3404
3449
|
this.memoryScope = Object.freeze(this.resolveMemoryScope(name, config));
|
|
3405
3450
|
this.channelMemory = options?.channelMemory;
|
|
3406
3451
|
this.memoryIntentClassifier = options?.memoryIntentClassifier;
|
|
3452
|
+
this.channelMemoryRecallObserver = options?.channelMemoryRecallObserver;
|
|
3407
3453
|
this.groupHistory = new GroupHistoryStore(options?.groupHistoryPath ?? join5(getGlobalQwenDir(), "channels", `${encodeURIComponent(name)}-group-history.jsonl`));
|
|
3408
3454
|
this.loopController = options?.loopController;
|
|
3409
3455
|
this.observedContacts = options?.observedContacts;
|
|
@@ -3588,6 +3634,99 @@ var ChannelBase = class {
|
|
|
3588
3634
|
this.channelMemoryReads.delete(token.key);
|
|
3589
3635
|
}
|
|
3590
3636
|
}
|
|
3637
|
+
getCachedChannelMemoryRecallIndex(key, revision) {
|
|
3638
|
+
const cached = this.channelMemoryRecallCache.get(key);
|
|
3639
|
+
if (!cached || cached.revision !== revision)
|
|
3640
|
+
return void 0;
|
|
3641
|
+
this.channelMemoryRecallCache.delete(key);
|
|
3642
|
+
this.channelMemoryRecallCache.set(key, cached);
|
|
3643
|
+
return cached.index;
|
|
3644
|
+
}
|
|
3645
|
+
setCachedChannelMemoryRecallIndex(key, revision, index) {
|
|
3646
|
+
this.channelMemoryRecallCache.delete(key);
|
|
3647
|
+
this.channelMemoryRecallCache.set(key, { revision, index });
|
|
3648
|
+
if (this.channelMemoryRecallCache.size > CHANNEL_MEMORY_RECALL_CACHE_MAX_TARGETS) {
|
|
3649
|
+
const oldestKey = this.channelMemoryRecallCache.keys().next().value;
|
|
3650
|
+
if (oldestKey !== void 0) {
|
|
3651
|
+
this.channelMemoryRecallCache.delete(oldestKey);
|
|
3652
|
+
}
|
|
3653
|
+
}
|
|
3654
|
+
}
|
|
3655
|
+
async selectRelevantChannelMemory(envelope, target, read) {
|
|
3656
|
+
const message = envelope.text;
|
|
3657
|
+
const channelMemory = this.channelMemory;
|
|
3658
|
+
if (!channelMemory)
|
|
3659
|
+
return { entries: [], cache: "bypass" };
|
|
3660
|
+
if (!channelMemory.getChannelMemoryRevision) {
|
|
3661
|
+
const entries = await channelMemory.listChannelMemoryEntries(target);
|
|
3662
|
+
return {
|
|
3663
|
+
entries: selectRelevantChannelMemory(message, entries),
|
|
3664
|
+
cache: "bypass"
|
|
3665
|
+
};
|
|
3666
|
+
}
|
|
3667
|
+
let revision;
|
|
3668
|
+
try {
|
|
3669
|
+
revision = await channelMemory.getChannelMemoryRevision(target);
|
|
3670
|
+
} catch {
|
|
3671
|
+
const entries = await channelMemory.listChannelMemoryEntries(target);
|
|
3672
|
+
return {
|
|
3673
|
+
entries: selectRelevantChannelMemory(message, entries),
|
|
3674
|
+
cache: "bypass"
|
|
3675
|
+
};
|
|
3676
|
+
}
|
|
3677
|
+
let latestEntries = [];
|
|
3678
|
+
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
3679
|
+
const cached = this.getCachedChannelMemoryRecallIndex(read.key, revision);
|
|
3680
|
+
if (cached) {
|
|
3681
|
+
return {
|
|
3682
|
+
entries: selectRelevantChannelMemoryFromIndex(message, cached),
|
|
3683
|
+
cache: "hit"
|
|
3684
|
+
};
|
|
3685
|
+
}
|
|
3686
|
+
latestEntries = await channelMemory.listChannelMemoryEntries(target);
|
|
3687
|
+
let verifiedRevision;
|
|
3688
|
+
try {
|
|
3689
|
+
verifiedRevision = await channelMemory.getChannelMemoryRevision(target);
|
|
3690
|
+
} catch {
|
|
3691
|
+
return {
|
|
3692
|
+
entries: selectRelevantChannelMemory(message, latestEntries),
|
|
3693
|
+
cache: "bypass"
|
|
3694
|
+
};
|
|
3695
|
+
}
|
|
3696
|
+
if (revision !== verifiedRevision) {
|
|
3697
|
+
if (read.generation !== read.state.generation) {
|
|
3698
|
+
return { entries: [], cache: "miss" };
|
|
3699
|
+
}
|
|
3700
|
+
revision = verifiedRevision;
|
|
3701
|
+
continue;
|
|
3702
|
+
}
|
|
3703
|
+
const index = createChannelMemoryRecallIndex(latestEntries);
|
|
3704
|
+
if (read.generation === read.state.generation) {
|
|
3705
|
+
this.setCachedChannelMemoryRecallIndex(read.key, revision, index);
|
|
3706
|
+
}
|
|
3707
|
+
return {
|
|
3708
|
+
entries: selectRelevantChannelMemoryFromIndex(message, index),
|
|
3709
|
+
cache: "miss"
|
|
3710
|
+
};
|
|
3711
|
+
}
|
|
3712
|
+
this.logChannelMemoryError("read", envelope, "recall revision unstable after retry");
|
|
3713
|
+
return {
|
|
3714
|
+
entries: selectRelevantChannelMemory(message, latestEntries),
|
|
3715
|
+
cache: "miss",
|
|
3716
|
+
result: "revision_unstable"
|
|
3717
|
+
};
|
|
3718
|
+
}
|
|
3719
|
+
observeChannelMemoryRecall(startedAt, cache, result, selectedCount) {
|
|
3720
|
+
try {
|
|
3721
|
+
this.channelMemoryRecallObserver?.({
|
|
3722
|
+
durationMs: Math.max(0, performance.now() - startedAt),
|
|
3723
|
+
selectedCount: Math.min(CHANNEL_MEMORY_RECALL_MAX_ENTRIES, Math.max(0, Math.trunc(selectedCount))),
|
|
3724
|
+
cache,
|
|
3725
|
+
result
|
|
3726
|
+
});
|
|
3727
|
+
} catch {
|
|
3728
|
+
}
|
|
3729
|
+
}
|
|
3591
3730
|
drainCollectBufferForCurrentPrompt(sessionId, stillCurrent, taskLabel) {
|
|
3592
3731
|
const buffer = this.collectBuffers.get(sessionId);
|
|
3593
3732
|
if (!stillCurrent || !buffer || buffer.length === 0) {
|
|
@@ -4175,12 +4314,14 @@ ${promptText}` : promptText;
|
|
|
4175
4314
|
}
|
|
4176
4315
|
attachBridgeEvents(bridge) {
|
|
4177
4316
|
bridge.on("toolCall", this.bridgeToolCallListener);
|
|
4317
|
+
bridge.on("backgroundResponse", this.bridgeBackgroundResponseListener);
|
|
4178
4318
|
bridge.on("sessionDied", this.bridgeSessionDiedListener);
|
|
4179
4319
|
bridge.on("permissionRequest", this.bridgePermissionRequestListener);
|
|
4180
4320
|
bridge.on("permissionResolved", this.bridgePermissionResolvedListener);
|
|
4181
4321
|
}
|
|
4182
4322
|
detachBridgeEvents(bridge) {
|
|
4183
4323
|
bridge.off("toolCall", this.bridgeToolCallListener);
|
|
4324
|
+
bridge.off("backgroundResponse", this.bridgeBackgroundResponseListener);
|
|
4184
4325
|
bridge.off("sessionDied", this.bridgeSessionDiedListener);
|
|
4185
4326
|
bridge.off("permissionRequest", this.bridgePermissionRequestListener);
|
|
4186
4327
|
bridge.off("permissionResolved", this.bridgePermissionResolvedListener);
|
|
@@ -4935,7 +5076,9 @@ ${requestList}`);
|
|
|
4935
5076
|
}
|
|
4936
5077
|
invalidateUnattendedMemory(envelope) {
|
|
4937
5078
|
const target = this.channelMemoryTarget(envelope);
|
|
4938
|
-
const
|
|
5079
|
+
const readKey = this.channelMemoryReadKey(target);
|
|
5080
|
+
this.channelMemoryRecallCache.delete(readKey);
|
|
5081
|
+
const activeRead = this.channelMemoryReads.get(readKey);
|
|
4939
5082
|
if (activeRead) {
|
|
4940
5083
|
activeRead.generation += 1;
|
|
4941
5084
|
}
|
|
@@ -5896,18 +6039,20 @@ ${promptText}`;
|
|
|
5896
6039
|
if (!recognizedSlashCommand && this.channelMemory && this.shouldInjectChannelMemory()) {
|
|
5897
6040
|
const memoryTarget = this.channelMemoryTarget(envelope);
|
|
5898
6041
|
recallRead = this.beginChannelMemoryRead(memoryTarget);
|
|
6042
|
+
const recallStartedAt = performance.now();
|
|
5899
6043
|
try {
|
|
5900
|
-
const
|
|
5901
|
-
|
|
5902
|
-
];
|
|
5903
|
-
|
|
6044
|
+
const selection = await this.selectRelevantChannelMemory(envelope, memoryTarget, recallRead);
|
|
6045
|
+
const stale = recallRead.generation !== recallRead.state.generation;
|
|
6046
|
+
const relevantEntries = stale ? [] : selection.entries;
|
|
6047
|
+
this.observeChannelMemoryRecall(recallStartedAt, selection.cache, stale ? "stale" : selection.result ?? (relevantEntries.length > 0 ? "selected" : "empty"), relevantEntries.length);
|
|
5904
6048
|
if (relevantEntries.length > 0) {
|
|
5905
6049
|
recallContext = this.formatRelevantChannelMemoryContext(relevantEntries);
|
|
5906
6050
|
}
|
|
5907
|
-
} catch
|
|
6051
|
+
} catch {
|
|
6052
|
+
this.observeChannelMemoryRecall(recallStartedAt, "bypass", "read_error", 0);
|
|
5908
6053
|
this.releaseChannelMemoryRead(recallRead);
|
|
5909
6054
|
recallRead = void 0;
|
|
5910
|
-
this.logChannelMemoryError("read", envelope,
|
|
6055
|
+
this.logChannelMemoryError("read", envelope, "entry listing failed");
|
|
5911
6056
|
}
|
|
5912
6057
|
}
|
|
5913
6058
|
if (this.dropQueuedTurnIfStale(sessionId, generation, envelope)) {
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
init_esbuild_shims
|
|
5
|
+
} from "./chunk-5O2XNYP6.js";
|
|
6
|
+
import {
|
|
7
|
+
__commonJS,
|
|
8
|
+
__name
|
|
9
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
10
|
+
|
|
11
|
+
// node_modules/react/cjs/react-jsx-runtime.production.js
|
|
12
|
+
var require_react_jsx_runtime_production = __commonJS({
|
|
13
|
+
"node_modules/react/cjs/react-jsx-runtime.production.js"(exports) {
|
|
14
|
+
"use strict";
|
|
15
|
+
init_esbuild_shims();
|
|
16
|
+
var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element");
|
|
17
|
+
var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
|
|
18
|
+
function jsxProd(type, config, maybeKey) {
|
|
19
|
+
var key = null;
|
|
20
|
+
void 0 !== maybeKey && (key = "" + maybeKey);
|
|
21
|
+
void 0 !== config.key && (key = "" + config.key);
|
|
22
|
+
if ("key" in config) {
|
|
23
|
+
maybeKey = {};
|
|
24
|
+
for (var propName in config)
|
|
25
|
+
"key" !== propName && (maybeKey[propName] = config[propName]);
|
|
26
|
+
} else maybeKey = config;
|
|
27
|
+
config = maybeKey.ref;
|
|
28
|
+
return {
|
|
29
|
+
$$typeof: REACT_ELEMENT_TYPE,
|
|
30
|
+
type,
|
|
31
|
+
key,
|
|
32
|
+
ref: void 0 !== config ? config : null,
|
|
33
|
+
props: maybeKey
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
__name(jsxProd, "jsxProd");
|
|
37
|
+
exports.Fragment = REACT_FRAGMENT_TYPE;
|
|
38
|
+
exports.jsx = jsxProd;
|
|
39
|
+
exports.jsxs = jsxProd;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// node_modules/react/jsx-runtime.js
|
|
44
|
+
var require_jsx_runtime = __commonJS({
|
|
45
|
+
"node_modules/react/jsx-runtime.js"(exports, module) {
|
|
46
|
+
"use strict";
|
|
47
|
+
init_esbuild_shims();
|
|
48
|
+
if (true) {
|
|
49
|
+
module.exports = require_react_jsx_runtime_production();
|
|
50
|
+
} else {
|
|
51
|
+
module.exports = null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
export {
|
|
57
|
+
require_jsx_runtime
|
|
58
|
+
};
|
|
59
|
+
/*! Bundled license information:
|
|
60
|
+
|
|
61
|
+
react/cjs/react-jsx-runtime.production.js:
|
|
62
|
+
(**
|
|
63
|
+
* @license React
|
|
64
|
+
* react-jsx-runtime.production.js
|
|
65
|
+
*
|
|
66
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
67
|
+
*
|
|
68
|
+
* This source code is licensed under the MIT license found in the
|
|
69
|
+
* LICENSE file in the root directory of this source tree.
|
|
70
|
+
*)
|
|
71
|
+
*/
|