@qwen-code/qwen-code 0.25.4-preview.0 → 0.25.4-preview.1

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.
Files changed (306) hide show
  1. package/bundled/browser-use/runtime/native-host.js +0 -0
  2. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +0 -0
  3. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +0 -0
  4. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +0 -0
  5. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +0 -0
  6. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +0 -0
  7. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +0 -0
  8. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +0 -0
  9. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +0 -0
  10. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +0 -0
  11. package/bundled/browser-use/runtime/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +0 -0
  12. package/bundled/browser-use/runtime/node_modules/playwright-core/cli.js +0 -0
  13. package/bundled/browser-use/runtime/node_modules/playwright-core/lib/webp_codec.wasm +0 -0
  14. package/bundled/browser-use/runtime/node_modules/playwright-core/lib/xdg-open +0 -0
  15. package/bundled/browser-use/runtime/scripts/native-host-setup.js +0 -0
  16. package/chunks/{MaxSizedBox-M27H235V.js → MaxSizedBox-E4RKSA7W.js} +1 -1
  17. package/chunks/{StandaloneSessionPicker-LWWDDYOW.js → StandaloneSessionPicker-2D3UKLVS.js} +1 -1
  18. package/chunks/{acp-subagent-executor-NUV52JVS.js → acp-subagent-executor-UQYUN6AB.js} +1 -1
  19. package/chunks/{acpAgent-IUJDXLZM.js → acpAgent-P7WGK2BP.js} +3 -3
  20. package/chunks/{advisor-MSOUBMJ6.js → advisor-GCH2MBXT.js} +1 -1
  21. package/chunks/{agent-H7XIWYWQ.js → agent-57T4YAYP.js} +1 -1
  22. package/chunks/{agent-headless-XDN3D3S3.js → agent-headless-IBON3A7N.js} +1 -1
  23. package/chunks/{agent-host-client-AZP3PZXS.js → agent-host-client-LE7P72FR.js} +1 -1
  24. package/chunks/{agent-host-connections-JRVX7I6I.js → agent-host-connections-4DM57L26.js} +1 -1
  25. package/chunks/{anthropicContentGenerator-N7TV53LD.js → anthropicContentGenerator-C4TPFXUK.js} +1 -1
  26. package/chunks/{batch-MKSJFJUH.js → batch-YJJGMJWO.js} +1 -1
  27. package/chunks/{bridge-GNMKKHQ4.js → bridge-FIO2ENBG.js} +1 -1
  28. package/chunks/{channel-settings-store-Y4YCS7JX.js → channel-settings-store-TEBCLK2B.js} +1 -1
  29. package/chunks/{chunk-GPOUP5OK.js → chunk-27MTSS3T.js} +1 -1
  30. package/chunks/{chunk-C4ANA47H.js → chunk-2MGCRPM3.js} +1 -1
  31. package/chunks/{chunk-6DQNNRRC.js → chunk-2WBKWPSO.js} +1 -1
  32. package/chunks/{chunk-CATL2PQS.js → chunk-34WLYVDK.js} +5 -5
  33. package/chunks/{chunk-B7CXPNCV.js → chunk-3J2YNEHG.js} +1 -1
  34. package/chunks/{chunk-VTNHPXNL.js → chunk-3TBFTELA.js} +1 -1
  35. package/chunks/{chunk-7JT34VGK.js → chunk-46I6JBVL.js} +1 -1
  36. package/chunks/{chunk-FEMWELCV.js → chunk-4ZKFLOEH.js} +1 -1
  37. package/chunks/{chunk-7AYXAVTZ.js → chunk-5DUJIOOX.js} +3 -3
  38. package/chunks/{chunk-6QLHJSVW.js → chunk-6PWOLWTH.js} +1 -1
  39. package/chunks/{chunk-OW4QBRSR.js → chunk-6UZ65Z2P.js} +1 -1
  40. package/chunks/{chunk-V2JZO5MS.js → chunk-7DSJE3CL.js} +1 -1
  41. package/chunks/{chunk-TJMHIEYI.js → chunk-7LCY7GGX.js} +1 -1
  42. package/chunks/{chunk-TLJHBK3A.js → chunk-7RNTXEWH.js} +1 -1
  43. package/chunks/{chunk-YZ7OO4AQ.js → chunk-A3IF6IOB.js} +1 -1
  44. package/chunks/{chunk-VTF6AVZB.js → chunk-A6OQSOUO.js} +1 -1
  45. package/chunks/{chunk-Y7YDHCON.js → chunk-AJ6JUUP7.js} +1 -1
  46. package/chunks/{chunk-QTMHQGWQ.js → chunk-AOMEBVFW.js} +1 -1
  47. package/chunks/{chunk-KVTG2ZNH.js → chunk-AUNAS7AS.js} +1 -1
  48. package/chunks/{chunk-BOFD4CN3.js → chunk-AVIDPC5K.js} +1 -1
  49. package/chunks/{chunk-ETYTRKB2.js → chunk-BOLPBPWC.js} +1 -1
  50. package/chunks/{chunk-OAPA66DR.js → chunk-BQQBFDBY.js} +1 -1
  51. package/chunks/{chunk-NOS2CNOI.js → chunk-CN22ATWU.js} +1 -1
  52. package/chunks/{chunk-XYBEQRSZ.js → chunk-DIHJELGW.js} +1 -1
  53. package/chunks/{chunk-XCEL3EDX.js → chunk-DJFCI7TU.js} +1 -1
  54. package/chunks/{chunk-VKEL2XTM.js → chunk-DQPDMFS3.js} +1 -1
  55. package/chunks/{chunk-DJRFEZBY.js → chunk-DSYKB77N.js} +1 -1
  56. package/chunks/{chunk-UEW7Q26E.js → chunk-EDNOGHMN.js} +2 -2
  57. package/chunks/{chunk-RXNGYG64.js → chunk-EE36D2EV.js} +1 -1
  58. package/chunks/{chunk-NZKX7HYL.js → chunk-EGQDN3FJ.js} +1 -1
  59. package/chunks/{chunk-DFRSQK5Q.js → chunk-FHFBCG6N.js} +1 -1
  60. package/chunks/{chunk-PECV2VVZ.js → chunk-GI6T3RBV.js} +1 -1
  61. package/chunks/{chunk-37BNHIUB.js → chunk-GOLT5JXA.js} +1 -1
  62. package/chunks/{chunk-KITFF4GL.js → chunk-IDGXHMNL.js} +1 -1
  63. package/chunks/{chunk-6HIOSLUM.js → chunk-IIZWK7ZP.js} +1 -1
  64. package/chunks/{chunk-MPGEAX4K.js → chunk-IJC6ZH2S.js} +1 -1
  65. package/chunks/{chunk-TLYJVB5H.js → chunk-IO6LSEPV.js} +1 -1
  66. package/chunks/{chunk-QIJKEZZR.js → chunk-IYVNCBMS.js} +1 -1
  67. package/chunks/{chunk-S4GOHFRN.js → chunk-JHGOWK7M.js} +1 -1
  68. package/chunks/{chunk-GHRD2MMC.js → chunk-JRJY343T.js} +1 -1
  69. package/chunks/{chunk-WCYZSCG7.js → chunk-JVUXQU3W.js} +1 -1
  70. package/chunks/{chunk-DMCTJUIJ.js → chunk-K2K2YYWO.js} +1 -1
  71. package/chunks/{chunk-37OHWQHB.js → chunk-KF6HU732.js} +2 -2
  72. package/chunks/{chunk-5LSV73BG.js → chunk-KVWUOBH7.js} +1 -1
  73. package/chunks/{chunk-7V4BAHFT.js → chunk-LBWBGFHD.js} +1 -1
  74. package/chunks/{chunk-RKPHDO42.js → chunk-LDXZT3SG.js} +5 -5
  75. package/chunks/{chunk-BGFA2SAQ.js → chunk-LFOZ6AIH.js} +1 -1
  76. package/chunks/{chunk-4322TZID.js → chunk-LGQHT42X.js} +2 -2
  77. package/chunks/{chunk-PDXZ2CUO.js → chunk-M3O2XDHA.js} +1 -1
  78. package/chunks/{chunk-47K2NMP6.js → chunk-M3UC46LS.js} +1 -1
  79. package/chunks/{chunk-UFRY7WND.js → chunk-M7JLPTQI.js} +1 -1
  80. package/chunks/{chunk-SATEKHQP.js → chunk-MBUXP3IS.js} +1 -1
  81. package/chunks/{chunk-RN6JS263.js → chunk-MEZA3VVH.js} +1 -1
  82. package/chunks/{chunk-OBFKP7RI.js → chunk-MWN6TR36.js} +1 -1
  83. package/chunks/{chunk-VHJ43ZYJ.js → chunk-O7XRQWCG.js} +1 -1
  84. package/chunks/{chunk-H224LNV3.js → chunk-OYFRLT5E.js} +1 -1
  85. package/chunks/{chunk-3NWFV2YF.js → chunk-PMBGV76N.js} +1 -1
  86. package/chunks/{chunk-YFAPACDE.js → chunk-PVM4IVFL.js} +6 -6
  87. package/chunks/{chunk-7WS2EYMQ.js → chunk-PWHD4NK3.js} +1 -1
  88. package/chunks/{chunk-JZIQSEFO.js → chunk-Q54NROBX.js} +1 -1
  89. package/chunks/{chunk-FCLAPJ22.js → chunk-QE7R4DPT.js} +1 -1
  90. package/chunks/{chunk-J6TW7GNF.js → chunk-QIUTQICH.js} +1 -1
  91. package/chunks/{chunk-TWDCN5H2.js → chunk-QK63EULE.js} +1 -1
  92. package/chunks/{chunk-HZZT75LI.js → chunk-QTAC4W7J.js} +1 -1
  93. package/chunks/{chunk-P7DIAJNX.js → chunk-R7HBR4QQ.js} +1 -1
  94. package/chunks/{chunk-U2FJSKS3.js → chunk-RHEMFKMX.js} +1 -1
  95. package/chunks/{chunk-TRRY3QMM.js → chunk-RL57IU47.js} +1 -1
  96. package/chunks/{chunk-SPWDYRDH.js → chunk-S2OOQRLJ.js} +1 -1
  97. package/chunks/{chunk-QBRADQ7L.js → chunk-SWTMWNTZ.js} +1 -1
  98. package/chunks/{chunk-AZUDF52L.js → chunk-SXTKQHFZ.js} +1 -1
  99. package/chunks/{chunk-5RQRSPPD.js → chunk-T5S3MJIK.js} +1 -1
  100. package/chunks/{chunk-I3ORWQ2U.js → chunk-UDGDEIBB.js} +1 -1
  101. package/chunks/{chunk-EMDEBV33.js → chunk-UIFBF3E7.js} +1 -1
  102. package/chunks/{chunk-BGEMWNES.js → chunk-UQDPWI7D.js} +1 -1
  103. package/chunks/{chunk-I5LKOTZT.js → chunk-VON4MVIM.js} +1 -1
  104. package/chunks/{chunk-HJPO6MEW.js → chunk-W5D2T2JK.js} +1 -1
  105. package/chunks/{chunk-F6YYDRMH.js → chunk-WNGYYU67.js} +1 -1
  106. package/chunks/{chunk-S2GKUZZZ.js → chunk-WO3F62ZD.js} +1 -1
  107. package/chunks/{chunk-K7KW3ZJQ.js → chunk-WVY5Q6YY.js} +1 -1
  108. package/chunks/{chunk-GH6DPLWU.js → chunk-Y4Q667BW.js} +1 -1
  109. package/chunks/{chunk-FH74N7Y7.js → chunk-YJLMFUCS.js} +2 -2
  110. package/chunks/{chunk-C3Y2S5AM.js → chunk-YKHRCSKP.js} +1 -1
  111. package/chunks/{chunk-P4UJ7CXJ.js → chunk-YLIS36QA.js} +1 -1
  112. package/chunks/{chunk-4QIFOIBS.js → chunk-YVZ4XZRB.js} +1 -1
  113. package/chunks/{chunk-KGRD6G5J.js → chunk-Z27JJPKN.js} +1 -1
  114. package/chunks/{chunk-KOHHDB2L.js → chunk-ZCIS6MJZ.js} +1 -1
  115. package/chunks/{chunk-QNNDZYVW.js → chunk-ZHLQ222N.js} +1 -1
  116. package/chunks/{chunk-KWRZ3WJO.js → chunk-ZP7MTWMR.js} +1 -1
  117. package/chunks/{codex-subagent-executor-H44VDB5E.js → codex-subagent-executor-6OJVGF2S.js} +1 -1
  118. package/chunks/{config-utils-4X4SV4RL.js → config-utils-FI3A4QAN.js} +1 -1
  119. package/chunks/{contextCommand-4KVOHTAJ.js → contextCommand-YEBZQHG4.js} +1 -1
  120. package/chunks/{core-runtime-4RARI4NX.js → core-runtime-CFMHUAS7.js} +1 -1
  121. package/chunks/{create-sub-session-CNSRJFYG.js → create-sub-session-G26337FT.js} +1 -1
  122. package/chunks/{daemon-git-worktree-guard-6XQQPP2H.js → daemon-git-worktree-guard-ITU6NQIV.js} +1 -1
  123. package/chunks/{daemon-status-provider-PRTEQT5T.js → daemon-status-provider-CSWRGMRX.js} +1 -1
  124. package/chunks/{daemon-trust-policy-GXKJVZDU.js → daemon-trust-policy-IYD7NOGK.js} +1 -1
  125. package/chunks/{daemon-trust-policy-monitor-L2ORKHMM.js → daemon-trust-policy-monitor-OWUP5SYB.js} +1 -1
  126. package/chunks/{deferred-core-runtime-RZQFUSPX.js → deferred-core-runtime-CVCQU7O4.js} +1 -1
  127. package/chunks/{edit-W44XQCIS.js → edit-7YBQLILC.js} +1 -1
  128. package/chunks/{enterPlanMode-B456A2XO.js → enterPlanMode-L3PVSD2P.js} +1 -1
  129. package/chunks/{environment-DSGQSQFS.js → environment-BVEOYQHO.js} +1 -1
  130. package/chunks/{errors-KL725247.js → errors-VQWBGR6D.js} +1 -1
  131. package/chunks/{execution-tool-KT3EBWHG.js → execution-tool-P7CBXSGZ.js} +1 -1
  132. package/chunks/{execution-worker-LPQ4HMN4.js → execution-worker-RZXNYK4B.js} +1 -1
  133. package/chunks/{exitPlanMode-JLKS76IA.js → exitPlanMode-MBUTM3NW.js} +1 -1
  134. package/chunks/{fast-path-5UD52IHH.js → fast-path-T2FDUSHV.js} +1 -1
  135. package/chunks/{glob-LYA2H6X3.js → glob-RH7XXSYE.js} +1 -1
  136. package/chunks/{goal-tools-SHSIDLZX.js → goal-tools-K6XBCE5E.js} +1 -1
  137. package/chunks/{handleAutoUpdate-T4RE6CZN.js → handleAutoUpdate-PG7R3KPH.js} +1 -1
  138. package/chunks/{i18n-5DK327WA.js → i18n-EGTBMA3N.js} +1 -1
  139. package/chunks/{initializer-TJGE4OJA.js → initializer-RIKH4PCP.js} +1 -1
  140. package/chunks/{installationInfo-MZ62GDIC.js → installationInfo-BBADHZLD.js} +1 -1
  141. package/chunks/{interactive-mod-session-YCUBQ6RM.js → interactive-mod-session-7RDKAHZ4.js} +1 -1
  142. package/chunks/{list-4L3LYDQM.js → list-YEGWEHJX.js} +1 -1
  143. package/chunks/{llm-3JQWBZXV.js → llm-D3LHPY27.js} +4 -4
  144. package/chunks/{llm-content-generator-6UPJWPOM.js → llm-content-generator-BLTBMV66.js} +1 -1
  145. package/chunks/{loadedSettingsAdapter-STPKAFJG.js → loadedSettingsAdapter-PLGMKMFO.js} +1 -1
  146. package/chunks/{local-execution-environment-IE5BOI7Y.js → local-execution-environment-4LDKFNC4.js} +1 -1
  147. package/chunks/{loggingContentGenerator-4KKWPZJA.js → loggingContentGenerator-376R7DRI.js} +1 -1
  148. package/chunks/{manage-memory-CRV5SXZZ.js → manage-memory-2ZTIVKNU.js} +1 -1
  149. package/chunks/{managed-execution-engine-FHLEWVND.js → managed-execution-engine-5LOM3MXG.js} +1 -1
  150. package/chunks/{managed-npm-update-BRHPOKDU.js → managed-npm-update-2C5JYEXW.js} +1 -1
  151. package/chunks/{managed-runtime-attestation-worker-GIQKZ5BH.js → managed-runtime-attestation-worker-R2FECMZK.js} +1 -1
  152. package/chunks/{managed-runtime-bootstrap-P72BT46H.js → managed-runtime-bootstrap-KPLGH4UE.js} +1 -1
  153. package/chunks/{managed-runtime-session-worker-IYCJDB5K.js → managed-runtime-session-worker-EVKNPK3V.js} +1 -1
  154. package/chunks/{managed-runtime-ssh-worker-ONT4V5ZG.js → managed-runtime-ssh-worker-IA4HZ3PD.js} +1 -1
  155. package/chunks/{mcp-NXCQVE2Y.js → mcp-S67IJLI6.js} +1 -1
  156. package/chunks/{model-call-collection-3DNL45M5.js → model-call-collection-6OGPDTPG.js} +1 -1
  157. package/chunks/{model-configuration-6HRNYBWV.js → model-configuration-6RWVBOQS.js} +1 -1
  158. package/chunks/{modelConfigUtils-SKBN64ZW.js → modelConfigUtils-M3TVVYAO.js} +1 -1
  159. package/chunks/{monitor-7I7Q73UR.js → monitor-ZHOFTN7N.js} +1 -1
  160. package/chunks/{nonInteractiveCli-YLYRJUBE.js → nonInteractiveCli-6SUGPTJ4.js} +1 -1
  161. package/chunks/{nonInteractiveToolExecutor-U2ASWT63.js → nonInteractiveToolExecutor-SAHBGO3A.js} +1 -1
  162. package/chunks/{notebook-edit-WAD7IQCF.js → notebook-edit-ETUOQH6G.js} +1 -1
  163. package/chunks/{omni-POUUDVU3.js → omni-HV2UBGMZ.js} +1 -1
  164. package/chunks/{openaiContentGenerator-L7X6IVPL.js → openaiContentGenerator-RZCG7E4M.js} +1 -1
  165. package/chunks/{openaiResponsesContentGenerator-7XCMFI6P.js → openaiResponsesContentGenerator-X23L5JV3.js} +1 -1
  166. package/chunks/{pidfile-MQQT2ZDA.js → pidfile-26WXQCHG.js} +1 -1
  167. package/chunks/{processUtils-OZLF72NC.js → processUtils-WXLFGNBT.js} +1 -1
  168. package/chunks/{prompt-terminal-ledger-IYUF6SUU.js → prompt-terminal-ledger-EIZZHF4A.js} +1 -1
  169. package/chunks/{qwenContentGenerator-DKH3ILUO.js → qwenContentGenerator-GOY7Y6KH.js} +1 -1
  170. package/chunks/{reactive-degrade-KSNGHMBN.js → reactive-degrade-MNMTTHO5.js} +1 -1
  171. package/chunks/{read-file-VEELW4OQ.js → read-file-OJNGPNTQ.js} +1 -1
  172. package/chunks/{resumeHistoryUtils-4SFDTBXU.js → resumeHistoryUtils-QWOWF4VY.js} +1 -1
  173. package/chunks/{review-QA6HRLVU.js → review-5S24HP2V.js} +1 -1
  174. package/chunks/{ripGrep-4J6ASSE3.js → ripGrep-Y4PY2MQF.js} +1 -1
  175. package/chunks/{run-qwen-serve-EJ67LA5O.js → run-qwen-serve-EOUUDZUK.js} +2 -2
  176. package/chunks/{runtime-6E2FSB5U.js → runtime-ZBPOQX6E.js} +1 -1
  177. package/chunks/{sandboxConfig-4VE4LNRI.js → sandboxConfig-R7KDS3P5.js} +1 -1
  178. package/chunks/{scheduled-tasks-GM5EJMK7.js → scheduled-tasks-Q6V7D6K6.js} +1 -1
  179. package/chunks/{scheduler-HOSVIIOE.js → scheduler-EBQY6BOK.js} +1 -1
  180. package/chunks/{search-memory-HEAQCHIK.js → search-memory-HX6E23JC.js} +1 -1
  181. package/chunks/{send-message-FAQ7XEZ5.js → send-message-OZCCCH2F.js} +1 -1
  182. package/chunks/{serve-VNKPOWSW.js → serve-CMGCI4BK.js} +1 -1
  183. package/chunks/{server-U2XBJLOV.js → server-7LOAKPDN.js} +3 -3
  184. package/chunks/{session-AZGROSFX.js → session-LVQYZSJE.js} +1 -1
  185. package/chunks/{session-attachments-root-6M2ECUNK.js → session-attachments-root-NWG7JOMN.js} +1 -1
  186. package/chunks/{session-execution-engine-selector-PYDVOSJF.js → session-execution-engine-selector-PHH47ZMA.js} +1 -1
  187. package/chunks/{session-pr-refresh-3IS7DLEV.js → session-pr-refresh-5IACZPCY.js} +1 -1
  188. package/chunks/{sessionService-3FWNA4ZB.js → sessionService-7PFAWLHC.js} +1 -1
  189. package/chunks/{settings-VHKT7JJC.js → settings-CPZBOHN5.js} +1 -1
  190. package/chunks/{shell-TYOPVB7H.js → shell-A7NLPS2W.js} +1 -1
  191. package/chunks/{skill-GJQIE5AX.js → skill-VGANGVOD.js} +1 -1
  192. package/chunks/{skill-settings-76NI6SF3.js → skill-settings-TSZO3X6N.js} +1 -1
  193. package/chunks/{spawnChannel-FMSYLDKB.js → spawnChannel-2JQYNQKT.js} +1 -1
  194. package/chunks/{standalone-update-BPZQDQHD.js → standalone-update-QXC3RM6I.js} +1 -1
  195. package/chunks/{start-opentui-ui-X7XYV5N3.js → start-opentui-ui-BKJ4JHVK.js} +1 -1
  196. package/chunks/{startInteractiveUI-UZDF4JUB.js → startInteractiveUI-4QIPR7ZY.js} +1 -1
  197. package/chunks/{team-create-RFZNEF76.js → team-create-5MU6BGXX.js} +1 -1
  198. package/chunks/{team-plan-approval-MGW3JGSC.js → team-plan-approval-NZUJ6FSA.js} +1 -1
  199. package/chunks/{terminal-image-renderer-3UED5GZV.js → terminal-image-renderer-CTMJULJ2.js} +1 -1
  200. package/chunks/{theme-manager-SF6FSSZW.js → theme-manager-6H7GA6QR.js} +1 -1
  201. package/chunks/{tool-call-W2CJR74U.js → tool-call-XG4CAD5X.js} +1 -1
  202. package/chunks/{tool-result-media-XSFON2ZQ.js → tool-result-media-RJ5ONO7R.js} +1 -1
  203. package/chunks/{tool-search-7GY5YTOU.js → tool-search-KBINGEWV.js} +1 -1
  204. package/chunks/{total-session-admission-OATGW6M5.js → total-session-admission-XNWYCO7G.js} +1 -1
  205. package/chunks/{trustedFolders-AM4PSGUB.js → trustedFolders-JT5MOB3A.js} +1 -1
  206. package/chunks/{update-relaunch-YKY52XUT.js → update-relaunch-HXMQI3HO.js} +1 -1
  207. package/chunks/{updateCheck-RKQ5CPZM.js → updateCheck-XWE3TWL5.js} +1 -1
  208. package/chunks/{upload-config-CBT7ARZY.js → upload-config-ET7NRHU7.js} +1 -1
  209. package/chunks/{useAutoAcceptIndicator-Z3YWPUNO.js → useAutoAcceptIndicator-TPMYKNJX.js} +1 -1
  210. package/chunks/{validateNonInterActiveAuth-7CQHU2RF.js → validateNonInterActiveAuth-U52KMEDS.js} +1 -1
  211. package/chunks/{version-N2OB6KWP.js → version-CW4RTJ3H.js} +1 -1
  212. package/chunks/{web-fetch-L5XCBCBA.js → web-fetch-UPMJ3XIZ.js} +1 -1
  213. package/chunks/{web-search-4EHUA3LJ.js → web-search-PXABWQVC.js} +1 -1
  214. package/chunks/{workflow-FGAUAYIP.js → workflow-UQ4V3NBZ.js} +1 -1
  215. package/chunks/{workflow-ancestor-trust-F7RRN6I3.js → workflow-ancestor-trust-QII5KTUJ.js} +1 -1
  216. package/chunks/{workspace-agents-QW4TKC52.js → workspace-agents-Q3KKMDX2.js} +1 -1
  217. package/chunks/{workspace-providers-status-MFSZT3YA.js → workspace-providers-status-3ASB64FB.js} +1 -1
  218. package/chunks/{workspace-registration-store-WQRDSIEI.js → workspace-registration-store-2NPD6U3B.js} +1 -1
  219. package/chunks/{workspace-registry-FXZFRSCH.js → workspace-registry-6QJKRCDR.js} +1 -1
  220. package/chunks/{workspace-runtime-coordinator-LJ5YAT3A.js → workspace-runtime-coordinator-ZXUWDQIB.js} +1 -1
  221. package/chunks/{workspace-service-U632SUWU.js → workspace-service-YPYTYYUN.js} +1 -1
  222. package/chunks/{workspace-skills-status-M7YXM3LF.js → workspace-skills-status-VTFHQ6R7.js} +1 -1
  223. package/chunks/{workspace-trust-reconciler-NLJGGI4K.js → workspace-trust-reconciler-52CZVPKH.js} +1 -1
  224. package/chunks/{write-file-BJCKSXX7.js → write-file-FDBR76G5.js} +1 -1
  225. package/chunks/{zoom-image-TLJPD4DB.js → zoom-image-MYKWCCXO.js} +1 -1
  226. package/cli.js +2 -2
  227. package/execution-worker.js +1 -1
  228. package/export-transcript-document.js +1 -1
  229. package/package.json +4 -4
  230. package/vendor/landlock-run/arm64-linux/qwen-landlock-run +0 -0
  231. package/vendor/landlock-run/x64-linux/qwen-landlock-run +0 -0
  232. package/vendor/ripgrep/arm64-darwin/rg +0 -0
  233. package/vendor/ripgrep/arm64-linux/rg +0 -0
  234. package/vendor/ripgrep/x64-darwin/rg +0 -0
  235. package/vendor/ripgrep/x64-linux/rg +0 -0
  236. package/vendor/tree-sitter/tree-sitter-bash.wasm +0 -0
  237. package/vendor/tree-sitter/tree-sitter.wasm +0 -0
  238. package/web-shell/assets/{PierreFilePreview-D9tbdFw8.js → PierreFilePreview-DGTp45Z4.js} +1 -1
  239. package/web-shell/assets/{SpreadsheetPreview-CeFAk2s-.js → SpreadsheetPreview-DVC_YVei.js} +1 -1
  240. package/web-shell/assets/{WorkspaceFileBrowser-iaURw8SR.js → WorkspaceFileBrowser-DaQNpS06.js} +1 -1
  241. package/web-shell/assets/{abnfDiagram-VCTEODGH-Z4CT1NCF.js → abnfDiagram-VCTEODGH-wJbiOoPK.js} +1 -1
  242. package/web-shell/assets/{agents-route-B7o2Rq-a.js → agents-route-DUhhA1KI.js} +1 -1
  243. package/web-shell/assets/{arc-DcHBdUJQ.js → arc-CvpNMy1d.js} +1 -1
  244. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DRDhEC81.js → architectureDiagram-5GKGNRK7-DIhi3dIz.js} +1 -1
  245. package/web-shell/assets/{blockDiagram-NRAW4CY4-CYRE6WIc.js → blockDiagram-NRAW4CY4-CoeyTlVJ.js} +1 -1
  246. package/web-shell/assets/{c4Diagram-UCG6FXSJ-CIM8N_Sj.js → c4Diagram-UCG6FXSJ-BYoK_I9M.js} +1 -1
  247. package/web-shell/assets/channel-DvtGOCg6.js +1 -0
  248. package/web-shell/assets/{chunk-2Q5K7J3B-Bbfka9Fe.js → chunk-2Q5K7J3B-BeD4GwPg.js} +1 -1
  249. package/web-shell/assets/{chunk-5VM5RSS4-C02zF3RY.js → chunk-5VM5RSS4-BpkJsB_y.js} +1 -1
  250. package/web-shell/assets/{chunk-F27PBJKO-Dn0wRD2F.js → chunk-F27PBJKO-BROEWQ1J.js} +1 -1
  251. package/web-shell/assets/{chunk-G27WJ6UU-Dwpl3l0W.js → chunk-G27WJ6UU-DA8Wtppt.js} +1 -1
  252. package/web-shell/assets/{chunk-JWPE2WC7-sQbzSoTR.js → chunk-JWPE2WC7-GqB-QFh5.js} +1 -1
  253. package/web-shell/assets/{chunk-LCL6LL3I-DNlNDtfr.js → chunk-LCL6LL3I-DIPUwYsX.js} +1 -1
  254. package/web-shell/assets/{chunk-POPQ4Y6H-BOgf1Dl3.js → chunk-POPQ4Y6H-DbnU-jxX.js} +1 -1
  255. package/web-shell/assets/{chunk-SVP7TREG-DOofWP00.js → chunk-SVP7TREG-DvH7bQ-w.js} +1 -1
  256. package/web-shell/assets/{chunk-XXDRQBXY-Bj9FxhWU.js → chunk-XXDRQBXY-DdVWVo3U.js} +1 -1
  257. package/web-shell/assets/classDiagram-DTDB5LWJ-9NR5W1rE.js +1 -0
  258. package/web-shell/assets/classDiagram-v2-JRS7N3AN-9NR5W1rE.js +1 -0
  259. package/web-shell/assets/{cose-bilkent-JH36ORCC-CUlPjyww.js → cose-bilkent-JH36ORCC-JgMKxP9H.js} +1 -1
  260. package/web-shell/assets/{cynefin-OW5HDTMX-5noArzI7.js → cynefin-OW5HDTMX-BVUpNgVm.js} +1 -1
  261. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DELvTqmf.js → cynefinDiagram-5FMLGOSQ-CxAdk-iS.js} +1 -1
  262. package/web-shell/assets/{dagre-3AP2YEHR-CAL6Z3hL.js → dagre-3AP2YEHR-CvXWkM86.js} +1 -1
  263. package/web-shell/assets/{diagram-S7CK7UJ4-DQC2gaIi.js → diagram-S7CK7UJ4-DD_PS4nm.js} +1 -1
  264. package/web-shell/assets/{diagram-UQ7AKVKN-CkU6M-3R.js → diagram-UQ7AKVKN-EVZkTODD.js} +1 -1
  265. package/web-shell/assets/{diagram-VSXAHHWV-CvHpHwVx.js → diagram-VSXAHHWV-CGZc1pZU.js} +1 -1
  266. package/web-shell/assets/{diagram-VX7I27RA-D9l5F9iB.js → diagram-VX7I27RA-DjNql499.js} +1 -1
  267. package/web-shell/assets/{diagram-Z3DM3KII-DW-VFvYx.js → diagram-Z3DM3KII-CCa0WtmR.js} +1 -1
  268. package/web-shell/assets/{docx-preview-8MQfOGQh.js → docx-preview-DpVElxvj.js} +1 -1
  269. package/web-shell/assets/{ebnfDiagram-PWID7BFC-C0Q71wC_.js → ebnfDiagram-PWID7BFC-W2hoOJZF.js} +1 -1
  270. package/web-shell/assets/{erDiagram-SSCWMZ5O-DWDLRh1S.js → erDiagram-SSCWMZ5O-Dz5NxxEb.js} +1 -1
  271. package/web-shell/assets/{flowDiagram-A5DVABFB-CVzJnl1P.js → flowDiagram-A5DVABFB-BTMAn8b5.js} +1 -1
  272. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-B320pcgR.js → ganttDiagram-EL5Y4UJY-BaFrd5ZY.js} +1 -1
  273. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Di4uZh-J.js → gitGraphDiagram-WWUBYQGX-IlmdUqRk.js} +1 -1
  274. package/web-shell/assets/{index-Csr8Hx_O.js → index-C2ez0ZjE.js} +1 -1
  275. package/web-shell/assets/{index-C9BecA_H.js → index-Cs-XBNmB.js} +101 -101
  276. package/web-shell/assets/{infoDiagram-RXCK75RN-CbafhxET.js → infoDiagram-RXCK75RN-BHs9kpar.js} +1 -1
  277. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DrQuIDeR.js → ishikawaDiagram-5VMMS53U-DWCEQ85v.js} +1 -1
  278. package/web-shell/assets/{journeyDiagram-EYS64GPL-BschmjBj.js → journeyDiagram-EYS64GPL-RTDAw9yc.js} +1 -1
  279. package/web-shell/assets/{kanban-definition-3QL26DDD-B7x9BU9N.js → kanban-definition-3QL26DDD-B7Nl9bq6.js} +1 -1
  280. package/web-shell/assets/{layout-BewPaOyO.js → layout-BabjFEb1.js} +1 -1
  281. package/web-shell/assets/{linear-CnLILCVp.js → linear-CZuGjuQd.js} +1 -1
  282. package/web-shell/assets/{mermaid.core-Csj9KPfJ.js → mermaid.core-CK78bIGt.js} +6 -6
  283. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CIGTi5gg.js → mindmap-definition-FBJOCRG2-BbcCi_jP.js} +1 -1
  284. package/web-shell/assets/{pegDiagram-XKGWAZYB-CuWBRQzb.js → pegDiagram-XKGWAZYB-DpLQ7u8i.js} +1 -1
  285. package/web-shell/assets/{pieDiagram-E7YTZNPT-Co5ukXCE.js → pieDiagram-E7YTZNPT-BpWFVtM0.js} +1 -1
  286. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-B0hzjh6o.js → quadrantDiagram-AXDQQJYC-CGzYlaN1.js} +1 -1
  287. package/web-shell/assets/{railroadDiagram-O6MQD6OU-nhkJB0xD.js → railroadDiagram-O6MQD6OU-BNQYW-Zi.js} +1 -1
  288. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C7NpxjVR.js → requirementDiagram-EFPCY7ZU-C4fCdIDW.js} +1 -1
  289. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CUWlnhZC.js → sankeyDiagram-P5KCCOFB-BvbbAnMA.js} +1 -1
  290. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BoykH0_J.js → sequenceDiagram-WJ2MYXX4-DGXNc6E1.js} +1 -1
  291. package/web-shell/assets/{sizeCapture-X5ZJPWSS-aF-PkSe5.js → sizeCapture-X5ZJPWSS-C4W45Xf5.js} +1 -1
  292. package/web-shell/assets/{stateDiagram-HBIQ2CUA-g5q0b922.js → stateDiagram-HBIQ2CUA-D3q0fen-.js} +1 -1
  293. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-XKoYIi05.js +1 -0
  294. package/web-shell/assets/{swimlanes-XN3QIQJK-BbASszfe.js → swimlanes-XN3QIQJK-D8n-ResR.js} +1 -1
  295. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C7qJMSzs.js +8 -0
  296. package/web-shell/assets/{timeline-definition-24CTP7MA-AXIV0TJJ.js → timeline-definition-24CTP7MA-Cio4y1mM.js} +1 -1
  297. package/web-shell/assets/{vennDiagram-4TSXK5OY-B-E0rj1h.js → vennDiagram-4TSXK5OY-DVlg0xnc.js} +1 -1
  298. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-DiOOYJ2D.js → wardleyDiagram-VM6X3IG4-CgeIsimQ.js} +1 -1
  299. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-De_z7HkS.js → xychartDiagram-S5SC5T6Z-UXjyTLnU.js} +1 -1
  300. package/web-shell/index.html +1 -1
  301. package/web-shell/sw.js +1 -1
  302. package/web-shell/assets/channel-Bwr9aS_E.js +0 -1
  303. package/web-shell/assets/classDiagram-DTDB5LWJ-BmY8Mmyo.js +0 -1
  304. package/web-shell/assets/classDiagram-v2-JRS7N3AN-BmY8Mmyo.js +0 -1
  305. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-CTOjUMow.js +0 -1
  306. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Bz6ia3oL.js +0 -8
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{appEvents}from"./chunk-CATL2PQS.js";import{assembleMcpServers,getPendingGatedMcpServers,getPromptableMcpServers}from"./chunk-DMCTJUIJ.js";import{getMCPServerStatus}from"./chunk-DR3HLUJ5.js";import{require_fast_deep_equal}from"./chunk-3KUHQGOS.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name,__toESM}from"./chunk-KBWJGX7I.js";init_esbuild_shims();var import_fast_deep_equal=__toESM(require_fast_deep_equal(),1);var debugLogger=createDebugLogger("MCP_HOT_RELOAD");var modelProvidersDebugLogger=createDebugLogger("MODEL_PROVIDERS_HOT_RELOAD");function mcpServersEqual(a,b){return(0,import_fast_deep_equal.default)(a??{},b??{})}__name(mcpServersEqual,"mcpServersEqual");function mcpGatingEqual(a,b){const norm=__name(xs=>[...xs??[]].sort(),"norm");const allowedEqual=a.allowed===void 0===(b.allowed===void 0)&&(0,import_fast_deep_equal.default)(norm(a.allowed),norm(b.allowed));return(0,import_fast_deep_equal.default)(norm(a.excluded),norm(b.excluded))&&allowedEqual&&(0,import_fast_deep_equal.default)(norm(a.pending),norm(b.pending))}__name(mcpGatingEqual,"mcpGatingEqual");function recomputeMcpGating(settings,assembled,cwd,bootAllowed,isYolo){const settingsAllowed=settings.merged.mcp?.allowed?.filter(Boolean);const excluded=settings.merged.mcp?.excluded?.filter(Boolean);let allowed=settingsAllowed;if(bootAllowed){allowed=settingsAllowed?settingsAllowed.filter(n=>bootAllowed.includes(n)):[...bootAllowed]}return{allowed,excluded:excluded&&excluded.length>0?excluded:void 0,pending:isYolo?void 0:getPendingGatedMcpServers(assembled,cwd)}}__name(recomputeMcpGating,"recomputeMcpGating");function registerMcpHotReload(watcher,settings,config,topTierMcpServers){debugLogger.debug("registered MCP hot-reload listener on SettingsWatcher");return watcher.addChangeListener(async events=>{debugLogger.debug(`settings change fired (${events.length} event(s)): ${events.map(e=>`${e.scope}:${e.changeType}`).join(", ")}`);const cwd=config.getTargetDir();const next=config.getBareMode()||config.isSafeMode()?{...topTierMcpServers}:assembleMcpServers(settings.merged.mcpServers,cwd,topTierMcpServers);const isYolo=config.getApprovalMode()==="yolo";const bootAllowed=config.getCliAllowedMcpServerNames();const nextGating=config.getBareMode()||config.isSafeMode()?{allowed:bootAllowed?[...bootAllowed]:void 0}:recomputeMcpGating(settings,next,cwd,bootAllowed,isYolo);const prevServers=config.getSettingsMcpServers();const prevGating=config.getMcpGating();debugLogger.debug(`assembled servers: prev=[${Object.keys(prevServers??{}).join(", ")}] next=[${Object.keys(next).join(", ")}]`);debugLogger.debug(`gating next: excluded=[${(nextGating.excluded??[]).join(", ")}] allowed=[${(nextGating.allowed??[]).join(", ")}] pending=[${(nextGating.pending??[]).join(", ")}]`);const serversChanged=!mcpServersEqual(prevServers,next);const gatingChanged=!mcpGatingEqual(prevGating,nextGating);if(!serversChanged&&!gatingChanged){debugLogger.debug("no MCP-relevant change (servers + gating unchanged) \u2014 skipping reconcile");return}debugLogger.debug(`MCP-relevant change detected (serversChanged=${serversChanged} gatingChanged=${gatingChanged}) \u2014 reconciling`);const promptable=getPromptableMcpServers(next,cwd);config.setExcludedMcpServers(nextGating.excluded??[]);config.setAllowedMcpServers(nextGating.allowed);config.setPendingMcpServers(nextGating.pending);try{await config.reinitializeMcpServers(next);const finalStatuses=Object.keys(next).map(name=>`${name}=${getMCPServerStatus(name)}`).join(", ");debugLogger.debug(`reinitializeMcpServers resolved; final statuses=[${finalStatuses}]`)}catch(err){debugLogger.error(`reinitializeMcpServers threw: ${err instanceof Error?err.stack??err.message:String(err)}`);appEvents.emit("log-error","Failed to reload MCP server settings; existing MCP state may be unchanged. Run with --debug for details.")}if(!isYolo&&promptable.length>0){debugLogger.debug(`gated servers awaiting approval \u2192 emitting ${"mcp-pending-approval-changed"}: [${promptable.join(", ")}]`);appEvents.emit("mcp-pending-approval-changed")}})}__name(registerMcpHotReload,"registerMcpHotReload");function registerModelProvidersHotReload(watcher,settings,config){modelProvidersDebugLogger.debug("registered modelProviders hot-reload listener on SettingsWatcher");let refreshAuthRetryPending=false;const reconcile=__name(async()=>{const next=settings.merged.modelProviders;const providersUnchanged=(0,import_fast_deep_equal.default)(config.getModelProvidersConfig()??{},next??{});if(providersUnchanged&&!refreshAuthRetryPending){return}if(!providersUnchanged){modelProvidersDebugLogger.debug("modelProviders changed \u2014 reloading model registry");try{config.reloadModelProvidersConfig(next)}catch(err){modelProvidersDebugLogger.error(`reloadModelProvidersConfig threw: ${err instanceof Error?err.stack??err.message:String(err)}`);return}}const authType=config.getAuthType();if(!authType){return}try{await config.refreshAuth(authType,true);refreshAuthRetryPending=false}catch(err){const alreadyPending=refreshAuthRetryPending;refreshAuthRetryPending=true;modelProvidersDebugLogger.error(`refreshAuth after modelProviders reload threw: ${err instanceof Error?err.stack??err.message:String(err)}`);if(!alreadyPending){appEvents.emit("log-error",`Model provider settings reloaded, but re-authenticating the active model failed: ${err instanceof Error?err.message:String(err)}. Select a model with /model or restart to apply the change.`)}}},"reconcile");void reconcile();return watcher.addChangeListener(reconcile)}__name(registerModelProvidersHotReload,"registerModelProvidersHotReload");export{recomputeMcpGating,registerMcpHotReload,registerModelProvidersHotReload};
3
+ import{appEvents}from"./chunk-34WLYVDK.js";import{assembleMcpServers,getPendingGatedMcpServers,getPromptableMcpServers}from"./chunk-K2K2YYWO.js";import{getMCPServerStatus}from"./chunk-DR3HLUJ5.js";import{require_fast_deep_equal}from"./chunk-3KUHQGOS.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name,__toESM}from"./chunk-KBWJGX7I.js";init_esbuild_shims();var import_fast_deep_equal=__toESM(require_fast_deep_equal(),1);var debugLogger=createDebugLogger("MCP_HOT_RELOAD");var modelProvidersDebugLogger=createDebugLogger("MODEL_PROVIDERS_HOT_RELOAD");function mcpServersEqual(a,b){return(0,import_fast_deep_equal.default)(a??{},b??{})}__name(mcpServersEqual,"mcpServersEqual");function mcpGatingEqual(a,b){const norm=__name(xs=>[...xs??[]].sort(),"norm");const allowedEqual=a.allowed===void 0===(b.allowed===void 0)&&(0,import_fast_deep_equal.default)(norm(a.allowed),norm(b.allowed));return(0,import_fast_deep_equal.default)(norm(a.excluded),norm(b.excluded))&&allowedEqual&&(0,import_fast_deep_equal.default)(norm(a.pending),norm(b.pending))}__name(mcpGatingEqual,"mcpGatingEqual");function recomputeMcpGating(settings,assembled,cwd,bootAllowed,isYolo){const settingsAllowed=settings.merged.mcp?.allowed?.filter(Boolean);const excluded=settings.merged.mcp?.excluded?.filter(Boolean);let allowed=settingsAllowed;if(bootAllowed){allowed=settingsAllowed?settingsAllowed.filter(n=>bootAllowed.includes(n)):[...bootAllowed]}return{allowed,excluded:excluded&&excluded.length>0?excluded:void 0,pending:isYolo?void 0:getPendingGatedMcpServers(assembled,cwd)}}__name(recomputeMcpGating,"recomputeMcpGating");function registerMcpHotReload(watcher,settings,config,topTierMcpServers){debugLogger.debug("registered MCP hot-reload listener on SettingsWatcher");return watcher.addChangeListener(async events=>{debugLogger.debug(`settings change fired (${events.length} event(s)): ${events.map(e=>`${e.scope}:${e.changeType}`).join(", ")}`);const cwd=config.getTargetDir();const next=config.getBareMode()||config.isSafeMode()?{...topTierMcpServers}:assembleMcpServers(settings.merged.mcpServers,cwd,topTierMcpServers);const isYolo=config.getApprovalMode()==="yolo";const bootAllowed=config.getCliAllowedMcpServerNames();const nextGating=config.getBareMode()||config.isSafeMode()?{allowed:bootAllowed?[...bootAllowed]:void 0}:recomputeMcpGating(settings,next,cwd,bootAllowed,isYolo);const prevServers=config.getSettingsMcpServers();const prevGating=config.getMcpGating();debugLogger.debug(`assembled servers: prev=[${Object.keys(prevServers??{}).join(", ")}] next=[${Object.keys(next).join(", ")}]`);debugLogger.debug(`gating next: excluded=[${(nextGating.excluded??[]).join(", ")}] allowed=[${(nextGating.allowed??[]).join(", ")}] pending=[${(nextGating.pending??[]).join(", ")}]`);const serversChanged=!mcpServersEqual(prevServers,next);const gatingChanged=!mcpGatingEqual(prevGating,nextGating);if(!serversChanged&&!gatingChanged){debugLogger.debug("no MCP-relevant change (servers + gating unchanged) \u2014 skipping reconcile");return}debugLogger.debug(`MCP-relevant change detected (serversChanged=${serversChanged} gatingChanged=${gatingChanged}) \u2014 reconciling`);const promptable=getPromptableMcpServers(next,cwd);config.setExcludedMcpServers(nextGating.excluded??[]);config.setAllowedMcpServers(nextGating.allowed);config.setPendingMcpServers(nextGating.pending);try{await config.reinitializeMcpServers(next);const finalStatuses=Object.keys(next).map(name=>`${name}=${getMCPServerStatus(name)}`).join(", ");debugLogger.debug(`reinitializeMcpServers resolved; final statuses=[${finalStatuses}]`)}catch(err){debugLogger.error(`reinitializeMcpServers threw: ${err instanceof Error?err.stack??err.message:String(err)}`);appEvents.emit("log-error","Failed to reload MCP server settings; existing MCP state may be unchanged. Run with --debug for details.")}if(!isYolo&&promptable.length>0){debugLogger.debug(`gated servers awaiting approval \u2192 emitting ${"mcp-pending-approval-changed"}: [${promptable.join(", ")}]`);appEvents.emit("mcp-pending-approval-changed")}})}__name(registerMcpHotReload,"registerMcpHotReload");function registerModelProvidersHotReload(watcher,settings,config){modelProvidersDebugLogger.debug("registered modelProviders hot-reload listener on SettingsWatcher");let refreshAuthRetryPending=false;const reconcile=__name(async()=>{const next=settings.merged.modelProviders;const providersUnchanged=(0,import_fast_deep_equal.default)(config.getModelProvidersConfig()??{},next??{});if(providersUnchanged&&!refreshAuthRetryPending){return}if(!providersUnchanged){modelProvidersDebugLogger.debug("modelProviders changed \u2014 reloading model registry");try{config.reloadModelProvidersConfig(next)}catch(err){modelProvidersDebugLogger.error(`reloadModelProvidersConfig threw: ${err instanceof Error?err.stack??err.message:String(err)}`);return}}const authType=config.getAuthType();if(!authType){return}try{await config.refreshAuth(authType,true);refreshAuthRetryPending=false}catch(err){const alreadyPending=refreshAuthRetryPending;refreshAuthRetryPending=true;modelProvidersDebugLogger.error(`refreshAuth after modelProviders reload threw: ${err instanceof Error?err.stack??err.message:String(err)}`);if(!alreadyPending){appEvents.emit("log-error",`Model provider settings reloaded, but re-authenticating the active model failed: ${err instanceof Error?err.message:String(err)}. Select a model with /model or restart to apply the change.`)}}},"reconcile");void reconcile();return watcher.addChangeListener(reconcile)}__name(registerModelProvidersHotReload,"registerModelProvidersHotReload");export{recomputeMcpGating,registerMcpHotReload,registerModelProvidersHotReload};
4
4
  /**
5
5
  * @license
6
6
  * Copyright 2025 Qwen
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{captureRuntimeFileVersion,writeRuntimeFile}from"./chunk-UFRY7WND.js";import{checkTeamMemorySecrets,checkWorkspaceTeamMemorySecrets}from"./chunk-GNQGJXST.js";import{buildWorkspaceArtifactCandidate,formatRecordArtifactReminder}from"./chunk-ERMPIC3B.js";import{CommitAttributionService,FileEncoding,checkPriorRead,createPatchSmart,detectLineEnding,getDiffStat,needsUtf8Bom}from"./chunk-RKPHDO42.js";import{FileOperationEvent,ReadFileTool,getLanguageFromFilePath,logFileOperation}from"./chunk-DR3HLUJ5.js";import{fileExists,getSpecificMimeType}from"./chunk-JU2HHQR5.js";import{isAnyAutoMemPath,isTeamAutoMemPath}from"./chunk-37KFLBKZ.js";import{safeLiteralReplace}from"./chunk-4YLXNRRH.js";import{BaseDeclarativeTool,StructuredToolError}from"./chunk-O5EKX7LG.js";import{ToolDisplayNames,ToolNames}from"./chunk-2UNFJQ2D.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{makeRelative,shortenPath,unescapePath}from"./chunk-OKN3Z5C5.js";import{getErrorMessage,isNodeError}from"./chunk-XYB7GC5U.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import*as fs from"node:fs";import*as path from"node:path";init_esbuild_shims();var UNICODE_EQUIVALENT_MAP={"\u2010":"-","\u2011":"-","\u2012":"-","\u2013":"-","\u2014":"-","\u2015":"-","\u2212":"-","\u2018":"'","\u2019":"'","\u201A":"'","\u201B":"'","\u201C":'"',"\u201D":'"',"\u201E":'"',"\u201F":'"',"\xA0":" ","\u2002":" ","\u2003":" ","\u2004":" ","\u2005":" ","\u2006":" ","\u2007":" ","\u2008":" ","\u2009":" ","\u200A":" ","\u202F":" ","\u205F":" ","\u3000":" "};function normalizeBasicCharacters(text){if(text===""){return text}let normalized="";for(const char of text){normalized+=UNICODE_EQUIVALENT_MAP[char]??char}return normalized}__name(normalizeBasicCharacters,"normalizeBasicCharacters");var LINE_COMPARISON_PASSES=[value=>value,value=>value.trimEnd()];function normalizeLineForComparison(value){return normalizeBasicCharacters(value).trimEnd()}__name(normalizeLineForComparison,"normalizeLineForComparison");function seekSequenceWithTransform(lines,pattern,transform){if(pattern.length===0){return 0}if(pattern.length>lines.length){return null}outer:for(let i=0;i<=lines.length-pattern.length;i++){for(let p=0;p<pattern.length;p++){if(transform(lines[i+p])!==transform(pattern[p])){continue outer}}return i}return null}__name(seekSequenceWithTransform,"seekSequenceWithTransform");function buildLineIndex(text){const lines=text.split("\n");const offsets=new Array(lines.length+1);let cursor=0;for(let i=0;i<lines.length;i++){offsets[i]=cursor;cursor+=lines[i].length;if(i<lines.length-1){cursor+=1}}offsets[lines.length]=text.length;return{lines,offsets}}__name(buildLineIndex,"buildLineIndex");function sliceFromLines(text,offsets,lines,startLine,lineCount,includeTrailingNewline){if(lineCount===0){return includeTrailingNewline?"\n":""}const startIndex=offsets[startLine]??0;const lastLineIndex=startLine+lineCount-1;const lastLineStart=offsets[lastLineIndex]??0;let endIndex=lastLineStart+(lines[lastLineIndex]?.length??0);if(includeTrailingNewline){const nextLineStart=offsets[startLine+lineCount];if(nextLineStart!==void 0){endIndex=nextLineStart}else if(text.endsWith("\n")){endIndex=text.length}}return text.slice(startIndex,endIndex)}__name(sliceFromLines,"sliceFromLines");function findLineBasedMatch(haystack,needle){const{lines,offsets}=buildLineIndex(haystack);const patternLines=needle.split("\n");const endsWithNewline=needle.endsWith("\n");if(patternLines.length===0){return null}const attemptMatch=__name(candidate=>{for(const pass of LINE_COMPARISON_PASSES){const idx=seekSequenceWithTransform(lines,candidate,pass);if(idx!==null){return idx}}return seekSequenceWithTransform(lines,candidate,normalizeLineForComparison)},"attemptMatch");let matchIndex=attemptMatch(patternLines);if(matchIndex!==null){return{slice:sliceFromLines(haystack,offsets,lines,matchIndex,patternLines.length-(endsWithNewline?1:0),endsWithNewline),removedTrailingFinalEmptyLine:false,lineBasedMatch:true}}if(patternLines.at(-1)===""){const trimmedPattern=patternLines.slice(0,-1);if(trimmedPattern.length===0){return null}matchIndex=attemptMatch(trimmedPattern);if(matchIndex!==null){return{slice:sliceFromLines(haystack,offsets,lines,matchIndex,trimmedPattern.length,false),removedTrailingFinalEmptyLine:true,lineBasedMatch:true}}}return null}__name(findLineBasedMatch,"findLineBasedMatch");function findMatchedSlice(haystack,needle){if(needle===""){return null}const literalIndex=haystack.indexOf(needle);if(literalIndex!==-1){return{slice:haystack.slice(literalIndex,literalIndex+needle.length),removedTrailingFinalEmptyLine:false}}const normalizedHaystack=normalizeBasicCharacters(haystack);const normalizedNeedleChars=normalizeBasicCharacters(needle);const normalizedIndex=normalizedHaystack.indexOf(normalizedNeedleChars);if(normalizedIndex!==-1){return{slice:haystack.slice(normalizedIndex,normalizedIndex+needle.length),removedTrailingFinalEmptyLine:false}}return findLineBasedMatch(haystack,needle)}__name(findMatchedSlice,"findMatchedSlice");function removeTrailingNewline(text){if(text.endsWith("\r\n")){return text.slice(0,-2)}if(text.endsWith("\n")||text.endsWith("\r")){return text.slice(0,-1)}return text}__name(removeTrailingNewline,"removeTrailingNewline");function adjustNewStringForTrailingLine(newString,removedTrailingLine){return removedTrailingLine?removeTrailingNewline(newString):newString}__name(adjustNewStringForTrailingLine,"adjustNewStringForTrailingLine");function normalizeEditStrings(fileContent,oldString,newString){if(fileContent===null||oldString===""){return{oldString,newString}}const canonicalOriginal=findMatchedSlice(fileContent,oldString);if(canonicalOriginal!==null){return{oldString:canonicalOriginal.slice,newString:adjustNewStringForTrailingLine(newString,canonicalOriginal.removedTrailingFinalEmptyLine),...canonicalOriginal.lineBasedMatch?{lineBasedMatch:true}:{}}}return{oldString,newString}}__name(normalizeEditStrings,"normalizeEditStrings");function maybeAugmentOldStringForDeletion(fileContent,oldString,newString,lineBasedMatch=false){if(fileContent===null||oldString===""||newString!==""||oldString.endsWith("\n")){return oldString}const candidate=`${oldString}
3
+ import{captureRuntimeFileVersion,writeRuntimeFile}from"./chunk-M7JLPTQI.js";import{checkTeamMemorySecrets,checkWorkspaceTeamMemorySecrets}from"./chunk-GNQGJXST.js";import{buildWorkspaceArtifactCandidate,formatRecordArtifactReminder}from"./chunk-ERMPIC3B.js";import{CommitAttributionService,FileEncoding,checkPriorRead,createPatchSmart,detectLineEnding,getDiffStat,needsUtf8Bom}from"./chunk-LDXZT3SG.js";import{FileOperationEvent,ReadFileTool,getLanguageFromFilePath,logFileOperation}from"./chunk-DR3HLUJ5.js";import{fileExists,getSpecificMimeType}from"./chunk-JU2HHQR5.js";import{isAnyAutoMemPath,isTeamAutoMemPath}from"./chunk-37KFLBKZ.js";import{safeLiteralReplace}from"./chunk-4YLXNRRH.js";import{BaseDeclarativeTool,StructuredToolError}from"./chunk-O5EKX7LG.js";import{ToolDisplayNames,ToolNames}from"./chunk-2UNFJQ2D.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{makeRelative,shortenPath,unescapePath}from"./chunk-OKN3Z5C5.js";import{getErrorMessage,isNodeError}from"./chunk-XYB7GC5U.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import*as fs from"node:fs";import*as path from"node:path";init_esbuild_shims();var UNICODE_EQUIVALENT_MAP={"\u2010":"-","\u2011":"-","\u2012":"-","\u2013":"-","\u2014":"-","\u2015":"-","\u2212":"-","\u2018":"'","\u2019":"'","\u201A":"'","\u201B":"'","\u201C":'"',"\u201D":'"',"\u201E":'"',"\u201F":'"',"\xA0":" ","\u2002":" ","\u2003":" ","\u2004":" ","\u2005":" ","\u2006":" ","\u2007":" ","\u2008":" ","\u2009":" ","\u200A":" ","\u202F":" ","\u205F":" ","\u3000":" "};function normalizeBasicCharacters(text){if(text===""){return text}let normalized="";for(const char of text){normalized+=UNICODE_EQUIVALENT_MAP[char]??char}return normalized}__name(normalizeBasicCharacters,"normalizeBasicCharacters");var LINE_COMPARISON_PASSES=[value=>value,value=>value.trimEnd()];function normalizeLineForComparison(value){return normalizeBasicCharacters(value).trimEnd()}__name(normalizeLineForComparison,"normalizeLineForComparison");function seekSequenceWithTransform(lines,pattern,transform){if(pattern.length===0){return 0}if(pattern.length>lines.length){return null}outer:for(let i=0;i<=lines.length-pattern.length;i++){for(let p=0;p<pattern.length;p++){if(transform(lines[i+p])!==transform(pattern[p])){continue outer}}return i}return null}__name(seekSequenceWithTransform,"seekSequenceWithTransform");function buildLineIndex(text){const lines=text.split("\n");const offsets=new Array(lines.length+1);let cursor=0;for(let i=0;i<lines.length;i++){offsets[i]=cursor;cursor+=lines[i].length;if(i<lines.length-1){cursor+=1}}offsets[lines.length]=text.length;return{lines,offsets}}__name(buildLineIndex,"buildLineIndex");function sliceFromLines(text,offsets,lines,startLine,lineCount,includeTrailingNewline){if(lineCount===0){return includeTrailingNewline?"\n":""}const startIndex=offsets[startLine]??0;const lastLineIndex=startLine+lineCount-1;const lastLineStart=offsets[lastLineIndex]??0;let endIndex=lastLineStart+(lines[lastLineIndex]?.length??0);if(includeTrailingNewline){const nextLineStart=offsets[startLine+lineCount];if(nextLineStart!==void 0){endIndex=nextLineStart}else if(text.endsWith("\n")){endIndex=text.length}}return text.slice(startIndex,endIndex)}__name(sliceFromLines,"sliceFromLines");function findLineBasedMatch(haystack,needle){const{lines,offsets}=buildLineIndex(haystack);const patternLines=needle.split("\n");const endsWithNewline=needle.endsWith("\n");if(patternLines.length===0){return null}const attemptMatch=__name(candidate=>{for(const pass of LINE_COMPARISON_PASSES){const idx=seekSequenceWithTransform(lines,candidate,pass);if(idx!==null){return idx}}return seekSequenceWithTransform(lines,candidate,normalizeLineForComparison)},"attemptMatch");let matchIndex=attemptMatch(patternLines);if(matchIndex!==null){return{slice:sliceFromLines(haystack,offsets,lines,matchIndex,patternLines.length-(endsWithNewline?1:0),endsWithNewline),removedTrailingFinalEmptyLine:false,lineBasedMatch:true}}if(patternLines.at(-1)===""){const trimmedPattern=patternLines.slice(0,-1);if(trimmedPattern.length===0){return null}matchIndex=attemptMatch(trimmedPattern);if(matchIndex!==null){return{slice:sliceFromLines(haystack,offsets,lines,matchIndex,trimmedPattern.length,false),removedTrailingFinalEmptyLine:true,lineBasedMatch:true}}}return null}__name(findLineBasedMatch,"findLineBasedMatch");function findMatchedSlice(haystack,needle){if(needle===""){return null}const literalIndex=haystack.indexOf(needle);if(literalIndex!==-1){return{slice:haystack.slice(literalIndex,literalIndex+needle.length),removedTrailingFinalEmptyLine:false}}const normalizedHaystack=normalizeBasicCharacters(haystack);const normalizedNeedleChars=normalizeBasicCharacters(needle);const normalizedIndex=normalizedHaystack.indexOf(normalizedNeedleChars);if(normalizedIndex!==-1){return{slice:haystack.slice(normalizedIndex,normalizedIndex+needle.length),removedTrailingFinalEmptyLine:false}}return findLineBasedMatch(haystack,needle)}__name(findMatchedSlice,"findMatchedSlice");function removeTrailingNewline(text){if(text.endsWith("\r\n")){return text.slice(0,-2)}if(text.endsWith("\n")||text.endsWith("\r")){return text.slice(0,-1)}return text}__name(removeTrailingNewline,"removeTrailingNewline");function adjustNewStringForTrailingLine(newString,removedTrailingLine){return removedTrailingLine?removeTrailingNewline(newString):newString}__name(adjustNewStringForTrailingLine,"adjustNewStringForTrailingLine");function normalizeEditStrings(fileContent,oldString,newString){if(fileContent===null||oldString===""){return{oldString,newString}}const canonicalOriginal=findMatchedSlice(fileContent,oldString);if(canonicalOriginal!==null){return{oldString:canonicalOriginal.slice,newString:adjustNewStringForTrailingLine(newString,canonicalOriginal.removedTrailingFinalEmptyLine),...canonicalOriginal.lineBasedMatch?{lineBasedMatch:true}:{}}}return{oldString,newString}}__name(normalizeEditStrings,"normalizeEditStrings");function maybeAugmentOldStringForDeletion(fileContent,oldString,newString,lineBasedMatch=false){if(fileContent===null||oldString===""||newString!==""||oldString.endsWith("\n")){return oldString}const candidate=`${oldString}
4
4
  `;const hasCandidate=lineBasedMatch?findLineBasedMatchOffsets(fileContent,candidate).length>0:fileContent.includes(candidate);return hasCandidate?candidate:oldString}__name(maybeAugmentOldStringForDeletion,"maybeAugmentOldStringForDeletion");function countOccurrences(source,substr){if(substr===""){return 0}let count=0;let index=source.indexOf(substr);while(index!==-1){count++;index=source.indexOf(substr,index+substr.length)}return count}__name(countOccurrences,"countOccurrences");function findLineBasedMatchOffsets(source,substr){const offsets=[];if(substr===""){return offsets}let index=source.indexOf(substr);while(index!==-1){const end=index+substr.length;const startsLine=index===0||source[index-1]==="\n";const endsLine=substr.endsWith("\n")||end===source.length||source[end]==="\n";if(startsLine&&endsLine){offsets.push(index);index=source.indexOf(substr,end)}else{index=source.indexOf(substr,index+1)}}return offsets}__name(findLineBasedMatchOffsets,"findLineBasedMatchOffsets");var SNIPPET_CONTEXT_LINES=4;var SNIPPET_MAX_LINES=1e3;function extractEditSnippet(oldContent,newContent){const newLines=newContent.split("\n");const totalLines=newLines.length;if(oldContent===null){return{startLine:1,endLine:totalLines,totalLines,content:newContent}}if(oldContent===newContent||!newContent){return null}const oldLines=oldContent.split("\n");let firstDiffLine=0;const minLength=Math.min(oldLines.length,newLines.length);while(firstDiffLine<minLength){if(oldLines[firstDiffLine]!==newLines[firstDiffLine]){break}firstDiffLine++}let oldEndIndex=oldLines.length-1;let newEndIndex=newLines.length-1;while(oldEndIndex>=firstDiffLine&&newEndIndex>=firstDiffLine){if(oldLines[oldEndIndex]!==newLines[newEndIndex]){break}oldEndIndex--;newEndIndex--}const changeStart=firstDiffLine+1;const changeEnd=newEndIndex+1;if(changeEnd-changeStart>SNIPPET_MAX_LINES){return null}const snippetStart=Math.max(1,changeStart-SNIPPET_CONTEXT_LINES);const snippetEnd=Math.min(totalLines,changeEnd+SNIPPET_CONTEXT_LINES);const snippetLines=newLines.slice(snippetStart-1,snippetEnd);return{startLine:snippetStart,endLine:snippetEnd,totalLines,content:snippetLines.join("\n")}}__name(extractEditSnippet,"extractEditSnippet");var debugLogger=createDebugLogger("EDIT_PRIOR_READ");function applyReplacement(currentContent,oldString,newString,isNewFile,matchOffsets){if(isNewFile){return newString}if(currentContent===null){return oldString===""?newString:""}if(oldString===""&&!isNewFile){return currentContent}if(matchOffsets!==void 0){const pieces=[];let cursor=0;for(const offset of matchOffsets){pieces.push(currentContent.slice(cursor,offset),newString);cursor=offset+oldString.length}pieces.push(currentContent.slice(cursor));return pieces.join("")}return safeLiteralReplace(currentContent,oldString,newString)}__name(applyReplacement,"applyReplacement");var EditToolInvocation=class{constructor(config,params){this.config=config;this.params=params}static{__name(this,"EditToolInvocation")}toolLocations(){return[{path:this.params.file_path}]}async calculateEdit(params,original,signal){const observation=original??await this.config.getFileSystemService().textFileIo?.inspect(params.file_path,signal);const sandboxFileVersion=captureRuntimeFileVersion(this.config,params.file_path);const replaceAll=params.replace_all??false;let currentContent=null;let fileExists2=observation?observation.kind==="file":await fileExists(params.file_path);let isNewFile=false;let finalNewString=params.new_string;let finalOldString=params.old_string;let occurrences=0;let error=void 0;let useBOM=false;let detectedEncoding="utf-8";let detectedLineEnding="lf";if(!this.config.getFileReadCacheDisabled()){const decision=await checkPriorRead(this.config.getFileReadCache(),params.file_path,"editing");if(!decision.ok){return{currentContent:null,newContent:"",occurrences:0,error:{display:decision.displayMessage,raw:decision.rawMessage,type:decision.type},isNewFile:false,encoding:"utf-8",bom:false,lineEnding:"lf"}}}if(fileExists2){try{const fileInfo=observation?.kind==="file"?observation.response:await this.config.getFileSystemService().readTextFile({path:params.file_path});if(fileInfo._meta?.bom!==void 0){useBOM=fileInfo._meta.bom}else{useBOM=fileInfo.content.length>0&&fileInfo.content.codePointAt(0)===65279}detectedEncoding=fileInfo._meta?.encoding||"utf-8";detectedLineEnding=detectLineEnding(fileInfo.content);currentContent=fileInfo.content.replace(/\r\n/g,"\n");fileExists2=true}catch(err){if(!isNodeError(err)||err.code!=="ENOENT"){throw err}fileExists2=false}}if(fileExists2&&!this.config.getFileReadCacheDisabled()){const postDecision=await checkPriorRead(this.config.getFileReadCache(),params.file_path,"editing",{expectExisting:true});if(!postDecision.ok){debugLogger.warn("post-read TOCTOU rejection",{path:params.file_path,reason:postDecision.type});return{currentContent:null,newContent:"",occurrences:0,error:{display:postDecision.displayMessage,raw:postDecision.rawMessage,type:postDecision.type},isNewFile:false,encoding:"utf-8",bom:false,lineEnding:"lf"}}}const normalizedStrings=normalizeEditStrings(currentContent,finalOldString,finalNewString);finalOldString=normalizedStrings.oldString;finalNewString=normalizedStrings.newString;let matchOffsets;if(finalOldString===""&&!fileExists2){isNewFile=true}else if(!fileExists2){error={display:`File not found. Cannot apply edit. Use an empty old_string to create a new file.`,raw:`File not found: ${params.file_path}`,type:"file_not_found"}}else if(currentContent!==null){finalOldString=maybeAugmentOldStringForDeletion(currentContent,finalOldString,finalNewString,normalizedStrings.lineBasedMatch);if(normalizedStrings.lineBasedMatch){matchOffsets=findLineBasedMatchOffsets(currentContent,finalOldString)}occurrences=matchOffsets?.length??countOccurrences(currentContent,finalOldString);if(params.old_string===""){error={display:`Failed to edit. Attempted to create a file that already exists.`,raw:`File already exists, cannot create: ${params.file_path}`,type:"attempt_to_create_existing_file"}}else if(occurrences===0){error={display:`Failed to edit, could not find the string to replace.`,raw:`Failed to edit, 0 occurrences found for old_string in ${params.file_path}. No edits made. The exact text in old_string was not found. Ensure you're not escaping content incorrectly and check whitespace, indentation, and context. Use ${ReadFileTool.Name} tool to verify.`,type:"edit_no_occurrence_found"}}else if(!replaceAll&&occurrences>1){error={display:`Failed to edit because the text matches multiple locations. Provide more context or set replace_all to true.`,raw:`Failed to edit. Found ${occurrences} occurrences for old_string in ${params.file_path} but replace_all was not enabled.`,type:"edit_expected_occurrence_mismatch"}}else if(finalOldString===finalNewString){error={display:`No changes to apply. The old_string and new_string are identical.`,raw:`No changes to apply. The old_string and new_string are identical in file: ${params.file_path}`,type:"edit_no_change"}}}else{error={display:`Failed to read content of file.`,raw:`Failed to read content of existing file: ${params.file_path}`,type:"read_content_failure"}}const newContent=!error?applyReplacement(currentContent,finalOldString,finalNewString,isNewFile,matchOffsets):currentContent??"";if(!error&&fileExists2&&currentContent===newContent){error={display:"No changes to apply. The new content is identical to the current content.",raw:`No changes to apply. The new content is identical to the current content in file: ${params.file_path}`,type:"edit_no_change"}}if(!error){const teamMemoryError=(this.config.getFileSystemService().textFileIo?checkWorkspaceTeamMemorySecrets:checkTeamMemorySecrets)(params.file_path,newContent,this.config.getProjectRoot());if(teamMemoryError){const preExisting=currentContent!==null&&(this.config.getFileSystemService().textFileIo?checkWorkspaceTeamMemorySecrets:checkTeamMemorySecrets)(params.file_path,currentContent,this.config.getProjectRoot())!==null;const message=preExisting?`${teamMemoryError} Note: the secret already exists in the current file content, so removing it from your edit alone is not enough \u2014 delete the committed secret from the file.`:teamMemoryError;error={display:message,raw:message,type:"invalid_tool_params"}}}return{currentContent,newContent,sandboxFileVersion,occurrences,error,isNewFile,bom:useBOM,encoding:detectedEncoding,lineEnding:detectedLineEnding}}async getDefaultPermission(){if(this.config.getFileSystemService().textFileIo)return"ask";const projectRoot=this.config.getProjectRoot();const filePath=path.resolve(this.params.file_path);if(isTeamAutoMemPath(filePath,projectRoot)){return"ask"}if(isAnyAutoMemPath(filePath,projectRoot)){return"allow"}return"ask"}async getConfirmationDetails(abortSignal){let editData;try{editData=await this.calculateEdit(this.params,void 0,abortSignal)}catch(error){if(abortSignal.aborted){throw error}const errorMsg=isNodeError(error)&&error.code==="EISDIR"?`Target is a directory, not a file: ${this.params.file_path} (${error.code})`:getErrorMessage(error);throw new Error(`Error preparing edit: ${errorMsg}`)}if(editData.error){throw new StructuredToolError(editData.error.raw,editData.error.type)}const fileName=path.basename(this.params.file_path);const fileDiff=createPatchSmart(fileName,editData.currentContent??"",editData.newContent,"Current","Proposed");const confirmationDetails={type:"edit",title:`Confirm Edit: ${shortenPath(makeRelative(this.params.file_path,this.config.getTargetDir()))}`,fileName,filePath:this.params.file_path,fileDiff,originalContent:editData.currentContent,newContent:editData.newContent,onConfirm:__name(async outcome=>{if(outcome==="proceed_always"){this.config.setApprovalMode("auto-edit")}},"onConfirm")};return confirmationDetails}getDescription(){const relativePath=makeRelative(this.params.file_path,this.config.getTargetDir());if(this.params.old_string===""){return`Create ${shortenPath(relativePath)}`}if(this.params.old_string===this.params.new_string){return`No file changes to ${shortenPath(relativePath)}`}return shortenPath(relativePath)}async execute(signal){try{const io=this.config.getFileSystemService().textFileIo;return io?await io.withMutation(this.params.file_path,signal,mutation=>this.executeObserved(signal,mutation)):await this.executeObserved(signal)}catch(error){if(signal.aborted)throw error;return this.writeFailure(error)}}async executeObserved(signal,mutation){let editData;try{editData=await this.calculateEdit(this.params,mutation?.original,signal)}catch(error){if(signal.aborted){throw error}const errorMsg=getErrorMessage(error);return{llmContent:`Error preparing edit: ${errorMsg}`,returnDisplay:`Error preparing edit: ${errorMsg}`,error:{message:errorMsg,type:"edit_preparation_failure"}}}if(editData.error){return{llmContent:editData.error.raw,returnDisplay:`Error: ${editData.error.display}`,error:{message:editData.error.raw,type:editData.error.type}}}try{try{await this.config.getFileHistoryService().trackEdit(this.params.file_path)}catch{}if(!this.config.getFileReadCacheDisabled()){const writeDecision=await checkPriorRead(this.config.getFileReadCache(),this.params.file_path,"editing",{expectExisting:!editData.isNewFile});if(!writeDecision.ok){debugLogger.warn("pre-write TOCTOU rejection",{path:this.params.file_path,reason:writeDecision.type});return{llmContent:writeDecision.rawMessage,returnDisplay:`Error: ${writeDecision.displayMessage}`,error:{message:writeDecision.rawMessage,type:writeDecision.type}}}}if(!mutation&&!this.config.getShellExecutionSandbox?.()){this.ensureParentDirectoriesExist(this.params.file_path)}let committedStats;const write=__name(async params=>{if(mutation)committedStats=await mutation.write(params);else await writeRuntimeFile(this.config,params,editData.sandboxFileVersion,signal)},"write");if(editData.isNewFile){const userEncoding=this.config.getDefaultFileEncoding();let useBOM=false;if(userEncoding===FileEncoding.UTF8_BOM){useBOM=true}else if(userEncoding===void 0){useBOM=needsUtf8Bom(this.params.file_path)}await write({path:this.params.file_path,content:editData.newContent,toolWriteOrigin:"edit",_meta:{bom:useBOM}})}else{await write({path:this.params.file_path,content:editData.newContent,toolWriteOrigin:"edit",_meta:{bom:editData.bom,encoding:editData.encoding,lineEnding:editData.lineEnding}})}if(!mutation&&!this.params.modified_by_user){CommitAttributionService.getInstance().recordEdit(this.params.file_path,editData.currentContent,editData.newContent)}let postWriteSizeBytes;try{if(mutation&&!committedStats)throw new Error("Scoped file write returned no committed stats.");const postWriteStats=mutation?committedStats:fs.statSync(this.params.file_path);postWriteSizeBytes=postWriteStats.size;this.config.getFileReadCache().recordWrite(this.params.file_path,postWriteStats)}catch(error){if(mutation)throw error}const fileName=path.basename(this.params.file_path);const originallyProposedContent=this.params.ai_proposed_content||editData.newContent;const diffStat=getDiffStat(fileName,editData.currentContent??"",originallyProposedContent,editData.newContent);const fileDiff=createPatchSmart(fileName,editData.currentContent??"",editData.newContent,"Current","Proposed");const displayResult={fileDiff,fileName,filePath:this.params.file_path,originalContent:editData.currentContent,newContent:editData.newContent,diffStat};const mimetype=getSpecificMimeType(this.params.file_path);const programmingLanguage=getLanguageFromFilePath(this.params.file_path);const extension=path.extname(this.params.file_path);const operation=editData.isNewFile?"create":"update";logFileOperation(this.config,new FileOperationEvent(EditTool.Name,operation,editData.newContent.split("\n").length,mimetype,extension,programmingLanguage));const llmSuccessMessageParts=[editData.isNewFile?`Created new file: ${this.params.file_path} with provided content.`:`The file: ${this.params.file_path} has been updated.`];const artifact=buildWorkspaceArtifactCandidate(this.config,this.params.file_path,{recordAsArtifact:this.params.record_as_artifact,sizeBytes:postWriteSizeBytes});if(artifact&&!artifact.updateOnly){llmSuccessMessageParts.push(formatRecordArtifactReminder(artifact.workspacePath))}const snippetResult=extractEditSnippet(editData.currentContent,editData.newContent);if(snippetResult){const snippetText=`Showing lines ${snippetResult.startLine}-${snippetResult.endLine} of ${snippetResult.totalLines} from the edited file:
5
5
 
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{assertExternalAgentSpawnPlatformSupported,isExpectedExternalAgentCleanupExit,isUnprovenExternalAgentTreeExit}from"./chunk-FEMWELCV.js";import{ProcessRegistry}from"./chunk-ESSOEHTE.js";import"./chunk-SC6ZKUED.js";import"./chunk-2QYDBHYZ.js";import"./chunk-YQ4ID2TH.js";import"./chunk-VTZZXEWA.js";import"./chunk-L5UULTGF.js";import"./chunk-NIEO2TBE.js";import"./chunk-CFTFKWPW.js";import"./chunk-WSOEJTOC.js";import"./chunk-BOFD4CN3.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-B7CXPNCV.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-BGEMWNES.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-QIJKEZZR.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-5RQRSPPD.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-7V4BAHFT.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-VTNHPXNL.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import{AgentEventEmitter,renderSubagentSystemPrompt}from"./chunk-RKPHDO42.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-OW4QBRSR.js";import"./chunk-6QLHJSVW.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import{sanitizeChildEnv}from"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-U2FJSKS3.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-XYBEQRSZ.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-7WS2EYMQ.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.js";import{createDebugLogger}from"./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{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{spawn}from"node:child_process";import{createInterface}from"node:readline";var debugLogger=createDebugLogger("EXTERNAL_AGENT");var CodexInterruption=class extends Error{constructor(mode){super(mode==="TIMEOUT"?"Codex task exceeded its time limit.":"Codex task cancelled.");this.mode=mode}static{__name(this,"CodexInterruption")}};function object(value){if(!value||typeof value!=="object"||Array.isArray(value)){throw new Error("Codex returned an invalid protocol object.")}return value}__name(object,"object");function id(value){if(typeof value!=="string"||!value){throw new Error("Codex returned an invalid thread or turn ID.")}return value}__name(id,"id");async function runCodex(params,prompt,sandbox,signal){if(signal.aborted)throw new CodexInterruption("CANCELLED");const env=sanitizeChildEnv(process.env);delete env["CODEX_THREAD_ID"];delete env["CLAUDECODE"];delete env["NODE_OPTIONS"];const child=spawn(params.spec.command,params.spec.args??["app-server","--stdio"],{cwd:params.runtimeContext.getTargetDir(),env,stdio:"pipe",detached:process.platform!=="win32",windowsHide:true});const tracked=new ProcessRegistry().reserve().attach(child,{ownsProcessTree:true});child.stderr.resume();const lines=createInterface({input:child.stdout,crlfDelay:Infinity});const pending=new Map;let sequence=0;let threadId;let turnId;let finalAnswer;let unphasedAnswer;let terminal=false;let exitDrainTimer;let fail;const failure=new Promise((_resolve,reject)=>{fail=reject});let complete;const completed=new Promise(resolve=>{complete=resolve});const write=__name(frame=>{child.stdin.write(`${JSON.stringify(frame)}
3
+ import{assertExternalAgentSpawnPlatformSupported,isExpectedExternalAgentCleanupExit,isUnprovenExternalAgentTreeExit}from"./chunk-4ZKFLOEH.js";import{ProcessRegistry}from"./chunk-ESSOEHTE.js";import"./chunk-SC6ZKUED.js";import"./chunk-2QYDBHYZ.js";import"./chunk-YQ4ID2TH.js";import"./chunk-VTZZXEWA.js";import"./chunk-L5UULTGF.js";import"./chunk-NIEO2TBE.js";import"./chunk-CFTFKWPW.js";import"./chunk-WSOEJTOC.js";import"./chunk-AVIDPC5K.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-3J2YNEHG.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-UQDPWI7D.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-IYVNCBMS.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-T5S3MJIK.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-LBWBGFHD.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-3TBFTELA.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import{AgentEventEmitter,renderSubagentSystemPrompt}from"./chunk-LDXZT3SG.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-6UZ65Z2P.js";import"./chunk-6PWOLWTH.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import{sanitizeChildEnv}from"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-RHEMFKMX.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-DIHJELGW.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-PWHD4NK3.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.js";import{createDebugLogger}from"./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{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{spawn}from"node:child_process";import{createInterface}from"node:readline";var debugLogger=createDebugLogger("EXTERNAL_AGENT");var CodexInterruption=class extends Error{constructor(mode){super(mode==="TIMEOUT"?"Codex task exceeded its time limit.":"Codex task cancelled.");this.mode=mode}static{__name(this,"CodexInterruption")}};function object(value){if(!value||typeof value!=="object"||Array.isArray(value)){throw new Error("Codex returned an invalid protocol object.")}return value}__name(object,"object");function id(value){if(typeof value!=="string"||!value){throw new Error("Codex returned an invalid thread or turn ID.")}return value}__name(id,"id");async function runCodex(params,prompt,sandbox,signal){if(signal.aborted)throw new CodexInterruption("CANCELLED");const env=sanitizeChildEnv(process.env);delete env["CODEX_THREAD_ID"];delete env["CLAUDECODE"];delete env["NODE_OPTIONS"];const child=spawn(params.spec.command,params.spec.args??["app-server","--stdio"],{cwd:params.runtimeContext.getTargetDir(),env,stdio:"pipe",detached:process.platform!=="win32",windowsHide:true});const tracked=new ProcessRegistry().reserve().attach(child,{ownsProcessTree:true});child.stderr.resume();const lines=createInterface({input:child.stdout,crlfDelay:Infinity});const pending=new Map;let sequence=0;let threadId;let turnId;let finalAnswer;let unphasedAnswer;let terminal=false;let exitDrainTimer;let fail;const failure=new Promise((_resolve,reject)=>{fail=reject});let complete;const completed=new Promise(resolve=>{complete=resolve});const write=__name(frame=>{child.stdin.write(`${JSON.stringify(frame)}
4
4
  `)},"write");const request=__name((method,parameters)=>{const requestId=++sequence;return new Promise((resolve,reject)=>{pending.set(requestId,{resolve,reject});write({id:requestId,method,params:parameters})})},"request");const abort=__name(()=>{if(threadId&&turnId){void request("turn/interrupt",{threadId,turnId}).catch(()=>{})}fail(new CodexInterruption("CANCELLED"))},"abort");signal.addEventListener("abort",abort,{once:true});child.once("error",error=>{fail(new Error(error.code==="ENOENT"?`Cannot start ${params.spec.command}. Install Codex and make it available on PATH.`:`Cannot start Codex: ${error.code??"process error"}`))});const onExit=__name((code,exitSignal)=>{exitDrainTimer=setTimeout(()=>fail(new Error(`Codex exited before completion (${exitSignal??code}).`)),1e4)},"onExit");child.once("exit",onExit);child.stdin.on("error",()=>fail(new Error("Codex input stream closed.")));child.stdout.on("error",()=>fail(new Error("Codex output stream failed.")));const associateTurn=__name(value=>{const observed=id(value);if(turnId&&observed!==turnId)throw new Error("Codex returned another turn.");turnId=observed},"associateTurn");lines.on("line",line=>{if(terminal&&pending.size===0)return;try{let frame;try{frame=object(JSON.parse(line))}catch(error){if(terminal)return;throw error}if(typeof frame["method"]!=="string"){const reply=pending.get(frame["id"]);if(!reply)return;pending.delete(frame["id"]);if(frame["error"])reply.reject(new Error("Codex rejected an app-server request."));else reply.resolve(object(frame["result"]));return}if(terminal)return;const method=frame["method"];const parameters=object(frame["params"]??{});if(frame["id"]!==void 0){let result;switch(method){case"item/commandExecution/requestApproval":case"item/fileChange/requestApproval":{const available=parameters["availableDecisions"];const decision=Array.isArray(available)?available.includes("decline")?"decline":available.includes("cancel")?"cancel":void 0:"decline";if(!decision)throw new Error("Codex offered no unattended rejection.");result={decision};break}case"item/permissions/requestApproval":result={permissions:{},scope:"turn"};break;case"item/tool/requestUserInput":result={answers:{}};break;case"mcpServer/elicitation/request":result={action:"decline",content:null,_meta:null};break;default:write({id:frame["id"],error:{code:-32601,message:"Unsupported unattended request."}});throw new Error(`Codex requested unsupported interaction: ${method}`)}write({id:frame["id"],result});return}if(!threadId||parameters["threadId"]!==threadId)return;if(method==="turn/started"||method==="turn/completed"){const turn=object(parameters["turn"]);associateTurn(turn["id"]);if(method==="turn/completed"){terminal=true;complete(turn)}}else if(method==="item/completed"){associateTurn(parameters["turnId"]);const item=object(parameters["item"]);if(item["type"]!=="agentMessage")return;if(typeof item["text"]!=="string")throw new Error("Codex returned an invalid message.");if(item["phase"]==="final_answer")finalAnswer=item["text"];else if(item["phase"]==null)unphasedAnswer=item["text"]}}catch(error){fail(error instanceof Error?error:new Error("Invalid Codex protocol frame."))}});lines.on("close",()=>{if(!terminal||pending.size>0)fail(new Error("Codex protocol closed before completion."))});const initTimer=setTimeout(()=>fail(new Error("Codex initialization timed out.")),1e4);const minutes=params.runConfig.max_time_minutes;const executionTimer=minutes===void 0?void 0:setTimeout(()=>fail(new CodexInterruption("TIMEOUT")),minutes*6e4);const run=__name(async()=>{await request("initialize",{clientInfo:{name:"qwen-code",version:"1.0.0"},capabilities:{experimentalApi:false}});write({method:"initialized"});const started=await request("thread/start",{cwd:params.runtimeContext.getTargetDir(),ephemeral:true,approvalPolicy:"never",sandbox});const thread=object(started["thread"]);threadId=id(thread["id"]);if(thread["ephemeral"]!==true)throw new Error("Codex did not create an ephemeral thread.");clearTimeout(initTimer);const startedTurn=await request("turn/start",{threadId,input:[{type:"text",text:prompt,text_elements:[]}]});associateTurn(object(startedTurn["turn"])["id"]);const turn=await completed;if(turn["status"]!=="completed")throw new Error(`Codex turn ended with status ${String(turn["status"])}.`);const answer=finalAnswer??unphasedAnswer;if(!answer?.trim())throw new Error("Codex completed without a final answer.");return answer},"run");let completedAnswer;let interruption;try{completedAnswer=await Promise.race([run(),failure]);return completedAnswer}catch(error){if(error instanceof CodexInterruption)interruption=error;throw error}finally{clearTimeout(initTimer);clearTimeout(executionTimer);clearTimeout(exitDrainTimer);child.removeListener("exit",onExit);signal.removeEventListener("abort",abort);lines.close();for(const reply of pending.values())reply.reject(new Error("Codex connection closed."));pending.clear();await tracked.terminate().catch(error=>{const detail=error instanceof Error?error.message:String(error);if(isUnprovenExternalAgentTreeExit(error)){const diagnostic=`Codex process tree not proven gone after cleanup: ${detail}`;debugLogger.warn(diagnostic);if(params.eventEmitter?.rawListeners("error").length){params.eventEmitter.emit("error",{subagentId:params.subagentId??params.name,error:diagnostic,timestamp:Date.now()})}}else if(!isExpectedExternalAgentCleanupExit(error)){if(interruption){interruption.message+=`
5
5
 
6
6
  Codex cleanup failed: ${detail}`;throw interruption}throw new Error(`Codex cleanup failed: ${detail}`+(completedAnswer===void 0?"":`
@@ -1,3 +1,3 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{multiSessionCompatibilityError,parseChannelConfig,parseChannelWebhookConfig,parseChannelWebhookConfigLenient,parseMessageRoutingConfig,parseSessionRotationConfig,resolveEnvVars}from"./chunk-CZGETTFA.js";import"./chunk-PCBYZYVK.js";import"./chunk-HM4P6X3W.js";import{findCliEntryPath}from"./chunk-W7V6J2VV.js";import"./chunk-YUORVHMI.js";import"./chunk-WSOEJTOC.js";import"./chunk-BOFD4CN3.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-B7CXPNCV.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-BGEMWNES.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-QIJKEZZR.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-5RQRSPPD.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-7V4BAHFT.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-VTNHPXNL.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-RKPHDO42.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-OW4QBRSR.js";import"./chunk-6QLHJSVW.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-U2FJSKS3.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-XYBEQRSZ.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-7WS2EYMQ.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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{findCliEntryPath,multiSessionCompatibilityError,parseChannelConfig,parseChannelWebhookConfig,parseChannelWebhookConfigLenient,parseMessageRoutingConfig,parseSessionRotationConfig,resolveEnvVars};
3
+ import{multiSessionCompatibilityError,parseChannelConfig,parseChannelWebhookConfig,parseChannelWebhookConfigLenient,parseMessageRoutingConfig,parseSessionRotationConfig,resolveEnvVars}from"./chunk-CZGETTFA.js";import"./chunk-PCBYZYVK.js";import"./chunk-HM4P6X3W.js";import{findCliEntryPath}from"./chunk-W7V6J2VV.js";import"./chunk-YUORVHMI.js";import"./chunk-WSOEJTOC.js";import"./chunk-AVIDPC5K.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-3J2YNEHG.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-UQDPWI7D.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-IYVNCBMS.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-T5S3MJIK.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-LBWBGFHD.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-3TBFTELA.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-LDXZT3SG.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-6UZ65Z2P.js";import"./chunk-6PWOLWTH.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-RHEMFKMX.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-DIHJELGW.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-PWHD4NK3.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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{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-PECV2VVZ.js";import"./chunk-EVBKKQ7Y.js";import"./chunk-4TZUKLPC.js";import"./chunk-H45OX4VY.js";import"./chunk-MWABT6CH.js";import"./chunk-BOFD4CN3.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-B7CXPNCV.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-BGEMWNES.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-QIJKEZZR.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-5RQRSPPD.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-7V4BAHFT.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-VTNHPXNL.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-RKPHDO42.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-OW4QBRSR.js";import"./chunk-6QLHJSVW.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-U2FJSKS3.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-XYBEQRSZ.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-7WS2EYMQ.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-SLPJ4OII.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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};
3
+ import{collectContextData,contextCommand,formatContextUsageText}from"./chunk-GI6T3RBV.js";import"./chunk-EVBKKQ7Y.js";import"./chunk-4TZUKLPC.js";import"./chunk-H45OX4VY.js";import"./chunk-MWABT6CH.js";import"./chunk-AVIDPC5K.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-3J2YNEHG.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-UQDPWI7D.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-IYVNCBMS.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-T5S3MJIK.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-LBWBGFHD.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-3TBFTELA.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-LDXZT3SG.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-6UZ65Z2P.js";import"./chunk-6PWOLWTH.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-RHEMFKMX.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-DIHJELGW.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-PWHD4NK3.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-SLPJ4OII.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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-BOFD4CN3.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-B7CXPNCV.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-BGEMWNES.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-QIJKEZZR.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-5RQRSPPD.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-7V4BAHFT.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-VTNHPXNL.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-RKPHDO42.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import{readCronTasks}from"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import{DEFAULT_OTLP_ENDPOINT,DEFAULT_TELEMETRY_TARGET,initializeDaemonMetrics,recordDaemonCancel,recordDaemonChannelLifecycle,recordDaemonPipeMessage,recordDaemonPromptDuration,recordDaemonPromptQueueWait,recordDaemonSessionLifecycle,registerDaemonEventLoopLagGauge,registerDaemonGaugeCallbacks,resolveTelemetrySettings,startEventLoopLagMonitor}from"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-OW4QBRSR.js";import"./chunk-6QLHJSVW.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-U2FJSKS3.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import{applyProviderInstallPlan,buildInstallPlan,findProviderById,getDefaultModelIds,getModelsForProviderProtocol,resolveBaseUrl}from"./chunk-XYBEQRSZ.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import{createDaemonBridgeTelemetry,emitDaemonLog,hashDaemonWorkspace}from"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-7WS2EYMQ.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import{forceFlushMetrics,initializeTelemetry,shutdownTelemetry}from"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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};
3
+ import"./chunk-AVIDPC5K.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-3J2YNEHG.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-UQDPWI7D.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-IYVNCBMS.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-T5S3MJIK.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-LBWBGFHD.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-3TBFTELA.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import"./chunk-LDXZT3SG.js";import"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import{readCronTasks}from"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import{DEFAULT_OTLP_ENDPOINT,DEFAULT_TELEMETRY_TARGET,initializeDaemonMetrics,recordDaemonCancel,recordDaemonChannelLifecycle,recordDaemonPipeMessage,recordDaemonPromptDuration,recordDaemonPromptQueueWait,recordDaemonSessionLifecycle,registerDaemonEventLoopLagGauge,registerDaemonGaugeCallbacks,resolveTelemetrySettings,startEventLoopLagMonitor}from"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-6UZ65Z2P.js";import"./chunk-6PWOLWTH.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-RHEMFKMX.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import{applyProviderInstallPlan,buildInstallPlan,findProviderById,getDefaultModelIds,getModelsForProviderProtocol,resolveBaseUrl}from"./chunk-DIHJELGW.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import{createDaemonBridgeTelemetry,emitDaemonLog,hashDaemonWorkspace}from"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-PWHD4NK3.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import{forceFlushMetrics,initializeTelemetry,shutdownTelemetry}from"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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-SPWDYRDH.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-BOFD4CN3.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-B7CXPNCV.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-BGEMWNES.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-QIJKEZZR.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-5RQRSPPD.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-7V4BAHFT.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-VTNHPXNL.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import{SessionService}from"./chunk-RKPHDO42.js";import{stripTerminalControlSequences}from"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-OW4QBRSR.js";import"./chunk-6QLHJSVW.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-U2FJSKS3.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-XYBEQRSZ.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-7WS2EYMQ.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import{writeStderrLine}from"./chunk-SLPJ4OII.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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 &quot;${escapeXml(modelLabel)}&quot; ${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-S2OOQRLJ.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-AVIDPC5K.js";import"./chunk-QS2ZMQIS.js";import"./chunk-S7IKHQ6I.js";import"./chunk-XXAGVL2C.js";import"./chunk-MD3ZEOBX.js";import"./chunk-S6JEITQQ.js";import"./chunk-3J2YNEHG.js";import"./chunk-ZZT52P2Q.js";import"./chunk-2YV5ULA6.js";import"./chunk-UQDPWI7D.js";import"./chunk-46VUDNCL.js";import"./chunk-MKH3EH7O.js";import"./chunk-IYVNCBMS.js";import"./chunk-QKRPK7JM.js";import"./chunk-ZHHFNZ5J.js";import"./chunk-ERMPIC3B.js";import"./chunk-NZFR5IY7.js";import"./chunk-T5S3MJIK.js";import"./chunk-HASLQZ47.js";import"./chunk-LL42CQPA.js";import"./chunk-LBWBGFHD.js";import"./chunk-HRWRESBY.js";import"./chunk-RKDS7A4H.js";import"./chunk-3TBFTELA.js";import"./chunk-IV3HAIUN.js";import"./chunk-UYYQB2TU.js";import"./chunk-DECUAM3U.js";import"./chunk-GBFZYVZ4.js";import"./chunk-YFTVFH2A.js";import"./chunk-ZBHL2CXR.js";import"./chunk-NIOS3B3V.js";import{SessionService}from"./chunk-LDXZT3SG.js";import{stripTerminalControlSequences}from"./chunk-R2EHHA2C.js";import"./chunk-ZLZF2ZDD.js";import"./chunk-JUPGJYC2.js";import"./chunk-YK7NDQKM.js";import"./chunk-DD4SV4AJ.js";import"./chunk-OGI5HG6N.js";import"./chunk-T7CHK6C2.js";import"./chunk-VZDZ34KK.js";import"./chunk-PT7NZBDY.js";import"./chunk-TWP72VRH.js";import"./chunk-XKVETIZH.js";import"./chunk-PHIPLV2I.js";import"./chunk-WK2IBT6D.js";import"./chunk-UYEWRLGD.js";import"./chunk-LLX4BCWK.js";import"./chunk-QXQGUM3Y.js";import"./chunk-AG3SSCAF.js";import"./chunk-BMSATZXW.js";import"./chunk-57RLZJ6C.js";import"./chunk-EOMQENJY.js";import"./chunk-QVPT37XZ.js";import"./chunk-VMQO3VPA.js";import"./chunk-GWYQTKSR.js";import"./chunk-XQJOZDV7.js";import"./chunk-CV2UAEZA.js";import"./chunk-GNQGC2DJ.js";import"./chunk-F63ESLTI.js";import"./chunk-KLC3OD2M.js";import"./chunk-K6EQXZMK.js";import"./chunk-BG67XABA.js";import"./chunk-BEKROCWN.js";import"./chunk-BYU42MLK.js";import"./chunk-JWQXU3SR.js";import"./chunk-5LZ2DPLH.js";import"./chunk-JVJS2YFU.js";import"./chunk-G5PYYZMM.js";import"./chunk-D7XCQWP2.js";import"./chunk-OBOU4ZZM.js";import"./chunk-4VUT7DCY.js";import"./chunk-MPHSE7M4.js";import"./chunk-FQQMMFT6.js";import"./chunk-JZK2WGXA.js";import"./chunk-BQTFBDPK.js";import"./chunk-PPHCG6Q5.js";import"./chunk-JKXBHBE3.js";import"./chunk-6UZ65Z2P.js";import"./chunk-6PWOLWTH.js";import"./chunk-S2ZKZXHX.js";import"./chunk-PXXU2KWH.js";import"./chunk-UGFTA2VG.js";import"./chunk-EBMCWXGZ.js";import"./chunk-JGOAQ5NN.js";import"./chunk-NU3X6WNP.js";import"./chunk-4ZRCV3JY.js";import"./chunk-3X7DP5W3.js";import"./chunk-YGLM5XPP.js";import"./chunk-WGNF7FPC.js";import"./chunk-4NPYOXJO.js";import"./chunk-MWGB5RCF.js";import"./chunk-XWEXQT3X.js";import"./chunk-NTRFETZB.js";import"./chunk-TL3SF2GA.js";import"./chunk-YIW3H46P.js";import"./chunk-7UK4WJWS.js";import"./chunk-4GP3PH7Z.js";import"./chunk-LFKUPU57.js";import"./chunk-T2F7KYYR.js";import"./chunk-SW54YEPK.js";import"./chunk-RHEMFKMX.js";import"./chunk-7J2TOJMG.js";import"./chunk-AGEDDL7Z.js";import"./chunk-2NJJHZ52.js";import"./chunk-I5TFTKQS.js";import"./chunk-3YWXKSOI.js";import"./chunk-OW25BC3M.js";import"./chunk-2PMQL4KE.js";import"./chunk-VFB6Q74I.js";import"./chunk-V3XYE727.js";import"./chunk-S6RXVOY6.js";import"./chunk-BRPC43OM.js";import"./chunk-DIHJELGW.js";import"./chunk-WZDBBDRD.js";import"./chunk-476F6QIM.js";import"./chunk-4R67LXKL.js";import"./chunk-VTDSLBET.js";import"./chunk-DR3HLUJ5.js";import"./chunk-UQFTXKEB.js";import"./chunk-HDGTWJ24.js";import"./chunk-W5NWIGKO.js";import"./chunk-6C4YRBLR.js";import"./chunk-JU2HHQR5.js";import"./chunk-37KFLBKZ.js";import"./chunk-PWOQASXT.js";import"./chunk-Z6AR5XE5.js";import"./chunk-7U7CWMP7.js";import"./chunk-77V43YOE.js";import"./chunk-SLD7H2FA.js";import"./chunk-7DOOXUDG.js";import"./chunk-P3RLMP7L.js";import"./chunk-R54OXALA.js";import"./chunk-PWHD4NK3.js";import"./chunk-TAAJ7TDB.js";import"./chunk-4ZBZL23U.js";import"./chunk-ZZZAYAJW.js";import"./chunk-XMANRGPK.js";import"./chunk-XHV5HLJS.js";import"./chunk-KQX4H2D3.js";import"./chunk-BWU6AH5O.js";import"./chunk-HTW7PYHK.js";import"./chunk-AMGUAA4G.js";import"./chunk-BMHYEQTI.js";import"./chunk-GU22I6TY.js";import"./chunk-YEYW7PPR.js";import{writeStderrLine}from"./chunk-SLPJ4OII.js";import"./chunk-4YLXNRRH.js";import"./chunk-65UCR6OZ.js";import"./chunk-CN2TQ3PU.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-I6S7NGX3.js";import"./chunk-SVAPAMMG.js";import"./chunk-3KUHQGOS.js";import"./chunk-2UNFJQ2D.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 &quot;${escapeXml(modelLabel)}&quot; ${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