@qwen-code/qwen-code 0.19.10 → 0.19.11-nightly.20260717.f8e6e8931
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 +7 -6
- package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +30 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +53 -17
- package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
- package/bundled/qc-helper/docs/features/sandbox.md +2 -0
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
- package/bundled/qc-helper/docs/qwen-serve.md +53 -46
- package/bundled/review/SKILL.md +163 -403
- package/chunks/{MaxSizedBox-67ODZ4SZ.js → MaxSizedBox-JGTP7YJQ.js} +13 -13
- package/chunks/{StandaloneSessionPicker-SIPBQT5Z.js → StandaloneSessionPicker-2XQDOYZ5.js} +27 -27
- package/chunks/{acpAgent-VPZJXLFX.js → acpAgent-RXRJA7GD.js} +1135 -373
- package/chunks/{agent-Z7NWL6XL.js → agent-UQP53UWQ.js} +10 -10
- package/chunks/{agent-headless-73HZ6ROQ.js → agent-headless-I52OXDCK.js} +10 -10
- package/chunks/{anthropicContentGenerator-56U3YCP2.js → anthropicContentGenerator-HBRXJSP4.js} +76 -14
- package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-MIZLXBLF.js} +1 -1
- package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-XMJVPNWM.js} +1 -1
- package/chunks/{bridge-XFKW6S7Q.js → bridge-3DVRNBSF.js} +14 -16
- package/chunks/{ca-C2JTT2N5.js → ca-CODEN7TD.js} +5 -0
- package/chunks/channel-worker-group-SOUWTFHC.js +21 -0
- package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-LOVSV3WW.js} +34 -10
- package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-XW6MHJBQ.js} +6 -4
- package/chunks/{chunk-BBNVFRGD.js → chunk-3DWIFU7L.js} +1 -1
- package/chunks/{chunk-ZQTZXVHP.js → chunk-3KSHYS4T.js} +4 -18
- package/chunks/{chunk-ZKMGAFYV.js → chunk-3LS57JZI.js} +1 -1
- package/chunks/{chunk-B5I2IIWY.js → chunk-46Y6SSQ7.js} +5 -5
- package/chunks/{chunk-GDQQRV43.js → chunk-4BJVSIS3.js} +2 -2
- package/chunks/{chunk-L37RC7MQ.js → chunk-4HTHLSIH.js} +1 -1
- package/chunks/{chunk-DPFBNG72.js → chunk-4UBEB74N.js} +1 -1
- package/chunks/{chunk-AAR5SGMD.js → chunk-4YR7FSAM.js} +7 -5
- package/chunks/{chunk-OATTJGPJ.js → chunk-5CNYZ7TN.js} +7 -7
- package/chunks/{chunk-JSJFKYWT.js → chunk-5VWYKIMW.js} +1 -1
- package/chunks/{chunk-6GETGQWP.js → chunk-5WWYHNAH.js} +39 -10
- package/chunks/{chunk-65N2J6V2.js → chunk-6ANLV27M.js} +2 -2
- package/chunks/{chunk-L62SEJWY.js → chunk-6RV42SFP.js} +4 -4
- package/chunks/{chunk-XXJKGHZV.js → chunk-6VMOP2Z7.js} +4 -4
- package/chunks/{chunk-URU5UEK6.js → chunk-6WGZDD67.js} +135 -68
- package/chunks/{chunk-7NAWTFVY.js → chunk-6WPJRYLZ.js} +2 -2
- package/chunks/chunk-6WVLHULT.js +59 -0
- package/chunks/{chunk-N6FXRR6P.js → chunk-7ZFXHKKZ.js} +1 -1
- package/chunks/{chunk-E67NFMF4.js → chunk-A2HWMJVO.js} +35 -1
- package/chunks/{chunk-4FMG7EDJ.js → chunk-AEKHQ3E5.js} +77 -11
- package/chunks/{chunk-WIASPMLX.js → chunk-AH3YAJU6.js} +22 -33
- package/chunks/{chunk-6GKMJPOC.js → chunk-AHAH5H6D.js} +3 -3
- package/chunks/{chunk-3XJFUTNM.js → chunk-AVAU67KP.js} +57 -10
- package/chunks/{chunk-LNUXFLLJ.js → chunk-BDHYJ2MM.js} +53 -5
- package/chunks/{chunk-P6LART6G.js → chunk-BTSE2DUP.js} +957 -122
- package/chunks/{chunk-7MJAZMXK.js → chunk-BZ5D7OVV.js} +28 -77
- package/chunks/{chunk-WDWJ4OQJ.js → chunk-CC2UASQ4.js} +3 -3
- package/chunks/{chunk-WLXYAKV7.js → chunk-D7KYA6EY.js} +3 -3
- package/chunks/{chunk-5LROA5W4.js → chunk-DD45XVOQ.js} +3 -3
- package/chunks/{chunk-H3FQOPPS.js → chunk-DOPUYNXO.js} +2 -2
- package/chunks/{chunk-SPUYQB4T.js → chunk-DPXB3XRN.js} +1 -1
- package/chunks/{chunk-XLIRF7IK.js → chunk-E7ECGLZW.js} +1 -1
- package/chunks/{chunk-RDRVMDWV.js → chunk-EMJJBXS7.js} +10 -10
- package/chunks/{chunk-TXY2C3D2.js → chunk-F333XEAU.js} +1 -1
- package/chunks/chunk-FEOZBUMT.js +77 -0
- package/chunks/{chunk-YYPXHMWO.js → chunk-FEYHXPZG.js} +4 -4
- package/chunks/{chunk-ZRKBI3DP.js → chunk-FNX3LGAK.js} +1 -1
- package/chunks/chunk-FXK3QMRD.js +140 -0
- package/chunks/{chunk-422XAKCK.js → chunk-G5ZKRK2E.js} +2 -2
- package/chunks/{chunk-DK33QJ3V.js → chunk-GCRFH57X.js} +732 -13
- package/chunks/{chunk-EQY6POVO.js → chunk-GLEJW7T2.js} +1 -1
- package/chunks/{chunk-FXMC7SL2.js → chunk-I6NOSIVF.js} +1 -1
- package/chunks/{chunk-VBRRNQB7.js → chunk-IHJRUIWN.js} +109 -22
- package/chunks/{chunk-F7NXQH4Y.js → chunk-IIXEI2VE.js} +1 -1
- package/chunks/{chunk-2UUAIFQO.js → chunk-JGUT3LWZ.js} +5 -0
- package/chunks/{chunk-5EBKKSBX.js → chunk-JY74T7PW.js} +1 -1
- package/chunks/chunk-KSZKSE23.js +226 -0
- package/chunks/{chunk-MO7O5722.js → chunk-KW46DBFM.js} +35 -2
- package/chunks/{chunk-TISZXPAX.js → chunk-L263ROM6.js} +1 -1
- package/chunks/chunk-LXXMOYPL.js +22 -0
- package/chunks/{chunk-YX4LLZ3D.js → chunk-NABT4VOY.js} +109 -35
- package/chunks/{chunk-W34A5MJH.js → chunk-NROLDLP4.js} +1 -1
- package/chunks/{chunk-V7EQTZYR.js → chunk-O3WCEZEN.js} +191 -44
- package/chunks/{chunk-K4PZ5F5T.js → chunk-OWT2CAEQ.js} +1 -1
- package/chunks/{chunk-4YWLED2A.js → chunk-PNCWEDF6.js} +7 -4
- package/chunks/{chunk-WDW64OW3.js → chunk-PSDTLRAV.js} +5 -5
- package/chunks/{chunk-7R4DPSRA.js → chunk-R3VWUU2E.js} +1 -1
- package/chunks/{chunk-K7CRWKOE.js → chunk-R6AO7HBQ.js} +4617 -4012
- package/chunks/{chunk-6OATMEYN.js → chunk-RTV5TUYB.js} +12 -4
- package/chunks/{chunk-6W6DI34P.js → chunk-SE6GSFAO.js} +159 -2
- package/chunks/{chunk-WTSXKLG5.js → chunk-SUARMD4Q.js} +1 -1
- package/chunks/chunk-T4TZQJ7W.js +48 -0
- package/chunks/{chunk-LTNI523B.js → chunk-T7CZYIAU.js} +28 -5
- package/chunks/{chunk-3MX7D6QN.js → chunk-TIOE2OPE.js} +32 -4
- package/chunks/{chunk-TTUO4DNG.js → chunk-UF6ZTWU5.js} +75 -710
- package/chunks/{chunk-Q5GLXH5Q.js → chunk-UJG4VV2O.js} +5 -5
- package/chunks/{chunk-CJFNEBYB.js → chunk-VFEZWI6F.js} +1 -1
- package/chunks/{chunk-UFOKA4PR.js → chunk-VHCSIMTF.js} +114 -4
- package/chunks/{chunk-TQBODCFD.js → chunk-VRR65QYW.js} +250 -2
- package/chunks/{chunk-CUUXANEQ.js → chunk-W6J7RSCK.js} +6 -1
- package/chunks/{chunk-YHN5SUIJ.js → chunk-W7H223ZZ.js} +1 -1
- package/chunks/{chunk-WX6SD4IQ.js → chunk-WTNZ6DXB.js} +1 -1
- package/chunks/{chunk-GGJII3FM.js → chunk-WZJELXEU.js} +92 -3
- package/chunks/{chunk-OFEVHGVU.js → chunk-X5HZX4EP.js} +9 -11
- package/chunks/{chunk-KSO42X3Z.js → chunk-X6YQWCIJ.js} +21 -2
- package/chunks/{chunk-7L4XBYVW.js → chunk-XK42MWWO.js} +9 -2
- package/chunks/{chunk-X362TMXZ.js → chunk-XQDPCQ3A.js} +7 -5
- package/chunks/{chunk-YU56QGXX.js → chunk-Y3TNSHKF.js} +1 -1
- package/chunks/{chunk-HHEFI4RP.js → chunk-YOJGIRTD.js} +714 -109
- package/chunks/{chunk-CEW4HDPK.js → chunk-ZK4AMPKI.js} +2459 -350
- package/chunks/{chunk-SXU3KKNI.js → chunk-ZQIYGQCG.js} +251 -54
- package/chunks/{computer-use-IYTX45WA.js → computer-use-LTW3VB6L.js} +10 -10
- package/chunks/{config-utils-CFT33LTP.js → config-utils-IQQT3GCI.js} +3 -3
- package/chunks/{contextCommand-272V77WU.js → contextCommand-GLMC6CTP.js} +12 -12
- package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-EAB2U5XW.js} +1 -1
- package/chunks/{create-sub-session-CBJMQLYP.js → create-sub-session-YMWQAWSN.js} +10 -10
- package/chunks/{cron-create-36TIFKRT.js → cron-create-GMVKSXZT.js} +1 -1
- package/chunks/{cron-delete-OQD3WULU.js → cron-delete-VDZKUAVK.js} +1 -1
- package/chunks/{cron-list-4533T2FH.js → cron-list-UG7C7RAR.js} +1 -1
- package/chunks/{daemon-RNGFPMAB.js → daemon-PRB64RP5.js} +303 -71
- package/chunks/{daemon-status-provider-L4STG5VO.js → daemon-status-provider-5OMM5JHF.js} +19 -20
- package/chunks/{de-2VCDRDGU.js → de-NOXPCSYN.js} +5 -0
- package/chunks/{dist-ERCPDVA6.js → dist-4WCQEZIN.js} +4 -51
- package/chunks/{dist-MOEC47TR.js → dist-DOPL5LSQ.js} +1 -1
- package/chunks/{dist-JZE7F6YR.js → dist-GXJVCOS7.js} +1 -1
- package/chunks/{dist-PHEPJLXD.js → dist-PX2ERZ6I.js} +2 -2
- package/chunks/{dist-HNN7DR2L.js → dist-V2YVLYOW.js} +58 -30
- package/chunks/{dist-3V3ZV6ML.js → dist-VYWUKURL.js} +1 -1
- package/chunks/{earlyInputCapture-EN4BRREQ.js → earlyInputCapture-A3WSRN4T.js} +10 -10
- package/chunks/{edit-OMAF2QDR.js → edit-7PG4AH27.js} +10 -10
- package/chunks/{en-NJCA3TAA.js → en-JFVULHTB.js} +6 -0
- package/chunks/{enter-worktree-BBZX52HG.js → enter-worktree-QUSB44RE.js} +10 -10
- package/chunks/{enterPlanMode-5NNFMBUY.js → enterPlanMode-NVSIEL7X.js} +10 -10
- package/chunks/{environment-7TEWMJYN.js → environment-AHHXHQTI.js} +12 -12
- package/chunks/{errors-I4VKVX3F.js → errors-NSWSRXC7.js} +12 -12
- package/chunks/{exit-worktree-FUWRJI33.js → exit-worktree-FXYEYHPL.js} +10 -10
- package/chunks/{exitPlanMode-IHCJ5EEI.js → exitPlanMode-JI5GK3F6.js} +10 -10
- package/chunks/{fast-path-ZA57TOH4.js → fast-path-X7EVDLKZ.js} +2 -2
- package/chunks/{fr-5F3E7WKD.js → fr-HVFNU42H.js} +5 -0
- package/chunks/{gemini-UOAKVXBG.js → gemini-YRLHY5KS.js} +162 -206
- package/chunks/{geminiContentGenerator-G6UCE6MW.js → geminiContentGenerator-SPLFPV5E.js} +1 -1
- package/chunks/{glob-4GJQ2UFF.js → glob-WASUBCSA.js} +10 -10
- package/chunks/{grep-5QSYXF2E.js → grep-DUVG3NGA.js} +10 -10
- package/chunks/{handleAutoUpdate-ULHNWL6R.js → handleAutoUpdate-NGE5AQ2N.js} +14 -14
- package/chunks/{i18n-CYDUTF6F.js → i18n-QNVR36NB.js} +11 -11
- package/chunks/{initializer-NRFKUGIO.js → initializer-ZY7ORPMH.js} +15 -15
- package/chunks/{installationInfo-WELKRHHE.js → installationInfo-4R75MFTB.js} +11 -11
- package/chunks/{ja-66J6B53L.js → ja-PY5AF544.js} +5 -0
- package/chunks/{list-JVDXEG2E.js → list-36JCMZRS.js} +18 -18
- package/chunks/{loadedSettingsAdapter-WAM4VUTG.js → loadedSettingsAdapter-PQIOJUSJ.js} +15 -15
- package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-QXWZSCYM.js} +2 -2
- package/chunks/{ls-RXNIAQDE.js → ls-2OUTG3IZ.js} +1 -1
- package/chunks/{lsp-HB5LM5IL.js → lsp-4VMNXZW6.js} +1 -1
- package/chunks/{mcp-YHOZN3ZM.js → mcp-QXY6XA6H.js} +15 -15
- package/chunks/{monitor-R7XZPJHQ.js → monitor-AVEKRSY3.js} +12 -11
- package/chunks/{nonInteractiveCli-NSOB6D74.js → nonInteractiveCli-YWIBKX4M.js} +50 -50
- package/chunks/{notebook-edit-6RNKE2L2.js → notebook-edit-4SBTJX72.js} +10 -10
- package/chunks/{openaiContentGenerator-XNS5S64I.js → openaiContentGenerator-4EBAO7LR.js} +8 -8
- package/chunks/{pidfile-XE4RRR2P.js → pidfile-JMIUPXSU.js} +10 -10
- package/chunks/processUtils-EOINMEIH.js +29 -0
- package/chunks/{pt-TFZO5Y6T.js → pt-A3PRQXMU.js} +5 -0
- package/chunks/{qwenContentGenerator-APDPJ3VN.js → qwenContentGenerator-M7UBL3JS.js} +12 -12
- package/chunks/{read-file-XSUWXSR7.js → read-file-DXSEFHCV.js} +5 -5
- package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-JUFHCKSC.js} +1 -1
- package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-DWSMBXYY.js} +1 -1
- package/chunks/{ripGrep-APB3CDMU.js → ripGrep-VTRVFMDJ.js} +10 -10
- package/chunks/{ru-4L4LFHIT.js → ru-IBCWUTOC.js} +5 -0
- package/chunks/{run-qwen-serve-NWTGPERT.js → run-qwen-serve-P7WQDZAS.js} +59 -38
- package/chunks/{runtime-EIO3NQKR.js → runtime-UHYO6JGN.js} +19 -19
- package/chunks/{scheduler-JJDZBDRN.js → scheduler-WTK7ZLV5.js} +10 -10
- package/chunks/{send-message-SR4WSXP2.js → send-message-JZ752NWD.js} +2 -2
- package/chunks/{serve-WTIPB3EI.js → serve-AG2AOG56.js} +15 -15
- package/chunks/{server-NJPHQHLH.js → server-G5MM2BRI.js} +1157 -225
- package/chunks/{session-O4AO7FTS.js → session-NUAGEMVS.js} +51 -51
- package/chunks/{settings-HQNDK7TG.js → settings-VQA5PR2M.js} +14 -14
- package/chunks/{shell-UIXM6PWG.js → shell-X33RWGLP.js} +12 -10
- package/chunks/{skill-3XMB4ULV.js → skill-PHSU2OPP.js} +5 -5
- package/chunks/{spawnChannel-3R632QRM.js → spawnChannel-D6TZN4W7.js} +12 -13
- package/chunks/{src-USZKPUOC.js → src-6OJFUPTL.js} +95 -34
- package/chunks/{standalone-update-L5XW3D7K.js → standalone-update-ZARRW44Y.js} +12 -12
- package/chunks/{startInteractiveUI-CPZOL2WB.js → startInteractiveUI-C6IZRTF3.js} +176 -158
- package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-LELY6HAI.js} +2 -2
- package/chunks/{task-create-NUFOHU53.js → task-create-QY3BIMNM.js} +3 -3
- package/chunks/{task-list-Z2IKQY3S.js → task-list-D2U47WBJ.js} +1 -1
- package/chunks/{task-stop-KQFIVQTJ.js → task-stop-N6E5IYLH.js} +1 -1
- package/chunks/{task-update-HKADXSTD.js → task-update-HJCQILLB.js} +3 -3
- package/chunks/{team-create-XXPRF3IQ.js → team-create-H434NQP2.js} +10 -10
- package/chunks/{team-delete-SDNTGZLG.js → team-delete-RCWYDRF4.js} +1 -1
- package/chunks/{team-plan-approval-EOTTKHDW.js → team-plan-approval-IIOHXZU6.js} +10 -10
- package/chunks/{theme-manager-P6UITO2L.js → theme-manager-IEOPHMX6.js} +10 -10
- package/chunks/{todoWrite-YNXB27GB.js → todoWrite-FKCGATPJ.js} +1 -1
- package/chunks/{tool-search-DDNGK2LR.js → tool-search-WIIEDALL.js} +6 -6
- package/chunks/{total-session-admission-PL5N7DNY.js → total-session-admission-WU3DORRW.js} +15 -17
- package/chunks/{trustedFolders-C5LMF3UR.js → trustedFolders-JVUTUAJ3.js} +11 -11
- package/chunks/update-relaunch-X5EQKCH5.js +87 -0
- package/chunks/{updateCheck-QTVVISH7.js → updateCheck-TGO2X735.js} +14 -12
- package/chunks/{validateNonInterActiveAuth-RY4RKBQG.js → validateNonInterActiveAuth-2MEUL2ME.js} +46 -46
- package/chunks/{version-U45RYOSD.js → version-KBGQKZWV.js} +1 -1
- package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-CFCWTCAP.js} +2 -3
- package/chunks/{workflow-TCIAQYOA.js → workflow-PAOSF4CG.js} +11 -11
- package/chunks/{workspace-providers-status-I3G2HYLY.js → workspace-providers-status-AYHJYSVO.js} +18 -18
- package/chunks/{workspace-registration-store-IH5GLZ6Y.js → workspace-registration-store-GZMR53QL.js} +1 -1
- package/chunks/{workspace-registry-QEKBELIX.js → workspace-registry-C2IXZWPF.js} +15 -17
- package/chunks/{workspace-service-ORKHGLP3.js → workspace-service-KDDAW33F.js} +20 -21
- package/chunks/{workspace-skills-status-D7QCNDYY.js → workspace-skills-status-WWEZBZXY.js} +16 -16
- package/chunks/{write-file-JGRQR5VM.js → write-file-ACN3TAIX.js} +10 -10
- package/chunks/{zh-FSAH32JB.js → zh-PAUNIMHQ.js} +6 -0
- package/chunks/{zh-TW-D2YIE2LO.js → zh-TW-GNEUIUFF.js} +6 -0
- package/cli-entry.js +92 -8
- package/cli.js +11 -11
- package/locales/ca.js +10 -0
- package/locales/de.js +10 -0
- package/locales/en.js +11 -0
- package/locales/fr.js +10 -0
- package/locales/ja.js +10 -0
- package/locales/pt.js +10 -0
- package/locales/ru.js +10 -0
- package/locales/zh-TW.js +11 -0
- package/locales/zh.js +11 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-CUeDlxvE.js → arc-Blc5_CnD.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-PiUszkQA.js → architectureDiagram-3BPJPVTR-Dyv1BvGP.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-s2wYSO7e.js → blockDiagram-GPEHLZMM-CVAb8DyB.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-DyLxZoz9.js → c4Diagram-AAUBKEIU-ClHPb_6S.js} +1 -1
- package/web-shell/assets/channel-DkPTtnGS.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-Dsdai7Tk.js → chunk-2J33WTMH-Dad9g3ZA.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DEosOjV7.js → chunk-4BX2VUAB-IJJSSdDs.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-sNsRLTXf.js → chunk-55IACEB6-DRcc-Hl9.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DkRNZzmh.js → chunk-727SXJPM-DOCFB-6a.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BrsRNpzd.js → chunk-AQP2D5EJ-CRZnSjHp.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CI039lpl.js → chunk-FMBD7UC4-BwUI4Yes.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-M-pkeIfu.js → chunk-ND2GUHAM-DLy8doxd.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-C4ckGNbH.js → chunk-QZHKN3VN-Bhz7iysj.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DBdPU8ix.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DBdPU8ix.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BciKUAFq.js → cose-bilkent-S5V4N54A-jT1e8KzN.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-C1nTSgU6.js → dagre-BM42HDAG-C1veApQk.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BDPNWr1m.js → diagram-2AECGRRQ-C_NOwKeT.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-CNFhTszL.js → diagram-5GNKFQAL-Bigfuz1r.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CjPa4p5a.js → diagram-KO2AKTUF-CpXltPpU.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-ZzPykSyG.js → diagram-LMA3HP47-DYawbYbH.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-0UVtZ9A4.js → diagram-OG6HWLK6-D2t-ttd1.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CajDZCat.js → erDiagram-TEJ5UH35-Buc53PB5.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BRuFBIvL.js → flowDiagram-I6XJVG4X-DwdFsCN7.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BevGmJqG.js → ganttDiagram-6RSMTGT7-XhiEKGoP.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DvPMpBMb.js → gitGraphDiagram-PVQCEYII-D6We014a.js} +1 -1
- package/web-shell/assets/index-BctAmeF3.js +1143 -0
- package/web-shell/assets/{index-DzHwQkQq.js → index-CAWqS-bZ.js} +1 -1
- package/web-shell/assets/index-DLyhlZZO.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-Oixn7tA9.js → infoDiagram-5YYISTIA-C_iugRHQ.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BgKpeg-j.js → ishikawaDiagram-YF4QCWOH-CAn9Kaix.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-74mwxIaA.js → journeyDiagram-JHISSGLW-BjDYOkEB.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-D4D6cEqA.js → kanban-definition-UN3LZRKU-Br_oI3Ob.js} +1 -1
- package/web-shell/assets/{linear-atZRE_L2.js → linear-BqnWHE9E.js} +1 -1
- package/web-shell/assets/{mermaid.core-KKudX-JC.js → mermaid.core-CT-sofSb.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-CMCej9yG.js → mindmap-definition-RKZ34NQL-BbvrZR4B.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-nhx40X7q.js → pieDiagram-4H26LBE5-gAwi3h_Q.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CUmVcN3M.js → quadrantDiagram-W4KKPZXB-CONvBIuO.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-C_vyEwyy.js → requirementDiagram-4Y6WPE33-lpkrcy1e.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DU6G4VWR.js → sankeyDiagram-5OEKKPKP-Bk6FJHqb.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DdeRR_KJ.js → sequenceDiagram-3UESZ5HK-B9b9bBzt.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-C6iCI8ps.js → stateDiagram-AJRCARHV-JqBGC-S3.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-B_w4fDnm.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-B_Ea8Cb7.js → timeline-definition-PNZ67QCA-CCCceXDP.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BPUVZEJA.js → vennDiagram-CIIHVFJN-EHRnmZ09.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BWEj0lKY.js → wardley-L42UT6IY-CYIcHx3_.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BvDsdIQw.js → wardleyDiagram-YWT4CUSO-B81AuYRl.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-crz0QhF_.js → xychartDiagram-2RQKCTM6-DOQ6E3z7.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/channel-worker-group-K7QKH6IG.js +0 -13
- package/chunks/chunk-B7NUUEXC.js +0 -311
- package/chunks/chunk-CARU2RR2.js +0 -24
- package/chunks/chunk-GYTKQYDB.js +0 -23
- package/chunks/chunk-LQU7EVFA.js +0 -30
- package/chunks/chunk-OCPBI7J5.js +0 -18
- package/chunks/chunk-OJAMDVF5.js +0 -66
- package/chunks/chunk-TEGEBB2I.js +0 -122
- package/web-shell/assets/channel-DkuJJ0qd.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +0 -1
- package/web-shell/assets/index-Cnvv4VcI.css +0 -5
- package/web-shell/assets/index-D1Uyklxa.js +0 -1088
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +0 -1
|
@@ -1080,6 +1080,10 @@ var DaemonChannelBridge = class extends EventEmitter2 {
|
|
|
1080
1080
|
case "tool_call_update": {
|
|
1081
1081
|
const toolCallId = getString(update["toolCallId"]);
|
|
1082
1082
|
const kind = getString(update["kind"]);
|
|
1083
|
+
const meta = isRecord(update["_meta"]) ? update["_meta"] : void 0;
|
|
1084
|
+
if (!kind && toolCallId && getString(update["status"]) === "in_progress" && meta?.["shellProgress"] !== void 0) {
|
|
1085
|
+
break;
|
|
1086
|
+
}
|
|
1083
1087
|
if (!toolCallId || !kind) {
|
|
1084
1088
|
this.emitProtocolError(`Malformed daemon ${type} event`, update);
|
|
1085
1089
|
break;
|
|
@@ -2879,6 +2883,29 @@ var LIST_PATTERNS = [
|
|
|
2879
2883
|
/^这个聊天你记住了什么[??]?$/u,
|
|
2880
2884
|
/^what do you remember[??]?$/iu
|
|
2881
2885
|
];
|
|
2886
|
+
var LIST_PAGE_PATTERNS = [
|
|
2887
|
+
/^查看第\s*(\d+)\s*页记忆$/u,
|
|
2888
|
+
/^show memory page\s+(\d+)$/iu
|
|
2889
|
+
];
|
|
2890
|
+
var INSPECT_PATTERNS = [
|
|
2891
|
+
/^查看记忆\s+(\S+)$/u,
|
|
2892
|
+
/^show memory\s+(\S+)$/iu
|
|
2893
|
+
];
|
|
2894
|
+
var REMOVE_PATTERNS = [
|
|
2895
|
+
/^忘掉\s+(\S+)$/u,
|
|
2896
|
+
/^删除\s+(\S+)$/u,
|
|
2897
|
+
/^删掉\s+(\S+)$/u,
|
|
2898
|
+
/^forget\s+(\S+)$/iu,
|
|
2899
|
+
/^delete\s+(\S+)$/iu,
|
|
2900
|
+
/^remove\s+(\S+)$/iu
|
|
2901
|
+
];
|
|
2902
|
+
var UPDATE_PATTERNS = [
|
|
2903
|
+
/^把\s+(\S+)\s+改成\s*(.+)$/su,
|
|
2904
|
+
/^更新\s+(\S+)\s+为\s*(.+)$/su,
|
|
2905
|
+
/^update\s+(\S+)\s+to\s+(.+)$/isu,
|
|
2906
|
+
/^change\s+(\S+)\s+to\s+(.+)$/isu
|
|
2907
|
+
];
|
|
2908
|
+
var MEMORY_ID_PATTERN = /^m-[a-f0-9]{12}$/u;
|
|
2882
2909
|
var CLEAR_REQUEST_PATTERNS = [
|
|
2883
2910
|
/^清空记忆$/u,
|
|
2884
2911
|
/^清除记忆$/u,
|
|
@@ -2901,14 +2928,41 @@ function parseChannelMemoryIntent(text) {
|
|
|
2901
2928
|
return { kind: "clear_confirm" };
|
|
2902
2929
|
}
|
|
2903
2930
|
}
|
|
2931
|
+
for (const pattern of REMOVE_PATTERNS) {
|
|
2932
|
+
const match = trimmed.match(pattern);
|
|
2933
|
+
if (match?.[1] && MEMORY_ID_PATTERN.test(match[1])) {
|
|
2934
|
+
return { kind: "remove", id: match[1] };
|
|
2935
|
+
}
|
|
2936
|
+
}
|
|
2937
|
+
for (const pattern of UPDATE_PATTERNS) {
|
|
2938
|
+
const match = trimmed.match(pattern);
|
|
2939
|
+
const id = match?.[1];
|
|
2940
|
+
const updated = match?.[2]?.trim();
|
|
2941
|
+
if (id && updated && MEMORY_ID_PATTERN.test(id)) {
|
|
2942
|
+
return { kind: "update", id, text: updated };
|
|
2943
|
+
}
|
|
2944
|
+
}
|
|
2904
2945
|
for (const pattern of CLEAR_REQUEST_PATTERNS) {
|
|
2905
2946
|
if (pattern.test(trimmed)) {
|
|
2906
2947
|
return { kind: "clear_request" };
|
|
2907
2948
|
}
|
|
2908
2949
|
}
|
|
2950
|
+
for (const pattern of INSPECT_PATTERNS) {
|
|
2951
|
+
const match = trimmed.match(pattern);
|
|
2952
|
+
if (match?.[1] && MEMORY_ID_PATTERN.test(match[1])) {
|
|
2953
|
+
return { kind: "inspect", id: match[1] };
|
|
2954
|
+
}
|
|
2955
|
+
}
|
|
2956
|
+
for (const pattern of LIST_PAGE_PATTERNS) {
|
|
2957
|
+
const match = trimmed.match(pattern);
|
|
2958
|
+
if (match?.[1]) {
|
|
2959
|
+
const page = Number(match[1]);
|
|
2960
|
+
return Number.isSafeInteger(page) && page > 0 ? { kind: "list", page } : null;
|
|
2961
|
+
}
|
|
2962
|
+
}
|
|
2909
2963
|
for (const pattern of LIST_PATTERNS) {
|
|
2910
2964
|
if (pattern.test(trimmed)) {
|
|
2911
|
-
return { kind: "list" };
|
|
2965
|
+
return { kind: "list", page: 1 };
|
|
2912
2966
|
}
|
|
2913
2967
|
}
|
|
2914
2968
|
for (const pattern of REMEMBER_PATTERNS) {
|
|
@@ -2930,8 +2984,10 @@ var GROUP_HISTORY_ENTRY_TEXT_LIMIT = 1e3;
|
|
|
2930
2984
|
var GROUP_HISTORY_ENTRY_METADATA_LIMIT = 256;
|
|
2931
2985
|
var LOOP_CANCEL_GRACE_MS = 5e3;
|
|
2932
2986
|
var CHANNEL_MEMORY_PROMPT_CODE_POINT_LIMIT = 12e3;
|
|
2987
|
+
var CHANNEL_MEMORY_PAGE_SIZE = 20;
|
|
2988
|
+
var CHANNEL_MEMORY_PREVIEW_CODE_POINT_LIMIT = 160;
|
|
2933
2989
|
var CHANNEL_MEMORY_CLASSIFIER_MIN_CONFIDENCE = 0.7;
|
|
2934
|
-
var CHANNEL_MEMORY_CLASSIFIER_TRIGGER_RE = /(
|
|
2990
|
+
var CHANNEL_MEMORY_CLASSIFIER_TRIGGER_RE = /(?:记住|记得|记一下|记忆|忘掉|忘记|清空|清除|删除|删掉|改成|更新|刚才那条|保存|(?:只|仅)(?:看|列出)[\p{Script=Han}\s]{0,12}(?:偏好|习惯)|\b(?:remember|memory|forget|delete|remove|update|change)\b)/iu;
|
|
2935
2991
|
var LOOP_TIMED_OUT_MESSAGE = "loop timed out";
|
|
2936
2992
|
var DEBUG_PAYLOAD_ENV = "QWEN_CHANNEL_DEBUG_PAYLOAD";
|
|
2937
2993
|
var DEBUG_PAYLOAD_LIMIT = 12e3;
|
|
@@ -3253,6 +3309,9 @@ var ChannelBase = class {
|
|
|
3253
3309
|
supportsProactiveTarget(target) {
|
|
3254
3310
|
return target.threadId === void 0;
|
|
3255
3311
|
}
|
|
3312
|
+
supportsProactiveWebhookTarget(target) {
|
|
3313
|
+
return this.supportsProactiveTarget(target);
|
|
3314
|
+
}
|
|
3256
3315
|
async pushProactive(target, text) {
|
|
3257
3316
|
if (target.threadId) {
|
|
3258
3317
|
throw new Error("Channel does not support proactive loop messages for threaded targets.");
|
|
@@ -3538,7 +3597,7 @@ ${sanitizePromptText(job.prompt)}`;
|
|
|
3538
3597
|
throw new Error(`Unknown webhook source "${task.source}".`);
|
|
3539
3598
|
}
|
|
3540
3599
|
const target = resolveChannelWebhookTarget(this.name, this.config.webhooks, task.source, task.targetRef);
|
|
3541
|
-
if (!this.
|
|
3600
|
+
if (!this.supportsProactiveWebhookTarget(target)) {
|
|
3542
3601
|
throw new Error("Channel does not support proactive webhook messages for this chat target.");
|
|
3543
3602
|
}
|
|
3544
3603
|
return target;
|
|
@@ -4169,30 +4228,6 @@ ${requestList}`);
|
|
|
4169
4228
|
this.registerCommand("approve", (envelope, args) => this.handlePermissionResponseCommand(envelope, args, "approve"));
|
|
4170
4229
|
this.registerCommand("approve-always", (envelope, args) => this.handlePermissionResponseCommand(envelope, args, "approve-always"));
|
|
4171
4230
|
this.registerCommand("deny", (envelope, args) => this.handlePermissionResponseCommand(envelope, args, "deny"));
|
|
4172
|
-
this.registerCommand("remember-channel", async (envelope, args) => {
|
|
4173
|
-
const text = args.trim();
|
|
4174
|
-
if (text === "") {
|
|
4175
|
-
await this.sendMessage(envelope.chatId, "Usage: /remember-channel <text>");
|
|
4176
|
-
return true;
|
|
4177
|
-
}
|
|
4178
|
-
await this.handleChannelMemoryIntent(envelope, {
|
|
4179
|
-
kind: "remember",
|
|
4180
|
-
text
|
|
4181
|
-
});
|
|
4182
|
-
return true;
|
|
4183
|
-
});
|
|
4184
|
-
this.registerCommand("channel-memory", async (envelope) => {
|
|
4185
|
-
await this.handleChannelMemoryIntent(envelope, { kind: "list" });
|
|
4186
|
-
return true;
|
|
4187
|
-
});
|
|
4188
|
-
this.registerCommand("forget-channel", async (envelope, args) => {
|
|
4189
|
-
if (args.toLowerCase() !== "confirm") {
|
|
4190
|
-
await this.sendMessage(envelope.chatId, 'This clears channel memory for this chat. Re-send with "confirm" (e.g. /forget-channel confirm) to proceed.');
|
|
4191
|
-
return true;
|
|
4192
|
-
}
|
|
4193
|
-
await this.handleChannelMemoryIntent(envelope, { kind: "clear_confirm" }, { skipPendingClear: true });
|
|
4194
|
-
return true;
|
|
4195
|
-
});
|
|
4196
4231
|
this.registerCommand("who", async (envelope) => {
|
|
4197
4232
|
if (!this.isAuthorizedForSharedSession(envelope)) {
|
|
4198
4233
|
await this.sendMessage(envelope.chatId, "Only authorized members can view this shared session.");
|
|
@@ -4647,7 +4682,60 @@ ${requestList}`);
|
|
|
4647
4682
|
}
|
|
4648
4683
|
return this.channelMemory;
|
|
4649
4684
|
}
|
|
4650
|
-
|
|
4685
|
+
entriesForChannelMemoryIds(entries, ids) {
|
|
4686
|
+
const selected = new Set(ids);
|
|
4687
|
+
return entries.filter((entry) => selected.has(entry.id));
|
|
4688
|
+
}
|
|
4689
|
+
renderChannelMemoryCandidate(entry) {
|
|
4690
|
+
const preview = truncateCodePoints(sanitizePromptText(entry.text).replace(/[\r\n]+/gu, " ").trim(), CHANNEL_MEMORY_PREVIEW_CODE_POINT_LIMIT);
|
|
4691
|
+
return `${entry.id} ${preview}`;
|
|
4692
|
+
}
|
|
4693
|
+
renderChannelMemoryCandidates(entries) {
|
|
4694
|
+
return entries.map((entry) => this.renderChannelMemoryCandidate(entry));
|
|
4695
|
+
}
|
|
4696
|
+
async handleChannelMemoryIntent(envelope, intent) {
|
|
4697
|
+
if (intent.kind === "no_match") {
|
|
4698
|
+
await this.sendMessage(envelope.chatId, "No matching channel memory entry.");
|
|
4699
|
+
return;
|
|
4700
|
+
}
|
|
4701
|
+
if (intent.kind === "ambiguous") {
|
|
4702
|
+
const channelMemory2 = await this.getChannelMemory(envelope);
|
|
4703
|
+
if (!channelMemory2)
|
|
4704
|
+
return;
|
|
4705
|
+
let entries;
|
|
4706
|
+
try {
|
|
4707
|
+
entries = await channelMemory2.listChannelMemoryEntries(this.channelMemoryTarget(envelope));
|
|
4708
|
+
} catch (error) {
|
|
4709
|
+
this.logChannelMemoryError("read", envelope, this.channelMemoryErrorMessage(error));
|
|
4710
|
+
await this.sendMessage(envelope.chatId, `Failed to read channel memory: ${this.channelMemoryUserErrorMessage()}`);
|
|
4711
|
+
return;
|
|
4712
|
+
}
|
|
4713
|
+
const selected = this.entriesForChannelMemoryIds(entries, intent.ids);
|
|
4714
|
+
await this.sendMessage(envelope.chatId, [
|
|
4715
|
+
"Multiple channel memory entries match:",
|
|
4716
|
+
...this.renderChannelMemoryCandidates(selected)
|
|
4717
|
+
].join("\n"));
|
|
4718
|
+
return;
|
|
4719
|
+
}
|
|
4720
|
+
if (intent.kind === "list_matches") {
|
|
4721
|
+
const channelMemory2 = await this.getChannelMemory(envelope);
|
|
4722
|
+
if (!channelMemory2)
|
|
4723
|
+
return;
|
|
4724
|
+
let entries;
|
|
4725
|
+
try {
|
|
4726
|
+
entries = await channelMemory2.listChannelMemoryEntries(this.channelMemoryTarget(envelope));
|
|
4727
|
+
} catch (error) {
|
|
4728
|
+
this.logChannelMemoryError("read", envelope, this.channelMemoryErrorMessage(error));
|
|
4729
|
+
await this.sendMessage(envelope.chatId, `Failed to read channel memory: ${this.channelMemoryUserErrorMessage()}`);
|
|
4730
|
+
return;
|
|
4731
|
+
}
|
|
4732
|
+
const selected = this.entriesForChannelMemoryIds(entries, intent.ids);
|
|
4733
|
+
await this.sendMessage(envelope.chatId, [
|
|
4734
|
+
"Channel memory (page 1/1):",
|
|
4735
|
+
...this.renderChannelMemoryCandidates(selected)
|
|
4736
|
+
].join("\n"));
|
|
4737
|
+
return;
|
|
4738
|
+
}
|
|
4651
4739
|
if (intent.kind === "clear_request") {
|
|
4652
4740
|
this.setPendingClear(this.clearPendingKey(envelope));
|
|
4653
4741
|
await this.sendMessage(envelope.chatId, 'This clears channel memory for this chat. Say "\u786E\u8BA4\u6E05\u7A7A\u8BB0\u5FC6" or "confirm clear memory" to proceed.');
|
|
@@ -4658,40 +4746,96 @@ ${requestList}`);
|
|
|
4658
4746
|
return;
|
|
4659
4747
|
}
|
|
4660
4748
|
if (intent.kind === "remember") {
|
|
4749
|
+
let result;
|
|
4661
4750
|
try {
|
|
4662
|
-
await channelMemory.
|
|
4751
|
+
result = await channelMemory.addChannelMemoryEntries(this.channelMemoryTarget(envelope), [intent.text], envelope.senderId);
|
|
4663
4752
|
} catch (error) {
|
|
4664
4753
|
const message = this.channelMemoryErrorMessage(error);
|
|
4665
4754
|
this.logChannelMemoryError("save", envelope, message);
|
|
4666
4755
|
await this.sendMessage(envelope.chatId, `Failed to save channel memory: ${this.channelMemoryUserErrorMessage()}`);
|
|
4667
4756
|
return;
|
|
4668
4757
|
}
|
|
4669
|
-
|
|
4670
|
-
|
|
4758
|
+
if (result.changed) {
|
|
4759
|
+
this.invalidateSessionContext(envelope);
|
|
4760
|
+
}
|
|
4761
|
+
if (result.added.length > 0) {
|
|
4762
|
+
const ids = result.added.map((entry) => entry.id);
|
|
4763
|
+
await this.sendMessage(envelope.chatId, ids.length === 1 ? `Channel memory ${ids[0]} saved.` : `Channel memory saved: ${ids.join(", ")}.`);
|
|
4764
|
+
} else if (result.duplicateIds.length > 0) {
|
|
4765
|
+
await this.sendMessage(envelope.chatId, `Channel memory already contains ${result.duplicateIds.join(", ")}.`);
|
|
4766
|
+
} else {
|
|
4767
|
+
await this.sendMessage(envelope.chatId, "Channel memory updated.");
|
|
4768
|
+
}
|
|
4671
4769
|
return;
|
|
4672
4770
|
}
|
|
4673
|
-
if (intent.kind === "list") {
|
|
4674
|
-
let
|
|
4771
|
+
if (intent.kind === "list" || intent.kind === "inspect") {
|
|
4772
|
+
let entries;
|
|
4675
4773
|
try {
|
|
4676
|
-
|
|
4774
|
+
entries = await channelMemory.listChannelMemoryEntries(this.channelMemoryTarget(envelope));
|
|
4677
4775
|
} catch (error) {
|
|
4678
4776
|
const message = this.channelMemoryErrorMessage(error);
|
|
4679
4777
|
this.logChannelMemoryError("read", envelope, message);
|
|
4680
4778
|
await this.sendMessage(envelope.chatId, `Failed to read channel memory: ${this.channelMemoryUserErrorMessage()}`);
|
|
4681
4779
|
return;
|
|
4682
4780
|
}
|
|
4683
|
-
|
|
4781
|
+
if (intent.kind === "inspect") {
|
|
4782
|
+
const entry = entries.find((candidate) => candidate.id === intent.id);
|
|
4783
|
+
await this.sendMessage(envelope.chatId, entry ? `Channel memory ${entry.id}:
|
|
4784
|
+
${sanitizePromptText(entry.text).trim()}` : `No channel memory entry ${intent.id}.`);
|
|
4785
|
+
return;
|
|
4786
|
+
}
|
|
4787
|
+
const totalPages = Math.max(1, Math.ceil(entries.length / CHANNEL_MEMORY_PAGE_SIZE));
|
|
4788
|
+
if (intent.page > totalPages) {
|
|
4789
|
+
await this.sendMessage(envelope.chatId, `Channel memory page ${intent.page} does not exist.`);
|
|
4790
|
+
return;
|
|
4791
|
+
}
|
|
4792
|
+
if (entries.length === 0) {
|
|
4793
|
+
await this.sendMessage(envelope.chatId, "No channel memory saved.");
|
|
4794
|
+
return;
|
|
4795
|
+
}
|
|
4796
|
+
const pageStart = (intent.page - 1) * CHANNEL_MEMORY_PAGE_SIZE;
|
|
4797
|
+
const lines = entries.slice(pageStart, pageStart + CHANNEL_MEMORY_PAGE_SIZE).map((entry) => this.renderChannelMemoryCandidate(entry));
|
|
4798
|
+
await this.sendMessage(envelope.chatId, [`Channel memory (page ${intent.page}/${totalPages}):`, ...lines].join("\n"));
|
|
4684
4799
|
return;
|
|
4685
4800
|
}
|
|
4686
|
-
if (intent.kind === "
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
if (
|
|
4692
|
-
await this.
|
|
4693
|
-
|
|
4801
|
+
if (intent.kind === "update" || intent.kind === "remove" || intent.kind === "natural_update" || intent.kind === "natural_remove") {
|
|
4802
|
+
let changed;
|
|
4803
|
+
const isUpdate = intent.kind === "update" || intent.kind === "natural_update";
|
|
4804
|
+
const id = intent.id;
|
|
4805
|
+
try {
|
|
4806
|
+
if (isUpdate) {
|
|
4807
|
+
({ changed } = await channelMemory.updateChannelMemoryEntry(this.channelMemoryTarget(envelope), intent.kind === "natural_update" ? {
|
|
4808
|
+
id: intent.id,
|
|
4809
|
+
text: intent.text,
|
|
4810
|
+
expectedText: intent.expectedText
|
|
4811
|
+
} : { id: intent.id, text: intent.text }));
|
|
4812
|
+
} else {
|
|
4813
|
+
({ changed } = await channelMemory.removeChannelMemoryEntries(this.channelMemoryTarget(envelope), intent.kind === "natural_remove" ? {
|
|
4814
|
+
ids: [intent.id],
|
|
4815
|
+
expectedTextById: { [intent.id]: intent.expectedText }
|
|
4816
|
+
} : { ids: [intent.id] }));
|
|
4694
4817
|
}
|
|
4818
|
+
} catch (error) {
|
|
4819
|
+
const message = this.channelMemoryErrorMessage(error);
|
|
4820
|
+
this.logChannelMemoryError(isUpdate ? "update" : "remove", envelope, message);
|
|
4821
|
+
await this.sendMessage(envelope.chatId, `Failed to ${isUpdate ? "update" : "remove"} channel memory: ${this.channelMemoryUserErrorMessage()}`);
|
|
4822
|
+
return;
|
|
4823
|
+
}
|
|
4824
|
+
if (!changed) {
|
|
4825
|
+
await this.sendMessage(envelope.chatId, `No channel memory entry ${id}.`);
|
|
4826
|
+
return;
|
|
4827
|
+
}
|
|
4828
|
+
this.invalidateSessionContext(envelope);
|
|
4829
|
+
await this.sendMessage(envelope.chatId, `Channel memory ${id} ${isUpdate ? "updated" : "removed"}.`);
|
|
4830
|
+
return;
|
|
4831
|
+
}
|
|
4832
|
+
if (intent.kind === "clear_confirm") {
|
|
4833
|
+
const pendingKey = this.clearPendingKey(envelope);
|
|
4834
|
+
const expiresAt = this.pendingClears.get(pendingKey);
|
|
4835
|
+
this.pendingClears.delete(pendingKey);
|
|
4836
|
+
if (expiresAt === void 0 || expiresAt < Date.now()) {
|
|
4837
|
+
await this.sendMessage(envelope.chatId, 'No pending clear request. Say "\u6E05\u7A7A\u8BB0\u5FC6" first.');
|
|
4838
|
+
return;
|
|
4695
4839
|
}
|
|
4696
4840
|
let result;
|
|
4697
4841
|
try {
|
|
@@ -4702,7 +4846,9 @@ ${requestList}`);
|
|
|
4702
4846
|
await this.sendMessage(envelope.chatId, `Failed to clear channel memory: ${this.channelMemoryUserErrorMessage()}`);
|
|
4703
4847
|
return;
|
|
4704
4848
|
}
|
|
4705
|
-
|
|
4849
|
+
if (result.changed) {
|
|
4850
|
+
this.invalidateSessionContext(envelope);
|
|
4851
|
+
}
|
|
4706
4852
|
await this.sendMessage(envelope.chatId, result.changed ? "Channel memory cleared." : "No channel memory saved.");
|
|
4707
4853
|
return;
|
|
4708
4854
|
}
|
|
@@ -4725,31 +4871,82 @@ ${requestList}`);
|
|
|
4725
4871
|
}
|
|
4726
4872
|
this.pendingClears.set(key, now + 6e4);
|
|
4727
4873
|
}
|
|
4728
|
-
async classifyChannelMemoryIntent(
|
|
4729
|
-
if (!this.memoryIntentClassifier) {
|
|
4874
|
+
async classifyChannelMemoryIntent(envelope) {
|
|
4875
|
+
if (!this.memoryIntentClassifier || !this.channelMemory) {
|
|
4876
|
+
return null;
|
|
4877
|
+
}
|
|
4878
|
+
let entries;
|
|
4879
|
+
try {
|
|
4880
|
+
entries = await this.channelMemory.listChannelMemoryEntries(this.channelMemoryTarget(envelope));
|
|
4881
|
+
} catch (error) {
|
|
4882
|
+
this.logChannelMemoryError("read", envelope, this.channelMemoryErrorMessage(error));
|
|
4730
4883
|
return null;
|
|
4731
4884
|
}
|
|
4732
4885
|
let classified;
|
|
4733
4886
|
try {
|
|
4734
|
-
classified = await this.memoryIntentClassifier.classifyChannelMemoryIntent(text);
|
|
4887
|
+
classified = await this.memoryIntentClassifier.classifyChannelMemoryIntent(envelope.text, entries);
|
|
4735
4888
|
} catch (error) {
|
|
4736
4889
|
process.stderr.write(`[${this.name}] channel memory intent classifier failed: ${sanitizeLogText(this.channelMemoryErrorMessage(error), 200)}
|
|
4737
4890
|
`);
|
|
4738
4891
|
return null;
|
|
4739
4892
|
}
|
|
4740
|
-
|
|
4893
|
+
const confidence = classified && typeof classified === "object" ? classified.confidence : void 0;
|
|
4894
|
+
if (typeof confidence !== "number" || !Number.isFinite(confidence) || confidence < 0 || confidence > 1 || confidence < CHANNEL_MEMORY_CLASSIFIER_MIN_CONFIDENCE) {
|
|
4741
4895
|
return null;
|
|
4742
4896
|
}
|
|
4743
|
-
|
|
4744
|
-
|
|
4897
|
+
const result = classified;
|
|
4898
|
+
const targetIds = result.targetIds;
|
|
4899
|
+
const entryById = new Map(entries.map((entry2) => [entry2.id, entry2]));
|
|
4900
|
+
const resolvedEntries = targetIds === void 0 ? void 0 : Array.isArray(targetIds) && targetIds.every((id) => typeof id === "string" && entryById.has(id)) && new Set(targetIds).size === targetIds.length ? this.entriesForChannelMemoryIds(entries, targetIds) : null;
|
|
4901
|
+
if (result.intent === "remember") {
|
|
4902
|
+
const memory = typeof result.memory === "string" ? result.memory.trim() : "";
|
|
4745
4903
|
return memory ? { kind: "remember", text: memory } : null;
|
|
4746
4904
|
}
|
|
4747
|
-
if (
|
|
4748
|
-
|
|
4905
|
+
if (result.intent === "list") {
|
|
4906
|
+
if (resolvedEntries === void 0)
|
|
4907
|
+
return { kind: "list", page: 1 };
|
|
4908
|
+
if (resolvedEntries === null)
|
|
4909
|
+
return null;
|
|
4910
|
+
return resolvedEntries.length === 0 ? { kind: "no_match" } : {
|
|
4911
|
+
kind: "list_matches",
|
|
4912
|
+
ids: resolvedEntries.map((entry2) => entry2.id)
|
|
4913
|
+
};
|
|
4749
4914
|
}
|
|
4750
|
-
if (
|
|
4915
|
+
if (result.intent === "clear_all") {
|
|
4751
4916
|
return { kind: "clear_request" };
|
|
4752
4917
|
}
|
|
4918
|
+
if (result.intent !== "inspect" && result.intent !== "update" && result.intent !== "remove") {
|
|
4919
|
+
return null;
|
|
4920
|
+
}
|
|
4921
|
+
if (resolvedEntries === null || resolvedEntries === void 0)
|
|
4922
|
+
return null;
|
|
4923
|
+
if (resolvedEntries.length === 0)
|
|
4924
|
+
return { kind: "no_match" };
|
|
4925
|
+
if (resolvedEntries.length > 1) {
|
|
4926
|
+
return {
|
|
4927
|
+
kind: "ambiguous",
|
|
4928
|
+
ids: resolvedEntries.map((entry2) => entry2.id)
|
|
4929
|
+
};
|
|
4930
|
+
}
|
|
4931
|
+
const entry = resolvedEntries[0];
|
|
4932
|
+
if (result.intent === "inspect")
|
|
4933
|
+
return { kind: "inspect", id: entry.id };
|
|
4934
|
+
if (result.intent === "remove") {
|
|
4935
|
+
return {
|
|
4936
|
+
kind: "natural_remove",
|
|
4937
|
+
id: entry.id,
|
|
4938
|
+
expectedText: entry.text
|
|
4939
|
+
};
|
|
4940
|
+
}
|
|
4941
|
+
const text = typeof result.memory === "string" ? result.memory.trim() : "";
|
|
4942
|
+
if (text) {
|
|
4943
|
+
return {
|
|
4944
|
+
kind: "natural_update",
|
|
4945
|
+
id: entry.id,
|
|
4946
|
+
text,
|
|
4947
|
+
expectedText: entry.text
|
|
4948
|
+
};
|
|
4949
|
+
}
|
|
4753
4950
|
return null;
|
|
4754
4951
|
}
|
|
4755
4952
|
channelMemoryErrorMessage(error) {
|
|
@@ -5081,7 +5278,7 @@ ${promptText}`;
|
|
|
5081
5278
|
}
|
|
5082
5279
|
let memoryIntent = parseChannelMemoryIntent(envelope.text);
|
|
5083
5280
|
if (!memoryIntent && this.shouldClassifyChannelMemoryIntent(envelope.text)) {
|
|
5084
|
-
memoryIntent = await this.classifyChannelMemoryIntent(envelope
|
|
5281
|
+
memoryIntent = await this.classifyChannelMemoryIntent(envelope);
|
|
5085
5282
|
}
|
|
5086
5283
|
if (memoryIntent) {
|
|
5087
5284
|
await this.handleChannelMemoryIntent(envelope, memoryIntent);
|
|
@@ -4,22 +4,22 @@ import {
|
|
|
4
4
|
Client,
|
|
5
5
|
So,
|
|
6
6
|
StdioClientTransport
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-R6AO7HBQ.js";
|
|
8
|
+
import "./chunk-T4TZQJ7W.js";
|
|
8
9
|
import "./chunk-H6XPXXMH.js";
|
|
9
10
|
import "./chunk-5M6IDOMF.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-A2HWMJVO.js";
|
|
11
12
|
import "./chunk-RCEEXIOO.js";
|
|
12
13
|
import "./chunk-KKRTYONM.js";
|
|
13
14
|
import "./chunk-TV6K2FB4.js";
|
|
14
15
|
import "./chunk-E2UVIFI2.js";
|
|
15
|
-
import "./chunk-6OATMEYN.js";
|
|
16
16
|
import "./chunk-XU457J4V.js";
|
|
17
17
|
import "./chunk-VDDGDZMA.js";
|
|
18
18
|
import "./chunk-SPJQO2CE.js";
|
|
19
19
|
import "./chunk-SZRN75WQ.js";
|
|
20
20
|
import "./chunk-HTO4JFDZ.js";
|
|
21
21
|
import "./chunk-CPBF7KYF.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-F333XEAU.js";
|
|
23
23
|
import "./chunk-6AM5D4ME.js";
|
|
24
24
|
import "./chunk-2Z5UX4KI.js";
|
|
25
25
|
import "./chunk-ARKANCNX.js";
|
|
@@ -27,25 +27,25 @@ import "./chunk-L5U3ELZX.js";
|
|
|
27
27
|
import "./chunk-TYLOFD2U.js";
|
|
28
28
|
import {
|
|
29
29
|
safeJsonStringify
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-BTSE2DUP.js";
|
|
31
31
|
import "./chunk-4WKAA4KS.js";
|
|
32
32
|
import "./chunk-CR3C7WXL.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-RTV5TUYB.js";
|
|
34
34
|
import "./chunk-VGC4I5JJ.js";
|
|
35
35
|
import "./chunk-FBU7WRZI.js";
|
|
36
36
|
import "./chunk-Y66VOBRP.js";
|
|
37
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-WTNZ6DXB.js";
|
|
38
38
|
import {
|
|
39
39
|
BaseDeclarativeTool,
|
|
40
40
|
BaseToolInvocation
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-JGUT3LWZ.js";
|
|
42
42
|
import "./chunk-OKAIGAYW.js";
|
|
43
43
|
import "./chunk-ZPAHLFZU.js";
|
|
44
44
|
import "./chunk-JESCGQM3.js";
|
|
45
45
|
import "./chunk-WIEO4CWB.js";
|
|
46
46
|
import "./chunk-XVNQMZ2I.js";
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-FEOZBUMT.js";
|
|
48
|
+
import "./chunk-VRR65QYW.js";
|
|
49
49
|
import "./chunk-A4UCTEB5.js";
|
|
50
50
|
import "./chunk-XWRJCPHC.js";
|
|
51
51
|
import "./chunk-4LD5APFL.js";
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
parseChannelWebhookConfig,
|
|
6
6
|
parseChannelWebhookConfigLenient,
|
|
7
7
|
resolveEnvVars
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-5CNYZ7TN.js";
|
|
9
|
+
import "./chunk-FNX3LGAK.js";
|
|
10
10
|
import {
|
|
11
11
|
findCliEntryPath
|
|
12
12
|
} from "./chunk-V6WHFGST.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-ZQIYGQCG.js";
|
|
14
14
|
import "./chunk-UDXSXLER.js";
|
|
15
15
|
import "./chunk-H6XPXXMH.js";
|
|
16
16
|
import "./chunk-5O2XNYP6.js";
|
|
@@ -4,49 +4,49 @@ import {
|
|
|
4
4
|
collectContextData,
|
|
5
5
|
contextCommand,
|
|
6
6
|
formatContextUsageText
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-46Y6SSQ7.js";
|
|
8
8
|
import "./chunk-4WGODMVR.js";
|
|
9
9
|
import "./chunk-7X7TEQNX.js";
|
|
10
10
|
import "./chunk-HTHUX2T5.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-EMJJBXS7.js";
|
|
12
12
|
import "./chunk-YUZI3WAC.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-R6AO7HBQ.js";
|
|
14
|
+
import "./chunk-T4TZQJ7W.js";
|
|
14
15
|
import "./chunk-H6XPXXMH.js";
|
|
15
16
|
import "./chunk-5M6IDOMF.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-A2HWMJVO.js";
|
|
17
18
|
import "./chunk-RCEEXIOO.js";
|
|
18
19
|
import "./chunk-KKRTYONM.js";
|
|
19
20
|
import "./chunk-TV6K2FB4.js";
|
|
20
21
|
import "./chunk-E2UVIFI2.js";
|
|
21
|
-
import "./chunk-6OATMEYN.js";
|
|
22
22
|
import "./chunk-XU457J4V.js";
|
|
23
23
|
import "./chunk-VDDGDZMA.js";
|
|
24
24
|
import "./chunk-SPJQO2CE.js";
|
|
25
25
|
import "./chunk-SZRN75WQ.js";
|
|
26
26
|
import "./chunk-HTO4JFDZ.js";
|
|
27
27
|
import "./chunk-CPBF7KYF.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-F333XEAU.js";
|
|
29
29
|
import "./chunk-6AM5D4ME.js";
|
|
30
30
|
import "./chunk-2Z5UX4KI.js";
|
|
31
31
|
import "./chunk-ARKANCNX.js";
|
|
32
32
|
import "./chunk-L5U3ELZX.js";
|
|
33
33
|
import "./chunk-TYLOFD2U.js";
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-BTSE2DUP.js";
|
|
35
35
|
import "./chunk-4WKAA4KS.js";
|
|
36
36
|
import "./chunk-CR3C7WXL.js";
|
|
37
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-RTV5TUYB.js";
|
|
38
38
|
import "./chunk-VGC4I5JJ.js";
|
|
39
39
|
import "./chunk-FBU7WRZI.js";
|
|
40
40
|
import "./chunk-Y66VOBRP.js";
|
|
41
|
-
import "./chunk-
|
|
42
|
-
import "./chunk-
|
|
41
|
+
import "./chunk-WTNZ6DXB.js";
|
|
42
|
+
import "./chunk-JGUT3LWZ.js";
|
|
43
43
|
import "./chunk-OKAIGAYW.js";
|
|
44
44
|
import "./chunk-ZPAHLFZU.js";
|
|
45
45
|
import "./chunk-JESCGQM3.js";
|
|
46
46
|
import "./chunk-WIEO4CWB.js";
|
|
47
47
|
import "./chunk-XVNQMZ2I.js";
|
|
48
|
-
import "./chunk-
|
|
49
|
-
import "./chunk-
|
|
48
|
+
import "./chunk-FEOZBUMT.js";
|
|
49
|
+
import "./chunk-VRR65QYW.js";
|
|
50
50
|
import "./chunk-A4UCTEB5.js";
|
|
51
51
|
import "./chunk-XWRJCPHC.js";
|
|
52
52
|
import "./chunk-4LD5APFL.js";
|
|
@@ -5,43 +5,43 @@ import {
|
|
|
5
5
|
} from "./chunk-YUZI3WAC.js";
|
|
6
6
|
import {
|
|
7
7
|
stripTerminalControlSequences
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-R6AO7HBQ.js";
|
|
9
|
+
import "./chunk-T4TZQJ7W.js";
|
|
9
10
|
import "./chunk-H6XPXXMH.js";
|
|
10
11
|
import "./chunk-5M6IDOMF.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-A2HWMJVO.js";
|
|
12
13
|
import "./chunk-RCEEXIOO.js";
|
|
13
14
|
import "./chunk-KKRTYONM.js";
|
|
14
15
|
import "./chunk-TV6K2FB4.js";
|
|
15
16
|
import "./chunk-E2UVIFI2.js";
|
|
16
|
-
import "./chunk-6OATMEYN.js";
|
|
17
17
|
import "./chunk-XU457J4V.js";
|
|
18
18
|
import "./chunk-VDDGDZMA.js";
|
|
19
19
|
import "./chunk-SPJQO2CE.js";
|
|
20
20
|
import "./chunk-SZRN75WQ.js";
|
|
21
21
|
import "./chunk-HTO4JFDZ.js";
|
|
22
22
|
import "./chunk-CPBF7KYF.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-F333XEAU.js";
|
|
24
24
|
import "./chunk-6AM5D4ME.js";
|
|
25
25
|
import "./chunk-2Z5UX4KI.js";
|
|
26
26
|
import "./chunk-ARKANCNX.js";
|
|
27
27
|
import "./chunk-L5U3ELZX.js";
|
|
28
28
|
import "./chunk-TYLOFD2U.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-BTSE2DUP.js";
|
|
30
30
|
import "./chunk-4WKAA4KS.js";
|
|
31
31
|
import "./chunk-CR3C7WXL.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-RTV5TUYB.js";
|
|
33
33
|
import "./chunk-VGC4I5JJ.js";
|
|
34
34
|
import "./chunk-FBU7WRZI.js";
|
|
35
35
|
import "./chunk-Y66VOBRP.js";
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
36
|
+
import "./chunk-WTNZ6DXB.js";
|
|
37
|
+
import "./chunk-JGUT3LWZ.js";
|
|
38
38
|
import "./chunk-OKAIGAYW.js";
|
|
39
39
|
import "./chunk-ZPAHLFZU.js";
|
|
40
40
|
import "./chunk-JESCGQM3.js";
|
|
41
41
|
import "./chunk-WIEO4CWB.js";
|
|
42
42
|
import "./chunk-XVNQMZ2I.js";
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
43
|
+
import "./chunk-FEOZBUMT.js";
|
|
44
|
+
import "./chunk-VRR65QYW.js";
|
|
45
45
|
import "./chunk-A4UCTEB5.js";
|
|
46
46
|
import "./chunk-XWRJCPHC.js";
|
|
47
47
|
import "./chunk-4LD5APFL.js";
|