gerege-cli 0.26.5 → 0.26.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/chunks/{MaxSizedBox-VMVLMS4X.js → MaxSizedBox-LSNOJEKM.js} +1 -1
- package/chunks/{StandaloneSessionPicker-UNORCVYY.js → StandaloneSessionPicker-KSYGPMEV.js} +1 -1
- package/chunks/{acp-subagent-executor-623ZUTJT.js → acp-subagent-executor-NSW2MFUI.js} +1 -1
- package/chunks/{acpAgent-MTTDTK2C.js → acpAgent-3DTOHTDM.js} +3 -3
- package/chunks/{advisor-ANUGICJ5.js → advisor-7JGQPS7X.js} +1 -1
- package/chunks/{agent-GNCQDICJ.js → agent-PNKQJGDO.js} +1 -1
- package/chunks/{agent-headless-OPUXAXQM.js → agent-headless-7D33X7QQ.js} +1 -1
- package/chunks/{agent-host-client-K6GRPTFD.js → agent-host-client-3R2MAUVE.js} +1 -1
- package/chunks/{agent-host-connections-MF3YBZU2.js → agent-host-connections-2D7DECAE.js} +1 -1
- package/chunks/{anthropicContentGenerator-OK4PFE5Y.js → anthropicContentGenerator-MGTJJGEQ.js} +1 -1
- package/chunks/{autofix-pr-MABTGEHZ.js → autofix-pr-OIHHZSPQ.js} +1 -1
- package/chunks/{batch-V2NJT3M5.js → batch-6UDAMPAA.js} +1 -1
- package/chunks/{bridge-BJQ627CX.js → bridge-QXVXPNJ6.js} +1 -1
- package/chunks/{channel-settings-store-4JMCI4UR.js → channel-settings-store-P4W4R5SJ.js} +1 -1
- package/chunks/{chunk-ZN57TOVA.js → chunk-2DU2WMTL.js} +1 -1
- package/chunks/{chunk-ISGF3BVD.js → chunk-2J2BQ3PL.js} +2 -2
- package/chunks/{chunk-TQTIEK2W.js → chunk-2LMSDH6P.js} +1 -1
- package/chunks/{chunk-EIILQ6KT.js → chunk-3EZ5GCUT.js} +1 -1
- package/chunks/{chunk-UY2ET2AL.js → chunk-3ICJI5KW.js} +1 -1
- package/chunks/{chunk-VDRE7U3P.js → chunk-4A663FE6.js} +5 -5
- package/chunks/{chunk-2IGE2K5V.js → chunk-4AKTP4MM.js} +1 -1
- package/chunks/{chunk-NO26JN24.js → chunk-4LC4INFI.js} +1 -1
- package/chunks/{chunk-CKZRJP4F.js → chunk-4ME3BUJK.js} +1 -1
- package/chunks/{chunk-3XBJYUWP.js → chunk-4QOVM2LL.js} +1 -1
- package/chunks/{chunk-ZYTG6R7S.js → chunk-4VR4DUUD.js} +1 -1
- package/chunks/{chunk-DE53B2R7.js → chunk-4W27Z3OL.js} +1 -1
- package/chunks/{chunk-QOYRDEXR.js → chunk-53IB4U4E.js} +1 -1
- package/chunks/{chunk-CCOUFBOY.js → chunk-5R2JIZID.js} +1 -1
- package/chunks/{chunk-MPAR4JBP.js → chunk-5TWAP4OG.js} +1 -1
- package/chunks/{chunk-3NQESE5K.js → chunk-6JAXAFX7.js} +1 -1
- package/chunks/{chunk-POA4NX4N.js → chunk-6WV5RKYB.js} +1 -1
- package/chunks/{chunk-KN27BFXM.js → chunk-6YFNUVJR.js} +1 -1
- package/chunks/{chunk-2X3UF2CF.js → chunk-7HFFTOAD.js} +1 -1
- package/chunks/{chunk-KDYUZBZC.js → chunk-ATTJQLQV.js} +1 -1
- package/chunks/{chunk-USJFJZ23.js → chunk-BGELKSQ4.js} +1 -1
- package/chunks/{chunk-X4BFEDWU.js → chunk-BIPPD7W6.js} +1 -1
- package/chunks/{chunk-DEMXCA3K.js → chunk-BVV7UXES.js} +1 -1
- package/chunks/{chunk-2VCDJ6UF.js → chunk-BY46PCWY.js} +1 -1
- package/chunks/{chunk-CXGGC4NO.js → chunk-CDKBM72V.js} +1 -1
- package/chunks/{chunk-5WLKN3GD.js → chunk-CK3OKTTL.js} +1 -1
- package/chunks/{chunk-FHBGTZ4K.js → chunk-DEJ47KJE.js} +1 -1
- package/chunks/{chunk-DTTC4ZKY.js → chunk-DQQN2HOP.js} +1 -1
- package/chunks/{chunk-PN62SUYK.js → chunk-DTX2OVQW.js} +1 -1
- package/chunks/{chunk-IBYFSHBB.js → chunk-DVUKYOCJ.js} +1 -1
- package/chunks/{chunk-Q5E5SOY2.js → chunk-E3KWSRJN.js} +1 -1
- package/chunks/{chunk-IDUGQMTP.js → chunk-EEPNACXJ.js} +1 -1
- package/chunks/{chunk-E5YRAQXM.js → chunk-EKRUF347.js} +1 -1
- package/chunks/{chunk-HSYBIGMS.js → chunk-F5SLLEJY.js} +1 -1
- package/chunks/{chunk-5ZQWQ3RK.js → chunk-F7622ZRQ.js} +1 -1
- package/chunks/{chunk-KKBOCRPF.js → chunk-FKUDVIME.js} +1 -1
- package/chunks/{chunk-62NLMVVT.js → chunk-FRVXSKL4.js} +1 -1
- package/chunks/{chunk-FIM7MM25.js → chunk-FTF2NFLB.js} +1 -1
- package/chunks/{chunk-OHXQYU6S.js → chunk-G4MWPXNY.js} +1 -1
- package/chunks/{chunk-SELRSZFK.js → chunk-GA35LMSX.js} +1 -1
- package/chunks/{chunk-SMYBY353.js → chunk-H34KVVI4.js} +1 -1
- package/chunks/{chunk-NGOIJH7K.js → chunk-H5EXNXGW.js} +1 -1
- package/chunks/{chunk-UBXLQ6TP.js → chunk-HJLRKM3W.js} +1 -1
- package/chunks/{chunk-CAPG7UVH.js → chunk-HVP4UF2Q.js} +1 -1
- package/chunks/{chunk-H57IX45A.js → chunk-HXTYFGSQ.js} +1 -1
- package/chunks/{chunk-55RVKT4O.js → chunk-IIHUDJX7.js} +1 -1
- package/chunks/{chunk-XFLLE2J3.js → chunk-IQMKQKKD.js} +2 -2
- package/chunks/{chunk-SQQORHMS.js → chunk-ISQMHOCC.js} +1 -1
- package/chunks/{chunk-YLAI26PX.js → chunk-IY7M5HKF.js} +1 -1
- package/chunks/{chunk-FDUXQAGW.js → chunk-IZXHCHJD.js} +1 -1
- package/chunks/{chunk-ZOBX6C7E.js → chunk-JHC22BZH.js} +1 -1
- package/chunks/{chunk-26ISBUM7.js → chunk-K7GN4CMV.js} +6 -6
- package/chunks/{chunk-4GC5HJZO.js → chunk-L7LO3YRT.js} +1 -1
- package/chunks/{chunk-ZSVSRF4C.js → chunk-LT3J74BZ.js} +1 -1
- package/chunks/{chunk-2PY7R7GG.js → chunk-LY4XTBL4.js} +1 -1
- package/chunks/{chunk-7IERHQ63.js → chunk-LYFRGP42.js} +1 -1
- package/chunks/{chunk-FPZPCZFS.js → chunk-MDCA4I63.js} +1 -1
- package/chunks/{chunk-2LLPGSUK.js → chunk-MS2XCBPP.js} +1 -1
- package/chunks/{chunk-3Y6LSWEW.js → chunk-MXZXQUVP.js} +1 -1
- package/chunks/{chunk-IH2PFVWO.js → chunk-N4ZQC5HB.js} +1 -1
- package/chunks/{chunk-MTW3A3KT.js → chunk-N6EFYQ7M.js} +1 -1
- package/chunks/{chunk-AQWHCRKY.js → chunk-NHPKD7LY.js} +1 -1
- package/chunks/{chunk-ABJGFEES.js → chunk-NO7VTKRL.js} +1 -1
- package/chunks/{chunk-CNFA5UUM.js → chunk-NPAENNRO.js} +1 -1
- package/chunks/{chunk-IA4K4PGK.js → chunk-NYBYDW6R.js} +1 -1
- package/chunks/{chunk-FNB3DPQZ.js → chunk-O3TUZQP4.js} +1 -1
- package/chunks/{chunk-RVJJFDF3.js → chunk-OZFZBGZG.js} +1 -1
- package/chunks/{chunk-B6D3KTUK.js → chunk-P2MZZMCS.js} +1 -1
- package/chunks/{chunk-GSOBASYW.js → chunk-PMBI46K4.js} +1 -1
- package/chunks/{chunk-WI4UMN3Q.js → chunk-Q5RRVBTY.js} +1 -1
- package/chunks/{chunk-5UZT4SXG.js → chunk-QHYSRPQR.js} +1 -1
- package/chunks/{chunk-2NOMOJWE.js → chunk-QONPET6Y.js} +2 -2
- package/chunks/{chunk-MOPJNP5I.js → chunk-QSPXKBUX.js} +1 -1
- package/chunks/{chunk-C56YJIEI.js → chunk-QTKPC24L.js} +1 -1
- package/chunks/{chunk-6X73W4TL.js → chunk-QTVSPQZQ.js} +1 -1
- package/chunks/{chunk-ADZI3OFT.js → chunk-QVHDM6N7.js} +1 -1
- package/chunks/{chunk-NVSKOSFG.js → chunk-RT6J7PV4.js} +1 -1
- package/chunks/{chunk-7MTBINFX.js → chunk-RULGA7WE.js} +2 -2
- package/chunks/{chunk-AMTFJVDD.js → chunk-SAVYMUU3.js} +1 -1
- package/chunks/{chunk-Z5XENA4A.js → chunk-T3CQ72HC.js} +8 -7
- package/chunks/{chunk-OPYGNTZP.js → chunk-U5YOAOU3.js} +1 -1
- package/chunks/{chunk-HFV6CQWE.js → chunk-ULLW2AYD.js} +1 -1
- package/chunks/{chunk-KGJ47CI5.js → chunk-UM5KBBYP.js} +1 -1
- package/chunks/{chunk-F26LTWDZ.js → chunk-UVMLWDRU.js} +1 -1
- package/chunks/{chunk-BRPJ5EHA.js → chunk-VK7LOUOJ.js} +1 -1
- package/chunks/{chunk-4EQWJTJR.js → chunk-VUNHJ74J.js} +1 -1
- package/chunks/{chunk-WB34KMOT.js → chunk-W2CV36HT.js} +1 -1
- package/chunks/{chunk-ADTFKUH2.js → chunk-WCI33URB.js} +1 -1
- package/chunks/{chunk-4TYTJQWR.js → chunk-WEPC42YR.js} +1 -1
- package/chunks/{chunk-YGHM5CDT.js → chunk-WF7Q3ZSQ.js} +1 -1
- package/chunks/{chunk-UJYOILZR.js → chunk-WK666FGZ.js} +3 -3
- package/chunks/{chunk-3WQPUP5U.js → chunk-WMLYHZZX.js} +1 -1
- package/chunks/{chunk-OCBJCZC2.js → chunk-WSI4G7XC.js} +1 -1
- package/chunks/{chunk-Q6QS5JTK.js → chunk-WXK7Z45R.js} +1 -1
- package/chunks/{chunk-6NI33TVK.js → chunk-X2TY7VTY.js} +1 -1
- package/chunks/{chunk-BBOJUFMW.js → chunk-YWK3E4WJ.js} +1 -1
- package/chunks/{chunk-FNXO5KWB.js → chunk-YY4GWNTU.js} +2 -2
- package/chunks/{chunk-FLJLUMQF.js → chunk-ZFOEVHWG.js} +1 -1
- package/chunks/{codex-subagent-executor-EK3A2WBH.js → codex-subagent-executor-GPTKVP7H.js} +1 -1
- package/chunks/{config-utils-DLOK7OLM.js → config-utils-6B5FHBSF.js} +1 -1
- package/chunks/{contextCommand-AVCUCHQC.js → contextCommand-FGRDE3GA.js} +1 -1
- package/chunks/{core-runtime-QSS4ZTG6.js → core-runtime-OFEHSKDB.js} +1 -1
- package/chunks/{create-sub-session-PNF7QDKC.js → create-sub-session-D2KEWVHQ.js} +1 -1
- package/chunks/{cron-create-C6JOFIU4.js → cron-create-RFGGKTL7.js} +1 -1
- package/chunks/{daemon-git-worktree-guard-5XZAZ7D2.js → daemon-git-worktree-guard-AV752IOZ.js} +1 -1
- package/chunks/{daemon-status-provider-MRNELSNJ.js → daemon-status-provider-GHQBRDMC.js} +1 -1
- package/chunks/{daemon-trust-policy-26CMW3WY.js → daemon-trust-policy-24ENJNTQ.js} +1 -1
- package/chunks/{daemon-trust-policy-monitor-3DWO6NQY.js → daemon-trust-policy-monitor-NMSQAGWV.js} +1 -1
- package/chunks/{deferred-core-runtime-DEC3N46T.js → deferred-core-runtime-5BAMFFOI.js} +1 -1
- package/chunks/{edit-3HMQPCHN.js → edit-XCECLEH3.js} +1 -1
- package/chunks/{enterPlanMode-QHJF4JXZ.js → enterPlanMode-SEN2PMRM.js} +1 -1
- package/chunks/{environment-NGIBJWOT.js → environment-CCPQJYKS.js} +1 -1
- package/chunks/{errors-MSTGCVGJ.js → errors-Y6HHUTGK.js} +1 -1
- package/chunks/{execution-tool-VR4TGOI4.js → execution-tool-HADWGMIG.js} +1 -1
- package/chunks/{execution-worker-EJH7HIE2.js → execution-worker-GZS7WOQL.js} +1 -1
- package/chunks/{exitPlanMode-P25OHQJ6.js → exitPlanMode-76B5HDLT.js} +1 -1
- package/chunks/{fast-path-II433ZDP.js → fast-path-OEV7LQYV.js} +1 -1
- package/chunks/{glob-4Q6DCT3F.js → glob-NLWCQRMS.js} +1 -1
- package/chunks/{goal-tools-FFMAJW6V.js → goal-tools-43XV33BT.js} +1 -1
- package/chunks/{handleAutoUpdate-QNM26NZK.js → handleAutoUpdate-JDQWGSSP.js} +1 -1
- package/chunks/{i18n-L5URVOBB.js → i18n-JW6BVEGF.js} +1 -1
- package/chunks/{initializer-NQ2NECYP.js → initializer-UT6JLZ3O.js} +1 -1
- package/chunks/{installationInfo-BCTXASUM.js → installationInfo-LKWDV3S2.js} +1 -1
- package/chunks/{interactive-mod-session-PPTBI37E.js → interactive-mod-session-2KWKYVPC.js} +1 -1
- package/chunks/{list-7TE5TUZJ.js → list-BKINK3S2.js} +1 -1
- package/chunks/{llm-BWWKUBBZ.js → llm-3RWXAVM2.js} +4 -4
- package/chunks/{llm-content-generator-QOTGPBYC.js → llm-content-generator-MDRBSH73.js} +1 -1
- package/chunks/{loadedSettingsAdapter-THAGI5M2.js → loadedSettingsAdapter-WWJUKWUN.js} +1 -1
- package/chunks/{local-7BTAGV4J.js → local-TT4FLCTR.js} +1 -1
- package/chunks/{local-execution-environment-S3OR4KSC.js → local-execution-environment-OBA6VWYL.js} +1 -1
- package/chunks/{loggingContentGenerator-AXJ5E5RS.js → loggingContentGenerator-CK7IKYQH.js} +1 -1
- package/chunks/{loop-wakeup-AJTLMLRX.js → loop-wakeup-4MSRX3DY.js} +1 -1
- package/chunks/{manage-memory-JHTUVMDJ.js → manage-memory-PX5PZJKZ.js} +1 -1
- package/chunks/{managed-execution-engine-U6GNJ4U4.js → managed-execution-engine-WMAUR3ZK.js} +1 -1
- package/chunks/{managed-local-serve-P4ZXVRBU.js → managed-local-serve-X7REHGB4.js} +1 -1
- package/chunks/{managed-npm-update-UDUILNR5.js → managed-npm-update-6HUVAJH7.js} +1 -1
- package/chunks/{managed-runtime-attestation-worker-P34ZBNRG.js → managed-runtime-attestation-worker-F4AT53M5.js} +1 -1
- package/chunks/{managed-runtime-bootstrap-CLMYNPH5.js → managed-runtime-bootstrap-3BP5JRJX.js} +1 -1
- package/chunks/{managed-runtime-session-worker-7H7AZJBV.js → managed-runtime-session-worker-2PO7J5UK.js} +1 -1
- package/chunks/{managed-runtime-ssh-worker-5KEMC7FD.js → managed-runtime-ssh-worker-4N7EMRSV.js} +1 -1
- package/chunks/{managed-session-authority-CFUZ45HT.js → managed-session-authority-MYOYTUM2.js} +1 -1
- package/chunks/{mcp-YMG4RVMC.js → mcp-5OTEMZ7P.js} +1 -1
- package/chunks/{memory-7STURUXK.js → memory-TNW7RSAV.js} +1 -1
- package/chunks/mn-JMS6SWTO.js +8 -0
- package/chunks/{model-call-collection-WBWTO3EG.js → model-call-collection-KNTWFZQS.js} +1 -1
- package/chunks/{model-configuration-6KCZZSZD.js → model-configuration-U5C5P5UQ.js} +1 -1
- package/chunks/{modelConfigUtils-Z2EKFSPN.js → modelConfigUtils-R4KFI2WK.js} +1 -1
- package/chunks/{monitor-U5E33JO6.js → monitor-RD2PFK42.js} +1 -1
- package/chunks/{nonInteractiveCli-BVCL5I5R.js → nonInteractiveCli-QQ72HZSH.js} +1 -1
- package/chunks/{nonInteractiveToolExecutor-B4EUOMYF.js → nonInteractiveToolExecutor-QPQYR6IS.js} +1 -1
- package/chunks/{notebook-edit-MXKD5J2C.js → notebook-edit-YLRN3UZT.js} +1 -1
- package/chunks/{omni-I5YECZBW.js → omni-CUJ52EW5.js} +1 -1
- package/chunks/{openaiContentGenerator-Q5SINFJJ.js → openaiContentGenerator-6B5MAU54.js} +1 -1
- package/chunks/{openaiResponsesContentGenerator-R3XCZLZY.js → openaiResponsesContentGenerator-I245I3R7.js} +1 -1
- package/chunks/{pidfile-UOGUNUTK.js → pidfile-P2HIGAUA.js} +1 -1
- package/chunks/{processUtils-QGQGZHBA.js → processUtils-JSKN5UGS.js} +1 -1
- package/chunks/{prompt-terminal-ledger-L57JMVSR.js → prompt-terminal-ledger-F5TSXVGU.js} +1 -1
- package/chunks/{qwenContentGenerator-UKZ237LC.js → qwenContentGenerator-IEDZONWG.js} +1 -1
- package/chunks/{reactive-degrade-3OM3HWVA.js → reactive-degrade-FYZBJCF6.js} +1 -1
- package/chunks/{read-file-63ZLWMOW.js → read-file-VNZNSD6X.js} +1 -1
- package/chunks/{resumeHistoryUtils-R5YQS4YQ.js → resumeHistoryUtils-IDPE6N2N.js} +1 -1
- package/chunks/{review-AT6OWVDO.js → review-TBJRZWTD.js} +1 -1
- package/chunks/{ripGrep-7KBZGTPV.js → ripGrep-4W5B5FOE.js} +1 -1
- package/chunks/{run-qwen-serve-CLBG7W6F.js → run-qwen-serve-44X262G5.js} +1 -1
- package/chunks/{runtime-R3QIGB7U.js → runtime-6H6LKD73.js} +1 -1
- package/chunks/{sandboxConfig-PM3ZRQYV.js → sandboxConfig-SQXDRGVN.js} +1 -1
- package/chunks/{scheduled-tasks-PUMNN5XV.js → scheduled-tasks-62IZKHJG.js} +1 -1
- package/chunks/{scheduler-KTPM226B.js → scheduler-QUCXJYRL.js} +1 -1
- package/chunks/{search-memory-7I5MGDNV.js → search-memory-TC2Z34QN.js} +1 -1
- package/chunks/{send-message-J526AEBI.js → send-message-TFZX7KI7.js} +1 -1
- package/chunks/{serve-KLTMPK4W.js → serve-WSICDFGG.js} +1 -1
- package/chunks/{server-VLRNY6KG.js → server-GYYVTNGY.js} +3 -3
- package/chunks/{session-2EB57NXY.js → session-KF3O23ZJ.js} +1 -1
- package/chunks/{session-attachments-root-I7TESMWL.js → session-attachments-root-7HFUSONH.js} +1 -1
- package/chunks/{session-execution-engine-selector-5FAMSPSO.js → session-execution-engine-selector-NVILT6BR.js} +1 -1
- package/chunks/{session-pr-refresh-JCPVQPNJ.js → session-pr-refresh-3KDFTDEV.js} +1 -1
- package/chunks/{sessionService-YRW2IFPR.js → sessionService-XRTFLPDW.js} +1 -1
- package/chunks/{settings-KO2Q47JP.js → settings-QPPK6WXE.js} +1 -1
- package/chunks/{shell-OLZVNTQZ.js → shell-WYQDZWL7.js} +1 -1
- package/chunks/{skill-XW2AQS7M.js → skill-FYPT6AU7.js} +1 -1
- package/chunks/{skill-settings-TKAVQ4XP.js → skill-settings-OGFI5KZF.js} +1 -1
- package/chunks/{spawnChannel-MBGCTK2J.js → spawnChannel-ANOOVPG7.js} +1 -1
- package/chunks/{standalone-update-A3YLLIAN.js → standalone-update-45WTDY4E.js} +1 -1
- package/chunks/{start-opentui-ui-G5ROAR4V.js → start-opentui-ui-TL5WK33V.js} +1 -1
- package/chunks/{startInteractiveUI-PZQR4U53.js → startInteractiveUI-N2IREVBM.js} +1 -1
- package/chunks/{team-create-S5ZY2UMF.js → team-create-R77PRZ5U.js} +1 -1
- package/chunks/{team-plan-approval-KX6RXEST.js → team-plan-approval-6DCRKB5I.js} +1 -1
- package/chunks/{terminal-image-renderer-SCJREXE6.js → terminal-image-renderer-TB7EX2WW.js} +1 -1
- package/chunks/{theme-manager-DZSM4EBR.js → theme-manager-RQDXJGVR.js} +1 -1
- package/chunks/{tool-call-UK56SWCT.js → tool-call-LVB4NCDT.js} +1 -1
- package/chunks/{tool-result-media-JLLSLGFL.js → tool-result-media-LRBB2KS6.js} +1 -1
- package/chunks/{tool-search-OWPFLVV5.js → tool-search-OG73QAQZ.js} +1 -1
- package/chunks/{total-session-admission-NQU4ACKH.js → total-session-admission-A4CUF6AD.js} +1 -1
- package/chunks/{trustedFolders-N7GXFYSF.js → trustedFolders-LSGOYTU2.js} +1 -1
- package/chunks/{update-relaunch-5SPXXHM2.js → update-relaunch-OGC6BZO7.js} +1 -1
- package/chunks/{updateCheck-VXUIX2XG.js → updateCheck-7J3GXTER.js} +1 -1
- package/chunks/{upload-config-OWLL4SRQ.js → upload-config-ML5XEJIF.js} +1 -1
- package/chunks/{useAutoAcceptIndicator-OUYRR56F.js → useAutoAcceptIndicator-6DH6GQ2X.js} +1 -1
- package/chunks/{validateNonInterActiveAuth-PSVJO5HK.js → validateNonInterActiveAuth-KJDAGZCM.js} +1 -1
- package/chunks/{version-C26S7UAW.js → version-7JN2YXL2.js} +1 -1
- package/chunks/{web-fetch-AYOYV7R4.js → web-fetch-42ZR4FEZ.js} +1 -1
- package/chunks/{web-search-DAREKD3Z.js → web-search-74NLPMZJ.js} +1 -1
- package/chunks/{workflow-WBGPKVO6.js → workflow-WNPHX42I.js} +1 -1
- package/chunks/{workflow-ancestor-trust-GEEB53TB.js → workflow-ancestor-trust-HGF6G7LQ.js} +1 -1
- package/chunks/{workspace-agents-IMAQME4W.js → workspace-agents-3YFBFAK3.js} +1 -1
- package/chunks/{workspace-providers-status-VALHVEU2.js → workspace-providers-status-EPJI6KRV.js} +1 -1
- package/chunks/{workspace-recovery-worker-AIAVRDGU.js → workspace-recovery-worker-T3FK5YOD.js} +1 -1
- package/chunks/{workspace-registration-store-FXEGZG3L.js → workspace-registration-store-VEXYBDMA.js} +1 -1
- package/chunks/{workspace-registry-GYFFHWCD.js → workspace-registry-NRZYTP2X.js} +1 -1
- package/chunks/{workspace-runtime-coordinator-VZ462TLU.js → workspace-runtime-coordinator-USNSTP2V.js} +1 -1
- package/chunks/{workspace-service-5DIZM4IZ.js → workspace-service-USATWO56.js} +1 -1
- package/chunks/{workspace-skills-status-DOOBVL5N.js → workspace-skills-status-M5JTSFDL.js} +1 -1
- package/chunks/{workspace-trust-reconciler-LOICVUVW.js → workspace-trust-reconciler-ZUZ2O5WC.js} +1 -1
- package/chunks/{write-file-EJNMAHQD.js → write-file-UMJVKE4S.js} +1 -1
- package/chunks/{zoom-image-S3OARMYP.js → zoom-image-76XYHQ3Z.js} +1 -1
- package/cli.js +2 -2
- package/execution-worker.js +1 -1
- package/export-transcript-document.js +1 -1
- package/gerege.mjs +64 -15
- package/locales/mn.js +2702 -3774
- package/package.json +3 -3
- package/chunks/mn-YH2OTBWJ.js +0 -8
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import{effectiveSessionScope,multiSessionCompatibilityError,parseChannelConfig,parseChannelWebhookConfig,parseChannelWebhookConfigLenient,parseMessageRoutingConfig,parseSessionRotationConfig,resolveEnvVars}from"./chunk-MMQY4FJL.js";import"./chunk-NY56CL2X.js";import"./chunk-TL6RUTMP.js";import{findCliEntryPath}from"./chunk-W7V6J2VV.js";import"./chunk-QN7NYEE3.js";import"./chunk-WSOEJTOC.js";import"./chunk-
|
|
3
|
+
import{effectiveSessionScope,multiSessionCompatibilityError,parseChannelConfig,parseChannelWebhookConfig,parseChannelWebhookConfigLenient,parseMessageRoutingConfig,parseSessionRotationConfig,resolveEnvVars}from"./chunk-MMQY4FJL.js";import"./chunk-NY56CL2X.js";import"./chunk-TL6RUTMP.js";import{findCliEntryPath}from"./chunk-W7V6J2VV.js";import"./chunk-QN7NYEE3.js";import"./chunk-WSOEJTOC.js";import"./chunk-CK3OKTTL.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-PAD5GPDY.js";import"./chunk-MD3ZEOBX.js";import"./chunk-SSYS5YN5.js";import"./chunk-X5QSFJVS.js";import"./chunk-OMDTFGTX.js";import"./chunk-3EZ5GCUT.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-E3KWSRJN.js";import"./chunk-FRVXSKL4.js";import"./chunk-HW6SU6MX.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-AKWYMQKU.js";import"./chunk-MZUOREFD.js";import"./chunk-BVV7UXES.js";import"./chunk-7XZVMIY5.js";import"./chunk-BY46PCWY.js";import"./chunk-ZZJXFLVM.js";import"./chunk-RKDS7A4H.js";import"./chunk-PMBI46K4.js";import"./chunk-IV3HAIUN.js";import"./chunk-XFMPZINJ.js";import"./chunk-DECUAM3U.js";import"./chunk-QX7W2HY7.js";import"./chunk-HN5UYLPU.js";import"./chunk-PGRN3GZY.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-T3CQ72HC.js";import"./chunk-R2EHHA2C.js";import"./chunk-YK7NDQKM.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-OMSVOFTC.js";import"./chunk-PHIPLV2I.js";import"./chunk-ZOTKZI2P.js";import"./chunk-A6G5TAIF.js";import"./chunk-YVBHCSZD.js";import"./chunk-FIXDX63I.js";import"./chunk-T7CHK6C2.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-UYEWRLGD.js";import"./chunk-QVPT37XZ.js";import"./chunk-YVD4O5ZB.js";import"./chunk-T6W33SET.js";import"./chunk-WK2IBT6D.js";import"./chunk-QZV4PFQK.js";import"./chunk-ILECDNJX.js";import"./chunk-QXQGUM3Y.js";import"./chunk-UQ7IROJH.js";import"./chunk-SZCBUCNH.js";import"./chunk-BEKROCWN.js";import"./chunk-5SUFJTQQ.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-FUBDS3AV.js";import"./chunk-HW6AWS7W.js";import"./chunk-KLC3OD2M.js";import"./chunk-Q5IZXKUJ.js";import"./chunk-G5PYYZMM.js";import"./chunk-BG67XABA.js";import"./chunk-OBOU4ZZM.js";import"./chunk-D7XCQWP2.js";import"./chunk-AE5OMKRY.js";import"./chunk-OBV7RNHV.js";import"./chunk-7CQMWEMY.js";import"./chunk-GOZYWU4B.js";import"./chunk-OUC3WICA.js";import"./chunk-JZK2WGXA.js";import"./chunk-MPHSE7M4.js";import"./chunk-S2ZKZXHX.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-4QQKOW5M.js";import"./chunk-OV3EBH6J.js";import"./chunk-EBMCWXGZ.js";import"./chunk-XZTE4YTN.js";import"./chunk-LSASUDF2.js";import"./chunk-2V5EKGDK.js";import"./chunk-MOKVM4PT.js";import"./chunk-YIW3H46P.js";import"./chunk-EOMRLUNZ.js";import"./chunk-4ZRCV3JY.js";import"./chunk-TL6MLBXR.js";import"./chunk-NMY3PYNO.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-SCD5TUBG.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-LMJPU2JM.js";import"./chunk-VFB6Q74I.js";import"./chunk-4JNHUZ7M.js";import"./chunk-SW54YEPK.js";import"./chunk-ZCRL73DT.js";import"./chunk-A6LT3FIJ.js";import"./chunk-S6RXVOY6.js";import"./chunk-YZFNBUKG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-BN4FIQ77.js";import"./chunk-X64RXJQQ.js";import"./chunk-HETUGUHE.js";import"./chunk-ET2Z7ZGF.js";import"./chunk-XFPYXD2P.js";import"./chunk-3YWXKSOI.js";import"./chunk-5CWTKFI4.js";import"./chunk-C4MVD5OI.js";import"./chunk-Z2W7S4O4.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-FQRF6B65.js";import"./chunk-ZWPSBU7K.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-KVA6DHHF.js";import"./chunk-PWOQASXT.js";import"./chunk-K7JCVESI.js";import"./chunk-Y6HHV4LC.js";import"./chunk-RP57XAJ2.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7DOOXUDG.js";import"./chunk-77V43YOE.js";import"./chunk-7U7CWMP7.js";import"./chunk-EFTJIDS3.js";import"./chunk-4DIWAQ5G.js";import"./chunk-Q6UAOTP3.js";import"./chunk-H5EXNXGW.js";import"./chunk-GOR7FFVE.js";import"./chunk-4ZBZL23U.js";import"./chunk-BMHYEQTI.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-3XVPZY7X.js";import"./chunk-KQX4H2D3.js";import"./chunk-URNNJMIC.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-DBRQGEEI.js";import"./chunk-B3ZFUGTC.js";import"./chunk-IRINPFG7.js";import"./chunk-6GTPLW7K.js";import"./chunk-NGVRCUYD.js";import"./chunk-5DTFN37U.js";import"./chunk-2YUBAWQ6.js";import"./chunk-O5EKX7LG.js";import"./chunk-TM6ZCBR7.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-I6S7NGX3.js";import"./chunk-SBZFGYYS.js";import"./chunk-JAUJI56S.js";import"./chunk-I4H7NUVP.js";import"./chunk-EPODBRBP.js";import"./chunk-OKN3Z5C5.js";import"./chunk-XYB7GC5U.js";import"./chunk-2UOMCYQG.js";import"./chunk-I7L2TX4M.js";import"./chunk-MK3OONRA.js";import"./chunk-COGTQ5KZ.js";import"./chunk-VKDAXTCZ.js";import"./chunk-KBWJGX7I.js";export{effectiveSessionScope,findCliEntryPath,multiSessionCompatibilityError,parseChannelConfig,parseChannelWebhookConfig,parseChannelWebhookConfigLenient,parseMessageRoutingConfig,parseSessionRotationConfig,resolveEnvVars};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import{collectContextData,contextCommand,formatContextUsageText}from"./chunk-
|
|
3
|
+
import{collectContextData,contextCommand,formatContextUsageText}from"./chunk-7HFFTOAD.js";import"./chunk-EVBKKQ7Y.js";import"./chunk-4TZUKLPC.js";import"./chunk-NO7VTKRL.js";import"./chunk-U7HZUZKP.js";import"./chunk-CK3OKTTL.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-PAD5GPDY.js";import"./chunk-MD3ZEOBX.js";import"./chunk-SSYS5YN5.js";import"./chunk-X5QSFJVS.js";import"./chunk-OMDTFGTX.js";import"./chunk-3EZ5GCUT.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-E3KWSRJN.js";import"./chunk-FRVXSKL4.js";import"./chunk-HW6SU6MX.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-AKWYMQKU.js";import"./chunk-MZUOREFD.js";import"./chunk-BVV7UXES.js";import"./chunk-7XZVMIY5.js";import"./chunk-BY46PCWY.js";import"./chunk-ZZJXFLVM.js";import"./chunk-RKDS7A4H.js";import"./chunk-PMBI46K4.js";import"./chunk-IV3HAIUN.js";import"./chunk-XFMPZINJ.js";import"./chunk-DECUAM3U.js";import"./chunk-QX7W2HY7.js";import"./chunk-HN5UYLPU.js";import"./chunk-PGRN3GZY.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-T3CQ72HC.js";import"./chunk-R2EHHA2C.js";import"./chunk-YK7NDQKM.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-OMSVOFTC.js";import"./chunk-PHIPLV2I.js";import"./chunk-ZOTKZI2P.js";import"./chunk-A6G5TAIF.js";import"./chunk-YVBHCSZD.js";import"./chunk-FIXDX63I.js";import"./chunk-T7CHK6C2.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-UYEWRLGD.js";import"./chunk-QVPT37XZ.js";import"./chunk-YVD4O5ZB.js";import"./chunk-T6W33SET.js";import"./chunk-WK2IBT6D.js";import"./chunk-QZV4PFQK.js";import"./chunk-ILECDNJX.js";import"./chunk-QXQGUM3Y.js";import"./chunk-UQ7IROJH.js";import"./chunk-SZCBUCNH.js";import"./chunk-BEKROCWN.js";import"./chunk-5SUFJTQQ.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-FUBDS3AV.js";import"./chunk-HW6AWS7W.js";import"./chunk-KLC3OD2M.js";import"./chunk-Q5IZXKUJ.js";import"./chunk-G5PYYZMM.js";import"./chunk-BG67XABA.js";import"./chunk-OBOU4ZZM.js";import"./chunk-D7XCQWP2.js";import"./chunk-AE5OMKRY.js";import"./chunk-OBV7RNHV.js";import"./chunk-7CQMWEMY.js";import"./chunk-GOZYWU4B.js";import"./chunk-OUC3WICA.js";import"./chunk-JZK2WGXA.js";import"./chunk-MPHSE7M4.js";import"./chunk-S2ZKZXHX.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-4QQKOW5M.js";import"./chunk-OV3EBH6J.js";import"./chunk-EBMCWXGZ.js";import"./chunk-XZTE4YTN.js";import"./chunk-LSASUDF2.js";import"./chunk-2V5EKGDK.js";import"./chunk-MOKVM4PT.js";import"./chunk-YIW3H46P.js";import"./chunk-EOMRLUNZ.js";import"./chunk-4ZRCV3JY.js";import"./chunk-TL6MLBXR.js";import"./chunk-NMY3PYNO.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-SCD5TUBG.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-LMJPU2JM.js";import"./chunk-VFB6Q74I.js";import"./chunk-4JNHUZ7M.js";import"./chunk-SW54YEPK.js";import"./chunk-ZCRL73DT.js";import"./chunk-A6LT3FIJ.js";import"./chunk-S6RXVOY6.js";import"./chunk-YZFNBUKG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-BN4FIQ77.js";import"./chunk-X64RXJQQ.js";import"./chunk-HETUGUHE.js";import"./chunk-ET2Z7ZGF.js";import"./chunk-XFPYXD2P.js";import"./chunk-3YWXKSOI.js";import"./chunk-5CWTKFI4.js";import"./chunk-C4MVD5OI.js";import"./chunk-Z2W7S4O4.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-FQRF6B65.js";import"./chunk-ZWPSBU7K.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-KVA6DHHF.js";import"./chunk-PWOQASXT.js";import"./chunk-K7JCVESI.js";import"./chunk-Y6HHV4LC.js";import"./chunk-RP57XAJ2.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7DOOXUDG.js";import"./chunk-77V43YOE.js";import"./chunk-7U7CWMP7.js";import"./chunk-EFTJIDS3.js";import"./chunk-4DIWAQ5G.js";import"./chunk-Q6UAOTP3.js";import"./chunk-H5EXNXGW.js";import"./chunk-GOR7FFVE.js";import"./chunk-4ZBZL23U.js";import"./chunk-BMHYEQTI.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-3XVPZY7X.js";import"./chunk-KQX4H2D3.js";import"./chunk-URNNJMIC.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-M4ECEHLX.js";import"./chunk-DBRQGEEI.js";import"./chunk-B3ZFUGTC.js";import"./chunk-IRINPFG7.js";import"./chunk-6GTPLW7K.js";import"./chunk-NGVRCUYD.js";import"./chunk-5DTFN37U.js";import"./chunk-2YUBAWQ6.js";import"./chunk-O5EKX7LG.js";import"./chunk-TM6ZCBR7.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-I6S7NGX3.js";import"./chunk-SBZFGYYS.js";import"./chunk-JAUJI56S.js";import"./chunk-I4H7NUVP.js";import"./chunk-EPODBRBP.js";import"./chunk-OKN3Z5C5.js";import"./chunk-XYB7GC5U.js";import"./chunk-2UOMCYQG.js";import"./chunk-I7L2TX4M.js";import"./chunk-MK3OONRA.js";import"./chunk-COGTQ5KZ.js";import"./chunk-VKDAXTCZ.js";import"./chunk-KBWJGX7I.js";export{collectContextData,contextCommand,formatContextUsageText};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import"./chunk-
|
|
3
|
+
import"./chunk-CK3OKTTL.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-PAD5GPDY.js";import"./chunk-MD3ZEOBX.js";import"./chunk-SSYS5YN5.js";import"./chunk-X5QSFJVS.js";import"./chunk-OMDTFGTX.js";import"./chunk-3EZ5GCUT.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-E3KWSRJN.js";import"./chunk-FRVXSKL4.js";import"./chunk-HW6SU6MX.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-AKWYMQKU.js";import"./chunk-MZUOREFD.js";import"./chunk-BVV7UXES.js";import"./chunk-7XZVMIY5.js";import"./chunk-BY46PCWY.js";import"./chunk-ZZJXFLVM.js";import"./chunk-RKDS7A4H.js";import"./chunk-PMBI46K4.js";import"./chunk-IV3HAIUN.js";import"./chunk-XFMPZINJ.js";import"./chunk-DECUAM3U.js";import"./chunk-QX7W2HY7.js";import"./chunk-HN5UYLPU.js";import"./chunk-PGRN3GZY.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-T3CQ72HC.js";import"./chunk-R2EHHA2C.js";import"./chunk-YK7NDQKM.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-OMSVOFTC.js";import"./chunk-PHIPLV2I.js";import"./chunk-ZOTKZI2P.js";import"./chunk-A6G5TAIF.js";import"./chunk-YVBHCSZD.js";import"./chunk-FIXDX63I.js";import"./chunk-T7CHK6C2.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-UYEWRLGD.js";import"./chunk-QVPT37XZ.js";import"./chunk-YVD4O5ZB.js";import{readCronTasks}from"./chunk-T6W33SET.js";import"./chunk-WK2IBT6D.js";import"./chunk-QZV4PFQK.js";import"./chunk-ILECDNJX.js";import"./chunk-QXQGUM3Y.js";import"./chunk-UQ7IROJH.js";import"./chunk-SZCBUCNH.js";import"./chunk-BEKROCWN.js";import"./chunk-5SUFJTQQ.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-FUBDS3AV.js";import{DEFAULT_OTLP_ENDPOINT,DEFAULT_TELEMETRY_TARGET,initializeDaemonMetrics,recordDaemonCancel,recordDaemonChannelLifecycle,recordDaemonPipeMessage,recordDaemonPromptDuration,recordDaemonPromptQueueWait,recordDaemonSessionLifecycle,registerDaemonEventLoopLagGauge,registerDaemonGaugeCallbacks,resolveTelemetrySettings,startEventLoopLagMonitor}from"./chunk-HW6AWS7W.js";import"./chunk-KLC3OD2M.js";import"./chunk-Q5IZXKUJ.js";import"./chunk-G5PYYZMM.js";import"./chunk-BG67XABA.js";import"./chunk-OBOU4ZZM.js";import"./chunk-D7XCQWP2.js";import"./chunk-AE5OMKRY.js";import"./chunk-OBV7RNHV.js";import"./chunk-7CQMWEMY.js";import"./chunk-GOZYWU4B.js";import"./chunk-OUC3WICA.js";import"./chunk-JZK2WGXA.js";import"./chunk-MPHSE7M4.js";import"./chunk-S2ZKZXHX.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-4QQKOW5M.js";import"./chunk-OV3EBH6J.js";import"./chunk-EBMCWXGZ.js";import"./chunk-XZTE4YTN.js";import"./chunk-LSASUDF2.js";import"./chunk-2V5EKGDK.js";import"./chunk-MOKVM4PT.js";import"./chunk-YIW3H46P.js";import"./chunk-EOMRLUNZ.js";import"./chunk-4ZRCV3JY.js";import"./chunk-TL6MLBXR.js";import"./chunk-NMY3PYNO.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-SCD5TUBG.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-LMJPU2JM.js";import"./chunk-VFB6Q74I.js";import"./chunk-4JNHUZ7M.js";import"./chunk-SW54YEPK.js";import"./chunk-ZCRL73DT.js";import"./chunk-A6LT3FIJ.js";import"./chunk-S6RXVOY6.js";import"./chunk-YZFNBUKG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-BN4FIQ77.js";import"./chunk-X64RXJQQ.js";import"./chunk-HETUGUHE.js";import{applyProviderInstallPlan,buildInstallPlan,findProviderById,getDefaultModelIds,getModelsForProviderProtocol,resolveBaseUrl}from"./chunk-ET2Z7ZGF.js";import"./chunk-XFPYXD2P.js";import"./chunk-3YWXKSOI.js";import"./chunk-5CWTKFI4.js";import"./chunk-C4MVD5OI.js";import"./chunk-Z2W7S4O4.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import{createDaemonBridgeTelemetry,emitDaemonLog,hashDaemonWorkspace}from"./chunk-FQRF6B65.js";import"./chunk-ZWPSBU7K.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-KVA6DHHF.js";import"./chunk-PWOQASXT.js";import"./chunk-K7JCVESI.js";import"./chunk-Y6HHV4LC.js";import"./chunk-RP57XAJ2.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7DOOXUDG.js";import"./chunk-77V43YOE.js";import"./chunk-7U7CWMP7.js";import"./chunk-EFTJIDS3.js";import"./chunk-4DIWAQ5G.js";import"./chunk-Q6UAOTP3.js";import"./chunk-H5EXNXGW.js";import"./chunk-GOR7FFVE.js";import"./chunk-4ZBZL23U.js";import"./chunk-BMHYEQTI.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import{forceFlushMetrics,initializeTelemetry,shutdownTelemetry}from"./chunk-3XVPZY7X.js";import"./chunk-KQX4H2D3.js";import"./chunk-URNNJMIC.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-DBRQGEEI.js";import"./chunk-B3ZFUGTC.js";import"./chunk-IRINPFG7.js";import"./chunk-6GTPLW7K.js";import"./chunk-NGVRCUYD.js";import"./chunk-5DTFN37U.js";import"./chunk-2YUBAWQ6.js";import"./chunk-O5EKX7LG.js";import"./chunk-TM6ZCBR7.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-I6S7NGX3.js";import"./chunk-SBZFGYYS.js";import"./chunk-JAUJI56S.js";import"./chunk-I4H7NUVP.js";import{Storage}from"./chunk-EPODBRBP.js";import"./chunk-OKN3Z5C5.js";import{FatalConfigError}from"./chunk-XYB7GC5U.js";import"./chunk-2UOMCYQG.js";import"./chunk-I7L2TX4M.js";import"./chunk-MK3OONRA.js";import"./chunk-COGTQ5KZ.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import"./chunk-KBWJGX7I.js";init_esbuild_shims();export{DEFAULT_OTLP_ENDPOINT,DEFAULT_TELEMETRY_TARGET,FatalConfigError,Storage,applyProviderInstallPlan,buildInstallPlan,createDaemonBridgeTelemetry,emitDaemonLog,findProviderById,forceFlushMetrics,getDefaultModelIds,getModelsForProviderProtocol,hashDaemonWorkspace,initializeDaemonMetrics,initializeTelemetry,readCronTasks,recordDaemonCancel,recordDaemonChannelLifecycle,recordDaemonPipeMessage,recordDaemonPromptDuration,recordDaemonPromptQueueWait,recordDaemonSessionLifecycle,registerDaemonEventLoopLagGauge,registerDaemonGaugeCallbacks,resolveBaseUrl,resolveTelemetrySettings,shutdownTelemetry,startEventLoopLagMonitor};
|
|
4
4
|
/**
|
|
5
5
|
* @license
|
|
6
6
|
* Copyright 2026 Qwen Team
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import{isReservedStandaloneSessionSourceType,isScheduledTaskRunSource}from"./chunk-3XCRIK5A.js";import{createSessionOrganizationService}from"./chunk-BRPJ5EHA.js";import{ACTIVE_WORK_CLOSE_TIMEOUT_MS}from"./chunk-WBDNGVHU.js";import{SessionNotFoundError}from"./chunk-VTZZXEWA.js";import"./chunk-L5UULTGF.js";import"./chunk-WSOEJTOC.js";import"./chunk-5WLKN3GD.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-PAD5GPDY.js";import"./chunk-MD3ZEOBX.js";import"./chunk-SSYS5YN5.js";import"./chunk-X5QSFJVS.js";import"./chunk-OMDTFGTX.js";import"./chunk-EIILQ6KT.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-Q5E5SOY2.js";import"./chunk-62NLMVVT.js";import"./chunk-HW6SU6MX.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-AKWYMQKU.js";import"./chunk-MZUOREFD.js";import"./chunk-DEMXCA3K.js";import"./chunk-7XZVMIY5.js";import"./chunk-2VCDJ6UF.js";import"./chunk-ZZJXFLVM.js";import"./chunk-RKDS7A4H.js";import"./chunk-GSOBASYW.js";import"./chunk-IV3HAIUN.js";import"./chunk-XFMPZINJ.js";import"./chunk-DECUAM3U.js";import"./chunk-QX7W2HY7.js";import"./chunk-HN5UYLPU.js";import"./chunk-PGRN3GZY.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import{SessionService}from"./chunk-Z5XENA4A.js";import{stripTerminalControlSequences}from"./chunk-R2EHHA2C.js";import"./chunk-YK7NDQKM.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-OMSVOFTC.js";import"./chunk-PHIPLV2I.js";import"./chunk-ZOTKZI2P.js";import"./chunk-A6G5TAIF.js";import"./chunk-YVBHCSZD.js";import"./chunk-FIXDX63I.js";import"./chunk-T7CHK6C2.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-UYEWRLGD.js";import"./chunk-QVPT37XZ.js";import"./chunk-YVD4O5ZB.js";import"./chunk-T6W33SET.js";import"./chunk-WK2IBT6D.js";import"./chunk-QZV4PFQK.js";import"./chunk-ILECDNJX.js";import"./chunk-QXQGUM3Y.js";import"./chunk-UQ7IROJH.js";import"./chunk-SZCBUCNH.js";import"./chunk-BEKROCWN.js";import"./chunk-5SUFJTQQ.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-FUBDS3AV.js";import"./chunk-HW6AWS7W.js";import"./chunk-KLC3OD2M.js";import"./chunk-Q5IZXKUJ.js";import"./chunk-G5PYYZMM.js";import"./chunk-BG67XABA.js";import"./chunk-OBOU4ZZM.js";import"./chunk-D7XCQWP2.js";import"./chunk-AE5OMKRY.js";import"./chunk-OBV7RNHV.js";import"./chunk-7CQMWEMY.js";import"./chunk-GOZYWU4B.js";import"./chunk-OUC3WICA.js";import"./chunk-JZK2WGXA.js";import"./chunk-MPHSE7M4.js";import"./chunk-S2ZKZXHX.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-4QQKOW5M.js";import"./chunk-OV3EBH6J.js";import"./chunk-EBMCWXGZ.js";import"./chunk-XZTE4YTN.js";import"./chunk-LSASUDF2.js";import"./chunk-2V5EKGDK.js";import"./chunk-MOKVM4PT.js";import"./chunk-YIW3H46P.js";import"./chunk-EOMRLUNZ.js";import"./chunk-4ZRCV3JY.js";import"./chunk-TL6MLBXR.js";import"./chunk-NMY3PYNO.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-SCD5TUBG.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-LMJPU2JM.js";import"./chunk-VFB6Q74I.js";import"./chunk-4JNHUZ7M.js";import"./chunk-SW54YEPK.js";import"./chunk-ZCRL73DT.js";import"./chunk-A6LT3FIJ.js";import"./chunk-S6RXVOY6.js";import"./chunk-YZFNBUKG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-BN4FIQ77.js";import"./chunk-X64RXJQQ.js";import"./chunk-HETUGUHE.js";import"./chunk-ET2Z7ZGF.js";import"./chunk-XFPYXD2P.js";import"./chunk-3YWXKSOI.js";import"./chunk-5CWTKFI4.js";import"./chunk-C4MVD5OI.js";import"./chunk-Z2W7S4O4.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-FQRF6B65.js";import"./chunk-ZWPSBU7K.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-KVA6DHHF.js";import"./chunk-PWOQASXT.js";import"./chunk-K7JCVESI.js";import"./chunk-Y6HHV4LC.js";import"./chunk-RP57XAJ2.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7DOOXUDG.js";import"./chunk-77V43YOE.js";import"./chunk-7U7CWMP7.js";import"./chunk-EFTJIDS3.js";import"./chunk-4DIWAQ5G.js";import"./chunk-Q6UAOTP3.js";import"./chunk-NGOIJH7K.js";import"./chunk-GOR7FFVE.js";import"./chunk-4ZBZL23U.js";import"./chunk-BMHYEQTI.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-3XVPZY7X.js";import"./chunk-KQX4H2D3.js";import"./chunk-URNNJMIC.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import{writeStderrLine}from"./chunk-M4ECEHLX.js";import"./chunk-DBRQGEEI.js";import"./chunk-B3ZFUGTC.js";import"./chunk-IRINPFG7.js";import{escapeXml,escapeXmlWithinBudget}from"./chunk-6GTPLW7K.js";import"./chunk-NGVRCUYD.js";import"./chunk-5DTFN37U.js";import"./chunk-2YUBAWQ6.js";import"./chunk-O5EKX7LG.js";import"./chunk-TM6ZCBR7.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-I6S7NGX3.js";import"./chunk-SBZFGYYS.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import"./chunk-I4H7NUVP.js";import{Storage}from"./chunk-EPODBRBP.js";import"./chunk-OKN3Z5C5.js";import"./chunk-XYB7GC5U.js";import"./chunk-2UOMCYQG.js";import"./chunk-I7L2TX4M.js";import"./chunk-MK3OONRA.js";import"./chunk-COGTQ5KZ.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{randomUUID}from"node:crypto";var log=createDebugLogger("SUB_SESSION");var MAX_CONCURRENT_SUB_SESSIONS_PER_CALLER=16;var MAX_CONCURRENT_SUB_SESSIONS_TOTAL=24;var FIRST_TURN_TIMEOUT_MS=5*6e4;var SENT_MODE_DRAIN_TIMEOUT_MS=30*6e4;var RECOVERED_PARENT_NOTIFICATION_TIMEOUT_MS=30*6e4;var SENT_COMPLETION_DELIVERY_RETRY_MS=100;var SENT_COMPLETION_DELIVERY_MAX_RETRY_MS=3e4;var ROLLBACK_CLOSE_WATCHDOG_SLACK_MS=5e3;var MAX_RESULT_CHARS=32e3;var MAX_SENT_COMPLETION_MODEL_TEXT_CHARS=32768;var SENT_COMPLETION_RESULT_TRUNCATION_MARKER="\n[\u2026result truncated]";var MAX_NAME_LENGTH=60;var MAX_TRACKED_SPAWNED_SESSIONS=1024;var BIDI_CONTROL_MARKS=new RegExp("[\\u061C\\u200E\\u200F\\u202A-\\u202E\\u2066-\\u2069]","g");function subSessionName(label,includeThreadGlyph=true){const cleaned=stripTerminalControlSequences(label).replace(BIDI_CONTROL_MARKS,"").trim().replace(/\s+/g," ");let short=cleaned;if(cleaned.length>MAX_NAME_LENGTH){let cut=MAX_NAME_LENGTH-1;const boundary=cleaned.charCodeAt(cut-1);if(boundary>=55296&&boundary<=56319)cut-=1;short=`${cleaned.slice(0,cut)}\u2026`}return includeThreadGlyph?`\u{1F9F5} ${short}`:short}__name(subSessionName,"subSessionName");function sentCompletionStatus(stopReason){if(stopReason==="end_turn")return"completed";if(stopReason==="cancelled"||stopReason==="shutdown"){return"cancelled"}return"failed"}__name(sentCompletionStatus,"sentCompletionStatus");function truncateCodePoints(value,max){const codePoints=Array.from(value);if(codePoints.length<=max)return value;return`${codePoints.slice(0,Math.max(0,max-1)).join("")}\u2026`}__name(truncateCodePoints,"truncateCodePoints");function buildSentCompletionNotification(sessionId,label,result,stopReason){const status=sentCompletionStatus(stopReason);const boundedStopReason=truncateCodePoints(stopReason,128);const statusText=status==="completed"?"completed":status==="cancelled"?"was cancelled":`failed (${boundedStopReason})`;const sessionLink=`[\u{1F9F5} ${sessionId.slice(0,8)}](qwen-session://${sessionId})`;const safeResult=result.trim()||`No text output (stopReason: ${stopReason}).`;const modelSessionId=truncateCodePoints(sessionId,256);const modelLabel=truncateCodePoints(label,256);const modelTextPrefix=["<task-notification>",`<task-id>${escapeXml(modelSessionId)}</task-id>`,`<status>${status}</status>`,`<summary>Sub-session "${escapeXml(modelLabel)}" ${escapeXml(statusText)}.</summary>`,`<session-link>qwen-session://${escapeXml(modelSessionId)}</session-link>`,"<result>"].join("");const modelTextSuffix="</result></task-notification>";const resultBudget=Math.max(0,MAX_SENT_COMPLETION_MODEL_TEXT_CHARS-modelTextPrefix.length-modelTextSuffix.length);let preview=escapeXmlWithinBudget(safeResult,resultBudget);const marker=SENT_COMPLETION_RESULT_TRUNCATION_MARKER;if(preview.truncated&&marker.length<=resultBudget){preview=escapeXmlWithinBudget(safeResult,resultBudget-marker.length);preview.text+=marker}const modelText=`${modelTextPrefix}${preview.text}${modelTextSuffix}`;return{displayText:`Sub-session ${sessionLink} ${statusText}.`,modelText,taskId:sessionId,status,kind:"agent",...modelLabel.trim()?{label:modelLabel}:{}}}__name(buildSentCompletionNotification,"buildSentCompletionNotification");function isBackgroundNotificationForTask(event,taskId){if(event.type!=="session_update")return false;const update=event.data?.update;return update?._meta?.source==="background_notification"&&update._meta.backgroundTask?.taskId===taskId}__name(isBackgroundNotificationForTask,"isBackgroundNotificationForTask");async function awaitRecoveredParentNotification(bridge,sessionId,notification,lastEventId,eventEpoch,stopSignal){const timeoutAc=new AbortController;const timer=setTimeout(()=>timeoutAc.abort(),RECOVERED_PARENT_NOTIFICATION_TIMEOUT_MS);if(typeof timer.unref==="function")timer.unref();const signal=AbortSignal.any([stopSignal,timeoutAc.signal]);let observedOwnNotification=false;try{for await(const event of bridge.subscribeEvents(sessionId,{lastEventId,epoch:eventEpoch,signal})){if(isBackgroundNotificationForTask(event,notification.taskId)){observedOwnNotification=true}else if(observedOwnNotification&&event.type==="background_notification_turn_complete"){return true}}}finally{clearTimeout(timer);timeoutAc.abort()}return false}__name(awaitRecoveredParentNotification,"awaitRecoveredParentNotification");async function waitForSentCompletionRetry(signal,attempt){if(signal.aborted)throw signal.reason;const delay=Math.min(SENT_COMPLETION_DELIVERY_RETRY_MS*2**attempt,SENT_COMPLETION_DELIVERY_MAX_RETRY_MS);await new Promise((resolve,reject)=>{const onAbort=__name(()=>{clearTimeout(timer);reject(signal.reason)},"onAbort");const timer=setTimeout(()=>{signal.removeEventListener("abort",onAbort);resolve()},delay);if(typeof timer.unref==="function")timer.unref();signal.addEventListener("abort",onAbort,{once:true})})}__name(waitForSentCompletionRetry,"waitForSentCompletionRetry");async function awaitSentCompletionAcceptance(bridge,parentSessionId,notification,stopSignal,deadline){let lastError;let attempt=0;while(!stopSignal.aborted){try{const acknowledgement=await bridge.enqueueBackgroundNotification(parentSessionId,notification);if(acknowledgement.accepted)return"accepted"}catch(error){if(error instanceof SessionNotFoundError)return"missing";lastError=error}if(Date.now()>=deadline){throw new Error(`Parent ${parentSessionId} did not durably accept completion for sub-session ${notification.taskId}.`,lastError===void 0?void 0:{cause:lastError})}await waitForSentCompletionRetry(stopSignal,attempt);attempt+=1}throw stopSignal.reason}__name(awaitSentCompletionAcceptance,"awaitSentCompletionAcceptance");async function deliverSentCompletion(bridge,boundWorkspace,parentSessionId,notification,stopSignal,isolatedWorkspace,standaloneService){const deadline=Date.now()+RECOVERED_PARENT_NOTIFICATION_TIMEOUT_MS;const initialDelivery=await awaitSentCompletionAcceptance(bridge,parentSessionId,notification,stopSignal,deadline);if(initialDelivery==="accepted")return;if(standaloneService){await standaloneService.resume(parentSessionId);let ownerBridge;let ownerSessionId="";let lastEventId=0;let eventEpoch="";const recoveredDelivery=await standaloneService.continueSession(parentSessionId,async(runtime,canonicalSessionId)=>{ownerBridge=runtime.bridge;ownerSessionId=canonicalSessionId;lastEventId=runtime.bridge.getSessionLastEventId(canonicalSessionId);eventEpoch=runtime.bridge.getSessionEventEpoch(canonicalSessionId);return awaitSentCompletionAcceptance(runtime.bridge,canonicalSessionId,notification,stopSignal,deadline)});if(recoveredDelivery==="missing"||!ownerBridge||!ownerSessionId){throw new SessionNotFoundError(parentSessionId)}void awaitRecoveredParentNotification(ownerBridge,ownerSessionId,notification,lastEventId,eventEpoch,stopSignal).then(continuationCompleted=>{if(!continuationCompleted&&!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation did not reach an end-turn boundary; leaving recovery attachment for the idle reaper`)}},error=>{if(!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation could not be observed: ${error instanceof Error?error.message:String(error)}`)}});return}let restoredParent;const isolatedCwd=isolatedWorkspace?await isolatedWorkspace.materializeDirectory(parentSessionId):void 0;let materializedDirectoryUnused=isolatedCwd!==void 0;try{restoredParent=await bridge.resumeSession({sessionId:parentSessionId,workspaceCwd:boundWorkspace});if(isolatedCwd!==void 0){if(restoredParent.hasActivePrompt===true&&restoredParent.currentCwd!==isolatedCwd){throw new Error("Active restored parent is outside its isolated conversation directory.")}if(restoredParent.hasActivePrompt===true){materializedDirectoryUnused=false}if(restoredParent.hasActivePrompt!==true){materializedDirectoryUnused=false;const changed=await bridge.changeSessionCwd(parentSessionId,{path:isolatedCwd,allowedRoots:[boundWorkspace],managedRelocation:"live-conversation"});if(changed.newCwd!==isolatedCwd){materializedDirectoryUnused=true;throw new Error("Restored parent workspace directory relocation was rejected.")}restoredParent.currentCwd=changed.newCwd}}const lastEventId=bridge.getSessionLastEventId(parentSessionId);const eventEpoch=bridge.getSessionEventEpoch(parentSessionId);const recoveredDelivery=await awaitSentCompletionAcceptance(bridge,parentSessionId,notification,stopSignal,deadline);if(recoveredDelivery==="missing"){throw new SessionNotFoundError(parentSessionId)}void awaitRecoveredParentNotification(bridge,parentSessionId,notification,lastEventId,eventEpoch,stopSignal).then(continuationCompleted=>{if(!continuationCompleted&&!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation did not reach an end-turn boundary; leaving recovery attachment for the idle reaper`)}},error=>{if(!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation could not be observed: ${error instanceof Error?error.message:String(error)}`)}})}catch(error){let recoveredParentClosed=false;if(restoredParent!==void 0){try{if(restoredParent.hasActivePrompt===true){if(restoredParent.clientId){await bridge.detachClient(restoredParent.sessionId,restoredParent.clientId)}}else if(restoredParent.attached){if(restoredParent.clientId){await bridge.detachClient(restoredParent.sessionId,restoredParent.clientId)}}else{recoveredParentClosed=await bridge.killSession(restoredParent.sessionId,{requireZeroAttaches:true})}}catch{recoveredParentClosed=false}}if(isolatedWorkspace&&isolatedCwd!==void 0&&(recoveredParentClosed||materializedDirectoryUnused)){await isolatedWorkspace.discardEmptyDirectory(parentSessionId).catch(()=>{})}throw error}}__name(deliverSentCompletion,"deliverSentCompletion");async function awaitFirstTurn(bridge,sessionId,promptId,lastEventId,timeoutMs,stopSignal){const ac=new AbortController;let timedOut=false;const timer=setTimeout(()=>{timedOut=true;ac.abort()},timeoutMs);if(typeof timer.unref==="function")timer.unref();const composed=stopSignal?AbortSignal.any([ac.signal,stopSignal]):ac.signal;let acc="";let truncated=false;let stopReason;const appendChunk=__name(text=>{if(truncated)return;if(acc.length+text.length>MAX_RESULT_CHARS){let cut=Math.max(0,MAX_RESULT_CHARS-acc.length);if(cut>0){const code=text.charCodeAt(cut-1);if(code>=55296&&code<=56319)cut-=1}acc+=text.slice(0,cut);truncated=true}else{acc+=text}},"appendChunk");try{for await(const e of bridge.subscribeEvents(sessionId,{lastEventId,signal:composed})){if(e.type==="session_update"){const d=e.data;if(d?.update?.sessionUpdate==="agent_message_chunk"&&typeof d.update.content?.text==="string"&&(e.promptId===void 0||e.promptId===promptId)&&d.update._meta?.source!=="background_task_completed"&&d.update._meta?.source!=="background_notification"&&d.update._meta?.source!=="background_notification_turn_started"){appendChunk(d.update.content.text)}}else if(e.type==="turn_complete"){const d=e.data;if(d?.promptId===promptId){stopReason=d.stopReason??"end_turn";break}}else if(e.type==="turn_error"){const d=e.data;if(d?.promptId===promptId){stopReason="error";if(d.message&&!truncated){const suffix=`${acc?"\n":""}[turn error] ${d.message}`;if(acc.length+suffix.length<=MAX_RESULT_CHARS){acc+=suffix}else{truncated=true}}break}}}}finally{clearTimeout(timer);ac.abort()}if(stopReason===void 0){stopReason=stopSignal?.aborted?"shutdown":timedOut?"timeout":"incomplete"}if(truncated)acc+="\n[\u2026output truncated]";return{result:acc,stopReason}}__name(awaitFirstTurn,"awaitFirstTurn");function createSubSessionLauncher(opts){const{getBridge,getStandaloneSessionService,boundWorkspace,runtimeBaseDir,notifySentCompletion=false,isolatedWorkspace}=opts;const firstTurnTimeoutMs=opts.firstTurnTimeoutMs??FIRST_TURN_TIMEOUT_MS;const sentModeDrainTimeoutMs=opts.sentModeDrainTimeoutMs??SENT_MODE_DRAIN_TIMEOUT_MS;const maxConcurrentPerCaller=opts.maxConcurrentPerCaller??MAX_CONCURRENT_SUB_SESSIONS_PER_CALLER;const maxConcurrentTotal=Math.min(opts.maxConcurrentTotal??MAX_CONCURRENT_SUB_SESSIONS_TOTAL,MAX_TRACKED_SPAWNED_SESSIONS);const inflight=new Map;const spawnedSessionIds=new Set;const stopAc=new AbortController;let inflightTotal=0;const release=__name(key=>{const n=(inflight.get(key)??1)-1;if(n<=0)inflight.delete(key);else inflight.set(key,n);inflightTotal=Math.max(0,inflightTotal-1)},"release");const rememberSpawned=__name(sessionId=>{spawnedSessionIds.add(sessionId);while(spawnedSessionIds.size>MAX_TRACKED_SPAWNED_SESSIONS){const oldest=spawnedSessionIds.values().next().value;if(oldest===void 0)break;spawnedSessionIds.delete(oldest)}},"rememberSpawned");const launch=__name(async info=>{if(stopAc.signal.aborted){throw new Error("The daemon is shutting down; cannot create a sub-session.")}const bridge=getBridge();if(!bridge){throw new Error("Session bridge is not available.")}const caller=bridge.getSessionSummary(info.callerSessionId);const standalone=isReservedStandaloneSessionSourceType(caller.sourceType);const standaloneService=standalone?getStandaloneSessionService?.():void 0;if(standalone&&!standaloneService){throw new Error("Standalone session service is unavailable.")}if(spawnedSessionIds.has(info.callerSessionId)||caller.parentSessionId!==void 0){throw new Error("A sub-session cannot create further sub-sessions (nesting is capped at one level).")}const key=info.callerSessionId;const current=inflight.get(key)??0;if(current>=maxConcurrentPerCaller){throw new Error(`Too many concurrent sub-sessions for this session (cap ${maxConcurrentPerCaller}); wait for one to finish.`)}if(inflightTotal>=maxConcurrentTotal){throw new Error(`Too many concurrent sub-sessions in this workspace (cap ${maxConcurrentTotal}); wait for one to finish.`)}inflight.set(key,current+1);inflightTotal+=1;let released=false;const releaseOnce=__name(()=>{if(released)return;released=true;release(key)},"releaseOnce");let spawnedSession;let promptAdmitted=false;try{const promptId=randomUUID();let lastEventId;let turn;let promptAdmission;let sub;if(standalone){const created=await standaloneService.createChildWithInitialPrompt({sessionId:randomUUID(),parentSessionId:info.callerSessionId,promptId,...info.sourceType?{sourceType:info.sourceType}:{},...info.sourceId?{sourceId:info.sourceId}:{},...info.model?{modelServiceId:info.model}:{}},info.prompt);sub=created.session;lastEventId=created.initialPrompt.lastEventId;turn=created.initialPrompt.turn}else{sub=await bridge.spawnOrAttach({workspaceCwd:boundWorkspace,sessionScope:"thread",parentSessionId:info.callerSessionId,...info.sourceType?{sourceType:info.sourceType}:{},...info.sourceId?{sourceId:info.sourceId}:{},...info.model?{modelServiceId:info.model}:{}})}spawnedSession=sub;const sessionId=sub.sessionId;if(!standalone&&isScheduledTaskRunSource(info)&&info.model&&sub.modelApplied===false){throw new Error(`sub-session model selection failed: ${info.model}`)}if(isolatedWorkspace&&!standalone){const isolatedCwd=await isolatedWorkspace.materializeDirectory(sessionId);const changed=await bridge.changeSessionCwd(sessionId,{path:isolatedCwd,allowedRoots:[boundWorkspace],managedRelocation:"live-conversation"});if(changed.newCwd!==isolatedCwd){throw new Error("Sub-session workspace directory relocation was rejected.")}}rememberSpawned(sessionId);try{bridge.updateSessionMetadata(sessionId,{displayName:subSessionName(info.name??info.prompt,!isScheduledTaskRunSource(info)),titleSource:"auto"})}catch(err){log.debug("sub-session: updateSessionMetadata failed",sessionId,err)}if(!standalone){lastEventId=bridge.getSessionLastEventId(sessionId);let markPromptAdmitted;promptAdmission=new Promise(resolve=>{markPromptAdmitted=resolve});const onPromptAdmitted=__name(()=>{promptAdmitted=true;markPromptAdmitted()},"onPromptAdmitted");turn=bridge.sendPrompt(sessionId,{sessionId,prompt:[{type:"text",text:info.prompt}]},void 0,{promptId,onPromptAdmitted})}void turn.catch(err=>{log.debug("sub-session: sendPrompt rejected",sessionId,String(err))});if(isScheduledTaskRunSource(info)&&promptAdmission){await Promise.race([promptAdmission,turn.then(()=>void 0,err=>Promise.reject(new Error(`sub-session dispatch failed: ${err instanceof Error?err.message:String(err)}`)))])}if(info.groupId){try{const assign=__name(()=>createSessionOrganizationService(boundWorkspace).updateSessionOrganization(sessionId,{groupId:info.groupId,color:null}),"assign");if(runtimeBaseDir){await Storage.runWithResolvedRuntimeBaseDir(runtimeBaseDir,assign)}else{await assign()}bridge.markSessionCatalogChanged()}catch(error){writeStderrLine(`qwen serve: scheduled-task session ${sessionId} could not be assigned to group ${info.groupId}: ${error instanceof Error?error.message:String(error)}`)}}if(info.completion==="sent"){const drainAc=new AbortController;const drainSignal=AbortSignal.any([stopAc.signal,drainAc.signal]);void(async()=>{try{let notification;try{const turnError=turn.then(()=>new Promise(()=>{}),err=>Promise.reject(new Error(`sub-session dispatch failed: ${err instanceof Error?err.message:String(err)}`)));const completion=await Promise.race([awaitFirstTurn(bridge,sessionId,promptId,lastEventId,sentModeDrainTimeoutMs,drainSignal),turnError]);if(stopAc.signal.aborted)return;if(completion.stopReason==="timeout"){writeStderrLine(`qwen serve: sub-session ${sessionId} drain timed out after ${Math.round(sentModeDrainTimeoutMs/6e4)}min; releasing its concurrency slot (the sub-session may still be running)`)}if(notifySentCompletion){notification=buildSentCompletionNotification(sessionId,subSessionName(info.name??info.prompt,false),completion.result,completion.stopReason)}}catch(err){if(stopAc.signal.aborted)return;if(!notifySentCompletion)return;const message=err instanceof Error?err.message:String(err);notification=buildSentCompletionNotification(sessionId,subSessionName(info.name??info.prompt,false),message,"error")}if(!notification)return;try{await deliverSentCompletion(bridge,boundWorkspace,info.callerSessionId,notification,stopAc.signal,isolatedWorkspace,standaloneService)}catch(notificationError){if(!stopAc.signal.aborted){writeStderrLine(`qwen serve: sub-session ${sessionId} completion could not be returned to parent ${info.callerSessionId}: ${notificationError instanceof Error?notificationError.message:String(notificationError)}`)}}}finally{drainAc.abort();releaseOnce()}})();return{sessionId,...sub.parentSessionPersisted!==void 0?{parentSessionPersisted:sub.parentSessionPersisted}:{}}}try{const turnError=turn.then(()=>new Promise(()=>{}),err=>Promise.reject(new Error(`sub-session dispatch failed: ${err instanceof Error?err.message:String(err)}`)));const firstTurn=awaitFirstTurn(bridge,sessionId,promptId,lastEventId,firstTurnTimeoutMs,stopAc.signal);const{result,stopReason}=await Promise.race([firstTurn,turnError]);return{sessionId,result,stopReason,...sub.parentSessionPersisted!==void 0?{parentSessionPersisted:sub.parentSessionPersisted}:{}}}finally{releaseOnce()}}catch(err){releaseOnce();if(spawnedSession!==void 0&&isolatedWorkspace&&!standalone){const sessionId=spawnedSession.sessionId;let sessionClosed=false;try{if(spawnedSession.attached){if(spawnedSession.clientId){await bridge.detachClient(sessionId,spawnedSession.clientId)}}else{sessionClosed=await bridge.killSession(sessionId,{requireZeroAttaches:true})}}catch(cleanupError){log.debug("sub-session: isolated session rollback failed",sessionId,cleanupError)}if(sessionClosed){if(!promptAdmitted){try{const removeTranscript=__name(()=>new SessionService(boundWorkspace).removeSession(sessionId),"removeTranscript");const transcriptRemoved=runtimeBaseDir?await Storage.runWithResolvedRuntimeBaseDir(runtimeBaseDir,removeTranscript):await removeTranscript();if(transcriptRemoved)bridge.markSessionCatalogChanged()}catch(cleanupError){log.debug("sub-session: isolated transcript cleanup failed",sessionId,cleanupError)}}try{await isolatedWorkspace.discardEmptyDirectory(sessionId)}catch(cleanupError){log.debug("sub-session: isolated workspace cleanup failed",sessionId,cleanupError)}}}else if(spawnedSession!==void 0&&!standalone){const sessionId=spawnedSession.sessionId;let sessionClosed=false;let closeTimer;try{await Promise.race([bridge.closeSession(sessionId,void 0,{reason:"sub_session_rollback",agentCloseTimeoutMs:ACTIVE_WORK_CLOSE_TIMEOUT_MS}),new Promise((_,reject)=>{closeTimer=setTimeout(()=>reject(new Error(`Timed out closing rolled-back sub-session ${sessionId}`)),ACTIVE_WORK_CLOSE_TIMEOUT_MS+ROLLBACK_CLOSE_WATCHDOG_SLACK_MS);if(typeof closeTimer.unref==="function")closeTimer.unref()})]);sessionClosed=true}catch(closeErr){log.debug("sub-session: closeSession threw",sessionId,closeErr)}finally{if(closeTimer!==void 0)clearTimeout(closeTimer)}if(!sessionClosed){try{sessionClosed=await bridge.killSession(sessionId,{requireZeroAttaches:true})}catch(killErr){log.debug("sub-session: killSession threw",sessionId,killErr)}}if(sessionClosed&&!promptAdmitted){try{const removeTranscript=__name(()=>new SessionService(boundWorkspace).removeSession(sessionId),"removeTranscript");const transcriptRemoved=runtimeBaseDir?await Storage.runWithResolvedRuntimeBaseDir(runtimeBaseDir,removeTranscript):await removeTranscript();if(transcriptRemoved)bridge.markSessionCatalogChanged()}catch(cleanupError){log.debug("sub-session: transcript cleanup failed",sessionId,cleanupError)}}}writeStderrLine(`qwen serve: create_sub_session failed: ${err instanceof Error?err.message:String(err)}`);throw err instanceof Error?err:new Error(String(err))}},"launch");return{launch,stop:__name(()=>{stopAc.abort()},"stop")}}__name(createSubSessionLauncher,"createSubSessionLauncher");export{MAX_CONCURRENT_SUB_SESSIONS_PER_CALLER,MAX_CONCURRENT_SUB_SESSIONS_TOTAL,MAX_TRACKED_SPAWNED_SESSIONS,createSubSessionLauncher};
|
|
3
|
+
import{isReservedStandaloneSessionSourceType,isScheduledTaskRunSource}from"./chunk-3XCRIK5A.js";import{createSessionOrganizationService}from"./chunk-VK7LOUOJ.js";import{ACTIVE_WORK_CLOSE_TIMEOUT_MS}from"./chunk-WBDNGVHU.js";import{SessionNotFoundError}from"./chunk-VTZZXEWA.js";import"./chunk-L5UULTGF.js";import"./chunk-WSOEJTOC.js";import"./chunk-CK3OKTTL.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-PAD5GPDY.js";import"./chunk-MD3ZEOBX.js";import"./chunk-SSYS5YN5.js";import"./chunk-X5QSFJVS.js";import"./chunk-OMDTFGTX.js";import"./chunk-3EZ5GCUT.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-E3KWSRJN.js";import"./chunk-FRVXSKL4.js";import"./chunk-HW6SU6MX.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-AKWYMQKU.js";import"./chunk-MZUOREFD.js";import"./chunk-BVV7UXES.js";import"./chunk-7XZVMIY5.js";import"./chunk-BY46PCWY.js";import"./chunk-ZZJXFLVM.js";import"./chunk-RKDS7A4H.js";import"./chunk-PMBI46K4.js";import"./chunk-IV3HAIUN.js";import"./chunk-XFMPZINJ.js";import"./chunk-DECUAM3U.js";import"./chunk-QX7W2HY7.js";import"./chunk-HN5UYLPU.js";import"./chunk-PGRN3GZY.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import{SessionService}from"./chunk-T3CQ72HC.js";import{stripTerminalControlSequences}from"./chunk-R2EHHA2C.js";import"./chunk-YK7NDQKM.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-OMSVOFTC.js";import"./chunk-PHIPLV2I.js";import"./chunk-ZOTKZI2P.js";import"./chunk-A6G5TAIF.js";import"./chunk-YVBHCSZD.js";import"./chunk-FIXDX63I.js";import"./chunk-T7CHK6C2.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-UYEWRLGD.js";import"./chunk-QVPT37XZ.js";import"./chunk-YVD4O5ZB.js";import"./chunk-T6W33SET.js";import"./chunk-WK2IBT6D.js";import"./chunk-QZV4PFQK.js";import"./chunk-ILECDNJX.js";import"./chunk-QXQGUM3Y.js";import"./chunk-UQ7IROJH.js";import"./chunk-SZCBUCNH.js";import"./chunk-BEKROCWN.js";import"./chunk-5SUFJTQQ.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-FUBDS3AV.js";import"./chunk-HW6AWS7W.js";import"./chunk-KLC3OD2M.js";import"./chunk-Q5IZXKUJ.js";import"./chunk-G5PYYZMM.js";import"./chunk-BG67XABA.js";import"./chunk-OBOU4ZZM.js";import"./chunk-D7XCQWP2.js";import"./chunk-AE5OMKRY.js";import"./chunk-OBV7RNHV.js";import"./chunk-7CQMWEMY.js";import"./chunk-GOZYWU4B.js";import"./chunk-OUC3WICA.js";import"./chunk-JZK2WGXA.js";import"./chunk-MPHSE7M4.js";import"./chunk-S2ZKZXHX.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-4QQKOW5M.js";import"./chunk-OV3EBH6J.js";import"./chunk-EBMCWXGZ.js";import"./chunk-XZTE4YTN.js";import"./chunk-LSASUDF2.js";import"./chunk-2V5EKGDK.js";import"./chunk-MOKVM4PT.js";import"./chunk-YIW3H46P.js";import"./chunk-EOMRLUNZ.js";import"./chunk-4ZRCV3JY.js";import"./chunk-TL6MLBXR.js";import"./chunk-NMY3PYNO.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-SCD5TUBG.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-LMJPU2JM.js";import"./chunk-VFB6Q74I.js";import"./chunk-4JNHUZ7M.js";import"./chunk-SW54YEPK.js";import"./chunk-ZCRL73DT.js";import"./chunk-A6LT3FIJ.js";import"./chunk-S6RXVOY6.js";import"./chunk-YZFNBUKG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-BN4FIQ77.js";import"./chunk-X64RXJQQ.js";import"./chunk-HETUGUHE.js";import"./chunk-ET2Z7ZGF.js";import"./chunk-XFPYXD2P.js";import"./chunk-3YWXKSOI.js";import"./chunk-5CWTKFI4.js";import"./chunk-C4MVD5OI.js";import"./chunk-Z2W7S4O4.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-FQRF6B65.js";import"./chunk-ZWPSBU7K.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-KVA6DHHF.js";import"./chunk-PWOQASXT.js";import"./chunk-K7JCVESI.js";import"./chunk-Y6HHV4LC.js";import"./chunk-RP57XAJ2.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7DOOXUDG.js";import"./chunk-77V43YOE.js";import"./chunk-7U7CWMP7.js";import"./chunk-EFTJIDS3.js";import"./chunk-4DIWAQ5G.js";import"./chunk-Q6UAOTP3.js";import"./chunk-H5EXNXGW.js";import"./chunk-GOR7FFVE.js";import"./chunk-4ZBZL23U.js";import"./chunk-BMHYEQTI.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-3XVPZY7X.js";import"./chunk-KQX4H2D3.js";import"./chunk-URNNJMIC.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import{writeStderrLine}from"./chunk-M4ECEHLX.js";import"./chunk-DBRQGEEI.js";import"./chunk-B3ZFUGTC.js";import"./chunk-IRINPFG7.js";import{escapeXml,escapeXmlWithinBudget}from"./chunk-6GTPLW7K.js";import"./chunk-NGVRCUYD.js";import"./chunk-5DTFN37U.js";import"./chunk-2YUBAWQ6.js";import"./chunk-O5EKX7LG.js";import"./chunk-TM6ZCBR7.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-I6S7NGX3.js";import"./chunk-SBZFGYYS.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import"./chunk-I4H7NUVP.js";import{Storage}from"./chunk-EPODBRBP.js";import"./chunk-OKN3Z5C5.js";import"./chunk-XYB7GC5U.js";import"./chunk-2UOMCYQG.js";import"./chunk-I7L2TX4M.js";import"./chunk-MK3OONRA.js";import"./chunk-COGTQ5KZ.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{randomUUID}from"node:crypto";var log=createDebugLogger("SUB_SESSION");var MAX_CONCURRENT_SUB_SESSIONS_PER_CALLER=16;var MAX_CONCURRENT_SUB_SESSIONS_TOTAL=24;var FIRST_TURN_TIMEOUT_MS=5*6e4;var SENT_MODE_DRAIN_TIMEOUT_MS=30*6e4;var RECOVERED_PARENT_NOTIFICATION_TIMEOUT_MS=30*6e4;var SENT_COMPLETION_DELIVERY_RETRY_MS=100;var SENT_COMPLETION_DELIVERY_MAX_RETRY_MS=3e4;var ROLLBACK_CLOSE_WATCHDOG_SLACK_MS=5e3;var MAX_RESULT_CHARS=32e3;var MAX_SENT_COMPLETION_MODEL_TEXT_CHARS=32768;var SENT_COMPLETION_RESULT_TRUNCATION_MARKER="\n[\u2026result truncated]";var MAX_NAME_LENGTH=60;var MAX_TRACKED_SPAWNED_SESSIONS=1024;var BIDI_CONTROL_MARKS=new RegExp("[\\u061C\\u200E\\u200F\\u202A-\\u202E\\u2066-\\u2069]","g");function subSessionName(label,includeThreadGlyph=true){const cleaned=stripTerminalControlSequences(label).replace(BIDI_CONTROL_MARKS,"").trim().replace(/\s+/g," ");let short=cleaned;if(cleaned.length>MAX_NAME_LENGTH){let cut=MAX_NAME_LENGTH-1;const boundary=cleaned.charCodeAt(cut-1);if(boundary>=55296&&boundary<=56319)cut-=1;short=`${cleaned.slice(0,cut)}\u2026`}return includeThreadGlyph?`\u{1F9F5} ${short}`:short}__name(subSessionName,"subSessionName");function sentCompletionStatus(stopReason){if(stopReason==="end_turn")return"completed";if(stopReason==="cancelled"||stopReason==="shutdown"){return"cancelled"}return"failed"}__name(sentCompletionStatus,"sentCompletionStatus");function truncateCodePoints(value,max){const codePoints=Array.from(value);if(codePoints.length<=max)return value;return`${codePoints.slice(0,Math.max(0,max-1)).join("")}\u2026`}__name(truncateCodePoints,"truncateCodePoints");function buildSentCompletionNotification(sessionId,label,result,stopReason){const status=sentCompletionStatus(stopReason);const boundedStopReason=truncateCodePoints(stopReason,128);const statusText=status==="completed"?"completed":status==="cancelled"?"was cancelled":`failed (${boundedStopReason})`;const sessionLink=`[\u{1F9F5} ${sessionId.slice(0,8)}](qwen-session://${sessionId})`;const safeResult=result.trim()||`No text output (stopReason: ${stopReason}).`;const modelSessionId=truncateCodePoints(sessionId,256);const modelLabel=truncateCodePoints(label,256);const modelTextPrefix=["<task-notification>",`<task-id>${escapeXml(modelSessionId)}</task-id>`,`<status>${status}</status>`,`<summary>Sub-session "${escapeXml(modelLabel)}" ${escapeXml(statusText)}.</summary>`,`<session-link>qwen-session://${escapeXml(modelSessionId)}</session-link>`,"<result>"].join("");const modelTextSuffix="</result></task-notification>";const resultBudget=Math.max(0,MAX_SENT_COMPLETION_MODEL_TEXT_CHARS-modelTextPrefix.length-modelTextSuffix.length);let preview=escapeXmlWithinBudget(safeResult,resultBudget);const marker=SENT_COMPLETION_RESULT_TRUNCATION_MARKER;if(preview.truncated&&marker.length<=resultBudget){preview=escapeXmlWithinBudget(safeResult,resultBudget-marker.length);preview.text+=marker}const modelText=`${modelTextPrefix}${preview.text}${modelTextSuffix}`;return{displayText:`Sub-session ${sessionLink} ${statusText}.`,modelText,taskId:sessionId,status,kind:"agent",...modelLabel.trim()?{label:modelLabel}:{}}}__name(buildSentCompletionNotification,"buildSentCompletionNotification");function isBackgroundNotificationForTask(event,taskId){if(event.type!=="session_update")return false;const update=event.data?.update;return update?._meta?.source==="background_notification"&&update._meta.backgroundTask?.taskId===taskId}__name(isBackgroundNotificationForTask,"isBackgroundNotificationForTask");async function awaitRecoveredParentNotification(bridge,sessionId,notification,lastEventId,eventEpoch,stopSignal){const timeoutAc=new AbortController;const timer=setTimeout(()=>timeoutAc.abort(),RECOVERED_PARENT_NOTIFICATION_TIMEOUT_MS);if(typeof timer.unref==="function")timer.unref();const signal=AbortSignal.any([stopSignal,timeoutAc.signal]);let observedOwnNotification=false;try{for await(const event of bridge.subscribeEvents(sessionId,{lastEventId,epoch:eventEpoch,signal})){if(isBackgroundNotificationForTask(event,notification.taskId)){observedOwnNotification=true}else if(observedOwnNotification&&event.type==="background_notification_turn_complete"){return true}}}finally{clearTimeout(timer);timeoutAc.abort()}return false}__name(awaitRecoveredParentNotification,"awaitRecoveredParentNotification");async function waitForSentCompletionRetry(signal,attempt){if(signal.aborted)throw signal.reason;const delay=Math.min(SENT_COMPLETION_DELIVERY_RETRY_MS*2**attempt,SENT_COMPLETION_DELIVERY_MAX_RETRY_MS);await new Promise((resolve,reject)=>{const onAbort=__name(()=>{clearTimeout(timer);reject(signal.reason)},"onAbort");const timer=setTimeout(()=>{signal.removeEventListener("abort",onAbort);resolve()},delay);if(typeof timer.unref==="function")timer.unref();signal.addEventListener("abort",onAbort,{once:true})})}__name(waitForSentCompletionRetry,"waitForSentCompletionRetry");async function awaitSentCompletionAcceptance(bridge,parentSessionId,notification,stopSignal,deadline){let lastError;let attempt=0;while(!stopSignal.aborted){try{const acknowledgement=await bridge.enqueueBackgroundNotification(parentSessionId,notification);if(acknowledgement.accepted)return"accepted"}catch(error){if(error instanceof SessionNotFoundError)return"missing";lastError=error}if(Date.now()>=deadline){throw new Error(`Parent ${parentSessionId} did not durably accept completion for sub-session ${notification.taskId}.`,lastError===void 0?void 0:{cause:lastError})}await waitForSentCompletionRetry(stopSignal,attempt);attempt+=1}throw stopSignal.reason}__name(awaitSentCompletionAcceptance,"awaitSentCompletionAcceptance");async function deliverSentCompletion(bridge,boundWorkspace,parentSessionId,notification,stopSignal,isolatedWorkspace,standaloneService){const deadline=Date.now()+RECOVERED_PARENT_NOTIFICATION_TIMEOUT_MS;const initialDelivery=await awaitSentCompletionAcceptance(bridge,parentSessionId,notification,stopSignal,deadline);if(initialDelivery==="accepted")return;if(standaloneService){await standaloneService.resume(parentSessionId);let ownerBridge;let ownerSessionId="";let lastEventId=0;let eventEpoch="";const recoveredDelivery=await standaloneService.continueSession(parentSessionId,async(runtime,canonicalSessionId)=>{ownerBridge=runtime.bridge;ownerSessionId=canonicalSessionId;lastEventId=runtime.bridge.getSessionLastEventId(canonicalSessionId);eventEpoch=runtime.bridge.getSessionEventEpoch(canonicalSessionId);return awaitSentCompletionAcceptance(runtime.bridge,canonicalSessionId,notification,stopSignal,deadline)});if(recoveredDelivery==="missing"||!ownerBridge||!ownerSessionId){throw new SessionNotFoundError(parentSessionId)}void awaitRecoveredParentNotification(ownerBridge,ownerSessionId,notification,lastEventId,eventEpoch,stopSignal).then(continuationCompleted=>{if(!continuationCompleted&&!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation did not reach an end-turn boundary; leaving recovery attachment for the idle reaper`)}},error=>{if(!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation could not be observed: ${error instanceof Error?error.message:String(error)}`)}});return}let restoredParent;const isolatedCwd=isolatedWorkspace?await isolatedWorkspace.materializeDirectory(parentSessionId):void 0;let materializedDirectoryUnused=isolatedCwd!==void 0;try{restoredParent=await bridge.resumeSession({sessionId:parentSessionId,workspaceCwd:boundWorkspace});if(isolatedCwd!==void 0){if(restoredParent.hasActivePrompt===true&&restoredParent.currentCwd!==isolatedCwd){throw new Error("Active restored parent is outside its isolated conversation directory.")}if(restoredParent.hasActivePrompt===true){materializedDirectoryUnused=false}if(restoredParent.hasActivePrompt!==true){materializedDirectoryUnused=false;const changed=await bridge.changeSessionCwd(parentSessionId,{path:isolatedCwd,allowedRoots:[boundWorkspace],managedRelocation:"live-conversation"});if(changed.newCwd!==isolatedCwd){materializedDirectoryUnused=true;throw new Error("Restored parent workspace directory relocation was rejected.")}restoredParent.currentCwd=changed.newCwd}}const lastEventId=bridge.getSessionLastEventId(parentSessionId);const eventEpoch=bridge.getSessionEventEpoch(parentSessionId);const recoveredDelivery=await awaitSentCompletionAcceptance(bridge,parentSessionId,notification,stopSignal,deadline);if(recoveredDelivery==="missing"){throw new SessionNotFoundError(parentSessionId)}void awaitRecoveredParentNotification(bridge,parentSessionId,notification,lastEventId,eventEpoch,stopSignal).then(continuationCompleted=>{if(!continuationCompleted&&!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation did not reach an end-turn boundary; leaving recovery attachment for the idle reaper`)}},error=>{if(!stopSignal.aborted){writeStderrLine(`qwen serve: restored parent ${parentSessionId} accepted completion for sub-session ${notification.taskId}, but its automatic continuation could not be observed: ${error instanceof Error?error.message:String(error)}`)}})}catch(error){let recoveredParentClosed=false;if(restoredParent!==void 0){try{if(restoredParent.hasActivePrompt===true){if(restoredParent.clientId){await bridge.detachClient(restoredParent.sessionId,restoredParent.clientId)}}else if(restoredParent.attached){if(restoredParent.clientId){await bridge.detachClient(restoredParent.sessionId,restoredParent.clientId)}}else{recoveredParentClosed=await bridge.killSession(restoredParent.sessionId,{requireZeroAttaches:true})}}catch{recoveredParentClosed=false}}if(isolatedWorkspace&&isolatedCwd!==void 0&&(recoveredParentClosed||materializedDirectoryUnused)){await isolatedWorkspace.discardEmptyDirectory(parentSessionId).catch(()=>{})}throw error}}__name(deliverSentCompletion,"deliverSentCompletion");async function awaitFirstTurn(bridge,sessionId,promptId,lastEventId,timeoutMs,stopSignal){const ac=new AbortController;let timedOut=false;const timer=setTimeout(()=>{timedOut=true;ac.abort()},timeoutMs);if(typeof timer.unref==="function")timer.unref();const composed=stopSignal?AbortSignal.any([ac.signal,stopSignal]):ac.signal;let acc="";let truncated=false;let stopReason;const appendChunk=__name(text=>{if(truncated)return;if(acc.length+text.length>MAX_RESULT_CHARS){let cut=Math.max(0,MAX_RESULT_CHARS-acc.length);if(cut>0){const code=text.charCodeAt(cut-1);if(code>=55296&&code<=56319)cut-=1}acc+=text.slice(0,cut);truncated=true}else{acc+=text}},"appendChunk");try{for await(const e of bridge.subscribeEvents(sessionId,{lastEventId,signal:composed})){if(e.type==="session_update"){const d=e.data;if(d?.update?.sessionUpdate==="agent_message_chunk"&&typeof d.update.content?.text==="string"&&(e.promptId===void 0||e.promptId===promptId)&&d.update._meta?.source!=="background_task_completed"&&d.update._meta?.source!=="background_notification"&&d.update._meta?.source!=="background_notification_turn_started"){appendChunk(d.update.content.text)}}else if(e.type==="turn_complete"){const d=e.data;if(d?.promptId===promptId){stopReason=d.stopReason??"end_turn";break}}else if(e.type==="turn_error"){const d=e.data;if(d?.promptId===promptId){stopReason="error";if(d.message&&!truncated){const suffix=`${acc?"\n":""}[turn error] ${d.message}`;if(acc.length+suffix.length<=MAX_RESULT_CHARS){acc+=suffix}else{truncated=true}}break}}}}finally{clearTimeout(timer);ac.abort()}if(stopReason===void 0){stopReason=stopSignal?.aborted?"shutdown":timedOut?"timeout":"incomplete"}if(truncated)acc+="\n[\u2026output truncated]";return{result:acc,stopReason}}__name(awaitFirstTurn,"awaitFirstTurn");function createSubSessionLauncher(opts){const{getBridge,getStandaloneSessionService,boundWorkspace,runtimeBaseDir,notifySentCompletion=false,isolatedWorkspace}=opts;const firstTurnTimeoutMs=opts.firstTurnTimeoutMs??FIRST_TURN_TIMEOUT_MS;const sentModeDrainTimeoutMs=opts.sentModeDrainTimeoutMs??SENT_MODE_DRAIN_TIMEOUT_MS;const maxConcurrentPerCaller=opts.maxConcurrentPerCaller??MAX_CONCURRENT_SUB_SESSIONS_PER_CALLER;const maxConcurrentTotal=Math.min(opts.maxConcurrentTotal??MAX_CONCURRENT_SUB_SESSIONS_TOTAL,MAX_TRACKED_SPAWNED_SESSIONS);const inflight=new Map;const spawnedSessionIds=new Set;const stopAc=new AbortController;let inflightTotal=0;const release=__name(key=>{const n=(inflight.get(key)??1)-1;if(n<=0)inflight.delete(key);else inflight.set(key,n);inflightTotal=Math.max(0,inflightTotal-1)},"release");const rememberSpawned=__name(sessionId=>{spawnedSessionIds.add(sessionId);while(spawnedSessionIds.size>MAX_TRACKED_SPAWNED_SESSIONS){const oldest=spawnedSessionIds.values().next().value;if(oldest===void 0)break;spawnedSessionIds.delete(oldest)}},"rememberSpawned");const launch=__name(async info=>{if(stopAc.signal.aborted){throw new Error("The daemon is shutting down; cannot create a sub-session.")}const bridge=getBridge();if(!bridge){throw new Error("Session bridge is not available.")}const caller=bridge.getSessionSummary(info.callerSessionId);const standalone=isReservedStandaloneSessionSourceType(caller.sourceType);const standaloneService=standalone?getStandaloneSessionService?.():void 0;if(standalone&&!standaloneService){throw new Error("Standalone session service is unavailable.")}if(spawnedSessionIds.has(info.callerSessionId)||caller.parentSessionId!==void 0){throw new Error("A sub-session cannot create further sub-sessions (nesting is capped at one level).")}const key=info.callerSessionId;const current=inflight.get(key)??0;if(current>=maxConcurrentPerCaller){throw new Error(`Too many concurrent sub-sessions for this session (cap ${maxConcurrentPerCaller}); wait for one to finish.`)}if(inflightTotal>=maxConcurrentTotal){throw new Error(`Too many concurrent sub-sessions in this workspace (cap ${maxConcurrentTotal}); wait for one to finish.`)}inflight.set(key,current+1);inflightTotal+=1;let released=false;const releaseOnce=__name(()=>{if(released)return;released=true;release(key)},"releaseOnce");let spawnedSession;let promptAdmitted=false;try{const promptId=randomUUID();let lastEventId;let turn;let promptAdmission;let sub;if(standalone){const created=await standaloneService.createChildWithInitialPrompt({sessionId:randomUUID(),parentSessionId:info.callerSessionId,promptId,...info.sourceType?{sourceType:info.sourceType}:{},...info.sourceId?{sourceId:info.sourceId}:{},...info.model?{modelServiceId:info.model}:{}},info.prompt);sub=created.session;lastEventId=created.initialPrompt.lastEventId;turn=created.initialPrompt.turn}else{sub=await bridge.spawnOrAttach({workspaceCwd:boundWorkspace,sessionScope:"thread",parentSessionId:info.callerSessionId,...info.sourceType?{sourceType:info.sourceType}:{},...info.sourceId?{sourceId:info.sourceId}:{},...info.model?{modelServiceId:info.model}:{}})}spawnedSession=sub;const sessionId=sub.sessionId;if(!standalone&&isScheduledTaskRunSource(info)&&info.model&&sub.modelApplied===false){throw new Error(`sub-session model selection failed: ${info.model}`)}if(isolatedWorkspace&&!standalone){const isolatedCwd=await isolatedWorkspace.materializeDirectory(sessionId);const changed=await bridge.changeSessionCwd(sessionId,{path:isolatedCwd,allowedRoots:[boundWorkspace],managedRelocation:"live-conversation"});if(changed.newCwd!==isolatedCwd){throw new Error("Sub-session workspace directory relocation was rejected.")}}rememberSpawned(sessionId);try{bridge.updateSessionMetadata(sessionId,{displayName:subSessionName(info.name??info.prompt,!isScheduledTaskRunSource(info)),titleSource:"auto"})}catch(err){log.debug("sub-session: updateSessionMetadata failed",sessionId,err)}if(!standalone){lastEventId=bridge.getSessionLastEventId(sessionId);let markPromptAdmitted;promptAdmission=new Promise(resolve=>{markPromptAdmitted=resolve});const onPromptAdmitted=__name(()=>{promptAdmitted=true;markPromptAdmitted()},"onPromptAdmitted");turn=bridge.sendPrompt(sessionId,{sessionId,prompt:[{type:"text",text:info.prompt}]},void 0,{promptId,onPromptAdmitted})}void turn.catch(err=>{log.debug("sub-session: sendPrompt rejected",sessionId,String(err))});if(isScheduledTaskRunSource(info)&&promptAdmission){await Promise.race([promptAdmission,turn.then(()=>void 0,err=>Promise.reject(new Error(`sub-session dispatch failed: ${err instanceof Error?err.message:String(err)}`)))])}if(info.groupId){try{const assign=__name(()=>createSessionOrganizationService(boundWorkspace).updateSessionOrganization(sessionId,{groupId:info.groupId,color:null}),"assign");if(runtimeBaseDir){await Storage.runWithResolvedRuntimeBaseDir(runtimeBaseDir,assign)}else{await assign()}bridge.markSessionCatalogChanged()}catch(error){writeStderrLine(`qwen serve: scheduled-task session ${sessionId} could not be assigned to group ${info.groupId}: ${error instanceof Error?error.message:String(error)}`)}}if(info.completion==="sent"){const drainAc=new AbortController;const drainSignal=AbortSignal.any([stopAc.signal,drainAc.signal]);void(async()=>{try{let notification;try{const turnError=turn.then(()=>new Promise(()=>{}),err=>Promise.reject(new Error(`sub-session dispatch failed: ${err instanceof Error?err.message:String(err)}`)));const completion=await Promise.race([awaitFirstTurn(bridge,sessionId,promptId,lastEventId,sentModeDrainTimeoutMs,drainSignal),turnError]);if(stopAc.signal.aborted)return;if(completion.stopReason==="timeout"){writeStderrLine(`qwen serve: sub-session ${sessionId} drain timed out after ${Math.round(sentModeDrainTimeoutMs/6e4)}min; releasing its concurrency slot (the sub-session may still be running)`)}if(notifySentCompletion){notification=buildSentCompletionNotification(sessionId,subSessionName(info.name??info.prompt,false),completion.result,completion.stopReason)}}catch(err){if(stopAc.signal.aborted)return;if(!notifySentCompletion)return;const message=err instanceof Error?err.message:String(err);notification=buildSentCompletionNotification(sessionId,subSessionName(info.name??info.prompt,false),message,"error")}if(!notification)return;try{await deliverSentCompletion(bridge,boundWorkspace,info.callerSessionId,notification,stopAc.signal,isolatedWorkspace,standaloneService)}catch(notificationError){if(!stopAc.signal.aborted){writeStderrLine(`qwen serve: sub-session ${sessionId} completion could not be returned to parent ${info.callerSessionId}: ${notificationError instanceof Error?notificationError.message:String(notificationError)}`)}}}finally{drainAc.abort();releaseOnce()}})();return{sessionId,...sub.parentSessionPersisted!==void 0?{parentSessionPersisted:sub.parentSessionPersisted}:{}}}try{const turnError=turn.then(()=>new Promise(()=>{}),err=>Promise.reject(new Error(`sub-session dispatch failed: ${err instanceof Error?err.message:String(err)}`)));const firstTurn=awaitFirstTurn(bridge,sessionId,promptId,lastEventId,firstTurnTimeoutMs,stopAc.signal);const{result,stopReason}=await Promise.race([firstTurn,turnError]);return{sessionId,result,stopReason,...sub.parentSessionPersisted!==void 0?{parentSessionPersisted:sub.parentSessionPersisted}:{}}}finally{releaseOnce()}}catch(err){releaseOnce();if(spawnedSession!==void 0&&isolatedWorkspace&&!standalone){const sessionId=spawnedSession.sessionId;let sessionClosed=false;try{if(spawnedSession.attached){if(spawnedSession.clientId){await bridge.detachClient(sessionId,spawnedSession.clientId)}}else{sessionClosed=await bridge.killSession(sessionId,{requireZeroAttaches:true})}}catch(cleanupError){log.debug("sub-session: isolated session rollback failed",sessionId,cleanupError)}if(sessionClosed){if(!promptAdmitted){try{const removeTranscript=__name(()=>new SessionService(boundWorkspace).removeSession(sessionId),"removeTranscript");const transcriptRemoved=runtimeBaseDir?await Storage.runWithResolvedRuntimeBaseDir(runtimeBaseDir,removeTranscript):await removeTranscript();if(transcriptRemoved)bridge.markSessionCatalogChanged()}catch(cleanupError){log.debug("sub-session: isolated transcript cleanup failed",sessionId,cleanupError)}}try{await isolatedWorkspace.discardEmptyDirectory(sessionId)}catch(cleanupError){log.debug("sub-session: isolated workspace cleanup failed",sessionId,cleanupError)}}}else if(spawnedSession!==void 0&&!standalone){const sessionId=spawnedSession.sessionId;let sessionClosed=false;let closeTimer;try{await Promise.race([bridge.closeSession(sessionId,void 0,{reason:"sub_session_rollback",agentCloseTimeoutMs:ACTIVE_WORK_CLOSE_TIMEOUT_MS}),new Promise((_,reject)=>{closeTimer=setTimeout(()=>reject(new Error(`Timed out closing rolled-back sub-session ${sessionId}`)),ACTIVE_WORK_CLOSE_TIMEOUT_MS+ROLLBACK_CLOSE_WATCHDOG_SLACK_MS);if(typeof closeTimer.unref==="function")closeTimer.unref()})]);sessionClosed=true}catch(closeErr){log.debug("sub-session: closeSession threw",sessionId,closeErr)}finally{if(closeTimer!==void 0)clearTimeout(closeTimer)}if(!sessionClosed){try{sessionClosed=await bridge.killSession(sessionId,{requireZeroAttaches:true})}catch(killErr){log.debug("sub-session: killSession threw",sessionId,killErr)}}if(sessionClosed&&!promptAdmitted){try{const removeTranscript=__name(()=>new SessionService(boundWorkspace).removeSession(sessionId),"removeTranscript");const transcriptRemoved=runtimeBaseDir?await Storage.runWithResolvedRuntimeBaseDir(runtimeBaseDir,removeTranscript):await removeTranscript();if(transcriptRemoved)bridge.markSessionCatalogChanged()}catch(cleanupError){log.debug("sub-session: transcript cleanup failed",sessionId,cleanupError)}}}writeStderrLine(`qwen serve: create_sub_session failed: ${err instanceof Error?err.message:String(err)}`);throw err instanceof Error?err:new Error(String(err))}},"launch");return{launch,stop:__name(()=>{stopAc.abort()},"stop")}}__name(createSubSessionLauncher,"createSubSessionLauncher");export{MAX_CONCURRENT_SUB_SESSIONS_PER_CALLER,MAX_CONCURRENT_SUB_SESSIONS_TOTAL,MAX_TRACKED_SPAWNED_SESSIONS,createSubSessionLauncher};
|
|
4
4
|
/**
|
|
5
5
|
* @license
|
|
6
6
|
* Copyright 2025 Qwen Team
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import{CRON_GATE_TIMEOUT_MS,extractCommandRules,gateCommandError,nextFireTime,parseCron}from"./chunk-Z5XENA4A.js";import"./chunk-R2EHHA2C.js";import"./chunk-YK7NDQKM.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-OMSVOFTC.js";import"./chunk-PHIPLV2I.js";import"./chunk-ZOTKZI2P.js";import"./chunk-A6G5TAIF.js";import"./chunk-YVBHCSZD.js";import"./chunk-FIXDX63I.js";import"./chunk-T7CHK6C2.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-UYEWRLGD.js";import{humanReadableCron}from"./chunk-QVPT37XZ.js";import{buildPermissionCheckContext}from"./chunk-YVD4O5ZB.js";import{CRON_TASKS_DISPLAY_PATH}from"./chunk-T6W33SET.js";import"./chunk-WK2IBT6D.js";import"./chunk-QZV4PFQK.js";import"./chunk-ILECDNJX.js";import"./chunk-QXQGUM3Y.js";import"./chunk-UQ7IROJH.js";import"./chunk-SZCBUCNH.js";import"./chunk-BEKROCWN.js";import"./chunk-5SUFJTQQ.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-FUBDS3AV.js";import"./chunk-HW6AWS7W.js";import"./chunk-KLC3OD2M.js";import"./chunk-Q5IZXKUJ.js";import"./chunk-G5PYYZMM.js";import"./chunk-BG67XABA.js";import"./chunk-OBOU4ZZM.js";import"./chunk-D7XCQWP2.js";import"./chunk-AE5OMKRY.js";import"./chunk-OBV7RNHV.js";import"./chunk-7CQMWEMY.js";import"./chunk-GOZYWU4B.js";import"./chunk-OUC3WICA.js";import"./chunk-JZK2WGXA.js";import"./chunk-MPHSE7M4.js";import"./chunk-S2ZKZXHX.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-4QQKOW5M.js";import"./chunk-OV3EBH6J.js";import"./chunk-EBMCWXGZ.js";import"./chunk-XZTE4YTN.js";import"./chunk-LSASUDF2.js";import"./chunk-2V5EKGDK.js";import"./chunk-MOKVM4PT.js";import"./chunk-YIW3H46P.js";import"./chunk-EOMRLUNZ.js";import"./chunk-4ZRCV3JY.js";import"./chunk-TL6MLBXR.js";import"./chunk-NMY3PYNO.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import{promptIdContext}from"./chunk-MWGB5RCF.js";import{buildShellExecWarnings,getCommandRoot,normalizeMonitorCommand}from"./chunk-SCD5TUBG.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-LMJPU2JM.js";import"./chunk-4JNHUZ7M.js";import"./chunk-SW54YEPK.js";import"./chunk-ZCRL73DT.js";import"./chunk-A6LT3FIJ.js";import"./chunk-S6RXVOY6.js";import"./chunk-YZFNBUKG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-BN4FIQ77.js";import"./chunk-X64RXJQQ.js";import"./chunk-HETUGUHE.js";import"./chunk-ET2Z7ZGF.js";import"./chunk-3YWXKSOI.js";import"./chunk-5CWTKFI4.js";import"./chunk-C4MVD5OI.js";import"./chunk-Z2W7S4O4.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-FQRF6B65.js";import"./chunk-ZWPSBU7K.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-KVA6DHHF.js";import"./chunk-PWOQASXT.js";import"./chunk-K7JCVESI.js";import"./chunk-Y6HHV4LC.js";import"./chunk-RP57XAJ2.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7DOOXUDG.js";import"./chunk-77V43YOE.js";import"./chunk-7U7CWMP7.js";import"./chunk-EFTJIDS3.js";import"./chunk-4DIWAQ5G.js";import"./chunk-Q6UAOTP3.js";import"./chunk-NGOIJH7K.js";import"./chunk-GOR7FFVE.js";import"./chunk-4ZBZL23U.js";import"./chunk-BMHYEQTI.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-3XVPZY7X.js";import"./chunk-KQX4H2D3.js";import"./chunk-URNNJMIC.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-DBRQGEEI.js";import"./chunk-B3ZFUGTC.js";import"./chunk-IRINPFG7.js";import"./chunk-6GTPLW7K.js";import"./chunk-NGVRCUYD.js";import"./chunk-5DTFN37U.js";import"./chunk-2YUBAWQ6.js";import{BaseDeclarativeTool,BaseToolInvocation}from"./chunk-O5EKX7LG.js";import"./chunk-TM6ZCBR7.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-I6S7NGX3.js";import{ToolDisplayNames,ToolNames}from"./chunk-SBZFGYYS.js";import"./chunk-JAUJI56S.js";import"./chunk-I4H7NUVP.js";import"./chunk-EPODBRBP.js";import"./chunk-OKN3Z5C5.js";import{getErrorMessage}from"./chunk-XYB7GC5U.js";import"./chunk-2UOMCYQG.js";import"./chunk-I7L2TX4M.js";import"./chunk-MK3OONRA.js";import"./chunk-COGTQ5KZ.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();function formatDays(days){return days===1?"1 day":`${days} days`}__name(formatDays,"formatDays");function recurringExpiryBlurb(maxAgeDays){if(!Number.isFinite(maxAgeDays)){return"Recurring tasks never auto-expire in this configuration \u2014 they keep firing until deleted with CronDelete. Tell the user the job runs until cancelled when scheduling recurring jobs."}const span=formatDays(maxAgeDays);return`Recurring tasks auto-expire after ${span} \u2014 they fire one final time, then are deleted. This bounds how long a forgotten schedule keeps firing. Tell the user about the ${span} limit when scheduling recurring jobs.`}__name(recurringExpiryBlurb,"recurringExpiryBlurb");var CronCreateInvocation=class extends BaseToolInvocation{constructor(config,params){super(params);this.config=config}static{__name(this,"CronCreateInvocation")}gateConfirmed=false;getDescription(){const gate=this.params.gate?` [gate: ${this.params.gate}]`:"";return`${this.params.cron}: ${this.params.prompt}${gate}`}async getConfirmationDetails(abortSignal){const gate=this.params.gate?.trim();if(!gate)return super.getConfirmationDetails(abortSignal);const normalized=normalizeMonitorCommand(gate);let permissionRules=[];try{permissionRules=[...new Set(await extractCommandRules(normalized.safetyCommand))].map(rule=>`Monitor(${rule})`)}catch{}if(permissionRules.length===0){permissionRules=[`Monitor(${normalized.safetyCommand})`]}const details={type:"exec",title:"Schedule a gated task",command:gate,rootCommand:getCommandRoot(normalized.safetyCommand)??gate,permissionRules,warnings:[`Runs unattended on this schedule (${humanReadableCron(this.params.cron)}) without further approval; the task prompt runs only when the command prints output.`,...buildShellExecWarnings(normalized.safetyCommand,gate)??[]],onConfirm:__name(async(outcome,_payload)=>{if(String(outcome).startsWith("proceed_"))this.gateConfirmed=true},"onConfirm")};return details}async assertGateApproved(gate){const pm=this.config.getPermissionManager?.();const cwd=this.config.getTargetDir();const decision=await pm?.evaluate({toolName:ToolNames.MONITOR,command:gate,cwd});if(decision==="deny"){throw new Error("The gate command is denied by a permission rule, so the task would be blocked at every fire. Remove that deny rule or choose another command.")}if(this.gateConfirmed)return;const mode=this.config.getApprovalMode();if(mode==="yolo")return;if(mode==="auto"){const toolDecision=await pm?.evaluate(buildPermissionCheckContext(ToolNames.CRON_CREATE,this.params,cwd));if(toolDecision!=="allow")return}if(decision==="allow")return;throw new Error(`The gate command was not confirmed: a saved ${ToolNames.CRON_CREATE} rule does not cover a shell command that runs unattended. Add a Monitor(...) rule for it, or remove that rule so the command can be confirmed.`)}async getDefaultPermission(){return"ask"}async execute(){const recurring=this.params.recurring!==false;const durable=this.params.durable===true;const useCurrentSession=this.params.sessionMode==="current";const prompt=this.params.prompt.trim();const gate=this.params.gate?.trim()||void 0;if(durable&&this.config.getSessionSourceType?.()==="standalone"){const message="Durable cron jobs are not supported in standalone sessions.";return{llmContent:message,returnDisplay:message,error:{message}}}const scheduler=this.config.getCronScheduler();try{parseCron(this.params.cron);nextFireTime(this.params.cron,new Date);if(useCurrentSession&&!durable){throw new Error("Current-session scheduling requires durable: true because session-only jobs cannot survive a daemon session switch.")}if(gate&&!recurring){throw new Error("A gate needs a recurring task: a one-shot whose gate prints nothing would be consumed with nothing delivered. Schedule it recurring (it still auto-expires) and delete it when done.")}if(gate)await this.assertGateApproved(gate);let job;if(useCurrentSession){const creator=this.config.getCurrentSessionScheduledTaskCreator();const promptId=promptIdContext.getStore();if(!creator||!promptId){throw new Error("current_session_scheduling_unavailable: Current-session scheduling requires an active daemon prompt.")}const created=await creator({cron:this.params.cron,prompt,recurring,promptId,...gate?{gate}:{}});if(gate&&created.gate!==gate){try{await scheduler.removeDurable(created.id)}catch(error){throw new Error(`current_session_gate_unsupported: The daemon stored task ${created.id} without its gate, and removing it failed (${getErrorMessage(error)}): it runs the prompt at every slot until deleted with cron_delete.`)}throw new Error('current_session_gate_unsupported: The daemon stored the task without its gate, so it was removed. Restart `qwen serve` on the current version, or schedule the gated task without sessionMode "current".')}if(gate)scheduler.approveGate(created.id,gate);job={id:created.id,cronExpr:created.cron}}else{const created=durable?await scheduler.createDurable(this.params.cron,prompt,recurring,gate):scheduler.create(this.params.cron,prompt,recurring,gate);if(gate)created.gateApproved=true;job=created}const display=humanReadableCron(job.cronExpr);const returnDisplay=`Scheduled ${job.id} (${display})${durable?" [durable]":""}${useCurrentSession?" [current conversation]":""}${gate?" [gated]":""}`;const where=durable?`Persisted to ${CRON_TASKS_DISPLAY_PATH}${useCurrentSession?" and bound to the current conversation":""}`:"Session-only (not written to disk, dies when Qwen Code exits)";const maxAgeDays=this.config.getCronRecurringMaxAgeDays();const expiry=Number.isFinite(maxAgeDays)?`Auto-expires after ${formatDays(maxAgeDays)}. Use CronDelete to cancel sooner.`:"Never auto-expires. Use CronDelete to cancel.";const gateNote=gate?` Gate: \`${gate}\` runs at each fire; the prompt is delivered only when it prints output, a silent run costs no turn, and a failing run is reported once, not at every fire.`:"";const llmContent=(recurring?`Scheduled recurring job ${job.id} (${job.cronExpr}). ${where}. `+expiry:`Scheduled one-shot task ${job.id} (${job.cronExpr}). ${where}. It will fire once then auto-delete.`)+gateNote;return{llmContent,returnDisplay}}catch(error){const message=getErrorMessage(error);return{llmContent:`Error creating cron job: ${message}`,returnDisplay:message,error:{message}}}}};var CronCreateTool=class _CronCreateTool extends BaseDeclarativeTool{constructor(config){const maxAgeDays=config.getCronRecurringMaxAgeDays();super(_CronCreateTool.Name,ToolDisplayNames.CRON_CREATE,`Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.
|
|
3
|
+
import{CRON_GATE_TIMEOUT_MS,extractCommandRules,gateCommandError,nextFireTime,parseCron}from"./chunk-T3CQ72HC.js";import"./chunk-R2EHHA2C.js";import"./chunk-YK7NDQKM.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-OMSVOFTC.js";import"./chunk-PHIPLV2I.js";import"./chunk-ZOTKZI2P.js";import"./chunk-A6G5TAIF.js";import"./chunk-YVBHCSZD.js";import"./chunk-FIXDX63I.js";import"./chunk-T7CHK6C2.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-UYEWRLGD.js";import{humanReadableCron}from"./chunk-QVPT37XZ.js";import{buildPermissionCheckContext}from"./chunk-YVD4O5ZB.js";import{CRON_TASKS_DISPLAY_PATH}from"./chunk-T6W33SET.js";import"./chunk-WK2IBT6D.js";import"./chunk-QZV4PFQK.js";import"./chunk-ILECDNJX.js";import"./chunk-QXQGUM3Y.js";import"./chunk-UQ7IROJH.js";import"./chunk-SZCBUCNH.js";import"./chunk-BEKROCWN.js";import"./chunk-5SUFJTQQ.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-FUBDS3AV.js";import"./chunk-HW6AWS7W.js";import"./chunk-KLC3OD2M.js";import"./chunk-Q5IZXKUJ.js";import"./chunk-G5PYYZMM.js";import"./chunk-BG67XABA.js";import"./chunk-OBOU4ZZM.js";import"./chunk-D7XCQWP2.js";import"./chunk-AE5OMKRY.js";import"./chunk-OBV7RNHV.js";import"./chunk-7CQMWEMY.js";import"./chunk-GOZYWU4B.js";import"./chunk-OUC3WICA.js";import"./chunk-JZK2WGXA.js";import"./chunk-MPHSE7M4.js";import"./chunk-S2ZKZXHX.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-4QQKOW5M.js";import"./chunk-OV3EBH6J.js";import"./chunk-EBMCWXGZ.js";import"./chunk-XZTE4YTN.js";import"./chunk-LSASUDF2.js";import"./chunk-2V5EKGDK.js";import"./chunk-MOKVM4PT.js";import"./chunk-YIW3H46P.js";import"./chunk-EOMRLUNZ.js";import"./chunk-4ZRCV3JY.js";import"./chunk-TL6MLBXR.js";import"./chunk-NMY3PYNO.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import{promptIdContext}from"./chunk-MWGB5RCF.js";import{buildShellExecWarnings,getCommandRoot,normalizeMonitorCommand}from"./chunk-SCD5TUBG.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-LMJPU2JM.js";import"./chunk-4JNHUZ7M.js";import"./chunk-SW54YEPK.js";import"./chunk-ZCRL73DT.js";import"./chunk-A6LT3FIJ.js";import"./chunk-S6RXVOY6.js";import"./chunk-YZFNBUKG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-BN4FIQ77.js";import"./chunk-X64RXJQQ.js";import"./chunk-HETUGUHE.js";import"./chunk-ET2Z7ZGF.js";import"./chunk-3YWXKSOI.js";import"./chunk-5CWTKFI4.js";import"./chunk-C4MVD5OI.js";import"./chunk-Z2W7S4O4.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-FQRF6B65.js";import"./chunk-ZWPSBU7K.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-KVA6DHHF.js";import"./chunk-PWOQASXT.js";import"./chunk-K7JCVESI.js";import"./chunk-Y6HHV4LC.js";import"./chunk-RP57XAJ2.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7DOOXUDG.js";import"./chunk-77V43YOE.js";import"./chunk-7U7CWMP7.js";import"./chunk-EFTJIDS3.js";import"./chunk-4DIWAQ5G.js";import"./chunk-Q6UAOTP3.js";import"./chunk-H5EXNXGW.js";import"./chunk-GOR7FFVE.js";import"./chunk-4ZBZL23U.js";import"./chunk-BMHYEQTI.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-3XVPZY7X.js";import"./chunk-KQX4H2D3.js";import"./chunk-URNNJMIC.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-DBRQGEEI.js";import"./chunk-B3ZFUGTC.js";import"./chunk-IRINPFG7.js";import"./chunk-6GTPLW7K.js";import"./chunk-NGVRCUYD.js";import"./chunk-5DTFN37U.js";import"./chunk-2YUBAWQ6.js";import{BaseDeclarativeTool,BaseToolInvocation}from"./chunk-O5EKX7LG.js";import"./chunk-TM6ZCBR7.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-I6S7NGX3.js";import{ToolDisplayNames,ToolNames}from"./chunk-SBZFGYYS.js";import"./chunk-JAUJI56S.js";import"./chunk-I4H7NUVP.js";import"./chunk-EPODBRBP.js";import"./chunk-OKN3Z5C5.js";import{getErrorMessage}from"./chunk-XYB7GC5U.js";import"./chunk-2UOMCYQG.js";import"./chunk-I7L2TX4M.js";import"./chunk-MK3OONRA.js";import"./chunk-COGTQ5KZ.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();function formatDays(days){return days===1?"1 day":`${days} days`}__name(formatDays,"formatDays");function recurringExpiryBlurb(maxAgeDays){if(!Number.isFinite(maxAgeDays)){return"Recurring tasks never auto-expire in this configuration \u2014 they keep firing until deleted with CronDelete. Tell the user the job runs until cancelled when scheduling recurring jobs."}const span=formatDays(maxAgeDays);return`Recurring tasks auto-expire after ${span} \u2014 they fire one final time, then are deleted. This bounds how long a forgotten schedule keeps firing. Tell the user about the ${span} limit when scheduling recurring jobs.`}__name(recurringExpiryBlurb,"recurringExpiryBlurb");var CronCreateInvocation=class extends BaseToolInvocation{constructor(config,params){super(params);this.config=config}static{__name(this,"CronCreateInvocation")}gateConfirmed=false;getDescription(){const gate=this.params.gate?` [gate: ${this.params.gate}]`:"";return`${this.params.cron}: ${this.params.prompt}${gate}`}async getConfirmationDetails(abortSignal){const gate=this.params.gate?.trim();if(!gate)return super.getConfirmationDetails(abortSignal);const normalized=normalizeMonitorCommand(gate);let permissionRules=[];try{permissionRules=[...new Set(await extractCommandRules(normalized.safetyCommand))].map(rule=>`Monitor(${rule})`)}catch{}if(permissionRules.length===0){permissionRules=[`Monitor(${normalized.safetyCommand})`]}const details={type:"exec",title:"Schedule a gated task",command:gate,rootCommand:getCommandRoot(normalized.safetyCommand)??gate,permissionRules,warnings:[`Runs unattended on this schedule (${humanReadableCron(this.params.cron)}) without further approval; the task prompt runs only when the command prints output.`,...buildShellExecWarnings(normalized.safetyCommand,gate)??[]],onConfirm:__name(async(outcome,_payload)=>{if(String(outcome).startsWith("proceed_"))this.gateConfirmed=true},"onConfirm")};return details}async assertGateApproved(gate){const pm=this.config.getPermissionManager?.();const cwd=this.config.getTargetDir();const decision=await pm?.evaluate({toolName:ToolNames.MONITOR,command:gate,cwd});if(decision==="deny"){throw new Error("The gate command is denied by a permission rule, so the task would be blocked at every fire. Remove that deny rule or choose another command.")}if(this.gateConfirmed)return;const mode=this.config.getApprovalMode();if(mode==="yolo")return;if(mode==="auto"){const toolDecision=await pm?.evaluate(buildPermissionCheckContext(ToolNames.CRON_CREATE,this.params,cwd));if(toolDecision!=="allow")return}if(decision==="allow")return;throw new Error(`The gate command was not confirmed: a saved ${ToolNames.CRON_CREATE} rule does not cover a shell command that runs unattended. Add a Monitor(...) rule for it, or remove that rule so the command can be confirmed.`)}async getDefaultPermission(){return"ask"}async execute(){const recurring=this.params.recurring!==false;const durable=this.params.durable===true;const useCurrentSession=this.params.sessionMode==="current";const prompt=this.params.prompt.trim();const gate=this.params.gate?.trim()||void 0;if(durable&&this.config.getSessionSourceType?.()==="standalone"){const message="Durable cron jobs are not supported in standalone sessions.";return{llmContent:message,returnDisplay:message,error:{message}}}const scheduler=this.config.getCronScheduler();try{parseCron(this.params.cron);nextFireTime(this.params.cron,new Date);if(useCurrentSession&&!durable){throw new Error("Current-session scheduling requires durable: true because session-only jobs cannot survive a daemon session switch.")}if(gate&&!recurring){throw new Error("A gate needs a recurring task: a one-shot whose gate prints nothing would be consumed with nothing delivered. Schedule it recurring (it still auto-expires) and delete it when done.")}if(gate)await this.assertGateApproved(gate);let job;if(useCurrentSession){const creator=this.config.getCurrentSessionScheduledTaskCreator();const promptId=promptIdContext.getStore();if(!creator||!promptId){throw new Error("current_session_scheduling_unavailable: Current-session scheduling requires an active daemon prompt.")}const created=await creator({cron:this.params.cron,prompt,recurring,promptId,...gate?{gate}:{}});if(gate&&created.gate!==gate){try{await scheduler.removeDurable(created.id)}catch(error){throw new Error(`current_session_gate_unsupported: The daemon stored task ${created.id} without its gate, and removing it failed (${getErrorMessage(error)}): it runs the prompt at every slot until deleted with cron_delete.`)}throw new Error('current_session_gate_unsupported: The daemon stored the task without its gate, so it was removed. Restart `qwen serve` on the current version, or schedule the gated task without sessionMode "current".')}if(gate)scheduler.approveGate(created.id,gate);job={id:created.id,cronExpr:created.cron}}else{const created=durable?await scheduler.createDurable(this.params.cron,prompt,recurring,gate):scheduler.create(this.params.cron,prompt,recurring,gate);if(gate)created.gateApproved=true;job=created}const display=humanReadableCron(job.cronExpr);const returnDisplay=`Scheduled ${job.id} (${display})${durable?" [durable]":""}${useCurrentSession?" [current conversation]":""}${gate?" [gated]":""}`;const where=durable?`Persisted to ${CRON_TASKS_DISPLAY_PATH}${useCurrentSession?" and bound to the current conversation":""}`:"Session-only (not written to disk, dies when Qwen Code exits)";const maxAgeDays=this.config.getCronRecurringMaxAgeDays();const expiry=Number.isFinite(maxAgeDays)?`Auto-expires after ${formatDays(maxAgeDays)}. Use CronDelete to cancel sooner.`:"Never auto-expires. Use CronDelete to cancel.";const gateNote=gate?` Gate: \`${gate}\` runs at each fire; the prompt is delivered only when it prints output, a silent run costs no turn, and a failing run is reported once, not at every fire.`:"";const llmContent=(recurring?`Scheduled recurring job ${job.id} (${job.cronExpr}). ${where}. `+expiry:`Scheduled one-shot task ${job.id} (${job.cronExpr}). ${where}. It will fire once then auto-delete.`)+gateNote;return{llmContent,returnDisplay}}catch(error){const message=getErrorMessage(error);return{llmContent:`Error creating cron job: ${message}`,returnDisplay:message,error:{message}}}}};var CronCreateTool=class _CronCreateTool extends BaseDeclarativeTool{constructor(config){const maxAgeDays=config.getCronRecurringMaxAgeDays();super(_CronCreateTool.Name,ToolDisplayNames.CRON_CREATE,`Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.
|
|
4
4
|
|
|
5
5
|
Uses standard 5-field cron in the user's local timezone: minute hour day-of-month month day-of-week. "0 9 * * *" means 9am local \u2014 no timezone conversion needed.
|
|
6
6
|
|