gerege-cli 0.26.5 → 0.26.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +8 -8
  2. package/chunks/{MaxSizedBox-VMVLMS4X.js → MaxSizedBox-QCIXIS4P.js} +1 -1
  3. package/chunks/{StandaloneSessionPicker-UNORCVYY.js → StandaloneSessionPicker-BAFAIRT7.js} +1 -1
  4. package/chunks/{acp-subagent-executor-623ZUTJT.js → acp-subagent-executor-TPVXURLW.js} +1 -1
  5. package/chunks/{acpAgent-MTTDTK2C.js → acpAgent-67UN66PB.js} +3 -3
  6. package/chunks/{advisor-ANUGICJ5.js → advisor-SAXMI4QZ.js} +1 -1
  7. package/chunks/{agent-GNCQDICJ.js → agent-KV7BXY6C.js} +1 -1
  8. package/chunks/{agent-headless-OPUXAXQM.js → agent-headless-FQX3JGG6.js} +1 -1
  9. package/chunks/{agent-host-client-K6GRPTFD.js → agent-host-client-L5EHC4AC.js} +1 -1
  10. package/chunks/{agent-host-connections-MF3YBZU2.js → agent-host-connections-EDBMCVQF.js} +1 -1
  11. package/chunks/{anthropicContentGenerator-OK4PFE5Y.js → anthropicContentGenerator-V7TX2NXP.js} +1 -1
  12. package/chunks/{autofix-pr-MABTGEHZ.js → autofix-pr-WP34NYHL.js} +1 -1
  13. package/chunks/{batch-V2NJT3M5.js → batch-XFVQ4BLM.js} +1 -1
  14. package/chunks/{bridge-BJQ627CX.js → bridge-AE7AFEXB.js} +1 -1
  15. package/chunks/{channel-settings-store-4JMCI4UR.js → channel-settings-store-X63P5OVT.js} +1 -1
  16. package/chunks/{chunk-ZN57TOVA.js → chunk-2DU2WMTL.js} +1 -1
  17. package/chunks/{chunk-Z5XENA4A.js → chunk-2JGTWRZJ.js} +8 -7
  18. package/chunks/{chunk-MTW3A3KT.js → chunk-2LWJGXTW.js} +1 -1
  19. package/chunks/{chunk-OCBJCZC2.js → chunk-2N3NBTYJ.js} +1 -1
  20. package/chunks/{chunk-WI4UMN3Q.js → chunk-2TAJ5STJ.js} +1 -1
  21. package/chunks/{chunk-EIILQ6KT.js → chunk-32XHDDIA.js} +1 -1
  22. package/chunks/{chunk-FNXO5KWB.js → chunk-34HC2AXI.js} +2 -2
  23. package/chunks/{chunk-2X3UF2CF.js → chunk-3W32X2DH.js} +1 -1
  24. package/chunks/{chunk-CKZRJP4F.js → chunk-4ME3BUJK.js} +1 -1
  25. package/chunks/{chunk-NVSKOSFG.js → chunk-4NDJKNN6.js} +1 -1
  26. package/chunks/{chunk-BRPJ5EHA.js → chunk-5EXL4TKQ.js} +1 -1
  27. package/chunks/{chunk-3XBJYUWP.js → chunk-65ME4BOH.js} +1 -1
  28. package/chunks/{chunk-TQTIEK2W.js → chunk-7453BHJO.js} +1 -1
  29. package/chunks/{chunk-HSYBIGMS.js → chunk-76FSYQTG.js} +1 -1
  30. package/chunks/{chunk-FNB3DPQZ.js → chunk-7RNOS7R4.js} +1 -1
  31. package/chunks/{chunk-H57IX45A.js → chunk-AEKEZRIU.js} +1 -1
  32. package/chunks/{chunk-CXGGC4NO.js → chunk-AEZYXPFS.js} +1 -1
  33. package/chunks/{chunk-NGOIJH7K.js → chunk-AFO5ER23.js} +1 -1
  34. package/chunks/{chunk-UY2ET2AL.js → chunk-AYVCT5FF.js} +1 -1
  35. package/chunks/{chunk-QOYRDEXR.js → chunk-B37YY4XU.js} +1 -1
  36. package/chunks/{chunk-IDUGQMTP.js → chunk-BAUMVH4Q.js} +1 -1
  37. package/chunks/{chunk-CAPG7UVH.js → chunk-BCI62WSL.js} +1 -1
  38. package/chunks/{chunk-USJFJZ23.js → chunk-BGELKSQ4.js} +1 -1
  39. package/chunks/{chunk-6X73W4TL.js → chunk-BHIDG6VZ.js} +1 -1
  40. package/chunks/{chunk-26ISBUM7.js → chunk-BPFFRPWE.js} +6 -6
  41. package/chunks/{chunk-YGHM5CDT.js → chunk-BQZF3UKI.js} +1 -1
  42. package/chunks/{chunk-3NQESE5K.js → chunk-CBE6ZIHU.js} +1 -1
  43. package/chunks/{chunk-DEMXCA3K.js → chunk-CF6SZJNP.js} +1 -1
  44. package/chunks/{chunk-2VCDJ6UF.js → chunk-CGDFZEER.js} +1 -1
  45. package/chunks/{chunk-3WQPUP5U.js → chunk-CUP2TNJK.js} +1 -1
  46. package/chunks/{chunk-2IGE2K5V.js → chunk-DA6LOBSB.js} +1 -1
  47. package/chunks/{chunk-HFV6CQWE.js → chunk-EFIRES46.js} +1 -1
  48. package/chunks/{chunk-E5YRAQXM.js → chunk-EKRUF347.js} +1 -1
  49. package/chunks/{chunk-KN27BFXM.js → chunk-ELDZ4MNL.js} +1 -1
  50. package/chunks/{chunk-ADTFKUH2.js → chunk-ET5M5WFN.js} +1 -1
  51. package/chunks/{chunk-IBYFSHBB.js → chunk-EXIFPXMB.js} +1 -1
  52. package/chunks/{chunk-IA4K4PGK.js → chunk-EYPLBTMI.js} +1 -1
  53. package/chunks/{chunk-DTTC4ZKY.js → chunk-FEP6W4NJ.js} +1 -1
  54. package/chunks/{chunk-FHBGTZ4K.js → chunk-FKL3V5BO.js} +1 -1
  55. package/chunks/{chunk-Q5E5SOY2.js → chunk-FKZ46GKL.js} +1 -1
  56. package/chunks/{chunk-OPYGNTZP.js → chunk-FYBJGRX7.js} +1 -1
  57. package/chunks/{chunk-FPZPCZFS.js → chunk-G6DALGGS.js} +1 -1
  58. package/chunks/{chunk-3Y6LSWEW.js → chunk-GBSRWT7J.js} +1 -1
  59. package/chunks/{chunk-SMYBY353.js → chunk-GHIFIXNX.js} +1 -1
  60. package/chunks/{chunk-DE53B2R7.js → chunk-GRAECADD.js} +1 -1
  61. package/chunks/{chunk-UJYOILZR.js → chunk-GSPGIGO5.js} +3 -3
  62. package/chunks/{chunk-5UZT4SXG.js → chunk-H3IR3GIE.js} +1 -1
  63. package/chunks/{chunk-ADZI3OFT.js → chunk-HOG66S6K.js} +1 -1
  64. package/chunks/{chunk-WB34KMOT.js → chunk-HTAUIJB4.js} +1 -1
  65. package/chunks/{chunk-MPAR4JBP.js → chunk-I6PUY2T3.js} +1 -1
  66. package/chunks/{chunk-5ZQWQ3RK.js → chunk-IZ5MWA6E.js} +1 -1
  67. package/chunks/{chunk-7IERHQ63.js → chunk-JEDL4IKF.js} +1 -1
  68. package/chunks/{chunk-RVJJFDF3.js → chunk-JH3V5SPA.js} +1 -1
  69. package/chunks/{chunk-SELRSZFK.js → chunk-JRTOPEM3.js} +1 -1
  70. package/chunks/{chunk-SQQORHMS.js → chunk-JWNKPINR.js} +1 -1
  71. package/chunks/{chunk-55RVKT4O.js → chunk-KJGRCIVY.js} +1 -1
  72. package/chunks/{chunk-GSOBASYW.js → chunk-KZNYALFU.js} +1 -1
  73. package/chunks/{chunk-FDUXQAGW.js → chunk-LBLLWAKK.js} +1 -1
  74. package/chunks/{chunk-ZSVSRF4C.js → chunk-LT3J74BZ.js} +1 -1
  75. package/chunks/{chunk-AMTFJVDD.js → chunk-LTE4N6L3.js} +1 -1
  76. package/chunks/{chunk-F26LTWDZ.js → chunk-M6KB5RVD.js} +1 -1
  77. package/chunks/{chunk-2PY7R7GG.js → chunk-MGATL4OA.js} +1 -1
  78. package/chunks/{chunk-KGJ47CI5.js → chunk-MPVQDYPH.js} +1 -1
  79. package/chunks/{chunk-BBOJUFMW.js → chunk-MTDBCIDA.js} +1 -1
  80. package/chunks/{chunk-ZYTG6R7S.js → chunk-MYV7GY3H.js} +1 -1
  81. package/chunks/{chunk-4GC5HJZO.js → chunk-N7PWZBXV.js} +1 -1
  82. package/chunks/{chunk-2NOMOJWE.js → chunk-NA4ZF2FE.js} +2 -2
  83. package/chunks/{chunk-7MTBINFX.js → chunk-NEKPQLFY.js} +2 -2
  84. package/chunks/{chunk-ABJGFEES.js → chunk-NO7VTKRL.js} +1 -1
  85. package/chunks/{chunk-OHXQYU6S.js → chunk-NONBHCXP.js} +1 -1
  86. package/chunks/{chunk-ZOBX6C7E.js → chunk-NVOI6UDQ.js} +1 -1
  87. package/chunks/{chunk-YLAI26PX.js → chunk-OJ4K62S2.js} +1 -1
  88. package/chunks/{chunk-CCOUFBOY.js → chunk-OK7LBM5G.js} +1 -1
  89. package/chunks/{chunk-POA4NX4N.js → chunk-OOJ2AQT3.js} +1 -1
  90. package/chunks/{chunk-5WLKN3GD.js → chunk-OU7CEG7Q.js} +1 -1
  91. package/chunks/{chunk-4TYTJQWR.js → chunk-P3JEEDQZ.js} +1 -1
  92. package/chunks/{chunk-AQWHCRKY.js → chunk-P62S5JGM.js} +1 -1
  93. package/chunks/{chunk-B6D3KTUK.js → chunk-QDCUR3JB.js} +1 -1
  94. package/chunks/{chunk-XFLLE2J3.js → chunk-RSLTOIG5.js} +2 -2
  95. package/chunks/{chunk-ISGF3BVD.js → chunk-RXN7DUMP.js} +2 -2
  96. package/chunks/{chunk-PN62SUYK.js → chunk-SKGJ26HQ.js} +1 -1
  97. package/chunks/{chunk-62NLMVVT.js → chunk-SP6CQ3MO.js} +1 -1
  98. package/chunks/{chunk-4EQWJTJR.js → chunk-T2YTHAJW.js} +1 -1
  99. package/chunks/{chunk-NO26JN24.js → chunk-T53VMDXH.js} +1 -1
  100. package/chunks/{chunk-X4BFEDWU.js → chunk-T5DKF33F.js} +1 -1
  101. package/chunks/{chunk-KKBOCRPF.js → chunk-TB4AUC2L.js} +1 -1
  102. package/chunks/{chunk-Q6QS5JTK.js → chunk-U3Q72OGV.js} +1 -1
  103. package/chunks/{chunk-FLJLUMQF.js → chunk-UKLXKJKL.js} +1 -1
  104. package/chunks/{chunk-IH2PFVWO.js → chunk-VD2GSW64.js} +1 -1
  105. package/chunks/{chunk-VDRE7U3P.js → chunk-VRKYBH5G.js} +5 -5
  106. package/chunks/{chunk-MOPJNP5I.js → chunk-W2RQIZ6B.js} +1 -1
  107. package/chunks/{chunk-2LLPGSUK.js → chunk-W5Z4BWWA.js} +1 -1
  108. package/chunks/{chunk-CNFA5UUM.js → chunk-W66WWTOP.js} +1 -1
  109. package/chunks/{chunk-C56YJIEI.js → chunk-WGFX3EL3.js} +1 -1
  110. package/chunks/{chunk-6NI33TVK.js → chunk-X2TY7VTY.js} +1 -1
  111. package/chunks/{chunk-FIM7MM25.js → chunk-XISR37DQ.js} +1 -1
  112. package/chunks/{chunk-KDYUZBZC.js → chunk-YH2XRWRF.js} +1 -1
  113. package/chunks/{chunk-UBXLQ6TP.js → chunk-ZENMAISJ.js} +1 -1
  114. package/chunks/{codex-subagent-executor-EK3A2WBH.js → codex-subagent-executor-OLMGVPVS.js} +1 -1
  115. package/chunks/{config-utils-DLOK7OLM.js → config-utils-OWY5G5Y2.js} +1 -1
  116. package/chunks/{contextCommand-AVCUCHQC.js → contextCommand-IXFUZH65.js} +1 -1
  117. package/chunks/{core-runtime-QSS4ZTG6.js → core-runtime-O4LC4NY3.js} +1 -1
  118. package/chunks/{create-sub-session-PNF7QDKC.js → create-sub-session-6F7C3TMT.js} +1 -1
  119. package/chunks/{cron-create-C6JOFIU4.js → cron-create-2422NBSJ.js} +1 -1
  120. package/chunks/{daemon-git-worktree-guard-5XZAZ7D2.js → daemon-git-worktree-guard-EWPQA6NO.js} +1 -1
  121. package/chunks/{daemon-status-provider-MRNELSNJ.js → daemon-status-provider-FAHOXNFW.js} +1 -1
  122. package/chunks/{daemon-trust-policy-26CMW3WY.js → daemon-trust-policy-L3DM6AI5.js} +1 -1
  123. package/chunks/{daemon-trust-policy-monitor-3DWO6NQY.js → daemon-trust-policy-monitor-HNPY5KJ4.js} +1 -1
  124. package/chunks/{deferred-core-runtime-DEC3N46T.js → deferred-core-runtime-JF42NQJK.js} +1 -1
  125. package/chunks/{edit-3HMQPCHN.js → edit-E5LEI2LL.js} +1 -1
  126. package/chunks/{enterPlanMode-QHJF4JXZ.js → enterPlanMode-3COTUV5V.js} +1 -1
  127. package/chunks/{environment-NGIBJWOT.js → environment-XBBIB3VA.js} +1 -1
  128. package/chunks/{errors-MSTGCVGJ.js → errors-LNMQ7TUK.js} +1 -1
  129. package/chunks/{execution-tool-VR4TGOI4.js → execution-tool-QDDKJD2K.js} +1 -1
  130. package/chunks/{execution-worker-EJH7HIE2.js → execution-worker-TXGZRZXE.js} +1 -1
  131. package/chunks/{exitPlanMode-P25OHQJ6.js → exitPlanMode-Z7QEMWPE.js} +1 -1
  132. package/chunks/{fast-path-II433ZDP.js → fast-path-M6K2RACY.js} +1 -1
  133. package/chunks/{glob-4Q6DCT3F.js → glob-N2QT4U7U.js} +1 -1
  134. package/chunks/{goal-tools-FFMAJW6V.js → goal-tools-CUSQD3DG.js} +1 -1
  135. package/chunks/{handleAutoUpdate-QNM26NZK.js → handleAutoUpdate-QF2YQHF6.js} +1 -1
  136. package/chunks/{i18n-L5URVOBB.js → i18n-AGOA6MUI.js} +1 -1
  137. package/chunks/{initializer-NQ2NECYP.js → initializer-FRKYDUSX.js} +1 -1
  138. package/chunks/{installationInfo-BCTXASUM.js → installationInfo-OKA4WXAS.js} +1 -1
  139. package/chunks/{interactive-mod-session-PPTBI37E.js → interactive-mod-session-MWYN5IFK.js} +1 -1
  140. package/chunks/{list-7TE5TUZJ.js → list-DE7VUIR2.js} +1 -1
  141. package/chunks/{llm-BWWKUBBZ.js → llm-N3JGJHYC.js} +4 -4
  142. package/chunks/{llm-content-generator-QOTGPBYC.js → llm-content-generator-VMUBA7OJ.js} +1 -1
  143. package/chunks/{loadedSettingsAdapter-THAGI5M2.js → loadedSettingsAdapter-5C36OZ7N.js} +1 -1
  144. package/chunks/{local-7BTAGV4J.js → local-BE624O3A.js} +1 -1
  145. package/chunks/{local-execution-environment-S3OR4KSC.js → local-execution-environment-OPGM7Y6L.js} +1 -1
  146. package/chunks/{loggingContentGenerator-AXJ5E5RS.js → loggingContentGenerator-2MHAI6JR.js} +1 -1
  147. package/chunks/{loop-wakeup-AJTLMLRX.js → loop-wakeup-BDLATBXH.js} +1 -1
  148. package/chunks/{manage-memory-JHTUVMDJ.js → manage-memory-BBCEIIWB.js} +1 -1
  149. package/chunks/{managed-execution-engine-U6GNJ4U4.js → managed-execution-engine-SRFALTCX.js} +1 -1
  150. package/chunks/{managed-local-serve-P4ZXVRBU.js → managed-local-serve-ICNAS3E6.js} +1 -1
  151. package/chunks/{managed-npm-update-UDUILNR5.js → managed-npm-update-CTL6LH5Z.js} +1 -1
  152. package/chunks/{managed-runtime-attestation-worker-P34ZBNRG.js → managed-runtime-attestation-worker-ZRDWKXCI.js} +1 -1
  153. package/chunks/{managed-runtime-bootstrap-CLMYNPH5.js → managed-runtime-bootstrap-6NTGZXQL.js} +1 -1
  154. package/chunks/{managed-runtime-session-worker-7H7AZJBV.js → managed-runtime-session-worker-RKQBBFR6.js} +1 -1
  155. package/chunks/{managed-runtime-ssh-worker-5KEMC7FD.js → managed-runtime-ssh-worker-FCGV6FSW.js} +1 -1
  156. package/chunks/{managed-session-authority-CFUZ45HT.js → managed-session-authority-C7IW6TJX.js} +1 -1
  157. package/chunks/{mcp-YMG4RVMC.js → mcp-VC4CJPE5.js} +1 -1
  158. package/chunks/{memory-7STURUXK.js → memory-S6OJA3ZD.js} +1 -1
  159. package/chunks/mn-JMS6SWTO.js +8 -0
  160. package/chunks/{model-call-collection-WBWTO3EG.js → model-call-collection-MJZWRQSU.js} +1 -1
  161. package/chunks/{model-configuration-6KCZZSZD.js → model-configuration-SKU6L3QI.js} +1 -1
  162. package/chunks/{modelConfigUtils-Z2EKFSPN.js → modelConfigUtils-TJCB6NXT.js} +1 -1
  163. package/chunks/{monitor-U5E33JO6.js → monitor-M3PNLCYP.js} +1 -1
  164. package/chunks/{nonInteractiveCli-BVCL5I5R.js → nonInteractiveCli-MR7JLAWU.js} +1 -1
  165. package/chunks/{nonInteractiveToolExecutor-B4EUOMYF.js → nonInteractiveToolExecutor-YKA6JMTY.js} +1 -1
  166. package/chunks/{notebook-edit-MXKD5J2C.js → notebook-edit-ENTFB5D7.js} +1 -1
  167. package/chunks/{omni-I5YECZBW.js → omni-6YBX4R6K.js} +1 -1
  168. package/chunks/{openaiContentGenerator-Q5SINFJJ.js → openaiContentGenerator-XRXX33FY.js} +1 -1
  169. package/chunks/{openaiResponsesContentGenerator-R3XCZLZY.js → openaiResponsesContentGenerator-L6ONEHMR.js} +1 -1
  170. package/chunks/{pidfile-UOGUNUTK.js → pidfile-XR4JF2Z6.js} +1 -1
  171. package/chunks/{processUtils-QGQGZHBA.js → processUtils-GQYNJRBJ.js} +1 -1
  172. package/chunks/{prompt-terminal-ledger-L57JMVSR.js → prompt-terminal-ledger-7BM7YDLG.js} +1 -1
  173. package/chunks/{qwenContentGenerator-UKZ237LC.js → qwenContentGenerator-QSA32XEL.js} +1 -1
  174. package/chunks/{reactive-degrade-3OM3HWVA.js → reactive-degrade-TFNBAAPZ.js} +1 -1
  175. package/chunks/{read-file-63ZLWMOW.js → read-file-VD7OFO2E.js} +1 -1
  176. package/chunks/{resumeHistoryUtils-R5YQS4YQ.js → resumeHistoryUtils-2B4KPI7G.js} +1 -1
  177. package/chunks/{review-AT6OWVDO.js → review-C365WGCW.js} +1 -1
  178. package/chunks/{ripGrep-7KBZGTPV.js → ripGrep-D7WPMBXR.js} +1 -1
  179. package/chunks/{run-qwen-serve-CLBG7W6F.js → run-qwen-serve-NZWQHWQA.js} +1 -1
  180. package/chunks/{runtime-R3QIGB7U.js → runtime-J6SPBSCS.js} +1 -1
  181. package/chunks/{sandboxConfig-PM3ZRQYV.js → sandboxConfig-QS2XBPZG.js} +1 -1
  182. package/chunks/{scheduled-tasks-PUMNN5XV.js → scheduled-tasks-YNNIOOPM.js} +1 -1
  183. package/chunks/{scheduler-KTPM226B.js → scheduler-KCMSPHON.js} +1 -1
  184. package/chunks/{search-memory-7I5MGDNV.js → search-memory-EUBJ7IAV.js} +1 -1
  185. package/chunks/{send-message-J526AEBI.js → send-message-CWWZUPSK.js} +1 -1
  186. package/chunks/{serve-KLTMPK4W.js → serve-4CB4BWJ5.js} +1 -1
  187. package/chunks/{server-VLRNY6KG.js → server-JNANUIGC.js} +3 -3
  188. package/chunks/{session-2EB57NXY.js → session-3LQLXPUA.js} +1 -1
  189. package/chunks/{session-attachments-root-I7TESMWL.js → session-attachments-root-BWIVWFHJ.js} +1 -1
  190. package/chunks/{session-execution-engine-selector-5FAMSPSO.js → session-execution-engine-selector-5OLRX57L.js} +1 -1
  191. package/chunks/{session-pr-refresh-JCPVQPNJ.js → session-pr-refresh-RLF3EXS3.js} +1 -1
  192. package/chunks/{sessionService-YRW2IFPR.js → sessionService-U7ACD2HP.js} +1 -1
  193. package/chunks/{settings-KO2Q47JP.js → settings-FTGWYTUH.js} +1 -1
  194. package/chunks/{shell-OLZVNTQZ.js → shell-E4RENYQC.js} +1 -1
  195. package/chunks/{skill-XW2AQS7M.js → skill-OLNPHRWB.js} +1 -1
  196. package/chunks/{skill-settings-TKAVQ4XP.js → skill-settings-R2BV2GEK.js} +1 -1
  197. package/chunks/{spawnChannel-MBGCTK2J.js → spawnChannel-LOPAR5T2.js} +1 -1
  198. package/chunks/{standalone-update-A3YLLIAN.js → standalone-update-IGDX2RGN.js} +1 -1
  199. package/chunks/{start-opentui-ui-G5ROAR4V.js → start-opentui-ui-33QLBNRC.js} +1 -1
  200. package/chunks/{startInteractiveUI-PZQR4U53.js → startInteractiveUI-RQKHD7MM.js} +1 -1
  201. package/chunks/{team-create-S5ZY2UMF.js → team-create-HAVKHNU5.js} +1 -1
  202. package/chunks/{team-plan-approval-KX6RXEST.js → team-plan-approval-7MCQX67C.js} +1 -1
  203. package/chunks/{terminal-image-renderer-SCJREXE6.js → terminal-image-renderer-XT5JVEO6.js} +1 -1
  204. package/chunks/{theme-manager-DZSM4EBR.js → theme-manager-DR5EYGLT.js} +1 -1
  205. package/chunks/{tool-call-UK56SWCT.js → tool-call-LZHZ5RVH.js} +1 -1
  206. package/chunks/{tool-result-media-JLLSLGFL.js → tool-result-media-XCXCF4YC.js} +1 -1
  207. package/chunks/{tool-search-OWPFLVV5.js → tool-search-K6S3ON7M.js} +1 -1
  208. package/chunks/{total-session-admission-NQU4ACKH.js → total-session-admission-LGSS2VWS.js} +1 -1
  209. package/chunks/{trustedFolders-N7GXFYSF.js → trustedFolders-IIR2UZRL.js} +1 -1
  210. package/chunks/{update-relaunch-5SPXXHM2.js → update-relaunch-WVIFX5CN.js} +1 -1
  211. package/chunks/{updateCheck-VXUIX2XG.js → updateCheck-CMEWLLZJ.js} +1 -1
  212. package/chunks/{upload-config-OWLL4SRQ.js → upload-config-TCCFCNCD.js} +1 -1
  213. package/chunks/{useAutoAcceptIndicator-OUYRR56F.js → useAutoAcceptIndicator-5RTTH3OW.js} +1 -1
  214. package/chunks/{validateNonInterActiveAuth-PSVJO5HK.js → validateNonInterActiveAuth-AO336KDX.js} +1 -1
  215. package/chunks/{version-C26S7UAW.js → version-JYWKKMNP.js} +1 -1
  216. package/chunks/{web-fetch-AYOYV7R4.js → web-fetch-HWTAWXFM.js} +1 -1
  217. package/chunks/{web-search-DAREKD3Z.js → web-search-HAI5LW3G.js} +1 -1
  218. package/chunks/{workflow-WBGPKVO6.js → workflow-BZ2YFGF6.js} +1 -1
  219. package/chunks/{workflow-ancestor-trust-GEEB53TB.js → workflow-ancestor-trust-26TFXFPO.js} +1 -1
  220. package/chunks/{workspace-agents-IMAQME4W.js → workspace-agents-DLI4JQJZ.js} +1 -1
  221. package/chunks/{workspace-providers-status-VALHVEU2.js → workspace-providers-status-64C7DJZU.js} +1 -1
  222. package/chunks/{workspace-recovery-worker-AIAVRDGU.js → workspace-recovery-worker-IFRT3KKP.js} +1 -1
  223. package/chunks/{workspace-registration-store-FXEGZG3L.js → workspace-registration-store-MYKJM2SK.js} +1 -1
  224. package/chunks/{workspace-registry-GYFFHWCD.js → workspace-registry-GZJRONAY.js} +1 -1
  225. package/chunks/{workspace-runtime-coordinator-VZ462TLU.js → workspace-runtime-coordinator-44KW6HSN.js} +1 -1
  226. package/chunks/{workspace-service-5DIZM4IZ.js → workspace-service-YHTSZYYD.js} +1 -1
  227. package/chunks/{workspace-skills-status-DOOBVL5N.js → workspace-skills-status-NEB62X24.js} +1 -1
  228. package/chunks/{workspace-trust-reconciler-LOICVUVW.js → workspace-trust-reconciler-HZLOOZWM.js} +1 -1
  229. package/chunks/{write-file-EJNMAHQD.js → write-file-HD5LHXGL.js} +1 -1
  230. package/chunks/{zoom-image-S3OARMYP.js → zoom-image-W4BMRC5T.js} +1 -1
  231. package/cli.js +2 -2
  232. package/execution-worker.js +1 -1
  233. package/export-transcript-document.js +1 -1
  234. package/gerege.mjs +53 -15
  235. package/locales/mn.js +2702 -3774
  236. package/package.json +3 -3
  237. package/chunks/mn-YH2OTBWJ.js +0 -8
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{collectProviderModelsForProtocol}from"./chunk-AMTFJVDD.js";import{loadSettings}from"./chunk-WI4UMN3Q.js";import{t}from"./chunk-ABJGFEES.js";import{loadEnvironment}from"./chunk-KGJ47CI5.js";import{resolveModelSelectionAuthType}from"./chunk-ET2Z7ZGF.js";import{VERTEX_ADC_HINT,hasVertexProjectConfigured}from"./chunk-NGOIJH7K.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();var DEFAULT_ENV_KEYS={["openai"]:"OPENAI_API_KEY",["openai-responses"]:"OPENAI_API_KEY",["anthropic"]:"ANTHROPIC_API_KEY",["gemini"]:"GEMINI_API_KEY",["vertex-ai"]:"GOOGLE_API_KEY"};function findModelConfig(modelProviders,providerProtocol,authType,modelId,baseUrl){if(!modelProviders||!modelId){return void 0}const models=collectProviderModelsForProtocol(modelProviders,providerProtocol,authType);if(models.length===0){return void 0}if(baseUrl){return models.find(m=>m.id===modelId&&m.baseUrl===baseUrl)??models.find(m=>m.id===modelId)}return models.find(m=>m.id===modelId)}__name(findModelConfig,"findModelConfig");function resolveSelectedModel(settings,config){const modelsConfig=config?.getModelsConfig();if(modelsConfig){return{modelId:modelsConfig.getModel(),baseUrl:modelsConfig.getGenerationConfig()?.baseUrl}}return{modelId:settings.model?.name,baseUrl:settings.model?.baseUrl}}__name(resolveSelectedModel,"resolveSelectedModel");function hasEnvValue(settings,envKey){if(!envKey){return false}if(process.env[envKey]){return true}const settingsEnv=settings.env;const settingsEnvValue=settingsEnv?.[envKey];return typeof settingsEnvValue==="string"&&settingsEnvValue.trim().length>0}__name(hasEnvValue,"hasEnvValue");function hasApiKeyForAuth(authType,settings,config){const modelProviders=settings.modelProviders;const{modelId,baseUrl}=resolveSelectedModel(settings,config);const modelAuthType=!config&&(authType==="openai"||authType==="openai-responses")?resolveModelSelectionAuthType(authType,modelId,modelProviders,settings.providerProtocol,baseUrl):authType;const modelConfig=findModelConfig(modelProviders,settings.providerProtocol,modelAuthType,modelId,baseUrl);const resolvedApiKey=config?.getModelsConfig().getGenerationConfig()?.apiKey;if(resolvedApiKey){return{hasKey:true,checkedEnvKey:modelConfig?.envKey??DEFAULT_ENV_KEYS[authType],isExplicitEnvKey:!!modelConfig?.envKey}}if(modelConfig?.envKey){const hasKey=hasEnvValue(settings,modelConfig.envKey);return{hasKey,checkedEnvKey:modelConfig.envKey,isExplicitEnvKey:true}}const defaultEnvKey=DEFAULT_ENV_KEYS[authType];if(defaultEnvKey){const hasKey=hasEnvValue(settings,defaultEnvKey);if(hasKey){return{hasKey,checkedEnvKey:defaultEnvKey,isExplicitEnvKey:false}}}if(settings.security?.auth?.apiKey){return{hasKey:true,checkedEnvKey:defaultEnvKey||void 0,isExplicitEnvKey:false}}return{hasKey:false,checkedEnvKey:defaultEnvKey,isExplicitEnvKey:false}}__name(hasApiKeyForAuth,"hasApiKeyForAuth");function isVertexAdcEligible(settings,config){const{modelId,baseUrl}=resolveSelectedModel(settings,config);const modelConfig=findModelConfig(settings.modelProviders,settings.providerProtocol,"vertex-ai",modelId,baseUrl);return!modelConfig?.envKey}__name(isVertexAdcEligible,"isVertexAdcEligible");function hasVertexProject(settings){const settingsEnv=settings.env;return hasVertexProjectConfigured(key=>{const fromProcess=process.env[key];if(fromProcess!==void 0){return fromProcess}const fromSettings=settingsEnv?.[key];return typeof fromSettings==="string"?fromSettings:void 0})}__name(hasVertexProject,"hasVertexProject");function getApiKeyError(authMethod,settings,config){const{hasKey,checkedEnvKey,isExplicitEnvKey}=hasApiKeyForAuth(authMethod,settings,config);if(hasKey){return null}const envKeyHint=checkedEnvKey||DEFAULT_ENV_KEYS[authMethod];if(isExplicitEnvKey){return t("{{envKeyHint}} environment variable not found. Please set it in your .env file or environment variables.",{envKeyHint})}return t("{{envKeyHint}} environment variable not found (or set settings.security.auth.apiKey). Please set it in your .env file or environment variables.",{envKeyHint})}__name(getApiKeyError,"getApiKeyError");function validateAuthMethod(authMethod,config){const settings=loadSettings(process.cwd(),false);loadEnvironment(settings.merged);if(authMethod==="openai"||authMethod==="openai-responses"){const{hasKey,checkedEnvKey,isExplicitEnvKey}=hasApiKeyForAuth(authMethod,settings.merged,config);if(!hasKey){const envKeyHint=checkedEnvKey?`'${checkedEnvKey}'`:"'OPENAI_API_KEY'";if(isExplicitEnvKey){return t("Missing API key for OpenAI-compatible auth. Set the {{envKeyHint}} environment variable.",{envKeyHint})}return t("Missing API key for OpenAI-compatible auth. Set settings.security.auth.apiKey, or set the {{envKeyHint}} environment variable.",{envKeyHint})}return null}if(authMethod==="qwen-oauth"){return t("Qwen OAuth free tier was discontinued on 2026-04-15. Run /auth to switch to Coding Plan, OpenRouter, Fireworks AI, or another provider.")}if(authMethod==="anthropic"){const apiKeyError=getApiKeyError(authMethod,settings.merged,config);if(apiKeyError){return apiKeyError}const modelProviders=settings.merged.modelProviders;const{modelId,baseUrl}=resolveSelectedModel(settings.merged,config);const modelConfig=findModelConfig(modelProviders,settings.merged.providerProtocol,authMethod,modelId,baseUrl);if(modelConfig&&!modelConfig.baseUrl){return t("Anthropic provider missing required baseUrl in modelProviders[].baseUrl.")}if(!modelConfig&&!process.env["ANTHROPIC_BASE_URL"]){return t("ANTHROPIC_BASE_URL environment variable not found.")}return null}if(authMethod==="gemini"){const apiKeyError=getApiKeyError(authMethod,settings.merged,config);if(apiKeyError){return apiKeyError}return null}if(authMethod==="vertex-ai"){const adcEligible=isVertexAdcEligible(settings.merged,config);if(!adcEligible||!hasVertexProject(settings.merged)){const apiKeyError=getApiKeyError(authMethod,settings.merged,config);if(apiKeyError){return adcEligible?apiKeyError+VERTEX_ADC_HINT:apiKeyError}}process.env["GOOGLE_GENAI_USE_VERTEXAI"]="true";return null}return t("Invalid auth method selected.")}__name(validateAuthMethod,"validateAuthMethod");export{validateAuthMethod};
3
+ import{collectProviderModelsForProtocol}from"./chunk-LTE4N6L3.js";import{loadSettings}from"./chunk-2TAJ5STJ.js";import{t}from"./chunk-NO7VTKRL.js";import{loadEnvironment}from"./chunk-MPVQDYPH.js";import{resolveModelSelectionAuthType}from"./chunk-ET2Z7ZGF.js";import{VERTEX_ADC_HINT,hasVertexProjectConfigured}from"./chunk-AFO5ER23.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();var DEFAULT_ENV_KEYS={["openai"]:"OPENAI_API_KEY",["openai-responses"]:"OPENAI_API_KEY",["anthropic"]:"ANTHROPIC_API_KEY",["gemini"]:"GEMINI_API_KEY",["vertex-ai"]:"GOOGLE_API_KEY"};function findModelConfig(modelProviders,providerProtocol,authType,modelId,baseUrl){if(!modelProviders||!modelId){return void 0}const models=collectProviderModelsForProtocol(modelProviders,providerProtocol,authType);if(models.length===0){return void 0}if(baseUrl){return models.find(m=>m.id===modelId&&m.baseUrl===baseUrl)??models.find(m=>m.id===modelId)}return models.find(m=>m.id===modelId)}__name(findModelConfig,"findModelConfig");function resolveSelectedModel(settings,config){const modelsConfig=config?.getModelsConfig();if(modelsConfig){return{modelId:modelsConfig.getModel(),baseUrl:modelsConfig.getGenerationConfig()?.baseUrl}}return{modelId:settings.model?.name,baseUrl:settings.model?.baseUrl}}__name(resolveSelectedModel,"resolveSelectedModel");function hasEnvValue(settings,envKey){if(!envKey){return false}if(process.env[envKey]){return true}const settingsEnv=settings.env;const settingsEnvValue=settingsEnv?.[envKey];return typeof settingsEnvValue==="string"&&settingsEnvValue.trim().length>0}__name(hasEnvValue,"hasEnvValue");function hasApiKeyForAuth(authType,settings,config){const modelProviders=settings.modelProviders;const{modelId,baseUrl}=resolveSelectedModel(settings,config);const modelAuthType=!config&&(authType==="openai"||authType==="openai-responses")?resolveModelSelectionAuthType(authType,modelId,modelProviders,settings.providerProtocol,baseUrl):authType;const modelConfig=findModelConfig(modelProviders,settings.providerProtocol,modelAuthType,modelId,baseUrl);const resolvedApiKey=config?.getModelsConfig().getGenerationConfig()?.apiKey;if(resolvedApiKey){return{hasKey:true,checkedEnvKey:modelConfig?.envKey??DEFAULT_ENV_KEYS[authType],isExplicitEnvKey:!!modelConfig?.envKey}}if(modelConfig?.envKey){const hasKey=hasEnvValue(settings,modelConfig.envKey);return{hasKey,checkedEnvKey:modelConfig.envKey,isExplicitEnvKey:true}}const defaultEnvKey=DEFAULT_ENV_KEYS[authType];if(defaultEnvKey){const hasKey=hasEnvValue(settings,defaultEnvKey);if(hasKey){return{hasKey,checkedEnvKey:defaultEnvKey,isExplicitEnvKey:false}}}if(settings.security?.auth?.apiKey){return{hasKey:true,checkedEnvKey:defaultEnvKey||void 0,isExplicitEnvKey:false}}return{hasKey:false,checkedEnvKey:defaultEnvKey,isExplicitEnvKey:false}}__name(hasApiKeyForAuth,"hasApiKeyForAuth");function isVertexAdcEligible(settings,config){const{modelId,baseUrl}=resolveSelectedModel(settings,config);const modelConfig=findModelConfig(settings.modelProviders,settings.providerProtocol,"vertex-ai",modelId,baseUrl);return!modelConfig?.envKey}__name(isVertexAdcEligible,"isVertexAdcEligible");function hasVertexProject(settings){const settingsEnv=settings.env;return hasVertexProjectConfigured(key=>{const fromProcess=process.env[key];if(fromProcess!==void 0){return fromProcess}const fromSettings=settingsEnv?.[key];return typeof fromSettings==="string"?fromSettings:void 0})}__name(hasVertexProject,"hasVertexProject");function getApiKeyError(authMethod,settings,config){const{hasKey,checkedEnvKey,isExplicitEnvKey}=hasApiKeyForAuth(authMethod,settings,config);if(hasKey){return null}const envKeyHint=checkedEnvKey||DEFAULT_ENV_KEYS[authMethod];if(isExplicitEnvKey){return t("{{envKeyHint}} environment variable not found. Please set it in your .env file or environment variables.",{envKeyHint})}return t("{{envKeyHint}} environment variable not found (or set settings.security.auth.apiKey). Please set it in your .env file or environment variables.",{envKeyHint})}__name(getApiKeyError,"getApiKeyError");function validateAuthMethod(authMethod,config){const settings=loadSettings(process.cwd(),false);loadEnvironment(settings.merged);if(authMethod==="openai"||authMethod==="openai-responses"){const{hasKey,checkedEnvKey,isExplicitEnvKey}=hasApiKeyForAuth(authMethod,settings.merged,config);if(!hasKey){const envKeyHint=checkedEnvKey?`'${checkedEnvKey}'`:"'OPENAI_API_KEY'";if(isExplicitEnvKey){return t("Missing API key for OpenAI-compatible auth. Set the {{envKeyHint}} environment variable.",{envKeyHint})}return t("Missing API key for OpenAI-compatible auth. Set settings.security.auth.apiKey, or set the {{envKeyHint}} environment variable.",{envKeyHint})}return null}if(authMethod==="qwen-oauth"){return t("Qwen OAuth free tier was discontinued on 2026-04-15. Run /auth to switch to Coding Plan, OpenRouter, Fireworks AI, or another provider.")}if(authMethod==="anthropic"){const apiKeyError=getApiKeyError(authMethod,settings.merged,config);if(apiKeyError){return apiKeyError}const modelProviders=settings.merged.modelProviders;const{modelId,baseUrl}=resolveSelectedModel(settings.merged,config);const modelConfig=findModelConfig(modelProviders,settings.merged.providerProtocol,authMethod,modelId,baseUrl);if(modelConfig&&!modelConfig.baseUrl){return t("Anthropic provider missing required baseUrl in modelProviders[].baseUrl.")}if(!modelConfig&&!process.env["ANTHROPIC_BASE_URL"]){return t("ANTHROPIC_BASE_URL environment variable not found.")}return null}if(authMethod==="gemini"){const apiKeyError=getApiKeyError(authMethod,settings.merged,config);if(apiKeyError){return apiKeyError}return null}if(authMethod==="vertex-ai"){const adcEligible=isVertexAdcEligible(settings.merged,config);if(!adcEligible||!hasVertexProject(settings.merged)){const apiKeyError=getApiKeyError(authMethod,settings.merged,config);if(apiKeyError){return adcEligible?apiKeyError+VERTEX_ADC_HINT:apiKeyError}}process.env["GOOGLE_GENAI_USE_VERTEXAI"]="true";return null}return t("Invalid auth method selected.")}__name(validateAuthMethod,"validateAuthMethod");export{validateAuthMethod};
4
4
  /**
5
5
  * @license
6
6
  * Copyright 2025 Qwen Team
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{CoreToolScheduler,createDuplicateProviderToolCallResponse,finalizeToolResponses,findPlanModeEntryBatchBoundaryIndex,findRepeatedDuplicateProviderToolCall,getCachedToolCallFingerprint,goalToolResultProvenance,isReplayOfHandledToolCall,markDuplicateProviderToolCallResponseSent,recordHandledToolCall}from"./chunk-Z5XENA4A.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();async function runAgentLoop(options){const{client,config,signal,host={}}=options;const duplicates=options.duplicates??{handled:new Map(client.getHistoryToolCallFingerprints()),responded:new Set};const executor=options.executor??createSchedulerExecutor(config,options.scheduler,options.runtimeView);let round=options.first;for(let index=0;;index++){const rounds=index+1;host.onRoundStart?.(index,round.promptId);const{turn,calls,stop}=await runModelRound(client,round,signal,host);host.onRoundEnd?.(index);if(stop)return{reason:stop,rounds,turn};if(calls.length===0)return{reason:"completed",rounds,turn};const batch=await runToolBatch(calls,{config,client,signal,toolSignal:options.toolSignal,host,duplicates,executor});if(batch.stop){return{reason:batch.stop,rounds,turn,parts:batch.parts}}if(options.maxRounds!==void 0&&rounds>=options.maxRounds){return{reason:"next_round",rounds,turn,parts:batch.parts}}round=host.nextRound?.(rounds,batch.parts)??{parts:batch.parts,promptId:round.promptId,options:{type:"toolResult"}}}}__name(runAgentLoop,"runAgentLoop");var STOP_EVENTS={["user_cancelled"]:"cancelled",["loop_detected"]:"loop_detected",["max_session_turns"]:"max_session_turns",["session_token_limit_exceeded"]:"session_token_limit",["user_prompt_submit_blocked"]:"user_prompt_blocked"};async function runModelRound(client,round,signal,host){const calls=[];let stop;const stream=client.sendMessageStream(round.parts,signal,round.promptId,round.options);let finished=false;try{for(;;){const next=await stream.next();if(next.done){finished=true;return{turn:next.value,calls,stop}}const event=next.value;let discardedCalls=[];if(event.type==="retry"||event.type==="model_fallback"){discardedCalls=calls.splice(0)}else if(event.type==="tool_call_request"){calls.push(event.value)}else if(event.type!=="user_cancelled"||signal.aborted){stop??=STOP_EVENTS[event.type]}await host.onModelEvent?.(event,discardedCalls)}}finally{if(!finished)await stream.return(void 0)}}__name(runModelRound,"runModelRound");async function runToolBatch(calls,options){const{config,client,signal,duplicates,executor}=options;const host=options.host??{};const toolSignal=options.toolSignal??signal;const providerKey=__name(request=>request.providerCallId??(request.callId||void 0),"providerKey");const isReplay=__name(request=>{const key=providerKey(request);return key?isReplayOfHandledToolCall(duplicates.handled,key,getCachedToolCallFingerprint(request,request.name,request.args)):false},"isReplay");const seenCallIds=new Set;const unique=[];const repeated=[];for(const request of calls){if(request.callId&&seenCallIds.has(request.callId)){repeated.push(request);continue}if(request.callId)seenCallIds.add(request.callId);unique.push(request)}if(findRepeatedDuplicateProviderToolCall([...unique,...repeated],providerKey,isReplay,duplicates.responded)){return{parts:[],stop:"duplicate_provider_call"}}const results=new Map;let ended=false;const deliver=__name(result=>{results.set(result.request,result);if(host.onToolResult?.(result)===true)ended=true},"deliver");const answer=__name((request,response,origin)=>deliver({request,executionRequest:request,response,status:response.error?"error":"success",origin}),"answer");const executable=[];for(const request of unique){const key=providerKey(request);if(key&&isReplay(request)){markDuplicateProviderToolCallResponseSent(key,duplicates.responded);answer(request,createDuplicateProviderToolCallResponse(request),"replayed");continue}if(key){recordHandledToolCall(duplicates.handled,key,getCachedToolCallFingerprint(request,request.name,request.args))}executable.push(request)}const selected=new Set(host.selectCalls?.(executable,calls)??executable);const toRun=executable.filter(request=>selected.has(request));const outputHandlers=new Map;for(const request of toRun){const handler=host.outputHandler?.(request);if(handler)outputHandlers.set(request.callId,handler)}const launches=new Map;let offered=0;const offerUntil=__name((end,settled)=>{for(;offered<end;offered++){const request=toRun[offered];launches.set(request.callId,host.beforeToolLaunch?.(request,settled)??true)}},"offerUntil");const completed=toRun.length===0?[]:await executor.run(toRun,toolSignal,{beforeLaunch:__name((request,settled)=>{offerUntil(toRun.findIndex(({callId})=>callId===request.callId)+1,settled);return launches.get(request.callId)===true},"beforeLaunch"),output:__name((callId,chunk)=>outputHandlers.get(callId)?.(callId,chunk),"output")});offerUntil(toRun.length,completed);const completedByCallId=new Map(completed.map(call=>[call.request.callId,call]));const aborted=signal.aborted;const planModeEntry=findPlanModeEntryBatchBoundaryIndex(toRun.map(({name})=>name));let terminateTurn=false;for(const[index,request]of toRun.entries()){const call=completedByCallId.get(request.callId);if(!call||!launches.get(request.callId))continue;terminateTurn||=call.response.terminateTurn===true;if(planModeEntry===void 0||index===planModeEntry){client.recordCompletedToolCall(call.request.name,call.request.args)}deliver(executedResult(request,call))}if(aborted&&!ended&&!options.keepCancelledResults){return{parts:[],stop:"cancelled"}}for(const request of executable){if(results.has(request))continue;answer(request,skippedResponse(request,host.skippedOutput?.(request)??""),"skipped")}for(const request of repeated){const key=providerKey(request);if(!key)continue;markDuplicateProviderToolCallResponseSent(key,duplicates.responded);answer(request,createDuplicateProviderToolCallResponse(request),"duplicate")}const ordered=calls.flatMap(request=>{const result=results.get(request);return result?[result]:[]});const finalized=await finalizeToolResponses(config,ordered.map(({request,response,executionRequest})=>({callId:request.callId,toolName:executionRequest.name,responseParts:response.responseParts,persistedOutputFiles:response.persistedOutputFiles,artifacts:response.artifacts})),new Map(ordered.map(({request})=>[request.callId,request.prompt_id])));const recorder=config.getChatRecordingService?.();const parts=[];ordered.forEach(({request,executionRequest,response,status},index)=>{const responseParts=finalized[index].responseParts;parts.push(...responseParts);const provenance=goalToolResultProvenance(executionRequest,responseParts);recorder?.recordToolResult?.(responseParts,{callId:request.callId,status,resultDisplay:response.resultDisplay,persistedOutputFiles:finalized[index].persistedOutputFiles,artifacts:finalized[index].artifacts,error:response.error,errorType:response.errorType,executionStatus:response.executionStatus},...provenance?[provenance]:[])});if(aborted&&!ended)return{parts,stop:"cancelled"};if(ended)return{parts,stop:"surface_ended"};if(terminateTurn&&(host.endsOnTerminateTurn?.()??true)){return{parts,stop:"tool_ended_turn"}}return{parts}}__name(runToolBatch,"runToolBatch");function executedResult(request,call){return{request,executionRequest:call.request,response:call.response,status:call.status,origin:"executed"}}__name(executedResult,"executedResult");function skippedResponse(request,output){return{callId:request.callId,responseParts:[{functionResponse:{id:request.callId,name:request.name,response:{output}}}],resultDisplay:output,error:void 0,errorType:void 0,executionStatus:"not_started"}}__name(skippedResponse,"skippedResponse");function createSchedulerExecutor(config,options={},runtimeView){return{run:__name((requests,signal,hooks)=>new Promise((resolve,reject)=>{const batch=new Set(requests.map(({callId})=>callId));const settled=new Map;const parents=new Map;const scheduler=new CoreToolScheduler({getPreferredEditor:__name(()=>void 0,"getPreferredEditor"),onEditorClose:__name(()=>{},"onEditorClose"),...options,config,outputUpdateHandler:__name((callId,chunk)=>{options.outputUpdateHandler?.(callId,chunk);hooks.output(parents.get(callId)??callId,chunk)},"outputUpdateHandler"),onToolCallsUpdate:__name(toolCalls=>{for(const call of toolCalls){const{callId,parentCallId}=call.request;if(!batch.has(callId)){if(parentCallId)parents.set(callId,parentCallId)}else if(call.status==="success"||call.status==="error"||call.status==="cancelled"){settled.set(callId,call)}}options.onToolCallsUpdate?.(toolCalls)},"onToolCallsUpdate"),beforeToolLaunch:__name(call=>hooks.beforeLaunch(call.request,[...settled.values()]),"beforeToolLaunch"),onAllToolCallsComplete:__name(async completedCalls=>{await options.onAllToolCallsComplete?.(completedCalls);resolve(completedCalls)},"onAllToolCallsComplete")});scheduler.schedule(requests,signal,runtimeView).catch(reject)}),"run")}}__name(createSchedulerExecutor,"createSchedulerExecutor");export{runAgentLoop,runModelRound,runToolBatch,createSchedulerExecutor};
3
+ import{CoreToolScheduler,createDuplicateProviderToolCallResponse,finalizeToolResponses,findPlanModeEntryBatchBoundaryIndex,findRepeatedDuplicateProviderToolCall,getCachedToolCallFingerprint,goalToolResultProvenance,isReplayOfHandledToolCall,markDuplicateProviderToolCallResponseSent,recordHandledToolCall}from"./chunk-2JGTWRZJ.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();async function runAgentLoop(options){const{client,config,signal,host={}}=options;const duplicates=options.duplicates??{handled:new Map(client.getHistoryToolCallFingerprints()),responded:new Set};const executor=options.executor??createSchedulerExecutor(config,options.scheduler,options.runtimeView);let round=options.first;for(let index=0;;index++){const rounds=index+1;host.onRoundStart?.(index,round.promptId);const{turn,calls,stop}=await runModelRound(client,round,signal,host);host.onRoundEnd?.(index);if(stop)return{reason:stop,rounds,turn};if(calls.length===0)return{reason:"completed",rounds,turn};const batch=await runToolBatch(calls,{config,client,signal,toolSignal:options.toolSignal,host,duplicates,executor});if(batch.stop){return{reason:batch.stop,rounds,turn,parts:batch.parts}}if(options.maxRounds!==void 0&&rounds>=options.maxRounds){return{reason:"next_round",rounds,turn,parts:batch.parts}}round=host.nextRound?.(rounds,batch.parts)??{parts:batch.parts,promptId:round.promptId,options:{type:"toolResult"}}}}__name(runAgentLoop,"runAgentLoop");var STOP_EVENTS={["user_cancelled"]:"cancelled",["loop_detected"]:"loop_detected",["max_session_turns"]:"max_session_turns",["session_token_limit_exceeded"]:"session_token_limit",["user_prompt_submit_blocked"]:"user_prompt_blocked"};async function runModelRound(client,round,signal,host){const calls=[];let stop;const stream=client.sendMessageStream(round.parts,signal,round.promptId,round.options);let finished=false;try{for(;;){const next=await stream.next();if(next.done){finished=true;return{turn:next.value,calls,stop}}const event=next.value;let discardedCalls=[];if(event.type==="retry"||event.type==="model_fallback"){discardedCalls=calls.splice(0)}else if(event.type==="tool_call_request"){calls.push(event.value)}else if(event.type!=="user_cancelled"||signal.aborted){stop??=STOP_EVENTS[event.type]}await host.onModelEvent?.(event,discardedCalls)}}finally{if(!finished)await stream.return(void 0)}}__name(runModelRound,"runModelRound");async function runToolBatch(calls,options){const{config,client,signal,duplicates,executor}=options;const host=options.host??{};const toolSignal=options.toolSignal??signal;const providerKey=__name(request=>request.providerCallId??(request.callId||void 0),"providerKey");const isReplay=__name(request=>{const key=providerKey(request);return key?isReplayOfHandledToolCall(duplicates.handled,key,getCachedToolCallFingerprint(request,request.name,request.args)):false},"isReplay");const seenCallIds=new Set;const unique=[];const repeated=[];for(const request of calls){if(request.callId&&seenCallIds.has(request.callId)){repeated.push(request);continue}if(request.callId)seenCallIds.add(request.callId);unique.push(request)}if(findRepeatedDuplicateProviderToolCall([...unique,...repeated],providerKey,isReplay,duplicates.responded)){return{parts:[],stop:"duplicate_provider_call"}}const results=new Map;let ended=false;const deliver=__name(result=>{results.set(result.request,result);if(host.onToolResult?.(result)===true)ended=true},"deliver");const answer=__name((request,response,origin)=>deliver({request,executionRequest:request,response,status:response.error?"error":"success",origin}),"answer");const executable=[];for(const request of unique){const key=providerKey(request);if(key&&isReplay(request)){markDuplicateProviderToolCallResponseSent(key,duplicates.responded);answer(request,createDuplicateProviderToolCallResponse(request),"replayed");continue}if(key){recordHandledToolCall(duplicates.handled,key,getCachedToolCallFingerprint(request,request.name,request.args))}executable.push(request)}const selected=new Set(host.selectCalls?.(executable,calls)??executable);const toRun=executable.filter(request=>selected.has(request));const outputHandlers=new Map;for(const request of toRun){const handler=host.outputHandler?.(request);if(handler)outputHandlers.set(request.callId,handler)}const launches=new Map;let offered=0;const offerUntil=__name((end,settled)=>{for(;offered<end;offered++){const request=toRun[offered];launches.set(request.callId,host.beforeToolLaunch?.(request,settled)??true)}},"offerUntil");const completed=toRun.length===0?[]:await executor.run(toRun,toolSignal,{beforeLaunch:__name((request,settled)=>{offerUntil(toRun.findIndex(({callId})=>callId===request.callId)+1,settled);return launches.get(request.callId)===true},"beforeLaunch"),output:__name((callId,chunk)=>outputHandlers.get(callId)?.(callId,chunk),"output")});offerUntil(toRun.length,completed);const completedByCallId=new Map(completed.map(call=>[call.request.callId,call]));const aborted=signal.aborted;const planModeEntry=findPlanModeEntryBatchBoundaryIndex(toRun.map(({name})=>name));let terminateTurn=false;for(const[index,request]of toRun.entries()){const call=completedByCallId.get(request.callId);if(!call||!launches.get(request.callId))continue;terminateTurn||=call.response.terminateTurn===true;if(planModeEntry===void 0||index===planModeEntry){client.recordCompletedToolCall(call.request.name,call.request.args)}deliver(executedResult(request,call))}if(aborted&&!ended&&!options.keepCancelledResults){return{parts:[],stop:"cancelled"}}for(const request of executable){if(results.has(request))continue;answer(request,skippedResponse(request,host.skippedOutput?.(request)??""),"skipped")}for(const request of repeated){const key=providerKey(request);if(!key)continue;markDuplicateProviderToolCallResponseSent(key,duplicates.responded);answer(request,createDuplicateProviderToolCallResponse(request),"duplicate")}const ordered=calls.flatMap(request=>{const result=results.get(request);return result?[result]:[]});const finalized=await finalizeToolResponses(config,ordered.map(({request,response,executionRequest})=>({callId:request.callId,toolName:executionRequest.name,responseParts:response.responseParts,persistedOutputFiles:response.persistedOutputFiles,artifacts:response.artifacts})),new Map(ordered.map(({request})=>[request.callId,request.prompt_id])));const recorder=config.getChatRecordingService?.();const parts=[];ordered.forEach(({request,executionRequest,response,status},index)=>{const responseParts=finalized[index].responseParts;parts.push(...responseParts);const provenance=goalToolResultProvenance(executionRequest,responseParts);recorder?.recordToolResult?.(responseParts,{callId:request.callId,status,resultDisplay:response.resultDisplay,persistedOutputFiles:finalized[index].persistedOutputFiles,artifacts:finalized[index].artifacts,error:response.error,errorType:response.errorType,executionStatus:response.executionStatus},...provenance?[provenance]:[])});if(aborted&&!ended)return{parts,stop:"cancelled"};if(ended)return{parts,stop:"surface_ended"};if(terminateTurn&&(host.endsOnTerminateTurn?.()??true)){return{parts,stop:"tool_ended_turn"}}return{parts}}__name(runToolBatch,"runToolBatch");function executedResult(request,call){return{request,executionRequest:call.request,response:call.response,status:call.status,origin:"executed"}}__name(executedResult,"executedResult");function skippedResponse(request,output){return{callId:request.callId,responseParts:[{functionResponse:{id:request.callId,name:request.name,response:{output}}}],resultDisplay:output,error:void 0,errorType:void 0,executionStatus:"not_started"}}__name(skippedResponse,"skippedResponse");function createSchedulerExecutor(config,options={},runtimeView){return{run:__name((requests,signal,hooks)=>new Promise((resolve,reject)=>{const batch=new Set(requests.map(({callId})=>callId));const settled=new Map;const parents=new Map;const scheduler=new CoreToolScheduler({getPreferredEditor:__name(()=>void 0,"getPreferredEditor"),onEditorClose:__name(()=>{},"onEditorClose"),...options,config,outputUpdateHandler:__name((callId,chunk)=>{options.outputUpdateHandler?.(callId,chunk);hooks.output(parents.get(callId)??callId,chunk)},"outputUpdateHandler"),onToolCallsUpdate:__name(toolCalls=>{for(const call of toolCalls){const{callId,parentCallId}=call.request;if(!batch.has(callId)){if(parentCallId)parents.set(callId,parentCallId)}else if(call.status==="success"||call.status==="error"||call.status==="cancelled"){settled.set(callId,call)}}options.onToolCallsUpdate?.(toolCalls)},"onToolCallsUpdate"),beforeToolLaunch:__name(call=>hooks.beforeLaunch(call.request,[...settled.values()]),"beforeToolLaunch"),onAllToolCallsComplete:__name(async completedCalls=>{await options.onAllToolCallsComplete?.(completedCalls);resolve(completedCalls)},"onAllToolCallsComplete")});scheduler.schedule(requests,signal,runtimeView).catch(reject)}),"run")}}__name(createSchedulerExecutor,"createSchedulerExecutor");export{runAgentLoop,runModelRound,runToolBatch,createSchedulerExecutor};
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{DashScopeUploader}from"./chunk-RKDS7A4H.js";import{OmniDegradationCache,OmniTransportGuardError,assertWithinByteLimit,assertWithinDurationLimit,assertWithinTokenLimit,effectiveMaxUploadFileBytes,effectiveOmniStorageMaxTotalBytes,estimateRawResourceTokens,runFixedPolicies,runOmniGcOnce}from"./chunk-GSOBASYW.js";import{MEDIA_DETECTOR_VERSION,MediaMemoryService}from"./chunk-XFMPZINJ.js";import{runStartupRecoveryOnce}from"./chunk-HN5UYLPU.js";import{DEFAULT_UPLOAD_CACHE_TTL_HOURS,OmniUploadCache}from"./chunk-HTW7PYHK.js";import{OmniObjectStore,prepareOmniDownloadsDir}from"./chunk-YFTVFH2A.js";import{extensionForMime,hashFileSha256,recognizeMediaFile,sniffMediaType}from"./chunk-ZBHL2CXR.js";import{isFfmpegAvailable,isFfprobeAvailable}from"./chunk-NIOS3B3V.js";import{isOmniDeliveryActive}from"./chunk-OBV7RNHV.js";import{requireEffectiveOmniUploadConfig}from"./chunk-XZTE4YTN.js";import{OMNI_DISCLOSURE_TEXT_PREFIX,OMNI_OMISSION_TEXT_PREFIX,OMNI_RESOURCE_HANDLE_TEXT_PREFIX,OMNI_RESOURCE_PATH_TEXT_PREFIX,OMNI_TRANSCRIPT_TEXT_PREFIX,formatDisclosureText,formatOmissionText,formatResourceHandleText,formatTranscriptText,harnessPathAnnotationPart,isHarnessAnnotationPart,parseResourceHandleText,parseResourcePathText,splitAnnotationBody,unescapeAnnotationName}from"./chunk-SW54YEPK.js";import{isPermittedRedirect,isPrivateHost,resolveNetworkTarget}from"./chunk-5CWTKFI4.js";import{ImageViewError,boundImageBuffer,sniffBoundableImageMime}from"./chunk-Z6AR5XE5.js";import{TOOL_RESULT_MEDIA_REMEDY,clampInlineMediaPart,getMaxInlineMediaBytes}from"./chunk-Q6UAOTP3.js";import{detectRuntime,loadUndici}from"./chunk-ZZZAYAJW.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{isAbortError}from"./chunk-XYB7GC5U.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{createHash}from"node:crypto";import path4 from"node:path";import fs4 from"node:fs/promises";init_esbuild_shims();function buildSessionConditionNamespace(config,reservedOutputTokens){const session={reservedOutputTokens};const windowSize=config.getContentGeneratorConfig?.()?.contextWindowSize;const contextWindowTokens=typeof windowSize==="number"&&Number.isFinite(windowSize)&&windowSize>0?windowSize:void 0;if(contextWindowTokens!==void 0){session.contextWindowTokens=contextWindowTokens}let promptTokenCount;try{const count=config.getGeminiClient?.()?.getChat?.()?.getLastPromptTokenCount();if(typeof count==="number"&&Number.isFinite(count)&&count>=0){promptTokenCount=count}}catch{}if(promptTokenCount!==void 0){session.promptTokenCount=promptTokenCount}if(contextWindowTokens!==void 0&&promptTokenCount!==void 0){session.availableContextTokens=Math.max(0,contextWindowTokens-promptTokenCount-reservedOutputTokens)}return session}__name(buildSessionConditionNamespace,"buildSessionConditionNamespace");init_esbuild_shims();import{randomBytes}from"node:crypto";import{once}from"node:events";import{createWriteStream}from"node:fs";import fs from"node:fs/promises";import path from"node:path";import{Readable}from"node:stream";import{pipeline}from"node:stream/promises";var debugLogger=createDebugLogger("omni:download");var OmniDownloadError=class extends Error{static{__name(this,"OmniDownloadError")}constructor(message,options){super(message,options);this.name="OmniDownloadError"}};var RESOLVE_TIMEOUT_MS=3e4;var HEADER_TIMEOUT_MS=3e4;var IDLE_TIMEOUT_MS=6e4;var MAX_REDIRECTS=5;function parseHttpUrlRef(pathName){if(!/^https?:\/\//i.test(pathName))return null;try{return new URL(pathName)}catch{return null}}__name(parseHttpUrlRef,"parseHttpUrlRef");function scrubPathsFromMessage(message){return message.replace(/(?:[A-Za-z]:)?(?:[\\/][^\s'"`\\/]+){2,}[\\/]?/g,match=>path.basename(match))}__name(scrubPathsFromMessage,"scrubPathsFromMessage");function formatCauseChain(err){const parts=[];let cause=err instanceof Error?err.cause:void 0;for(let depth=0;cause!=null&&depth<4;depth++){const code=cause.code;const message=cause instanceof Error?cause.message:typeof cause==="string"?cause:void 0;if(typeof code==="string"&&message&&!message.includes(code)){parts.push(`${code}: ${message}`)}else if(message){parts.push(message)}else if(typeof code==="string"){parts.push(code)}cause=cause instanceof Error?cause.cause:void 0}return parts.length>0?scrubPathsFromMessage(parts.join("; ")):void 0}__name(formatCauseChain,"formatCauseChain");function detectConfiguredProxy(undici){for(const key of["https_proxy","HTTPS_PROXY","http_proxy","HTTP_PROXY","all_proxy","ALL_PROXY"]){if(process.env[key])return true}try{return undici.getGlobalDispatcher()instanceof undici.EnvHttpProxyAgent}catch{return false}}__name(detectConfiguredProxy,"detectConfiguredProxy");async function downloadMediaUrl(params){const{url,downloadsDir,maxBytes,signal,resolveTimeoutMs=RESOLVE_TIMEOUT_MS,headerTimeoutMs=HEADER_TIMEOUT_MS,idleTimeoutMs=IDLE_TIMEOUT_MS}=params;const resolveTarget=params.resolveTarget??(target=>resolveNetworkTarget(target,"public",signal));if(isPrivateHost(url)){throw new OmniDownloadError(`URL host is not publicly routable (refused for safety): ${new URL(url).hostname}`)}let parsed;try{parsed=new URL(url)}catch{throw new OmniDownloadError("URL media ref is not a valid URL (refused).")}if(parsed.protocol!=="https:"){throw new OmniDownloadError(`URL media must be https (refused for safety): ${parsed.protocol}//${parsed.hostname}`)}if(parsed.username||parsed.password){throw new OmniDownloadError(`URL media must not embed credentials (refused for safety): ${parsed.hostname}`)}const runtime=detectRuntime();if(runtime!=="node"){throw new OmniDownloadError(`URL media requires the Node runtime to verify the connection target (refused for safety on ${runtime}): use a local file path instead of a URL, or run under Node.`)}const undici=await loadUndici();const proxied=params.detectProxy?params.detectProxy():detectConfiguredProxy(undici);if(proxied){throw new OmniDownloadError(`URL media fetching is not supported behind a proxy yet (refused): the connection pinning that enforces SSRF protection cannot be applied through a proxy. Download the file manually and use a local path instead.`)}try{await prepareOmniDownloadsDir(downloadsDir)}catch(err){throw new OmniDownloadError(`Could not prepare the downloads directory for URL media: ${err instanceof Error?scrubPathsFromMessage(err.message):String(err)}`,{cause:err})}const partPath=path.join(downloadsDir,`${randomBytes(8).toString("hex")}.part`);let currentUrl=url;let dispatcher;try{for(let redirects=0;;redirects++){let target;const resolveAbort=new AbortController;const resolveTimer=setTimeout(()=>resolveAbort.abort(new Error("resolve timeout")),resolveTimeoutMs);try{const pending=resolveTarget(currentUrl);pending.catch(()=>{});target=await Promise.race([pending,new Promise((_,reject)=>{resolveAbort.signal.addEventListener("abort",()=>reject(resolveAbort.signal.reason),{once:true})})])}catch(err){if(signal?.aborted)throw err;if(resolveAbort.signal.aborted){throw new OmniDownloadError(`Download timed out resolving ${new URL(currentUrl).hostname} (${resolveTimeoutMs/1e3}s)`)}const text=err instanceof Error?err.message:String(err);const reason=/blocked address/i.test(text)?"resolved to a non-public address":/did not resolve/i.test(text)?"did not resolve":"could not be verified";throw new OmniDownloadError(`URL host ${reason} (refused for safety): ${new URL(currentUrl).hostname}`,{cause:err})}finally{clearTimeout(resolveTimer)}if(!target.lookup){throw new OmniDownloadError(`URL host cannot be safely bound to a verified address (refused for safety): ${new URL(currentUrl).hostname}`)}const fetchFn=params.fetchFn??undici.fetch;const previousDispatcher=dispatcher;dispatcher=new undici.Agent({connect:{lookup:target.lookup}});await previousDispatcher?.close().catch(()=>{});const headerAbort=new AbortController;const headerTimer=setTimeout(()=>headerAbort.abort(new Error("header timeout")),headerTimeoutMs);const combined=AbortSignal.any(signal?[signal,headerAbort.signal]:[headerAbort.signal]);let res;try{res=await fetchFn(currentUrl,{redirect:"manual",signal:combined,dispatcher})}catch(err){if(signal?.aborted)throw err;if(headerAbort.signal.aborted){throw new OmniDownloadError(`Download timed out waiting for response headers from ${new URL(currentUrl).hostname} (${headerTimeoutMs/1e3}s)`)}const detail=err instanceof Error?scrubPathsFromMessage(err.message):String(err);const causeDetail=formatCauseChain(err);throw new OmniDownloadError(`Download request failed for ${new URL(currentUrl).hostname}: ${detail}${causeDetail?` (${causeDetail})`:""}`,{cause:err})}finally{clearTimeout(headerTimer)}if(res.status>=300&&res.status<400){await res.body?.cancel().catch(()=>{});const location=res.headers.get("location");if(!location||redirects>=MAX_REDIRECTS){throw new OmniDownloadError(`Too many or invalid redirects downloading from ${new URL(currentUrl).hostname}`)}let redirectUrl;try{redirectUrl=new URL(location,currentUrl).toString()}catch{throw new OmniDownloadError(`Redirect with a malformed Location header from ${new URL(currentUrl).hostname}`)}if(!isPermittedRedirect(currentUrl,redirectUrl)){throw new OmniDownloadError(`Cross-origin redirect refused: ${new URL(currentUrl).hostname} \u2192 ${new URL(redirectUrl).hostname}`)}currentUrl=redirectUrl;continue}if(!res.ok){await res.body?.cancel().catch(()=>{});throw new OmniDownloadError(`Download failed: HTTP ${res.status} from ${new URL(currentUrl).hostname}`)}const contentLength=Number(res.headers.get("content-length"));if(Number.isFinite(contentLength)&&contentLength>maxBytes){await res.body?.cancel().catch(()=>{});throw new OmniDownloadError(`Download exceeds the omni media limit: Content-Length ${contentLength} > ${maxBytes} bytes.`)}if(!res.body){throw new OmniDownloadError("Download response had no body.")}let written=0;const idleAbort=new AbortController;let idleTimer=setTimeout(()=>idleAbort.abort(new Error("idle timeout")),idleTimeoutMs);const streamSignal=AbortSignal.any(signal?[signal,idleAbort.signal]:[idleAbort.signal]);try{const source=Readable.fromWeb(res.body,{signal:streamSignal});const counter=__name(async function*(src){for await(const chunk of src){clearTimeout(idleTimer);idleTimer=setTimeout(()=>idleAbort.abort(new Error("idle timeout")),idleTimeoutMs);written+=chunk.length;if(written>maxBytes){throw new OmniDownloadError(`Download exceeds the omni media limit: >${maxBytes} bytes received.`)}yield chunk}},"counter");const destination=createWriteStream(partPath,{mode:384});await once(destination,"open");await pipeline(source,counter,destination)}catch(err){if(signal?.aborted)throw err;if(err instanceof OmniDownloadError)throw err;if(idleAbort.signal.aborted){throw new OmniDownloadError(`Download stalled from ${new URL(currentUrl).hostname}: no data for ${idleTimeoutMs/1e3}s`)}throw new OmniDownloadError(`Download interrupted from ${new URL(currentUrl).hostname}: ${err instanceof Error?scrubPathsFromMessage(err.message):String(err)}`,{cause:err})}finally{clearTimeout(idleTimer)}debugLogger.debug(`downloaded ${written} bytes from ${new URL(currentUrl).hostname}`);return{partPath}}}catch(err){await fs.rm(partPath,{force:true});throw err}finally{await dispatcher?.close().catch(()=>{})}}__name(downloadMediaUrl,"downloadMediaUrl");init_esbuild_shims();import{randomBytes as randomBytes2}from"node:crypto";import fs2 from"node:fs/promises";import path2 from"node:path";var debugLogger2=createDebugLogger("omni:tool-result");var MAX_UPLOADS_PER_TOOL_RESULT=8;var MAX_UPLOAD_BYTES_PER_TOOL_RESULT=128*1024*1024;async function boundDeclinedInlinePart(part,bytes,signal){const inline=part.inlineData;if(!inline?.data)return part;const inlineByteCeiling=getMaxInlineMediaBytes();let boundedPart=part;if(sniffBoundableImageMime(bytes.subarray(0,12))){try{const view=await boundImageBuffer(bytes,`tool-result media (${inline.mimeType??"unknown"})`,signal,inlineByteCeiling);if(view){boundedPart={inlineData:{...inline,data:view.bytes.toString("base64"),mimeType:view.mimeType}}}}catch(error){if(!(error instanceof ImageViewError)){throw error}debugLogger2.debug(`tool-result media kept inline could not be bounded: ${error.message}`)}}return clampInlineMediaPart(boundedPart,inlineByteCeiling,TOOL_RESULT_MEDIA_REMEDY)}__name(boundDeclinedInlinePart,"boundDeclinedInlinePart");async function processToolResultOmniMedia(responseParts,config,signal){if(!isOmniDeliveryActive(config))return responseParts;const modalities=config.getContentGeneratorConfig?.()?.modalities??{};let changed=false;let uploadsRemaining=MAX_UPLOADS_PER_TOOL_RESULT;let uploadBytesRemaining=MAX_UPLOAD_BYTES_PER_TOOL_RESULT;const keepInline=__name(async(part,bytes)=>{const kept=await boundDeclinedInlinePart(part,bytes,signal);if(kept!==part)changed=true;return[kept]},"keepInline");const convertPart=__name(async part=>{const inline=part.inlineData;if(!inline?.data||!inline.mimeType)return[part];const top=inline.mimeType.split("/")[0];if(top!=="image"&&top!=="audio"&&top!=="video")return[part];const bytes=Buffer.from(inline.data,"base64");const sniffed=sniffMediaType(bytes.subarray(0,4096));if(!sniffed)return keepInline(part,bytes);if(!modalities[sniffed.modality]){return keepInline(part,bytes)}if(uploadsRemaining<=0||bytes.length>uploadBytesRemaining){debugLogger2.debug(`tool-result media budget exhausted; keeping part inline (${bytes.length} bytes)`);return keepInline(part,bytes)}const store=new OmniObjectStore(config.storage.getQwenDir());let tempPath;const displayName=inline.displayName??`tool-media.${top}`;try{const stagingDir=await prepareOmniDownloadsDir(path2.join(store.getOmniRootDir(),"downloads"));tempPath=path2.join(stagingDir,`${randomBytes2(8).toString("hex")}.part`);await fs2.writeFile(tempPath,bytes,{mode:384});const delivery=await processMediaForOmniDelivery(tempPath,config,{expectedModality:sniffed.modality,signal,displayName,origin:"tool"});const transcriptParts=buildTranscriptParts(displayName,delivery.transcripts);const additionalParts=buildAdditionalMediaParts(displayName,delivery.additionalMedia);uploadsRemaining-=delivery.additionalMedia?.filter(e=>!e.omission).length??0;const handleParts=delivery.resourceId?[{text:formatResourceHandleText(displayName,delivery.resourceId)}]:[];if(delivery.omission){changed=true;return[...handleParts,{text:formatOmissionText(displayName,delivery.omission.reason)},...additionalParts,...transcriptParts]}if(!delivery.fileUri&&transcriptParts.length>0){changed=true;return delivery.disclosure?[...handleParts,{text:formatDisclosureText(displayName,delivery.disclosure)},...additionalParts,...transcriptParts]:[...handleParts,...additionalParts,...transcriptParts]}changed=true;uploadsRemaining--;uploadBytesRemaining-=bytes.length;const fileDataPart={fileData:{fileUri:delivery.fileUri,mimeType:delivery.mimeType,displayName}};return delivery.disclosure?[...handleParts,{text:formatDisclosureText(displayName,delivery.disclosure)},fileDataPart,...additionalParts,...transcriptParts]:[...handleParts,fileDataPart,...additionalParts,...transcriptParts]}catch(err){if(signal.aborted)throw err;if(err instanceof OmniTransportGuardError){changed=true;return[...err.sessionResourceId?[{text:formatResourceHandleText(displayName,err.sessionResourceId)}]:[],{text:`[Tool media part withheld by the omni transport guard: ${err.message}]`}]}debugLogger2.debug(`tool-result media upload failed, keeping inline: ${err instanceof Error?err.message:String(err)}`);return keepInline(part,bytes)}finally{if(tempPath!==void 0){await fs2.rm(tempPath,{force:true}).catch(()=>{})}}},"convertPart");const result=[];for(const part of responseParts){const nested=part.functionResponse?.parts;if(Array.isArray(nested)&&nested.length>0){const convertedNested=[];let nestedChanged=false;for(const nestedPart of nested){const converted=await convertPart(nestedPart);if(converted.length!==1||converted[0]!==nestedPart){nestedChanged=true}convertedNested.push(...converted)}if(nestedChanged){result.push({...part,functionResponse:{...part.functionResponse,parts:convertedNested}});changed=true}else{result.push(part)}continue}result.push(...await convertPart(part))}return changed?result:responseParts}__name(processToolResultOmniMedia,"processToolResultOmniMedia");init_esbuild_shims();import fs3 from"node:fs/promises";import path3 from"node:path";var debugLogger3=createDebugLogger("omni:export");function textOfPart(part){if(typeof part==="string")return part;if(typeof part==="object"&&part!==null&&"text"in part){const text=part.text;return typeof text==="string"?text:void 0}return void 0}__name(textOfPart,"textOfPart");function functionResponseOfPart(part){if(typeof part!=="object"||part===null)return void 0;const response=part.functionResponse;if(typeof response!=="object"||response===null)return void 0;const{id,parts}=response;return{id,...Array.isArray(parts)?{parts}:{}}}__name(functionResponseOfPart,"functionResponseOfPart");function isThoughtPart(part){return typeof part==="object"&&part!==null&&part.thought===true}__name(isThoughtPart,"isThoughtPart");function functionCallOfPart(part){if(typeof part!=="object"||part===null)return void 0;const fc=part.functionCall;if(typeof fc!=="object"||fc===null)return void 0;const{id,name,args}=fc;if(typeof name!=="string")return void 0;const cleanArgs=typeof args==="object"&&args!==null?{...args}:void 0;return{...typeof id==="string"?{callId:id}:{},name,...cleanArgs?{args:cleanArgs}:{}}}__name(functionCallOfPart,"functionCallOfPart");function stripSystemReminders(text){return text.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/g,"")}__name(stripSystemReminders,"stripSystemReminders");function mediaFor(turn,name){let media=turn.media.get(name);if(!media){media={name,disclosures:[],transcripts:[]};turn.media.set(name,media)}return media}__name(mediaFor,"mediaFor");function consumeAnnotationPart(turn,text,isHarnessAnnotation){if(text.startsWith(OMNI_RESOURCE_HANDLE_TEXT_PREFIX)){const resourceId=parseResourceHandleText(text);if(resourceId){const body=text.slice(OMNI_RESOURCE_HANDLE_TEXT_PREFIX.length);const name=unescapeAnnotationName(body.slice(0,body.length-resourceId.length-1));mediaFor(turn,name).resourceId=resourceId;return true}return false}if(text.startsWith(OMNI_RESOURCE_PATH_TEXT_PREFIX)){if(!isHarnessAnnotation)return false;const filePath=parseResourcePathText(text);if(filePath){mediaFor(turn,filePath.split(/[\\/]/).pop()??filePath);return true}return false}for(const[prefix,apply]of[[OMNI_DISCLOSURE_TEXT_PREFIX,(m,payload)=>{m.disclosures.push(payload)}],[OMNI_OMISSION_TEXT_PREFIX,(m,payload)=>{m.omitted=payload}],[OMNI_TRANSCRIPT_TEXT_PREFIX,(m,payload)=>{m.transcripts.push(payload)}]]){if(!text.startsWith(prefix))continue;const split=splitAnnotationBody(text.slice(prefix.length));if(!split)return false;apply(mediaFor(turn,split.name),split.payload);return true}return false}__name(consumeAnnotationPart,"consumeAnnotationPart");function consumeRecordParts(turn,record,collectProse){const parts=(record.message?.parts??[]).flatMap(part=>[part,...functionResponseOfPart(part)?.parts??[]]);for(const part of parts){const raw=textOfPart(part);if(raw===void 0)continue;const withoutReminders=stripSystemReminders(raw);const forAnnotation=withoutReminders.replace(/^\s+/,"");if(consumeAnnotationPart(turn,forAnnotation,isHarnessAnnotationPart(part)))continue;const prose=withoutReminders.trim();if(!prose)continue;if(collectProse)turn.requestTexts.push(prose)}}__name(consumeRecordParts,"consumeRecordParts");function finishTurn(turn,sessionId){return{kind:"turn",sessionId,turnIndex:turn.turnIndex,...turn.timestamp!==void 0?{timestamp:turn.timestamp}:{},request:{text:turn.requestTexts.join("\n"),media:[...turn.media.values()],...turn.recall!==void 0?{recall:turn.recall}:{}},response:{text:turn.responseTexts.join("\n"),toolCalls:turn.toolCalls}}}__name(finishTurn,"finishTurn");function activeChainRecords(records){const byUuid=new Map;for(const record of records){if(typeof record.uuid==="string")byUuid.set(record.uuid,record)}if(byUuid.size===0)return records;let leaf;for(let i=records.length-1;i>=0;i--){if(typeof records[i].uuid==="string"){leaf=records[i];break}}if(!leaf)return records;const active=new Set;let current=leaf;while(current?.uuid&&!active.has(current.uuid)){active.add(current.uuid);current=typeof current.parentUuid==="string"?byUuid.get(current.parentUuid):void 0}return records.filter(r=>typeof r.uuid!=="string"||active.has(r.uuid))}__name(activeChainRecords,"activeChainRecords");function buildTurnRecords(transcriptLines){const turns=[];let sessionId="";let current;for(const record of activeChainRecords(transcriptLines)){if(typeof record.sessionId==="string"&&sessionId===""){sessionId=record.sessionId}if(record.type==="user"&&record.subtype===void 0){if(current)turns.push(finishTurn(current,sessionId));current={turnIndex:turns.length,...record.timestamp!==void 0?{timestamp:record.timestamp}:{},requestTexts:[],media:new Map,responseTexts:[],toolCalls:[]};consumeRecordParts(current,record,true);continue}if(!current)continue;if(record.type==="system"&&record.subtype==="omni_recall"){current.recall=record.systemPayload;continue}if(record.type==="tool_result"){consumeRecordParts(current,record,false);continue}if(record.type==="assistant"){for(const part of record.message?.parts??[]){if(isThoughtPart(part))continue;const text=textOfPart(part);if(text!==void 0&&text.trim()){current.responseTexts.push(text);continue}const call=functionCallOfPart(part);if(call)current.toolCalls.push(call)}}}if(current)turns.push(finishTurn(current,sessionId));return turns}__name(buildTurnRecords,"buildTurnRecords");async function readSnapshotRaw(omniRootDir){const filePath=path3.join(omniRootDir,"memory.json");let raw;try{raw=await fs3.readFile(filePath,"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null||[parsed.files,parsed.versions,parsed.executions,parsed.entries].some(c=>typeof c!=="object"||c===null||Array.isArray(c))){throw new Error("unexpected snapshot shape")}return parsed}catch(err){debugLogger3.debug(`trajectory export: memory unreadable, exporting transcript only: ${err instanceof Error?err.message:err}`);return void 0}}__name(readSnapshotRaw,"readSnapshotRaw");function buildMemoryRecords(snapshot){const files=[];const executions=[];for(const version of Object.values(snapshot.versions)){try{const file=snapshot.files[version.fileId];if(!file)continue;files.push({kind:"file",fileId:version.fileId,fileVersionId:version.fileVersionId,rootFileId:file.rootFileId,sha256:version.sha256,mediaType:version.mediaType,origin:file.origin,sizeBytes:version.sizeBytes,mimeType:version.mimeType,source:version.source,...version.producedByExecutionId!==void 0?{producedByExecutionId:version.producedByExecutionId}:{},...version.parentVersionId!==void 0?{parentVersionId:version.parentVersionId}:{},createdAt:version.createdAt})}catch{}}for(const execution of Object.values(snapshot.executions)){try{const outputs=execution.outputRefs.flatMap(entryId=>{const entry=snapshot.entries[entryId];if(!entry)return[];return[{kind:entry.kind,...entry.role!==void 0?{role:entry.role}:{},...entry.artifactRef?.managedId?.startsWith("sha256/")?{sha256:entry.artifactRef.managedId.slice("sha256/".length)}:{},...entry.artifactRef?.mimeType!==void 0?{mimeType:entry.artifactRef.mimeType}:{},...entry.artifactRef?.sizeBytes!==void 0?{sizeBytes:entry.artifactRef.sizeBytes}:{},...entry.disclosure!==void 0?{disclosure:entry.disclosure}:{}}]});executions.push({kind:"execution",executionId:execution.executionId,invocationId:execution.invocationId,executionOrigin:execution.executionOrigin,toolName:execution.toolName,...execution.toolVersion!==void 0?{toolVersion:execution.toolVersion}:{},finalArguments:execution.finalArguments,omniConfigHash:execution.omniConfigHash,sourceVersionId:execution.sourceVersionId,rootFileId:execution.rootFileId,startedAt:execution.startedAt,completedAt:execution.completedAt,...execution.reusedExecutionId!==void 0?{reusedExecutionId:execution.reusedExecutionId}:{},outputs})}catch{}}return{files,executions}}__name(buildMemoryRecords,"buildMemoryRecords");function filterToSession(memory,turns,transcriptLines){const callIds=new Set;for(const record of activeChainRecords(transcriptLines)){if(record.type!=="tool_result")continue;for(const part of record.message?.parts??[]){const id=functionResponseOfPart(part)?.id;if(typeof id==="string")callIds.add(id)}}const mediaNames=new Set;for(const turn of turns){for(const call of turn.response.toolCalls){if(call.callId)callIds.add(call.callId)}for(const media of turn.request.media)mediaNames.add(media.name)}const filesByVersion=new Map(memory.files.map(f=>[f.fileVersionId,f]));const versionsByFile=new Map;for(const f of memory.files){const list=versionsByFile.get(f.fileId)??[];list.push(f);versionsByFile.set(f.fileId,list)}const includedFiles=new Set;const includedExecutions=new Set;const includeFile=__name(fileId=>{if(!fileId||includedFiles.has(fileId))return false;if(!versionsByFile.has(fileId))return false;includedFiles.add(fileId);return true},"includeFile");for(const f of memory.files){if(mediaNames.has(f.source.locator))includeFile(f.fileId)}for(const e of memory.executions){if(callIds.has(e.invocationId))includedExecutions.add(e.executionId)}let changed=true;while(changed){changed=false;for(const e of memory.executions){const sourceFile=filesByVersion.get(e.sourceVersionId)?.fileId;if(!includedExecutions.has(e.executionId)){if(sourceFile&&includedFiles.has(sourceFile)){includedExecutions.add(e.executionId);changed=true}else{continue}}if(includeFile(sourceFile))changed=true}for(const f of memory.files){if(includedFiles.has(f.fileId))continue;if(f.producedByExecutionId!==void 0&&includedExecutions.has(f.producedByExecutionId)){includeFile(f.fileId);changed=true}}}return{files:memory.files.filter(f=>includedFiles.has(f.fileId)),executions:memory.executions.filter(e=>includedExecutions.has(e.executionId))}}__name(filterToSession,"filterToSession");async function exportOmniTrajectory(options){const raw=await fs3.readFile(options.transcriptPath,"utf8");const transcriptLines=[];for(const line of raw.split("\n")){if(!line.trim())continue;try{transcriptLines.push(JSON.parse(line))}catch{}}const turns=buildTurnRecords(transcriptLines);const records=[...turns];const snapshot=await readSnapshotRaw(options.omniRootDir);const memoryRecords=snapshot?filterToSession(buildMemoryRecords(snapshot),turns,transcriptLines):{files:[],executions:[]};records.push(...memoryRecords.files.sort((a,b)=>a.fileVersionId.localeCompare(b.fileVersionId)),...memoryRecords.executions.sort((a,b)=>a.executionId.localeCompare(b.executionId)));return records}__name(exportOmniTrajectory,"exportOmniTrajectory");function serializeOmniTrajectory(records){return records.map(r=>JSON.stringify(r)).join("\n")+"\n"}__name(serializeOmniTrajectory,"serializeOmniTrajectory");async function writeOmniTrajectoryJsonl(options){const outPath=path3.resolve(options.outPath);if(outPath===path3.resolve(options.transcriptPath)){throw new Error("trajectory outPath must differ from the transcript path")}const records=await exportOmniTrajectory(options);await fs3.mkdir(path3.dirname(outPath),{recursive:true});await fs3.writeFile(outPath,serializeOmniTrajectory(records),"utf8");return{records:records.length}}__name(writeOmniTrajectoryJsonl,"writeOmniTrajectoryJsonl");var debugLogger4=createDebugLogger("omni");function sanitizeErrorMessage(err,knownPaths=[]){let msg=err instanceof Error?err.message:String(err);for(const known of knownPaths){if(!known)continue;msg=msg.split(known).join(path4.basename(known));const segments=known.split(/[\\/]+/).filter(Boolean);if(/^[A-Za-z]:$/.test(segments[0]??""))segments.shift();if(segments.length>=2){const spelled=segments.map(segment=>segment.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\\\/]+");msg=msg.replace(new RegExp(`(?:[A-Za-z]:)?[\\\\/]*${spelled}`,"g"),()=>path4.basename(known))}}return msg.replace(/(?:\/[^/\s'"]+)+\/([^/\s'"]+)/g,"$1").replace(/(?:[A-Za-z]:)?(?:\\[^\\\s'"]+)+\\([^\\\s'"]+)/g,"$1")}__name(sanitizeErrorMessage,"sanitizeErrorMessage");function buildAdditionalMediaParts(displayName,additionalMedia){const parts=[];for(const extra of additionalMedia??[]){if(extra.disclosure){parts.push({text:formatDisclosureText(displayName,extra.disclosure)})}if(extra.omission){parts.push({text:formatOmissionText(displayName,extra.omission.reason)})}else{parts.push({fileData:{fileUri:extra.fileUri,mimeType:extra.mimeType,displayName}})}}return parts}__name(buildAdditionalMediaParts,"buildAdditionalMediaParts");function buildTranscriptParts(displayName,transcripts){const parts=[];for(const t of transcripts??[]){if(t.disclosure){parts.push({text:formatDisclosureText(displayName,t.disclosure)})}parts.push({text:formatTranscriptText(displayName,t.text)})}return parts}__name(buildTranscriptParts,"buildTranscriptParts");var OmniDeliveryError=class extends Error{static{__name(this,"OmniDeliveryError")}constructor(message,options){super(message,options);this.name="OmniDeliveryError"}};function evaluateTransportLimits(config,recognized,displayName){try{assertWithinByteLimit(config,recognized.sizeBytes,displayName);assertWithinDurationLimit(config,recognized,displayName);return{estimate:assertWithinTokenLimit(config,recognized,displayName)}}catch(err){if(err instanceof OmniTransportGuardError){return{estimate:estimateRawResourceTokens(recognized),violation:err.message}}throw err}}__name(evaluateTransportLimits,"evaluateTransportLimits");async function processMediaForOmniDelivery(filePath,config,options){const{expectedModality,signal}=options??{};const displayName=options?.displayName??path4.basename(filePath);const[ffmpeg,ffprobe]=await Promise.all([isFfmpegAvailable(),isFfprobeAvailable()]);if(!ffmpeg||!ffprobe){throw new OmniDeliveryError("ffmpeg/ffprobe not available; omni media delivery requires both on PATH.")}await fs4.stat(filePath).catch(err=>{throw new OmniDeliveryError(`Cannot stat media file ${displayName}: ${sanitizeErrorMessage(err,[filePath])}`,{cause:err})});let recognized;try{recognized=await recognizeMediaFile(filePath,{expectedModality,signal})}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Media recognition failed for ${displayName}: ${sanitizeErrorMessage(err,[filePath])}`,{cause:err})}const store=new OmniObjectStore(config.storage.getQwenDir());const uploadConfig=requireEffectiveOmniUploadConfig(config);const cacheScope=createHash("sha256").update(`${uploadConfig.baseUrl}|${uploadConfig.apiKey}`).digest("hex").slice(0,16);const configuredTtl=config.getOmniUploadUrlTtlHours?.();const uploadCache=new OmniUploadCache(store.getOmniRootDir(),configuredTtl===void 0?DEFAULT_UPLOAD_CACHE_TTL_HOURS:configuredTtl,cacheScope);await runStartupRecoveryOnce(store,uploadCache,{quarantineRetentionDays:config.getOmniQuarantineRetentionDays?.(),quarantineMaxBytes:config.getOmniQuarantineMaxBytes?.(),degradationCache:new OmniDegradationCache(store.getOmniRootDir())});const processingConfig=config.getOmniProcessingConfig?.();const conditionContext=processingConfig?{session:buildSessionConditionNamespace(config,processingConfig.limits.reservedOutputTokens)}:void 0;const memoryConfig=config.getOmniMemoryConfig?.();const memoryService=memoryConfig?new MediaMemoryService(store.getOmniRootDir(),{maxInlineTextBytes:memoryConfig.collection.maxInlineTextBytes}):void 0;if(memoryService){void runOmniGcOnce({store,memoryService,registry:config.getOmniMediaResourceRegistry?.(),uploadCache,degradationCache:new OmniDegradationCache(store.getOmniRootDir()),retentionDays:config.getOmniStorageRetentionDays?.()??14,maxTotalBytes:typeof config.getOmniStorageMaxTotalBytes==="function"?effectiveOmniStorageMaxTotalBytes(config):20*1024*1024*1024})}const registry=memoryService?config.getOmniMediaResourceRegistry?.():void 0;const bindSessionResource=__name((item,fileRefOverride)=>registry&&item.memoryBinding?registry.bind({...item.memoryBinding,fileRef:fileRefOverride??item.filePath,mediaType:item.recognized.modality}):void 0,"bindSessionResource");let sourceSha256;let sourceBinding;let sourceFileRef=filePath;if(memoryService){try{sourceSha256=await hashFileSha256(filePath,signal)}catch(err){if(signal?.aborted)throw err;debugLogger4.debug(`omni memory: hashing ${displayName} failed, skipping collection: ${sanitizeErrorMessage(err,[filePath])}`)}if(sourceSha256){const origin=options?.origin??"user";const ephemeralSource=origin==="tool"||options?.sourceUrl!==void 0;sourceFileRef=ephemeralSource?store.objectPathFor(sourceSha256,extensionForMime(recognized.detectedMimeType)):filePath;sourceBinding=await memoryService.recordFileRecognized({fileRef:sourceFileRef,sha256:sourceSha256,mediaType:recognized.modality,metadata:recognized.metadata,sizeBytes:recognized.sizeBytes,mimeType:recognized.detectedMimeType,origin,source:options?.sourceUrl!==void 0?{protocol:"url",locator:options.sourceUrl}:origin==="tool"?{protocol:"managed",locator:`sha256/${sourceSha256}`}:{protocol:"local",locator:displayName},recognition:{ingestionConfigHash:"",detectorVersion:MEDIA_DETECTOR_VERSION,probeStatus:"complete"}})}}let final={filePath,recognized,sha256:sourceSha256,memoryBinding:sourceBinding};const sessionResourceId=bindSessionResource(final,sourceFileRef)?.resourceId;const guardRejection=__name((message,options2)=>{const err=new OmniTransportGuardError(message,options2);if(sessionResourceId!==void 0){err.sessionResourceId=sessionResourceId}return err},"guardRejection");let extraDeliveries=[];const transcripts=[];const collectTranscripts=__name(files=>{for(const file of files){transcripts.push({text:file.text,disclosure:file.disclosure})}},"collectTranscripts");const textOnlyDelivery=__name((recognizedFinal,tokenEstimate2,extras)=>({fileUri:"",mimeType:recognizedFinal.detectedMimeType,sha256:"",recognized:recognizedFinal,tokenEstimate:tokenEstimate2,deduped:false,uploadCacheHit:false,degraded:true,transcripts,resourceId:sessionResourceId,...extras}),"textOnlyDelivery");const policies=processingConfig?.fixedPolicies??[];if(policies.length>0){let deliveries;let fileDeliveries;try{({deliveries,fileDeliveries}=await runFixedPolicies(config,{filePath,recognized,displayName,origin:options?.origin??"user",sha256:sourceSha256},{store,policies,signal,limits:processingConfig?.limits,conditionContext,memory:memoryService?{service:memoryService,sourceBinding}:void 0}))}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Fixed-policy processing failed for ${displayName}: ${sanitizeErrorMessage(err,[filePath,store.getOmniRootDir()])}`,{cause:err})}collectTranscripts(fileDeliveries);if(deliveries.length===0&&transcripts.length>0){return textOnlyDelivery(recognized,evaluateTransportLimits(config,recognized,displayName).estimate)}if(deliveries.length===0){throw new OmniDeliveryError(`Fixed policies produced 0 media deliverables for ${displayName}; exactly one is supported.`)}final=deliveries[0];extraDeliveries=deliveries.slice(1);for(const delivery of deliveries)bindSessionResource(delivery)}const uploadModel=uploadConfig.model;const uploadResource=__name(async(item,estimate)=>{let sha256;try{sha256=item.sha256??await hashFileSha256(item.filePath,signal)}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Failed to hash media file ${displayName}: ${sanitizeErrorMessage(err,[item.filePath])}`,{cause:err})}const cachedUrl=await uploadCache.get(sha256,uploadModel);if(cachedUrl){debugLogger4.debug(`omni upload cache hit: sha256=${sha256.slice(0,12)}\u2026 model=${uploadModel}`);return{fileUri:cachedUrl,sha256,deduped:true,uploadCacheHit:true}}const extension=extensionForMime(item.recognized.detectedMimeType);let objectPath;let deduped;try{const put=await store.putFile(item.filePath,sha256,extension,signal);objectPath=put.objectPath;deduped=put.deduped}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Failed to store media in the omni object store: ${sanitizeErrorMessage(err,[item.filePath,store.getOmniRootDir()])}`,{cause:err})}const uploader=new DashScopeUploader({apiKey:uploadConfig.apiKey,baseUrl:uploadConfig.baseUrl});let fileUri;try{fileUri=await uploader.uploadFile({filePath:objectPath,model:uploadModel,mimeType:item.recognized.detectedMimeType,signal})}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(sanitizeErrorMessage(err,[objectPath,store.getOmniRootDir()]),{cause:err})}debugLogger4.debug(`omni ${item.recognized.modality} delivered: sha256=${sha256.slice(0,12)}\u2026 size=${item.recognized.sizeBytes} est=${estimate.estimatedTokenCount}(${estimate.status}) deduped=${deduped} degraded=${item.degraded===true} uri=${fileUri}`);await uploadCache.put(sha256,uploadModel,fileUri);return{fileUri,sha256,deduped,uploadCacheHit:false}},"uploadResource");const processAdditionalMedia=__name(async()=>{if(extraDeliveries.length===0)return void 0;return Promise.all(extraDeliveries.map(async extra=>{const extraGuard=evaluateTransportLimits(config,extra.recognized,displayName);if(extraGuard.violation){debugLogger4.debug(`omni additional ${extra.recognized.modality} explicitly omitted (transport guard): ${extraGuard.violation}`);return{fileUri:"",mimeType:extra.recognized.detectedMimeType,sha256:extra.sha256??"",disclosure:extra.disclosure,omission:{reason:extraGuard.violation}}}const uploaded2=await uploadResource(extra,extraGuard.estimate);return{fileUri:uploaded2.fileUri,mimeType:extra.recognized.detectedMimeType,sha256:uploaded2.sha256,disclosure:extra.disclosure}}))},"processAdditionalMedia");let guard=evaluateTransportLimits(config,final.recognized,displayName);if(guard.violation&&processingConfig){const maxPasses=processingConfig.limits.maxTransportPasses;for(let pass=0;guard.violation&&pass<maxPasses;pass++){const guardPolicies=processingConfig.transportGuardPolicies.filter(p=>p.mediaTypes.includes(final.recognized.modality));if(guardPolicies.length===0)break;let deliveries;let fileDeliveries;try{({deliveries,fileDeliveries}=await runFixedPolicies(config,{filePath:final.filePath,recognized:final.recognized,displayName,origin:options?.origin??"user",sha256:final.sha256},{store,policies:guardPolicies,signal,limits:processingConfig.limits,conditionContext,memory:memoryService?{service:memoryService,sourceBinding:final.memoryBinding}:void 0}))}catch(err){if(signal?.aborted)throw err;throw guardRejection(`Transport-guard processing failed for ${displayName}: ${sanitizeErrorMessage(err,[final.filePath,store.getOmniRootDir()])}`,{cause:err})}collectTranscripts(fileDeliveries);if(deliveries.length===0&&fileDeliveries.length>0){return textOnlyDelivery(final.recognized,guard.estimate,{disclosure:final.disclosure,additionalMedia:await processAdditionalMedia()})}if(deliveries.length!==1){throw guardRejection(`Transport-guard policies produced ${deliveries.length} media deliverables for ${displayName}; exactly one is supported.`)}if(deliveries[0].filePath===final.filePath){break}const priorDisclosure=final.disclosure;final=deliveries[0];if(priorDisclosure&&final.disclosure){final={...final,disclosure:`${priorDisclosure}\uFF1B${final.disclosure}`}}else if(priorDisclosure){final={...final,disclosure:priorDisclosure}}bindSessionResource(final);guard=evaluateTransportLimits(config,final.recognized,displayName)}}if(guard.violation){if(!processingConfig){throw guardRejection(guard.violation)}debugLogger4.debug(`omni ${final.recognized.modality} explicitly omitted (transport guard): ${guard.violation}`);return{fileUri:"",mimeType:final.recognized.detectedMimeType,sha256:final.sha256??"",recognized:final.recognized,tokenEstimate:guard.estimate,deduped:false,uploadCacheHit:false,disclosure:final.disclosure,degraded:final.degraded,omission:{reason:guard.violation},transcripts:transcripts.length>0?transcripts:void 0,additionalMedia:await processAdditionalMedia(),resourceId:sessionResourceId}}const tokenEstimate=guard.estimate;const uploaded=await uploadResource(final,tokenEstimate);return{fileUri:uploaded.fileUri,mimeType:final.recognized.detectedMimeType,sha256:uploaded.sha256,recognized:final.recognized,tokenEstimate,deduped:uploaded.deduped,uploadCacheHit:uploaded.uploadCacheHit,disclosure:final.disclosure,degraded:final.degraded,transcripts:transcripts.length>0?transcripts:void 0,additionalMedia:await processAdditionalMedia(),resourceId:sessionResourceId}}__name(processMediaForOmniDelivery,"processMediaForOmniDelivery");async function readMediaViaOmniDelivery(params){const{filePath,config,displayName,relativePathForDisplay,expectedModality,signal}=params;try{const delivery=await processMediaForOmniDelivery(filePath,config,{expectedModality,signal});const transcriptParts=buildTranscriptParts(displayName,delivery.transcripts);const additionalParts=buildAdditionalMediaParts(displayName,delivery.additionalMedia);const handleParts=(()=>{if(!delivery.resourceId)return[];const binding=config.getOmniMediaResourceRegistry?.()?.resolve(delivery.resourceId);if(binding&&binding.fileRef===filePath&&!/[\r\n]/.test(filePath)){return[harnessPathAnnotationPart(filePath)]}return[{text:formatResourceHandleText(displayName,delivery.resourceId)}]})();if(delivery.omission){const omissionPart={text:formatOmissionText(displayName,delivery.omission.reason)};return{llmContent:transcriptParts.length>0||additionalParts.length>0||handleParts.length>0?[...handleParts,omissionPart,...additionalParts,...transcriptParts]:omissionPart.text,returnDisplay:`Media omitted by the omni transport guard: ${relativePathForDisplay}`,tokenEstimate:delivery.tokenEstimate}}if(!delivery.fileUri&&transcriptParts.length>0){const disclosureParts=delivery.disclosure?[{text:formatDisclosureText(displayName,delivery.disclosure)}]:[];return{llmContent:[...handleParts,...disclosureParts,...additionalParts,...transcriptParts],returnDisplay:`Read ${delivery.recognized.modality} as transcript (omni policy): ${relativePathForDisplay}`,tokenEstimate:delivery.tokenEstimate}}const fileDataPart={fileData:{fileUri:delivery.fileUri,mimeType:delivery.mimeType,displayName}};const parts=[...handleParts];const{width,height}=delivery.recognized.metadata;if(delivery.recognized.modality==="image"&&width!==void 0&&height!==void 0){parts.push({text:delivery.disclosure?`Image ${displayName}: delivered at ${width}x${height} px after degradation. Use zoom_image to inspect details \u2014 it reads the original file.`:`Image ${displayName}: full resolution ${width}x${height} px. Use zoom_image for a closer look at details.`})}if(delivery.disclosure){parts.push({text:formatDisclosureText(displayName,delivery.disclosure)})}parts.push(fileDataPart);parts.push(...additionalParts);parts.push(...transcriptParts);const llmContent=parts.length===1?fileDataPart:parts;return{llmContent,returnDisplay:`Read ${delivery.recognized.modality} file (omni upload): ${relativePathForDisplay}`,tokenEstimate:delivery.tokenEstimate}}catch(err){if(isAbortError(err)||signal?.aborted)throw err;const message=sanitizeErrorMessage(err,[filePath]);return{llmContent:`[Omni media delivery failed for ${displayName}: ${message}]`,returnDisplay:`Failed to deliver media via omni upload: ${relativePathForDisplay}`,error:`Omni media delivery failed: ${displayName}: ${message}`,errorType:"read_content_failure"}}}__name(readMediaViaOmniDelivery,"readMediaViaOmniDelivery");function effectiveMaxDownloadFileBytes(config){const uploadCap=effectiveMaxUploadFileBytes(config);const configured=config.getOmniUrlDownloadMaxFileBytes?.();if(configured!==void 0&&configured>0){return Math.min(configured,uploadCap)}return uploadCap}__name(effectiveMaxDownloadFileBytes,"effectiveMaxDownloadFileBytes");export{OmniDownloadError,parseHttpUrlRef,downloadMediaUrl,exportOmniTrajectory,serializeOmniTrajectory,writeOmniTrajectoryJsonl,sanitizeErrorMessage,buildAdditionalMediaParts,buildTranscriptParts,OmniDeliveryError,processMediaForOmniDelivery,readMediaViaOmniDelivery,effectiveMaxDownloadFileBytes,processToolResultOmniMedia};
3
+ import{DashScopeUploader}from"./chunk-RKDS7A4H.js";import{OmniDegradationCache,OmniTransportGuardError,assertWithinByteLimit,assertWithinDurationLimit,assertWithinTokenLimit,effectiveMaxUploadFileBytes,effectiveOmniStorageMaxTotalBytes,estimateRawResourceTokens,runFixedPolicies,runOmniGcOnce}from"./chunk-KZNYALFU.js";import{MEDIA_DETECTOR_VERSION,MediaMemoryService}from"./chunk-XFMPZINJ.js";import{runStartupRecoveryOnce}from"./chunk-HN5UYLPU.js";import{DEFAULT_UPLOAD_CACHE_TTL_HOURS,OmniUploadCache}from"./chunk-HTW7PYHK.js";import{OmniObjectStore,prepareOmniDownloadsDir}from"./chunk-YFTVFH2A.js";import{extensionForMime,hashFileSha256,recognizeMediaFile,sniffMediaType}from"./chunk-ZBHL2CXR.js";import{isFfmpegAvailable,isFfprobeAvailable}from"./chunk-NIOS3B3V.js";import{isOmniDeliveryActive}from"./chunk-OBV7RNHV.js";import{requireEffectiveOmniUploadConfig}from"./chunk-XZTE4YTN.js";import{OMNI_DISCLOSURE_TEXT_PREFIX,OMNI_OMISSION_TEXT_PREFIX,OMNI_RESOURCE_HANDLE_TEXT_PREFIX,OMNI_RESOURCE_PATH_TEXT_PREFIX,OMNI_TRANSCRIPT_TEXT_PREFIX,formatDisclosureText,formatOmissionText,formatResourceHandleText,formatTranscriptText,harnessPathAnnotationPart,isHarnessAnnotationPart,parseResourceHandleText,parseResourcePathText,splitAnnotationBody,unescapeAnnotationName}from"./chunk-SW54YEPK.js";import{isPermittedRedirect,isPrivateHost,resolveNetworkTarget}from"./chunk-5CWTKFI4.js";import{ImageViewError,boundImageBuffer,sniffBoundableImageMime}from"./chunk-Z6AR5XE5.js";import{TOOL_RESULT_MEDIA_REMEDY,clampInlineMediaPart,getMaxInlineMediaBytes}from"./chunk-Q6UAOTP3.js";import{detectRuntime,loadUndici}from"./chunk-ZZZAYAJW.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{isAbortError}from"./chunk-XYB7GC5U.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{createHash}from"node:crypto";import path4 from"node:path";import fs4 from"node:fs/promises";init_esbuild_shims();function buildSessionConditionNamespace(config,reservedOutputTokens){const session={reservedOutputTokens};const windowSize=config.getContentGeneratorConfig?.()?.contextWindowSize;const contextWindowTokens=typeof windowSize==="number"&&Number.isFinite(windowSize)&&windowSize>0?windowSize:void 0;if(contextWindowTokens!==void 0){session.contextWindowTokens=contextWindowTokens}let promptTokenCount;try{const count=config.getGeminiClient?.()?.getChat?.()?.getLastPromptTokenCount();if(typeof count==="number"&&Number.isFinite(count)&&count>=0){promptTokenCount=count}}catch{}if(promptTokenCount!==void 0){session.promptTokenCount=promptTokenCount}if(contextWindowTokens!==void 0&&promptTokenCount!==void 0){session.availableContextTokens=Math.max(0,contextWindowTokens-promptTokenCount-reservedOutputTokens)}return session}__name(buildSessionConditionNamespace,"buildSessionConditionNamespace");init_esbuild_shims();import{randomBytes}from"node:crypto";import{once}from"node:events";import{createWriteStream}from"node:fs";import fs from"node:fs/promises";import path from"node:path";import{Readable}from"node:stream";import{pipeline}from"node:stream/promises";var debugLogger=createDebugLogger("omni:download");var OmniDownloadError=class extends Error{static{__name(this,"OmniDownloadError")}constructor(message,options){super(message,options);this.name="OmniDownloadError"}};var RESOLVE_TIMEOUT_MS=3e4;var HEADER_TIMEOUT_MS=3e4;var IDLE_TIMEOUT_MS=6e4;var MAX_REDIRECTS=5;function parseHttpUrlRef(pathName){if(!/^https?:\/\//i.test(pathName))return null;try{return new URL(pathName)}catch{return null}}__name(parseHttpUrlRef,"parseHttpUrlRef");function scrubPathsFromMessage(message){return message.replace(/(?:[A-Za-z]:)?(?:[\\/][^\s'"`\\/]+){2,}[\\/]?/g,match=>path.basename(match))}__name(scrubPathsFromMessage,"scrubPathsFromMessage");function formatCauseChain(err){const parts=[];let cause=err instanceof Error?err.cause:void 0;for(let depth=0;cause!=null&&depth<4;depth++){const code=cause.code;const message=cause instanceof Error?cause.message:typeof cause==="string"?cause:void 0;if(typeof code==="string"&&message&&!message.includes(code)){parts.push(`${code}: ${message}`)}else if(message){parts.push(message)}else if(typeof code==="string"){parts.push(code)}cause=cause instanceof Error?cause.cause:void 0}return parts.length>0?scrubPathsFromMessage(parts.join("; ")):void 0}__name(formatCauseChain,"formatCauseChain");function detectConfiguredProxy(undici){for(const key of["https_proxy","HTTPS_PROXY","http_proxy","HTTP_PROXY","all_proxy","ALL_PROXY"]){if(process.env[key])return true}try{return undici.getGlobalDispatcher()instanceof undici.EnvHttpProxyAgent}catch{return false}}__name(detectConfiguredProxy,"detectConfiguredProxy");async function downloadMediaUrl(params){const{url,downloadsDir,maxBytes,signal,resolveTimeoutMs=RESOLVE_TIMEOUT_MS,headerTimeoutMs=HEADER_TIMEOUT_MS,idleTimeoutMs=IDLE_TIMEOUT_MS}=params;const resolveTarget=params.resolveTarget??(target=>resolveNetworkTarget(target,"public",signal));if(isPrivateHost(url)){throw new OmniDownloadError(`URL host is not publicly routable (refused for safety): ${new URL(url).hostname}`)}let parsed;try{parsed=new URL(url)}catch{throw new OmniDownloadError("URL media ref is not a valid URL (refused).")}if(parsed.protocol!=="https:"){throw new OmniDownloadError(`URL media must be https (refused for safety): ${parsed.protocol}//${parsed.hostname}`)}if(parsed.username||parsed.password){throw new OmniDownloadError(`URL media must not embed credentials (refused for safety): ${parsed.hostname}`)}const runtime=detectRuntime();if(runtime!=="node"){throw new OmniDownloadError(`URL media requires the Node runtime to verify the connection target (refused for safety on ${runtime}): use a local file path instead of a URL, or run under Node.`)}const undici=await loadUndici();const proxied=params.detectProxy?params.detectProxy():detectConfiguredProxy(undici);if(proxied){throw new OmniDownloadError(`URL media fetching is not supported behind a proxy yet (refused): the connection pinning that enforces SSRF protection cannot be applied through a proxy. Download the file manually and use a local path instead.`)}try{await prepareOmniDownloadsDir(downloadsDir)}catch(err){throw new OmniDownloadError(`Could not prepare the downloads directory for URL media: ${err instanceof Error?scrubPathsFromMessage(err.message):String(err)}`,{cause:err})}const partPath=path.join(downloadsDir,`${randomBytes(8).toString("hex")}.part`);let currentUrl=url;let dispatcher;try{for(let redirects=0;;redirects++){let target;const resolveAbort=new AbortController;const resolveTimer=setTimeout(()=>resolveAbort.abort(new Error("resolve timeout")),resolveTimeoutMs);try{const pending=resolveTarget(currentUrl);pending.catch(()=>{});target=await Promise.race([pending,new Promise((_,reject)=>{resolveAbort.signal.addEventListener("abort",()=>reject(resolveAbort.signal.reason),{once:true})})])}catch(err){if(signal?.aborted)throw err;if(resolveAbort.signal.aborted){throw new OmniDownloadError(`Download timed out resolving ${new URL(currentUrl).hostname} (${resolveTimeoutMs/1e3}s)`)}const text=err instanceof Error?err.message:String(err);const reason=/blocked address/i.test(text)?"resolved to a non-public address":/did not resolve/i.test(text)?"did not resolve":"could not be verified";throw new OmniDownloadError(`URL host ${reason} (refused for safety): ${new URL(currentUrl).hostname}`,{cause:err})}finally{clearTimeout(resolveTimer)}if(!target.lookup){throw new OmniDownloadError(`URL host cannot be safely bound to a verified address (refused for safety): ${new URL(currentUrl).hostname}`)}const fetchFn=params.fetchFn??undici.fetch;const previousDispatcher=dispatcher;dispatcher=new undici.Agent({connect:{lookup:target.lookup}});await previousDispatcher?.close().catch(()=>{});const headerAbort=new AbortController;const headerTimer=setTimeout(()=>headerAbort.abort(new Error("header timeout")),headerTimeoutMs);const combined=AbortSignal.any(signal?[signal,headerAbort.signal]:[headerAbort.signal]);let res;try{res=await fetchFn(currentUrl,{redirect:"manual",signal:combined,dispatcher})}catch(err){if(signal?.aborted)throw err;if(headerAbort.signal.aborted){throw new OmniDownloadError(`Download timed out waiting for response headers from ${new URL(currentUrl).hostname} (${headerTimeoutMs/1e3}s)`)}const detail=err instanceof Error?scrubPathsFromMessage(err.message):String(err);const causeDetail=formatCauseChain(err);throw new OmniDownloadError(`Download request failed for ${new URL(currentUrl).hostname}: ${detail}${causeDetail?` (${causeDetail})`:""}`,{cause:err})}finally{clearTimeout(headerTimer)}if(res.status>=300&&res.status<400){await res.body?.cancel().catch(()=>{});const location=res.headers.get("location");if(!location||redirects>=MAX_REDIRECTS){throw new OmniDownloadError(`Too many or invalid redirects downloading from ${new URL(currentUrl).hostname}`)}let redirectUrl;try{redirectUrl=new URL(location,currentUrl).toString()}catch{throw new OmniDownloadError(`Redirect with a malformed Location header from ${new URL(currentUrl).hostname}`)}if(!isPermittedRedirect(currentUrl,redirectUrl)){throw new OmniDownloadError(`Cross-origin redirect refused: ${new URL(currentUrl).hostname} \u2192 ${new URL(redirectUrl).hostname}`)}currentUrl=redirectUrl;continue}if(!res.ok){await res.body?.cancel().catch(()=>{});throw new OmniDownloadError(`Download failed: HTTP ${res.status} from ${new URL(currentUrl).hostname}`)}const contentLength=Number(res.headers.get("content-length"));if(Number.isFinite(contentLength)&&contentLength>maxBytes){await res.body?.cancel().catch(()=>{});throw new OmniDownloadError(`Download exceeds the omni media limit: Content-Length ${contentLength} > ${maxBytes} bytes.`)}if(!res.body){throw new OmniDownloadError("Download response had no body.")}let written=0;const idleAbort=new AbortController;let idleTimer=setTimeout(()=>idleAbort.abort(new Error("idle timeout")),idleTimeoutMs);const streamSignal=AbortSignal.any(signal?[signal,idleAbort.signal]:[idleAbort.signal]);try{const source=Readable.fromWeb(res.body,{signal:streamSignal});const counter=__name(async function*(src){for await(const chunk of src){clearTimeout(idleTimer);idleTimer=setTimeout(()=>idleAbort.abort(new Error("idle timeout")),idleTimeoutMs);written+=chunk.length;if(written>maxBytes){throw new OmniDownloadError(`Download exceeds the omni media limit: >${maxBytes} bytes received.`)}yield chunk}},"counter");const destination=createWriteStream(partPath,{mode:384});await once(destination,"open");await pipeline(source,counter,destination)}catch(err){if(signal?.aborted)throw err;if(err instanceof OmniDownloadError)throw err;if(idleAbort.signal.aborted){throw new OmniDownloadError(`Download stalled from ${new URL(currentUrl).hostname}: no data for ${idleTimeoutMs/1e3}s`)}throw new OmniDownloadError(`Download interrupted from ${new URL(currentUrl).hostname}: ${err instanceof Error?scrubPathsFromMessage(err.message):String(err)}`,{cause:err})}finally{clearTimeout(idleTimer)}debugLogger.debug(`downloaded ${written} bytes from ${new URL(currentUrl).hostname}`);return{partPath}}}catch(err){await fs.rm(partPath,{force:true});throw err}finally{await dispatcher?.close().catch(()=>{})}}__name(downloadMediaUrl,"downloadMediaUrl");init_esbuild_shims();import{randomBytes as randomBytes2}from"node:crypto";import fs2 from"node:fs/promises";import path2 from"node:path";var debugLogger2=createDebugLogger("omni:tool-result");var MAX_UPLOADS_PER_TOOL_RESULT=8;var MAX_UPLOAD_BYTES_PER_TOOL_RESULT=128*1024*1024;async function boundDeclinedInlinePart(part,bytes,signal){const inline=part.inlineData;if(!inline?.data)return part;const inlineByteCeiling=getMaxInlineMediaBytes();let boundedPart=part;if(sniffBoundableImageMime(bytes.subarray(0,12))){try{const view=await boundImageBuffer(bytes,`tool-result media (${inline.mimeType??"unknown"})`,signal,inlineByteCeiling);if(view){boundedPart={inlineData:{...inline,data:view.bytes.toString("base64"),mimeType:view.mimeType}}}}catch(error){if(!(error instanceof ImageViewError)){throw error}debugLogger2.debug(`tool-result media kept inline could not be bounded: ${error.message}`)}}return clampInlineMediaPart(boundedPart,inlineByteCeiling,TOOL_RESULT_MEDIA_REMEDY)}__name(boundDeclinedInlinePart,"boundDeclinedInlinePart");async function processToolResultOmniMedia(responseParts,config,signal){if(!isOmniDeliveryActive(config))return responseParts;const modalities=config.getContentGeneratorConfig?.()?.modalities??{};let changed=false;let uploadsRemaining=MAX_UPLOADS_PER_TOOL_RESULT;let uploadBytesRemaining=MAX_UPLOAD_BYTES_PER_TOOL_RESULT;const keepInline=__name(async(part,bytes)=>{const kept=await boundDeclinedInlinePart(part,bytes,signal);if(kept!==part)changed=true;return[kept]},"keepInline");const convertPart=__name(async part=>{const inline=part.inlineData;if(!inline?.data||!inline.mimeType)return[part];const top=inline.mimeType.split("/")[0];if(top!=="image"&&top!=="audio"&&top!=="video")return[part];const bytes=Buffer.from(inline.data,"base64");const sniffed=sniffMediaType(bytes.subarray(0,4096));if(!sniffed)return keepInline(part,bytes);if(!modalities[sniffed.modality]){return keepInline(part,bytes)}if(uploadsRemaining<=0||bytes.length>uploadBytesRemaining){debugLogger2.debug(`tool-result media budget exhausted; keeping part inline (${bytes.length} bytes)`);return keepInline(part,bytes)}const store=new OmniObjectStore(config.storage.getQwenDir());let tempPath;const displayName=inline.displayName??`tool-media.${top}`;try{const stagingDir=await prepareOmniDownloadsDir(path2.join(store.getOmniRootDir(),"downloads"));tempPath=path2.join(stagingDir,`${randomBytes2(8).toString("hex")}.part`);await fs2.writeFile(tempPath,bytes,{mode:384});const delivery=await processMediaForOmniDelivery(tempPath,config,{expectedModality:sniffed.modality,signal,displayName,origin:"tool"});const transcriptParts=buildTranscriptParts(displayName,delivery.transcripts);const additionalParts=buildAdditionalMediaParts(displayName,delivery.additionalMedia);uploadsRemaining-=delivery.additionalMedia?.filter(e=>!e.omission).length??0;const handleParts=delivery.resourceId?[{text:formatResourceHandleText(displayName,delivery.resourceId)}]:[];if(delivery.omission){changed=true;return[...handleParts,{text:formatOmissionText(displayName,delivery.omission.reason)},...additionalParts,...transcriptParts]}if(!delivery.fileUri&&transcriptParts.length>0){changed=true;return delivery.disclosure?[...handleParts,{text:formatDisclosureText(displayName,delivery.disclosure)},...additionalParts,...transcriptParts]:[...handleParts,...additionalParts,...transcriptParts]}changed=true;uploadsRemaining--;uploadBytesRemaining-=bytes.length;const fileDataPart={fileData:{fileUri:delivery.fileUri,mimeType:delivery.mimeType,displayName}};return delivery.disclosure?[...handleParts,{text:formatDisclosureText(displayName,delivery.disclosure)},fileDataPart,...additionalParts,...transcriptParts]:[...handleParts,fileDataPart,...additionalParts,...transcriptParts]}catch(err){if(signal.aborted)throw err;if(err instanceof OmniTransportGuardError){changed=true;return[...err.sessionResourceId?[{text:formatResourceHandleText(displayName,err.sessionResourceId)}]:[],{text:`[Tool media part withheld by the omni transport guard: ${err.message}]`}]}debugLogger2.debug(`tool-result media upload failed, keeping inline: ${err instanceof Error?err.message:String(err)}`);return keepInline(part,bytes)}finally{if(tempPath!==void 0){await fs2.rm(tempPath,{force:true}).catch(()=>{})}}},"convertPart");const result=[];for(const part of responseParts){const nested=part.functionResponse?.parts;if(Array.isArray(nested)&&nested.length>0){const convertedNested=[];let nestedChanged=false;for(const nestedPart of nested){const converted=await convertPart(nestedPart);if(converted.length!==1||converted[0]!==nestedPart){nestedChanged=true}convertedNested.push(...converted)}if(nestedChanged){result.push({...part,functionResponse:{...part.functionResponse,parts:convertedNested}});changed=true}else{result.push(part)}continue}result.push(...await convertPart(part))}return changed?result:responseParts}__name(processToolResultOmniMedia,"processToolResultOmniMedia");init_esbuild_shims();import fs3 from"node:fs/promises";import path3 from"node:path";var debugLogger3=createDebugLogger("omni:export");function textOfPart(part){if(typeof part==="string")return part;if(typeof part==="object"&&part!==null&&"text"in part){const text=part.text;return typeof text==="string"?text:void 0}return void 0}__name(textOfPart,"textOfPart");function functionResponseOfPart(part){if(typeof part!=="object"||part===null)return void 0;const response=part.functionResponse;if(typeof response!=="object"||response===null)return void 0;const{id,parts}=response;return{id,...Array.isArray(parts)?{parts}:{}}}__name(functionResponseOfPart,"functionResponseOfPart");function isThoughtPart(part){return typeof part==="object"&&part!==null&&part.thought===true}__name(isThoughtPart,"isThoughtPart");function functionCallOfPart(part){if(typeof part!=="object"||part===null)return void 0;const fc=part.functionCall;if(typeof fc!=="object"||fc===null)return void 0;const{id,name,args}=fc;if(typeof name!=="string")return void 0;const cleanArgs=typeof args==="object"&&args!==null?{...args}:void 0;return{...typeof id==="string"?{callId:id}:{},name,...cleanArgs?{args:cleanArgs}:{}}}__name(functionCallOfPart,"functionCallOfPart");function stripSystemReminders(text){return text.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/g,"")}__name(stripSystemReminders,"stripSystemReminders");function mediaFor(turn,name){let media=turn.media.get(name);if(!media){media={name,disclosures:[],transcripts:[]};turn.media.set(name,media)}return media}__name(mediaFor,"mediaFor");function consumeAnnotationPart(turn,text,isHarnessAnnotation){if(text.startsWith(OMNI_RESOURCE_HANDLE_TEXT_PREFIX)){const resourceId=parseResourceHandleText(text);if(resourceId){const body=text.slice(OMNI_RESOURCE_HANDLE_TEXT_PREFIX.length);const name=unescapeAnnotationName(body.slice(0,body.length-resourceId.length-1));mediaFor(turn,name).resourceId=resourceId;return true}return false}if(text.startsWith(OMNI_RESOURCE_PATH_TEXT_PREFIX)){if(!isHarnessAnnotation)return false;const filePath=parseResourcePathText(text);if(filePath){mediaFor(turn,filePath.split(/[\\/]/).pop()??filePath);return true}return false}for(const[prefix,apply]of[[OMNI_DISCLOSURE_TEXT_PREFIX,(m,payload)=>{m.disclosures.push(payload)}],[OMNI_OMISSION_TEXT_PREFIX,(m,payload)=>{m.omitted=payload}],[OMNI_TRANSCRIPT_TEXT_PREFIX,(m,payload)=>{m.transcripts.push(payload)}]]){if(!text.startsWith(prefix))continue;const split=splitAnnotationBody(text.slice(prefix.length));if(!split)return false;apply(mediaFor(turn,split.name),split.payload);return true}return false}__name(consumeAnnotationPart,"consumeAnnotationPart");function consumeRecordParts(turn,record,collectProse){const parts=(record.message?.parts??[]).flatMap(part=>[part,...functionResponseOfPart(part)?.parts??[]]);for(const part of parts){const raw=textOfPart(part);if(raw===void 0)continue;const withoutReminders=stripSystemReminders(raw);const forAnnotation=withoutReminders.replace(/^\s+/,"");if(consumeAnnotationPart(turn,forAnnotation,isHarnessAnnotationPart(part)))continue;const prose=withoutReminders.trim();if(!prose)continue;if(collectProse)turn.requestTexts.push(prose)}}__name(consumeRecordParts,"consumeRecordParts");function finishTurn(turn,sessionId){return{kind:"turn",sessionId,turnIndex:turn.turnIndex,...turn.timestamp!==void 0?{timestamp:turn.timestamp}:{},request:{text:turn.requestTexts.join("\n"),media:[...turn.media.values()],...turn.recall!==void 0?{recall:turn.recall}:{}},response:{text:turn.responseTexts.join("\n"),toolCalls:turn.toolCalls}}}__name(finishTurn,"finishTurn");function activeChainRecords(records){const byUuid=new Map;for(const record of records){if(typeof record.uuid==="string")byUuid.set(record.uuid,record)}if(byUuid.size===0)return records;let leaf;for(let i=records.length-1;i>=0;i--){if(typeof records[i].uuid==="string"){leaf=records[i];break}}if(!leaf)return records;const active=new Set;let current=leaf;while(current?.uuid&&!active.has(current.uuid)){active.add(current.uuid);current=typeof current.parentUuid==="string"?byUuid.get(current.parentUuid):void 0}return records.filter(r=>typeof r.uuid!=="string"||active.has(r.uuid))}__name(activeChainRecords,"activeChainRecords");function buildTurnRecords(transcriptLines){const turns=[];let sessionId="";let current;for(const record of activeChainRecords(transcriptLines)){if(typeof record.sessionId==="string"&&sessionId===""){sessionId=record.sessionId}if(record.type==="user"&&record.subtype===void 0){if(current)turns.push(finishTurn(current,sessionId));current={turnIndex:turns.length,...record.timestamp!==void 0?{timestamp:record.timestamp}:{},requestTexts:[],media:new Map,responseTexts:[],toolCalls:[]};consumeRecordParts(current,record,true);continue}if(!current)continue;if(record.type==="system"&&record.subtype==="omni_recall"){current.recall=record.systemPayload;continue}if(record.type==="tool_result"){consumeRecordParts(current,record,false);continue}if(record.type==="assistant"){for(const part of record.message?.parts??[]){if(isThoughtPart(part))continue;const text=textOfPart(part);if(text!==void 0&&text.trim()){current.responseTexts.push(text);continue}const call=functionCallOfPart(part);if(call)current.toolCalls.push(call)}}}if(current)turns.push(finishTurn(current,sessionId));return turns}__name(buildTurnRecords,"buildTurnRecords");async function readSnapshotRaw(omniRootDir){const filePath=path3.join(omniRootDir,"memory.json");let raw;try{raw=await fs3.readFile(filePath,"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);if(typeof parsed!=="object"||parsed===null||[parsed.files,parsed.versions,parsed.executions,parsed.entries].some(c=>typeof c!=="object"||c===null||Array.isArray(c))){throw new Error("unexpected snapshot shape")}return parsed}catch(err){debugLogger3.debug(`trajectory export: memory unreadable, exporting transcript only: ${err instanceof Error?err.message:err}`);return void 0}}__name(readSnapshotRaw,"readSnapshotRaw");function buildMemoryRecords(snapshot){const files=[];const executions=[];for(const version of Object.values(snapshot.versions)){try{const file=snapshot.files[version.fileId];if(!file)continue;files.push({kind:"file",fileId:version.fileId,fileVersionId:version.fileVersionId,rootFileId:file.rootFileId,sha256:version.sha256,mediaType:version.mediaType,origin:file.origin,sizeBytes:version.sizeBytes,mimeType:version.mimeType,source:version.source,...version.producedByExecutionId!==void 0?{producedByExecutionId:version.producedByExecutionId}:{},...version.parentVersionId!==void 0?{parentVersionId:version.parentVersionId}:{},createdAt:version.createdAt})}catch{}}for(const execution of Object.values(snapshot.executions)){try{const outputs=execution.outputRefs.flatMap(entryId=>{const entry=snapshot.entries[entryId];if(!entry)return[];return[{kind:entry.kind,...entry.role!==void 0?{role:entry.role}:{},...entry.artifactRef?.managedId?.startsWith("sha256/")?{sha256:entry.artifactRef.managedId.slice("sha256/".length)}:{},...entry.artifactRef?.mimeType!==void 0?{mimeType:entry.artifactRef.mimeType}:{},...entry.artifactRef?.sizeBytes!==void 0?{sizeBytes:entry.artifactRef.sizeBytes}:{},...entry.disclosure!==void 0?{disclosure:entry.disclosure}:{}}]});executions.push({kind:"execution",executionId:execution.executionId,invocationId:execution.invocationId,executionOrigin:execution.executionOrigin,toolName:execution.toolName,...execution.toolVersion!==void 0?{toolVersion:execution.toolVersion}:{},finalArguments:execution.finalArguments,omniConfigHash:execution.omniConfigHash,sourceVersionId:execution.sourceVersionId,rootFileId:execution.rootFileId,startedAt:execution.startedAt,completedAt:execution.completedAt,...execution.reusedExecutionId!==void 0?{reusedExecutionId:execution.reusedExecutionId}:{},outputs})}catch{}}return{files,executions}}__name(buildMemoryRecords,"buildMemoryRecords");function filterToSession(memory,turns,transcriptLines){const callIds=new Set;for(const record of activeChainRecords(transcriptLines)){if(record.type!=="tool_result")continue;for(const part of record.message?.parts??[]){const id=functionResponseOfPart(part)?.id;if(typeof id==="string")callIds.add(id)}}const mediaNames=new Set;for(const turn of turns){for(const call of turn.response.toolCalls){if(call.callId)callIds.add(call.callId)}for(const media of turn.request.media)mediaNames.add(media.name)}const filesByVersion=new Map(memory.files.map(f=>[f.fileVersionId,f]));const versionsByFile=new Map;for(const f of memory.files){const list=versionsByFile.get(f.fileId)??[];list.push(f);versionsByFile.set(f.fileId,list)}const includedFiles=new Set;const includedExecutions=new Set;const includeFile=__name(fileId=>{if(!fileId||includedFiles.has(fileId))return false;if(!versionsByFile.has(fileId))return false;includedFiles.add(fileId);return true},"includeFile");for(const f of memory.files){if(mediaNames.has(f.source.locator))includeFile(f.fileId)}for(const e of memory.executions){if(callIds.has(e.invocationId))includedExecutions.add(e.executionId)}let changed=true;while(changed){changed=false;for(const e of memory.executions){const sourceFile=filesByVersion.get(e.sourceVersionId)?.fileId;if(!includedExecutions.has(e.executionId)){if(sourceFile&&includedFiles.has(sourceFile)){includedExecutions.add(e.executionId);changed=true}else{continue}}if(includeFile(sourceFile))changed=true}for(const f of memory.files){if(includedFiles.has(f.fileId))continue;if(f.producedByExecutionId!==void 0&&includedExecutions.has(f.producedByExecutionId)){includeFile(f.fileId);changed=true}}}return{files:memory.files.filter(f=>includedFiles.has(f.fileId)),executions:memory.executions.filter(e=>includedExecutions.has(e.executionId))}}__name(filterToSession,"filterToSession");async function exportOmniTrajectory(options){const raw=await fs3.readFile(options.transcriptPath,"utf8");const transcriptLines=[];for(const line of raw.split("\n")){if(!line.trim())continue;try{transcriptLines.push(JSON.parse(line))}catch{}}const turns=buildTurnRecords(transcriptLines);const records=[...turns];const snapshot=await readSnapshotRaw(options.omniRootDir);const memoryRecords=snapshot?filterToSession(buildMemoryRecords(snapshot),turns,transcriptLines):{files:[],executions:[]};records.push(...memoryRecords.files.sort((a,b)=>a.fileVersionId.localeCompare(b.fileVersionId)),...memoryRecords.executions.sort((a,b)=>a.executionId.localeCompare(b.executionId)));return records}__name(exportOmniTrajectory,"exportOmniTrajectory");function serializeOmniTrajectory(records){return records.map(r=>JSON.stringify(r)).join("\n")+"\n"}__name(serializeOmniTrajectory,"serializeOmniTrajectory");async function writeOmniTrajectoryJsonl(options){const outPath=path3.resolve(options.outPath);if(outPath===path3.resolve(options.transcriptPath)){throw new Error("trajectory outPath must differ from the transcript path")}const records=await exportOmniTrajectory(options);await fs3.mkdir(path3.dirname(outPath),{recursive:true});await fs3.writeFile(outPath,serializeOmniTrajectory(records),"utf8");return{records:records.length}}__name(writeOmniTrajectoryJsonl,"writeOmniTrajectoryJsonl");var debugLogger4=createDebugLogger("omni");function sanitizeErrorMessage(err,knownPaths=[]){let msg=err instanceof Error?err.message:String(err);for(const known of knownPaths){if(!known)continue;msg=msg.split(known).join(path4.basename(known));const segments=known.split(/[\\/]+/).filter(Boolean);if(/^[A-Za-z]:$/.test(segments[0]??""))segments.shift();if(segments.length>=2){const spelled=segments.map(segment=>segment.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\\\/]+");msg=msg.replace(new RegExp(`(?:[A-Za-z]:)?[\\\\/]*${spelled}`,"g"),()=>path4.basename(known))}}return msg.replace(/(?:\/[^/\s'"]+)+\/([^/\s'"]+)/g,"$1").replace(/(?:[A-Za-z]:)?(?:\\[^\\\s'"]+)+\\([^\\\s'"]+)/g,"$1")}__name(sanitizeErrorMessage,"sanitizeErrorMessage");function buildAdditionalMediaParts(displayName,additionalMedia){const parts=[];for(const extra of additionalMedia??[]){if(extra.disclosure){parts.push({text:formatDisclosureText(displayName,extra.disclosure)})}if(extra.omission){parts.push({text:formatOmissionText(displayName,extra.omission.reason)})}else{parts.push({fileData:{fileUri:extra.fileUri,mimeType:extra.mimeType,displayName}})}}return parts}__name(buildAdditionalMediaParts,"buildAdditionalMediaParts");function buildTranscriptParts(displayName,transcripts){const parts=[];for(const t of transcripts??[]){if(t.disclosure){parts.push({text:formatDisclosureText(displayName,t.disclosure)})}parts.push({text:formatTranscriptText(displayName,t.text)})}return parts}__name(buildTranscriptParts,"buildTranscriptParts");var OmniDeliveryError=class extends Error{static{__name(this,"OmniDeliveryError")}constructor(message,options){super(message,options);this.name="OmniDeliveryError"}};function evaluateTransportLimits(config,recognized,displayName){try{assertWithinByteLimit(config,recognized.sizeBytes,displayName);assertWithinDurationLimit(config,recognized,displayName);return{estimate:assertWithinTokenLimit(config,recognized,displayName)}}catch(err){if(err instanceof OmniTransportGuardError){return{estimate:estimateRawResourceTokens(recognized),violation:err.message}}throw err}}__name(evaluateTransportLimits,"evaluateTransportLimits");async function processMediaForOmniDelivery(filePath,config,options){const{expectedModality,signal}=options??{};const displayName=options?.displayName??path4.basename(filePath);const[ffmpeg,ffprobe]=await Promise.all([isFfmpegAvailable(),isFfprobeAvailable()]);if(!ffmpeg||!ffprobe){throw new OmniDeliveryError("ffmpeg/ffprobe not available; omni media delivery requires both on PATH.")}await fs4.stat(filePath).catch(err=>{throw new OmniDeliveryError(`Cannot stat media file ${displayName}: ${sanitizeErrorMessage(err,[filePath])}`,{cause:err})});let recognized;try{recognized=await recognizeMediaFile(filePath,{expectedModality,signal})}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Media recognition failed for ${displayName}: ${sanitizeErrorMessage(err,[filePath])}`,{cause:err})}const store=new OmniObjectStore(config.storage.getQwenDir());const uploadConfig=requireEffectiveOmniUploadConfig(config);const cacheScope=createHash("sha256").update(`${uploadConfig.baseUrl}|${uploadConfig.apiKey}`).digest("hex").slice(0,16);const configuredTtl=config.getOmniUploadUrlTtlHours?.();const uploadCache=new OmniUploadCache(store.getOmniRootDir(),configuredTtl===void 0?DEFAULT_UPLOAD_CACHE_TTL_HOURS:configuredTtl,cacheScope);await runStartupRecoveryOnce(store,uploadCache,{quarantineRetentionDays:config.getOmniQuarantineRetentionDays?.(),quarantineMaxBytes:config.getOmniQuarantineMaxBytes?.(),degradationCache:new OmniDegradationCache(store.getOmniRootDir())});const processingConfig=config.getOmniProcessingConfig?.();const conditionContext=processingConfig?{session:buildSessionConditionNamespace(config,processingConfig.limits.reservedOutputTokens)}:void 0;const memoryConfig=config.getOmniMemoryConfig?.();const memoryService=memoryConfig?new MediaMemoryService(store.getOmniRootDir(),{maxInlineTextBytes:memoryConfig.collection.maxInlineTextBytes}):void 0;if(memoryService){void runOmniGcOnce({store,memoryService,registry:config.getOmniMediaResourceRegistry?.(),uploadCache,degradationCache:new OmniDegradationCache(store.getOmniRootDir()),retentionDays:config.getOmniStorageRetentionDays?.()??14,maxTotalBytes:typeof config.getOmniStorageMaxTotalBytes==="function"?effectiveOmniStorageMaxTotalBytes(config):20*1024*1024*1024})}const registry=memoryService?config.getOmniMediaResourceRegistry?.():void 0;const bindSessionResource=__name((item,fileRefOverride)=>registry&&item.memoryBinding?registry.bind({...item.memoryBinding,fileRef:fileRefOverride??item.filePath,mediaType:item.recognized.modality}):void 0,"bindSessionResource");let sourceSha256;let sourceBinding;let sourceFileRef=filePath;if(memoryService){try{sourceSha256=await hashFileSha256(filePath,signal)}catch(err){if(signal?.aborted)throw err;debugLogger4.debug(`omni memory: hashing ${displayName} failed, skipping collection: ${sanitizeErrorMessage(err,[filePath])}`)}if(sourceSha256){const origin=options?.origin??"user";const ephemeralSource=origin==="tool"||options?.sourceUrl!==void 0;sourceFileRef=ephemeralSource?store.objectPathFor(sourceSha256,extensionForMime(recognized.detectedMimeType)):filePath;sourceBinding=await memoryService.recordFileRecognized({fileRef:sourceFileRef,sha256:sourceSha256,mediaType:recognized.modality,metadata:recognized.metadata,sizeBytes:recognized.sizeBytes,mimeType:recognized.detectedMimeType,origin,source:options?.sourceUrl!==void 0?{protocol:"url",locator:options.sourceUrl}:origin==="tool"?{protocol:"managed",locator:`sha256/${sourceSha256}`}:{protocol:"local",locator:displayName},recognition:{ingestionConfigHash:"",detectorVersion:MEDIA_DETECTOR_VERSION,probeStatus:"complete"}})}}let final={filePath,recognized,sha256:sourceSha256,memoryBinding:sourceBinding};const sessionResourceId=bindSessionResource(final,sourceFileRef)?.resourceId;const guardRejection=__name((message,options2)=>{const err=new OmniTransportGuardError(message,options2);if(sessionResourceId!==void 0){err.sessionResourceId=sessionResourceId}return err},"guardRejection");let extraDeliveries=[];const transcripts=[];const collectTranscripts=__name(files=>{for(const file of files){transcripts.push({text:file.text,disclosure:file.disclosure})}},"collectTranscripts");const textOnlyDelivery=__name((recognizedFinal,tokenEstimate2,extras)=>({fileUri:"",mimeType:recognizedFinal.detectedMimeType,sha256:"",recognized:recognizedFinal,tokenEstimate:tokenEstimate2,deduped:false,uploadCacheHit:false,degraded:true,transcripts,resourceId:sessionResourceId,...extras}),"textOnlyDelivery");const policies=processingConfig?.fixedPolicies??[];if(policies.length>0){let deliveries;let fileDeliveries;try{({deliveries,fileDeliveries}=await runFixedPolicies(config,{filePath,recognized,displayName,origin:options?.origin??"user",sha256:sourceSha256},{store,policies,signal,limits:processingConfig?.limits,conditionContext,memory:memoryService?{service:memoryService,sourceBinding}:void 0}))}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Fixed-policy processing failed for ${displayName}: ${sanitizeErrorMessage(err,[filePath,store.getOmniRootDir()])}`,{cause:err})}collectTranscripts(fileDeliveries);if(deliveries.length===0&&transcripts.length>0){return textOnlyDelivery(recognized,evaluateTransportLimits(config,recognized,displayName).estimate)}if(deliveries.length===0){throw new OmniDeliveryError(`Fixed policies produced 0 media deliverables for ${displayName}; exactly one is supported.`)}final=deliveries[0];extraDeliveries=deliveries.slice(1);for(const delivery of deliveries)bindSessionResource(delivery)}const uploadModel=uploadConfig.model;const uploadResource=__name(async(item,estimate)=>{let sha256;try{sha256=item.sha256??await hashFileSha256(item.filePath,signal)}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Failed to hash media file ${displayName}: ${sanitizeErrorMessage(err,[item.filePath])}`,{cause:err})}const cachedUrl=await uploadCache.get(sha256,uploadModel);if(cachedUrl){debugLogger4.debug(`omni upload cache hit: sha256=${sha256.slice(0,12)}\u2026 model=${uploadModel}`);return{fileUri:cachedUrl,sha256,deduped:true,uploadCacheHit:true}}const extension=extensionForMime(item.recognized.detectedMimeType);let objectPath;let deduped;try{const put=await store.putFile(item.filePath,sha256,extension,signal);objectPath=put.objectPath;deduped=put.deduped}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(`Failed to store media in the omni object store: ${sanitizeErrorMessage(err,[item.filePath,store.getOmniRootDir()])}`,{cause:err})}const uploader=new DashScopeUploader({apiKey:uploadConfig.apiKey,baseUrl:uploadConfig.baseUrl});let fileUri;try{fileUri=await uploader.uploadFile({filePath:objectPath,model:uploadModel,mimeType:item.recognized.detectedMimeType,signal})}catch(err){if(signal?.aborted)throw err;throw new OmniDeliveryError(sanitizeErrorMessage(err,[objectPath,store.getOmniRootDir()]),{cause:err})}debugLogger4.debug(`omni ${item.recognized.modality} delivered: sha256=${sha256.slice(0,12)}\u2026 size=${item.recognized.sizeBytes} est=${estimate.estimatedTokenCount}(${estimate.status}) deduped=${deduped} degraded=${item.degraded===true} uri=${fileUri}`);await uploadCache.put(sha256,uploadModel,fileUri);return{fileUri,sha256,deduped,uploadCacheHit:false}},"uploadResource");const processAdditionalMedia=__name(async()=>{if(extraDeliveries.length===0)return void 0;return Promise.all(extraDeliveries.map(async extra=>{const extraGuard=evaluateTransportLimits(config,extra.recognized,displayName);if(extraGuard.violation){debugLogger4.debug(`omni additional ${extra.recognized.modality} explicitly omitted (transport guard): ${extraGuard.violation}`);return{fileUri:"",mimeType:extra.recognized.detectedMimeType,sha256:extra.sha256??"",disclosure:extra.disclosure,omission:{reason:extraGuard.violation}}}const uploaded2=await uploadResource(extra,extraGuard.estimate);return{fileUri:uploaded2.fileUri,mimeType:extra.recognized.detectedMimeType,sha256:uploaded2.sha256,disclosure:extra.disclosure}}))},"processAdditionalMedia");let guard=evaluateTransportLimits(config,final.recognized,displayName);if(guard.violation&&processingConfig){const maxPasses=processingConfig.limits.maxTransportPasses;for(let pass=0;guard.violation&&pass<maxPasses;pass++){const guardPolicies=processingConfig.transportGuardPolicies.filter(p=>p.mediaTypes.includes(final.recognized.modality));if(guardPolicies.length===0)break;let deliveries;let fileDeliveries;try{({deliveries,fileDeliveries}=await runFixedPolicies(config,{filePath:final.filePath,recognized:final.recognized,displayName,origin:options?.origin??"user",sha256:final.sha256},{store,policies:guardPolicies,signal,limits:processingConfig.limits,conditionContext,memory:memoryService?{service:memoryService,sourceBinding:final.memoryBinding}:void 0}))}catch(err){if(signal?.aborted)throw err;throw guardRejection(`Transport-guard processing failed for ${displayName}: ${sanitizeErrorMessage(err,[final.filePath,store.getOmniRootDir()])}`,{cause:err})}collectTranscripts(fileDeliveries);if(deliveries.length===0&&fileDeliveries.length>0){return textOnlyDelivery(final.recognized,guard.estimate,{disclosure:final.disclosure,additionalMedia:await processAdditionalMedia()})}if(deliveries.length!==1){throw guardRejection(`Transport-guard policies produced ${deliveries.length} media deliverables for ${displayName}; exactly one is supported.`)}if(deliveries[0].filePath===final.filePath){break}const priorDisclosure=final.disclosure;final=deliveries[0];if(priorDisclosure&&final.disclosure){final={...final,disclosure:`${priorDisclosure}\uFF1B${final.disclosure}`}}else if(priorDisclosure){final={...final,disclosure:priorDisclosure}}bindSessionResource(final);guard=evaluateTransportLimits(config,final.recognized,displayName)}}if(guard.violation){if(!processingConfig){throw guardRejection(guard.violation)}debugLogger4.debug(`omni ${final.recognized.modality} explicitly omitted (transport guard): ${guard.violation}`);return{fileUri:"",mimeType:final.recognized.detectedMimeType,sha256:final.sha256??"",recognized:final.recognized,tokenEstimate:guard.estimate,deduped:false,uploadCacheHit:false,disclosure:final.disclosure,degraded:final.degraded,omission:{reason:guard.violation},transcripts:transcripts.length>0?transcripts:void 0,additionalMedia:await processAdditionalMedia(),resourceId:sessionResourceId}}const tokenEstimate=guard.estimate;const uploaded=await uploadResource(final,tokenEstimate);return{fileUri:uploaded.fileUri,mimeType:final.recognized.detectedMimeType,sha256:uploaded.sha256,recognized:final.recognized,tokenEstimate,deduped:uploaded.deduped,uploadCacheHit:uploaded.uploadCacheHit,disclosure:final.disclosure,degraded:final.degraded,transcripts:transcripts.length>0?transcripts:void 0,additionalMedia:await processAdditionalMedia(),resourceId:sessionResourceId}}__name(processMediaForOmniDelivery,"processMediaForOmniDelivery");async function readMediaViaOmniDelivery(params){const{filePath,config,displayName,relativePathForDisplay,expectedModality,signal}=params;try{const delivery=await processMediaForOmniDelivery(filePath,config,{expectedModality,signal});const transcriptParts=buildTranscriptParts(displayName,delivery.transcripts);const additionalParts=buildAdditionalMediaParts(displayName,delivery.additionalMedia);const handleParts=(()=>{if(!delivery.resourceId)return[];const binding=config.getOmniMediaResourceRegistry?.()?.resolve(delivery.resourceId);if(binding&&binding.fileRef===filePath&&!/[\r\n]/.test(filePath)){return[harnessPathAnnotationPart(filePath)]}return[{text:formatResourceHandleText(displayName,delivery.resourceId)}]})();if(delivery.omission){const omissionPart={text:formatOmissionText(displayName,delivery.omission.reason)};return{llmContent:transcriptParts.length>0||additionalParts.length>0||handleParts.length>0?[...handleParts,omissionPart,...additionalParts,...transcriptParts]:omissionPart.text,returnDisplay:`Media omitted by the omni transport guard: ${relativePathForDisplay}`,tokenEstimate:delivery.tokenEstimate}}if(!delivery.fileUri&&transcriptParts.length>0){const disclosureParts=delivery.disclosure?[{text:formatDisclosureText(displayName,delivery.disclosure)}]:[];return{llmContent:[...handleParts,...disclosureParts,...additionalParts,...transcriptParts],returnDisplay:`Read ${delivery.recognized.modality} as transcript (omni policy): ${relativePathForDisplay}`,tokenEstimate:delivery.tokenEstimate}}const fileDataPart={fileData:{fileUri:delivery.fileUri,mimeType:delivery.mimeType,displayName}};const parts=[...handleParts];const{width,height}=delivery.recognized.metadata;if(delivery.recognized.modality==="image"&&width!==void 0&&height!==void 0){parts.push({text:delivery.disclosure?`Image ${displayName}: delivered at ${width}x${height} px after degradation. Use zoom_image to inspect details \u2014 it reads the original file.`:`Image ${displayName}: full resolution ${width}x${height} px. Use zoom_image for a closer look at details.`})}if(delivery.disclosure){parts.push({text:formatDisclosureText(displayName,delivery.disclosure)})}parts.push(fileDataPart);parts.push(...additionalParts);parts.push(...transcriptParts);const llmContent=parts.length===1?fileDataPart:parts;return{llmContent,returnDisplay:`Read ${delivery.recognized.modality} file (omni upload): ${relativePathForDisplay}`,tokenEstimate:delivery.tokenEstimate}}catch(err){if(isAbortError(err)||signal?.aborted)throw err;const message=sanitizeErrorMessage(err,[filePath]);return{llmContent:`[Omni media delivery failed for ${displayName}: ${message}]`,returnDisplay:`Failed to deliver media via omni upload: ${relativePathForDisplay}`,error:`Omni media delivery failed: ${displayName}: ${message}`,errorType:"read_content_failure"}}}__name(readMediaViaOmniDelivery,"readMediaViaOmniDelivery");function effectiveMaxDownloadFileBytes(config){const uploadCap=effectiveMaxUploadFileBytes(config);const configured=config.getOmniUrlDownloadMaxFileBytes?.();if(configured!==void 0&&configured>0){return Math.min(configured,uploadCap)}return uploadCap}__name(effectiveMaxDownloadFileBytes,"effectiveMaxDownloadFileBytes");export{OmniDownloadError,parseHttpUrlRef,downloadMediaUrl,exportOmniTrajectory,serializeOmniTrajectory,writeOmniTrajectoryJsonl,sanitizeErrorMessage,buildAdditionalMediaParts,buildTranscriptParts,OmniDeliveryError,processMediaForOmniDelivery,readMediaViaOmniDelivery,effectiveMaxDownloadFileBytes,processToolResultOmniMedia};
4
4
  /**
5
5
  * @license
6
6
  * Copyright 2025 Google LLC
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{MOD_MAX_BYTES,MOD_MAX_DEPTH,MOD_TOOL_RESERVED,jsonDepth,record,validateInput}from"./chunk-ZZJXFLVM.js";import{CoreToolScheduler}from"./chunk-Z5XENA4A.js";import{ToolNames,canonicalToolName,resolveRegisteredToolName}from"./chunk-SBZFGYYS.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();init_esbuild_shims();import{isDeepStrictEqual}from"node:util";async function modToolRequest(config,request){const name=canonicalToolName(request.name);if(request.goalContext||name===ToolNames.STRUCTURED_OUTPUT||name===ToolNames.TOOL_SEARCH||name===ToolNames.SEARCH_MEMORY||request.executionOrigin?.kind==="fixed_policy")return void 0;if(name!==ToolNames.TOOL_CALL)return config.getToolRegistry().getTool(name)||config.getToolRegistry().getAllToolNames().includes(name)?{...request,name}:void 0;const targetName=request.args["name"];let args=request.args["arguments"];if(typeof args==="string"){try{args=JSON.parse(args)}catch{return void 0}}if(typeof targetName!=="string"||!record(args))return void 0;const registry=config.getToolRegistry();const resolved=resolveRegisteredToolName(canonicalToolName(targetName),registry.getAllToolNames());if(typeof resolved!=="string"||resolved===ToolNames.TOOL_CALL||resolved===ToolNames.TOOL_SEARCH||resolved===ToolNames.SEARCH_MEMORY)return void 0;let target;try{target=await registry.ensureTool(resolved)}catch{return void 0}if(!target||!registry.isDeferredAndHidden(target.name)||target.name===ToolNames.STRUCTURED_OUTPUT)return void 0;return{...request,name:target.name,args}}__name(modToolRequest,"modToolRequest");async function executeModTool(request,execution,middleware,execute,signal){const shadowed=Object.fromEntries(MOD_TOOL_RESERVED.filter(key=>Object.hasOwn(execution.args,key)).map(key=>[key,execution.args[key]]));const input={...execution.args,tool:execution.name,tool_use_id:request.callId};for(const key of MOD_TOOL_RESERVED)delete input[key];input.tool=execution.name;input.tool_use_id=request.callId;if(Object.keys(shadowed).length)input["$shadowed"]=shadowed;const refs=new Map;let latest;let executed;let attempts=0;let answer;try{answer=await middleware(input,async(changed,active,check)=>{active.throwIfAborted();validateInput("tool.call",changed,input);if(++attempts>64)throw new Error("Mod tool execution limit exceeded.");const args={...changed};for(const key of MOD_TOOL_RESERVED)delete args[key];Object.assign(args,shadowed);const nativeRequest=canonicalToolName(request.name)===ToolNames.TOOL_CALL?{...request,args:{...request.args,arguments:structuredClone(args)}}:{...request,args:structuredClone(args)};const completed=await execute(nativeRequest,active,check);latest=completed;if(completed.response.executionStatus==="success"||completed.response.executionStatus==="error"&&executed?.response.executionStatus!=="success")executed=completed;const response2=completed.response;let result2=response2.responseParts.find(part=>part.functionResponse)?.functionResponse?.response??{};let json=JSON.stringify(result2);if(Buffer.byteLength(json)>MOD_MAX_BYTES/2||jsonDepth(json)>MOD_MAX_DEPTH/2){result2={output:"[Native tool result exceeds the Mod payload limit; return this reference unchanged to retain it.]"};json=JSON.stringify(result2)}const value={ref:attempts,result:JSON.parse(json),text:(record(result2)&&typeof result2["output"]==="string"?result2["output"]:json).slice(0,16e3),...response2.error?{isError:true}:{}};refs.set(attempts,{completed,value});return value},signal)}catch(error2){answer={deny:`Mod tool dispatch failed: ${String(error2)}`}}const referenced=!("deny"in answer)&&answer.ref!==void 0?refs.get(answer.ref):void 0;const selected=referenced?.completed??latest;const native=selected?.response;if(latest?.response.error&&(latest.response.executionStatus==="not_started"||latest.response.executionStatus==="cancelled")){if(!executed)return{response:latest.response,completed:latest};const message2=`An earlier Mod tool attempt ran. A later attempt failed: ${latest.response.error.message}`;return{completed:executed,response:{...latest.response,executionStatus:executed.response.executionStatus,error:new Error(message2),resultDisplay:message2,contentLength:message2.length,responseParts:[{functionResponse:{id:request.callId,name:request.name,response:{error:message2}}}]}}}if(referenced&&!("deny"in answer)&&isDeepStrictEqual(answer.result,referenced.value.result)){return{response:{...referenced.completed.response,executionStatus:executed?.response.executionStatus??referenced.completed.response.executionStatus},completed:executed??referenced.completed}}const message="deny"in answer?`${executed?"The tool ran; a Mod withheld its result. ":"Tool denied by Mod. "}${answer.deny}`:void 0;const result="deny"in answer?{error:message}:record(answer.result)&&Object.entries(answer.result).every(([key,value])=>(key==="output"||key==="error")&&typeof value==="string")?answer.result:{output:typeof answer.result==="string"?answer.result:JSON.stringify(answer.result)};const text=JSON.stringify(result);const error=message?new Error(message):native?.error??(!("deny"in answer)&&answer.isError?new Error("Mod returned an error result."):void 0);const response={...native,callId:request.callId,responseParts:[{functionResponse:{id:request.callId,name:request.name,response:result}}],resultDisplay:text,contentLength:text.length,executionStatus:executed?.response.executionStatus??native?.executionStatus??"not_started",error,errorType:native?.errorType??(error?"execution_denied":void 0)};return{response,completed:executed??selected}}__name(executeModTool,"executeModTool");async function executeToolCall(config,toolCallRequest,abortSignal,options={}){const execution=options.modToolCall&&await modToolRequest(config,toolCallRequest);if(execution&&options.modToolCall){const{response,completed}=await executeModTool(toolCallRequest,execution,options.modToolCall,async(request,signal,check)=>{let completed2;await executeToolCall(config,request,signal,{...options,modToolCall:void 0,modToolCheck:check,recordToolResult:false,onAllToolCallsComplete:__name(async calls=>{completed2=calls[0]},"onAllToolCallsComplete")});if(!completed2)throw new Error("Mod native tool did not complete.");return completed2},abortSignal);if(completed)await options.onAllToolCallsComplete?.([{...completed,response}]);if(options.recordToolResult!==false)config.getChatRecordingService()?.recordToolResult(response.responseParts,{...response,status:completed?.status??(response.error?"error":"success")});return response}return new Promise((resolve,reject)=>{new CoreToolScheduler({config,modToolCheck:options.modToolCheck,chatRecordingService:options.recordToolResult===false?void 0:config.getChatRecordingService(),outputUpdateHandler:options.outputUpdateHandler,onAllToolCallsComplete:__name(async completedToolCalls=>{if(options.onAllToolCallsComplete){await options.onAllToolCallsComplete(completedToolCalls)}resolve(completedToolCalls[0].response)},"onAllToolCallsComplete"),onToolCallsUpdate:options.onToolCallsUpdate,onToolResultFullTurnModel:options.onToolResultFullTurnModel,getPreferredEditor:__name(()=>void 0,"getPreferredEditor"),onEditorClose:__name(()=>{},"onEditorClose")}).schedule(toolCallRequest,abortSignal,options.runtimeView).catch(reject)})}__name(executeToolCall,"executeToolCall");export{modToolRequest,executeModTool,executeToolCall};
3
+ import{MOD_MAX_BYTES,MOD_MAX_DEPTH,MOD_TOOL_RESERVED,jsonDepth,record,validateInput}from"./chunk-ZZJXFLVM.js";import{CoreToolScheduler}from"./chunk-2JGTWRZJ.js";import{ToolNames,canonicalToolName,resolveRegisteredToolName}from"./chunk-SBZFGYYS.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();init_esbuild_shims();import{isDeepStrictEqual}from"node:util";async function modToolRequest(config,request){const name=canonicalToolName(request.name);if(request.goalContext||name===ToolNames.STRUCTURED_OUTPUT||name===ToolNames.TOOL_SEARCH||name===ToolNames.SEARCH_MEMORY||request.executionOrigin?.kind==="fixed_policy")return void 0;if(name!==ToolNames.TOOL_CALL)return config.getToolRegistry().getTool(name)||config.getToolRegistry().getAllToolNames().includes(name)?{...request,name}:void 0;const targetName=request.args["name"];let args=request.args["arguments"];if(typeof args==="string"){try{args=JSON.parse(args)}catch{return void 0}}if(typeof targetName!=="string"||!record(args))return void 0;const registry=config.getToolRegistry();const resolved=resolveRegisteredToolName(canonicalToolName(targetName),registry.getAllToolNames());if(typeof resolved!=="string"||resolved===ToolNames.TOOL_CALL||resolved===ToolNames.TOOL_SEARCH||resolved===ToolNames.SEARCH_MEMORY)return void 0;let target;try{target=await registry.ensureTool(resolved)}catch{return void 0}if(!target||!registry.isDeferredAndHidden(target.name)||target.name===ToolNames.STRUCTURED_OUTPUT)return void 0;return{...request,name:target.name,args}}__name(modToolRequest,"modToolRequest");async function executeModTool(request,execution,middleware,execute,signal){const shadowed=Object.fromEntries(MOD_TOOL_RESERVED.filter(key=>Object.hasOwn(execution.args,key)).map(key=>[key,execution.args[key]]));const input={...execution.args,tool:execution.name,tool_use_id:request.callId};for(const key of MOD_TOOL_RESERVED)delete input[key];input.tool=execution.name;input.tool_use_id=request.callId;if(Object.keys(shadowed).length)input["$shadowed"]=shadowed;const refs=new Map;let latest;let executed;let attempts=0;let answer;try{answer=await middleware(input,async(changed,active,check)=>{active.throwIfAborted();validateInput("tool.call",changed,input);if(++attempts>64)throw new Error("Mod tool execution limit exceeded.");const args={...changed};for(const key of MOD_TOOL_RESERVED)delete args[key];Object.assign(args,shadowed);const nativeRequest=canonicalToolName(request.name)===ToolNames.TOOL_CALL?{...request,args:{...request.args,arguments:structuredClone(args)}}:{...request,args:structuredClone(args)};const completed=await execute(nativeRequest,active,check);latest=completed;if(completed.response.executionStatus==="success"||completed.response.executionStatus==="error"&&executed?.response.executionStatus!=="success")executed=completed;const response2=completed.response;let result2=response2.responseParts.find(part=>part.functionResponse)?.functionResponse?.response??{};let json=JSON.stringify(result2);if(Buffer.byteLength(json)>MOD_MAX_BYTES/2||jsonDepth(json)>MOD_MAX_DEPTH/2){result2={output:"[Native tool result exceeds the Mod payload limit; return this reference unchanged to retain it.]"};json=JSON.stringify(result2)}const value={ref:attempts,result:JSON.parse(json),text:(record(result2)&&typeof result2["output"]==="string"?result2["output"]:json).slice(0,16e3),...response2.error?{isError:true}:{}};refs.set(attempts,{completed,value});return value},signal)}catch(error2){answer={deny:`Mod tool dispatch failed: ${String(error2)}`}}const referenced=!("deny"in answer)&&answer.ref!==void 0?refs.get(answer.ref):void 0;const selected=referenced?.completed??latest;const native=selected?.response;if(latest?.response.error&&(latest.response.executionStatus==="not_started"||latest.response.executionStatus==="cancelled")){if(!executed)return{response:latest.response,completed:latest};const message2=`An earlier Mod tool attempt ran. A later attempt failed: ${latest.response.error.message}`;return{completed:executed,response:{...latest.response,executionStatus:executed.response.executionStatus,error:new Error(message2),resultDisplay:message2,contentLength:message2.length,responseParts:[{functionResponse:{id:request.callId,name:request.name,response:{error:message2}}}]}}}if(referenced&&!("deny"in answer)&&isDeepStrictEqual(answer.result,referenced.value.result)){return{response:{...referenced.completed.response,executionStatus:executed?.response.executionStatus??referenced.completed.response.executionStatus},completed:executed??referenced.completed}}const message="deny"in answer?`${executed?"The tool ran; a Mod withheld its result. ":"Tool denied by Mod. "}${answer.deny}`:void 0;const result="deny"in answer?{error:message}:record(answer.result)&&Object.entries(answer.result).every(([key,value])=>(key==="output"||key==="error")&&typeof value==="string")?answer.result:{output:typeof answer.result==="string"?answer.result:JSON.stringify(answer.result)};const text=JSON.stringify(result);const error=message?new Error(message):native?.error??(!("deny"in answer)&&answer.isError?new Error("Mod returned an error result."):void 0);const response={...native,callId:request.callId,responseParts:[{functionResponse:{id:request.callId,name:request.name,response:result}}],resultDisplay:text,contentLength:text.length,executionStatus:executed?.response.executionStatus??native?.executionStatus??"not_started",error,errorType:native?.errorType??(error?"execution_denied":void 0)};return{response,completed:executed??selected}}__name(executeModTool,"executeModTool");async function executeToolCall(config,toolCallRequest,abortSignal,options={}){const execution=options.modToolCall&&await modToolRequest(config,toolCallRequest);if(execution&&options.modToolCall){const{response,completed}=await executeModTool(toolCallRequest,execution,options.modToolCall,async(request,signal,check)=>{let completed2;await executeToolCall(config,request,signal,{...options,modToolCall:void 0,modToolCheck:check,recordToolResult:false,onAllToolCallsComplete:__name(async calls=>{completed2=calls[0]},"onAllToolCallsComplete")});if(!completed2)throw new Error("Mod native tool did not complete.");return completed2},abortSignal);if(completed)await options.onAllToolCallsComplete?.([{...completed,response}]);if(options.recordToolResult!==false)config.getChatRecordingService()?.recordToolResult(response.responseParts,{...response,status:completed?.status??(response.error?"error":"success")});return response}return new Promise((resolve,reject)=>{new CoreToolScheduler({config,modToolCheck:options.modToolCheck,chatRecordingService:options.recordToolResult===false?void 0:config.getChatRecordingService(),outputUpdateHandler:options.outputUpdateHandler,onAllToolCallsComplete:__name(async completedToolCalls=>{if(options.onAllToolCallsComplete){await options.onAllToolCallsComplete(completedToolCalls)}resolve(completedToolCalls[0].response)},"onAllToolCallsComplete"),onToolCallsUpdate:options.onToolCallsUpdate,onToolResultFullTurnModel:options.onToolResultFullTurnModel,getPreferredEditor:__name(()=>void 0,"getPreferredEditor"),onEditorClose:__name(()=>{},"onEditorClose")}).schedule(toolCallRequest,abortSignal,options.runtimeView).catch(reject)})}__name(executeToolCall,"executeToolCall");export{modToolRequest,executeModTool,executeToolCall};
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{MAX_AGENT_MESSAGE_DISPLAY_TEXT_CHARS,MAX_AGENT_MESSAGE_STEPS,SESSION_AGENTS_SCHEMA_VERSION}from"./chunk-5WLKN3GD.js";import{STORE_DIR_MODE,STORE_FILE_OPTIONS,getAgentsDir,withAgentStoreTransaction}from"./chunk-Z5XENA4A.js";import{atomicWriteJSON}from"./chunk-BMHYEQTI.js";import{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/promises";import*as path from"node:path";var SESSIONS_DIRNAME="sessions";var MAX_TERMINAL_SESSION_AGENT_RUNS=50;var SESSION_ID_PATTERN=/^[0-9a-fA-F-]{32,36}$/;var MAX_BINDING_SCAN_FILES=5e3;var LIVE_RUN_STATUSES=new Set(["queued","running","awaiting_approval"]);var TERMINAL_RUN_STATUSES=new Set(["completed","failed","cancelled","offline"]);var EXECUTING_RUN_STATUSES=new Set(["running","awaiting_approval"]);function isValidSessionAgentsSessionId(value){return typeof value==="string"&&SESSION_ID_PATTERN.test(value)}__name(isValidSessionAgentsSessionId,"isValidSessionAgentsSessionId");function isTerminalSessionAgentRunStatus(status){return TERMINAL_RUN_STATUSES.has(status)}__name(isTerminalSessionAgentRunStatus,"isTerminalSessionAgentRunStatus");function getSessionAgentsDir(projectRoot){return path.join(getAgentsDir(projectRoot),SESSIONS_DIRNAME)}__name(getSessionAgentsDir,"getSessionAgentsDir");function getSessionAgentsFilePath(projectRoot,sessionId){if(!isValidSessionAgentsSessionId(sessionId)){throw new Error(`Invalid chat session id: ${JSON.stringify(sessionId)}`)}return path.join(getSessionAgentsDir(projectRoot),`${sessionId}.json`)}__name(getSessionAgentsFilePath,"getSessionAgentsFilePath");function emptySessionAgentsFile(sessionId){return{schemaVersion:SESSION_AGENTS_SCHEMA_VERSION,sessionId,bindings:{},runs:[]}}__name(emptySessionAgentsFile,"emptySessionAgentsFile");function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}__name(isRecord,"isRecord");function isOptionalString(value){return value===void 0||typeof value==="string"}__name(isOptionalString,"isOptionalString");function isOptionalFiniteNumber(value){return value===void 0||typeof value==="number"&&Number.isFinite(value)}__name(isOptionalFiniteNumber,"isOptionalFiniteNumber");var RUN_STATUSES=new Set([...LIVE_RUN_STATUSES,...TERMINAL_RUN_STATUSES]);function isValidBinding(value){return isRecord(value)&&typeof value["agentId"]==="string"&&isOptionalString(value["nativeSessionId"])&&isOptionalString(value["runtimeId"])&&(value["program"]===void 0||value["program"]==="qwen"||value["program"]==="claude"||value["program"]==="codex")&&isOptionalString(value["readThroughRecordId"])&&(value["remotePersona"]===void 0||isRecord(value["remotePersona"])&&typeof value["remotePersona"]["name"]==="string"&&isOptionalString(value["remotePersona"]["instructions"])&&isOptionalString(value["remotePersona"]["model"]))}__name(isValidBinding,"isValidBinding");function isValidLease(value){return value===void 0||isRecord(value)&&typeof value["hostId"]==="string"&&typeof value["leaseId"]==="string"&&typeof value["attempt"]==="number"&&typeof value["expiresAt"]==="number"&&isOptionalFiniteNumber(value["lastSequence"])}__name(isValidLease,"isValidLease");function isValidRun(value){return isRecord(value)&&typeof value["id"]==="string"&&typeof value["agentId"]==="string"&&typeof value["status"]==="string"&&RUN_STATUSES.has(value["status"])&&Array.isArray(value["triggerRecordIds"])&&value["triggerRecordIds"].every(id=>typeof id==="string")&&typeof value["chainDepth"]==="number"&&typeof value["createdAt"]==="number"&&typeof value["attempts"]==="number"&&isOptionalFiniteNumber(value["startedAt"])&&isOptionalFiniteNumber(value["endedAt"])&&isOptionalString(value["error"])&&isOptionalFiniteNumber(value["totalTokens"])&&isOptionalString(value["retryOf"])&&isOptionalString(value["squadId"])&&(value["recorded"]===void 0||typeof value["recorded"]==="boolean")&&isValidLease(value["lease"])}__name(isValidRun,"isValidRun");function isValidEngagement(value){return isRecord(value)&&typeof value["leaderAgentId"]==="string"&&typeof value["startedByRecordId"]==="string"&&Array.isArray(value["outstandingRunIds"])&&value["outstandingRunIds"].every(id=>typeof id==="string")&&(value["pendingWakeRunIds"]===void 0||Array.isArray(value["pendingWakeRunIds"])&&value["pendingWakeRunIds"].every(id=>typeof id==="string"))&&typeof value["active"]==="boolean"}__name(isValidEngagement,"isValidEngagement");function isValidEngagements(value){return value===void 0||isRecord(value)&&Object.values(value).every(isValidEngagement)}__name(isValidEngagements,"isValidEngagements");function parseSessionAgentsFile(value,sessionId,filePath="<memory>"){if(!isRecord(value)){throw new Error(`Malformed session agents file ${filePath}.`)}if(value["schemaVersion"]!==SESSION_AGENTS_SCHEMA_VERSION){throw new Error(`Unsupported session agents schema version ${JSON.stringify(value["schemaVersion"])} in ${filePath}; this build supports version ${SESSION_AGENTS_SCHEMA_VERSION}.`)}if(value["sessionId"]!==sessionId){throw new Error(`Session agents file ${filePath} names session ${JSON.stringify(value["sessionId"])}, not ${sessionId}.`)}const bindings=value["bindings"];const runs=value["runs"];if(!isRecord(bindings)||!Object.entries(bindings).every(([agentId,binding])=>isValidBinding(binding)&&binding.agentId===agentId)||!Array.isArray(runs)||!runs.every(isValidRun)||!isValidEngagements(value["squads"])){throw new Error(`Malformed session agents file ${filePath}.`)}const squads=value["squads"];return{schemaVersion:SESSION_AGENTS_SCHEMA_VERSION,sessionId,bindings,runs,...typeof value["chainTokens"]==="number"&&Number.isFinite(value["chainTokens"])&&value["chainTokens"]>0?{chainTokens:value["chainTokens"]}:{},...squads&&Object.keys(squads).length>0?{squads}:{}}}__name(parseSessionAgentsFile,"parseSessionAgentsFile");function trimTerminalRuns(runs,max=MAX_TERMINAL_SESSION_AGENT_RUNS){const terminal=runs.filter(run=>isTerminalSessionAgentRunStatus(run.status)&&run.recorded!==false);if(terminal.length<=max)return[...runs];const keep=new Set([...terminal].sort((a,b)=>(b.endedAt??b.createdAt)-(a.endedAt??a.createdAt)).slice(0,Math.max(0,max)).map(run=>run.id));return runs.filter(run=>!isTerminalSessionAgentRunStatus(run.status)||run.recorded===false||keep.has(run.id))}__name(trimTerminalRuns,"trimTerminalRuns");async function readFileUnlocked(projectRoot,sessionId){const filePath=getSessionAgentsFilePath(projectRoot,sessionId);let raw;try{raw=await fs.readFile(filePath,"utf-8")}catch(error){if(isNodeError(error)&&error.code==="ENOENT")return void 0;throw error}let parsed;try{parsed=JSON.parse(raw)}catch{throw new Error(`Malformed JSON in ${filePath} \u2014 fix or delete the file; refusing to treat it as empty.`)}return parseSessionAgentsFile(parsed,sessionId,filePath)}__name(readFileUnlocked,"readFileUnlocked");async function readSessionAgents(projectRoot,sessionId){return await readFileUnlocked(projectRoot,sessionId)??emptySessionAgentsFile(sessionId)}__name(readSessionAgents,"readSessionAgents");async function updateSessionAgents(projectRoot,sessionId,mutate){const filePath=getSessionAgentsFilePath(projectRoot,sessionId);return withAgentStoreTransaction(projectRoot,async()=>{const current=await readFileUnlocked(projectRoot,sessionId)??emptySessionAgentsFile(sessionId);const mutated=mutate(current)??current;const next={schemaVersion:SESSION_AGENTS_SCHEMA_VERSION,sessionId,bindings:mutated.bindings,runs:trimTerminalRuns(mutated.runs),...mutated.chainTokens?{chainTokens:mutated.chainTokens}:{},...mutated.squads&&Object.keys(mutated.squads).length>0?{squads:mutated.squads}:{}};parseSessionAgentsFile(next,sessionId,filePath);await fs.mkdir(getSessionAgentsDir(projectRoot),{recursive:true,mode:STORE_DIR_MODE});await atomicWriteJSON(filePath,next,STORE_FILE_OPTIONS);return next})}__name(updateSessionAgents,"updateSessionAgents");async function writeSessionAgents(projectRoot,file){return updateSessionAgents(projectRoot,file.sessionId,()=>({...file,bindings:structuredClone(file.bindings),runs:structuredClone(file.runs),...file.chainTokens?{chainTokens:file.chainTokens}:{},...file.squads?{squads:structuredClone(file.squads)}:{}}))}__name(writeSessionAgents,"writeSessionAgents");async function listSessionAgentsSessionIds(projectRoot){let names;try{names=await fs.readdir(getSessionAgentsDir(projectRoot))}catch(error){if(isNodeError(error)&&error.code==="ENOENT")return[];throw error}return names.filter(name=>name.endsWith(".json")).map(name=>name.slice(0,-".json".length)).filter(isValidSessionAgentsSessionId)}__name(listSessionAgentsSessionIds,"listSessionAgentsSessionIds");async function findSessionAgentBinding(projectRoot,nativeSessionId,agentId){if(!nativeSessionId||!agentId)return void 0;const ids=(await listSessionAgentsSessionIds(projectRoot)).slice(0,MAX_BINDING_SCAN_FILES);for(const chatSessionId of ids){let file;try{file=await readFileUnlocked(projectRoot,chatSessionId)}catch{continue}if(!file)continue;const binding=file.bindings[agentId];if(binding?.nativeSessionId!==nativeSessionId)continue;const run=file.runs.find(candidate=>candidate.agentId===agentId&&EXECUTING_RUN_STATUSES.has(candidate.status)&&candidate.lease===void 0);if(!run)continue;return{chatSessionId,agentId,runId:run.id,status:run.status,...binding.remotePersona?{remotePersona:{...binding.remotePersona}}:{}}}return void 0}__name(findSessionAgentBinding,"findSessionAgentBinding");function canReuseNativeSession(binding,runtimeId,program){return(binding.runtimeId===void 0||binding.runtimeId===runtimeId)&&(binding.program===void 0||binding.program===program)}__name(canReuseNativeSession,"canReuseNativeSession");init_esbuild_shims();var MAX_EXTERNAL_RECORD_KEY_LENGTH=256;var MAX_EXTERNAL_RECORD_TEXT_LENGTH=65536;var MAX_EXTERNAL_RECORD_DISPLAY_TEXT_LENGTH=MAX_AGENT_MESSAGE_DISPLAY_TEXT_CHARS;var MAX_EXTERNAL_RECORD_STEPS=MAX_AGENT_MESSAGE_STEPS;var MAX_EXTERNAL_RECORD_MENTION_IDS=32;var MAX_EXTERNAL_RECORD_ID_LENGTH=256;var MAX_EXTERNAL_RECORD_STEP_TITLE_LENGTH=1024;var STEP_STATUSES=new Set(["running","completed","failed"]);var TERMINAL_STATUSES=new Set(["completed","failed","cancelled","offline"]);function isObject(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}__name(isObject,"isObject");function isBoundedString(value,maxLength){return typeof value==="string"&&value.length<=maxLength}__name(isBoundedString,"isBoundedString");function isIdList(value){return Array.isArray(value)&&value.length<=MAX_EXTERNAL_RECORD_MENTION_IDS&&value.every(id=>isBoundedString(id,MAX_EXTERNAL_RECORD_ID_LENGTH))}__name(isIdList,"isIdList");function isSteps(value){return Array.isArray(value)&&value.length<=MAX_EXTERNAL_RECORD_STEPS&&value.every(step=>isObject(step)&&isBoundedString(step["id"],MAX_EXTERNAL_RECORD_ID_LENGTH)&&typeof step["title"]==="string"&&step["title"].length<=MAX_EXTERNAL_RECORD_STEP_TITLE_LENGTH&&typeof step["status"]==="string"&&STEP_STATUSES.has(step["status"]))}__name(isSteps,"isSteps");function isAuthor(value){return isObject(value)&&typeof value["agentId"]==="string"&&value["agentId"].length>0&&typeof value["name"]==="string"&&value["name"].length>0}__name(isAuthor,"isAuthor");function parseSessionExternalRecordParams(params){const{kind,recordKey,modelText,payload}=params;if(kind!=="agent_mention"&&kind!=="agent_message"){return"Invalid external record kind"}if(typeof recordKey!=="string"||recordKey.length===0||recordKey.length>MAX_EXTERNAL_RECORD_KEY_LENGTH){return"Invalid or missing external record recordKey"}if(typeof modelText!=="string"||modelText.length===0||modelText.length>MAX_EXTERNAL_RECORD_TEXT_LENGTH){return"Invalid or missing external record modelText"}if(!isObject(payload)||typeof payload["displayText"]!=="string"||payload["displayText"].length>(kind==="agent_message"?MAX_EXTERNAL_RECORD_DISPLAY_TEXT_LENGTH:MAX_EXTERNAL_RECORD_TEXT_LENGTH)){return"Invalid or missing external record payload.displayText"}if(kind==="agent_message"){if(!isAuthor(payload["author"])){return"Invalid agent_message payload.author"}if(typeof payload["runId"]!=="string"||payload["runId"].length===0){return"Invalid agent_message payload.runId"}if(typeof payload["status"]!=="string"||!TERMINAL_STATUSES.has(payload["status"])){return"Invalid agent_message payload.status"}if(payload["steps"]!==void 0&&!isSteps(payload["steps"])){return"Invalid or oversized agent_message payload.steps"}return{kind,recordKey,modelText,payload}}if(!isIdList(payload["mentionedAgentIds"])){return"Invalid or oversized agent_mention payload.mentionedAgentIds"}if(payload["mentionedSquadIds"]!==void 0&&!isIdList(payload["mentionedSquadIds"])){return"Invalid or oversized agent_mention payload.mentionedSquadIds"}if(payload["author"]!==void 0&&!isAuthor(payload["author"])){return"Invalid agent_mention payload.author"}return{kind,recordKey,modelText,payload}}__name(parseSessionExternalRecordParams,"parseSessionExternalRecordParams");export{isValidSessionAgentsSessionId,isTerminalSessionAgentRunStatus,trimTerminalRuns,readSessionAgents,updateSessionAgents,writeSessionAgents,listSessionAgentsSessionIds,findSessionAgentBinding,canReuseNativeSession,MAX_EXTERNAL_RECORD_TEXT_LENGTH,MAX_EXTERNAL_RECORD_MENTION_IDS,MAX_EXTERNAL_RECORD_ID_LENGTH,MAX_EXTERNAL_RECORD_STEP_TITLE_LENGTH,parseSessionExternalRecordParams};
3
+ import{MAX_AGENT_MESSAGE_DISPLAY_TEXT_CHARS,MAX_AGENT_MESSAGE_STEPS,SESSION_AGENTS_SCHEMA_VERSION}from"./chunk-OU7CEG7Q.js";import{STORE_DIR_MODE,STORE_FILE_OPTIONS,getAgentsDir,withAgentStoreTransaction}from"./chunk-2JGTWRZJ.js";import{atomicWriteJSON}from"./chunk-BMHYEQTI.js";import{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/promises";import*as path from"node:path";var SESSIONS_DIRNAME="sessions";var MAX_TERMINAL_SESSION_AGENT_RUNS=50;var SESSION_ID_PATTERN=/^[0-9a-fA-F-]{32,36}$/;var MAX_BINDING_SCAN_FILES=5e3;var LIVE_RUN_STATUSES=new Set(["queued","running","awaiting_approval"]);var TERMINAL_RUN_STATUSES=new Set(["completed","failed","cancelled","offline"]);var EXECUTING_RUN_STATUSES=new Set(["running","awaiting_approval"]);function isValidSessionAgentsSessionId(value){return typeof value==="string"&&SESSION_ID_PATTERN.test(value)}__name(isValidSessionAgentsSessionId,"isValidSessionAgentsSessionId");function isTerminalSessionAgentRunStatus(status){return TERMINAL_RUN_STATUSES.has(status)}__name(isTerminalSessionAgentRunStatus,"isTerminalSessionAgentRunStatus");function getSessionAgentsDir(projectRoot){return path.join(getAgentsDir(projectRoot),SESSIONS_DIRNAME)}__name(getSessionAgentsDir,"getSessionAgentsDir");function getSessionAgentsFilePath(projectRoot,sessionId){if(!isValidSessionAgentsSessionId(sessionId)){throw new Error(`Invalid chat session id: ${JSON.stringify(sessionId)}`)}return path.join(getSessionAgentsDir(projectRoot),`${sessionId}.json`)}__name(getSessionAgentsFilePath,"getSessionAgentsFilePath");function emptySessionAgentsFile(sessionId){return{schemaVersion:SESSION_AGENTS_SCHEMA_VERSION,sessionId,bindings:{},runs:[]}}__name(emptySessionAgentsFile,"emptySessionAgentsFile");function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}__name(isRecord,"isRecord");function isOptionalString(value){return value===void 0||typeof value==="string"}__name(isOptionalString,"isOptionalString");function isOptionalFiniteNumber(value){return value===void 0||typeof value==="number"&&Number.isFinite(value)}__name(isOptionalFiniteNumber,"isOptionalFiniteNumber");var RUN_STATUSES=new Set([...LIVE_RUN_STATUSES,...TERMINAL_RUN_STATUSES]);function isValidBinding(value){return isRecord(value)&&typeof value["agentId"]==="string"&&isOptionalString(value["nativeSessionId"])&&isOptionalString(value["runtimeId"])&&(value["program"]===void 0||value["program"]==="qwen"||value["program"]==="claude"||value["program"]==="codex")&&isOptionalString(value["readThroughRecordId"])&&(value["remotePersona"]===void 0||isRecord(value["remotePersona"])&&typeof value["remotePersona"]["name"]==="string"&&isOptionalString(value["remotePersona"]["instructions"])&&isOptionalString(value["remotePersona"]["model"]))}__name(isValidBinding,"isValidBinding");function isValidLease(value){return value===void 0||isRecord(value)&&typeof value["hostId"]==="string"&&typeof value["leaseId"]==="string"&&typeof value["attempt"]==="number"&&typeof value["expiresAt"]==="number"&&isOptionalFiniteNumber(value["lastSequence"])}__name(isValidLease,"isValidLease");function isValidRun(value){return isRecord(value)&&typeof value["id"]==="string"&&typeof value["agentId"]==="string"&&typeof value["status"]==="string"&&RUN_STATUSES.has(value["status"])&&Array.isArray(value["triggerRecordIds"])&&value["triggerRecordIds"].every(id=>typeof id==="string")&&typeof value["chainDepth"]==="number"&&typeof value["createdAt"]==="number"&&typeof value["attempts"]==="number"&&isOptionalFiniteNumber(value["startedAt"])&&isOptionalFiniteNumber(value["endedAt"])&&isOptionalString(value["error"])&&isOptionalFiniteNumber(value["totalTokens"])&&isOptionalString(value["retryOf"])&&isOptionalString(value["squadId"])&&(value["recorded"]===void 0||typeof value["recorded"]==="boolean")&&isValidLease(value["lease"])}__name(isValidRun,"isValidRun");function isValidEngagement(value){return isRecord(value)&&typeof value["leaderAgentId"]==="string"&&typeof value["startedByRecordId"]==="string"&&Array.isArray(value["outstandingRunIds"])&&value["outstandingRunIds"].every(id=>typeof id==="string")&&(value["pendingWakeRunIds"]===void 0||Array.isArray(value["pendingWakeRunIds"])&&value["pendingWakeRunIds"].every(id=>typeof id==="string"))&&typeof value["active"]==="boolean"}__name(isValidEngagement,"isValidEngagement");function isValidEngagements(value){return value===void 0||isRecord(value)&&Object.values(value).every(isValidEngagement)}__name(isValidEngagements,"isValidEngagements");function parseSessionAgentsFile(value,sessionId,filePath="<memory>"){if(!isRecord(value)){throw new Error(`Malformed session agents file ${filePath}.`)}if(value["schemaVersion"]!==SESSION_AGENTS_SCHEMA_VERSION){throw new Error(`Unsupported session agents schema version ${JSON.stringify(value["schemaVersion"])} in ${filePath}; this build supports version ${SESSION_AGENTS_SCHEMA_VERSION}.`)}if(value["sessionId"]!==sessionId){throw new Error(`Session agents file ${filePath} names session ${JSON.stringify(value["sessionId"])}, not ${sessionId}.`)}const bindings=value["bindings"];const runs=value["runs"];if(!isRecord(bindings)||!Object.entries(bindings).every(([agentId,binding])=>isValidBinding(binding)&&binding.agentId===agentId)||!Array.isArray(runs)||!runs.every(isValidRun)||!isValidEngagements(value["squads"])){throw new Error(`Malformed session agents file ${filePath}.`)}const squads=value["squads"];return{schemaVersion:SESSION_AGENTS_SCHEMA_VERSION,sessionId,bindings,runs,...typeof value["chainTokens"]==="number"&&Number.isFinite(value["chainTokens"])&&value["chainTokens"]>0?{chainTokens:value["chainTokens"]}:{},...squads&&Object.keys(squads).length>0?{squads}:{}}}__name(parseSessionAgentsFile,"parseSessionAgentsFile");function trimTerminalRuns(runs,max=MAX_TERMINAL_SESSION_AGENT_RUNS){const terminal=runs.filter(run=>isTerminalSessionAgentRunStatus(run.status)&&run.recorded!==false);if(terminal.length<=max)return[...runs];const keep=new Set([...terminal].sort((a,b)=>(b.endedAt??b.createdAt)-(a.endedAt??a.createdAt)).slice(0,Math.max(0,max)).map(run=>run.id));return runs.filter(run=>!isTerminalSessionAgentRunStatus(run.status)||run.recorded===false||keep.has(run.id))}__name(trimTerminalRuns,"trimTerminalRuns");async function readFileUnlocked(projectRoot,sessionId){const filePath=getSessionAgentsFilePath(projectRoot,sessionId);let raw;try{raw=await fs.readFile(filePath,"utf-8")}catch(error){if(isNodeError(error)&&error.code==="ENOENT")return void 0;throw error}let parsed;try{parsed=JSON.parse(raw)}catch{throw new Error(`Malformed JSON in ${filePath} \u2014 fix or delete the file; refusing to treat it as empty.`)}return parseSessionAgentsFile(parsed,sessionId,filePath)}__name(readFileUnlocked,"readFileUnlocked");async function readSessionAgents(projectRoot,sessionId){return await readFileUnlocked(projectRoot,sessionId)??emptySessionAgentsFile(sessionId)}__name(readSessionAgents,"readSessionAgents");async function updateSessionAgents(projectRoot,sessionId,mutate){const filePath=getSessionAgentsFilePath(projectRoot,sessionId);return withAgentStoreTransaction(projectRoot,async()=>{const current=await readFileUnlocked(projectRoot,sessionId)??emptySessionAgentsFile(sessionId);const mutated=mutate(current)??current;const next={schemaVersion:SESSION_AGENTS_SCHEMA_VERSION,sessionId,bindings:mutated.bindings,runs:trimTerminalRuns(mutated.runs),...mutated.chainTokens?{chainTokens:mutated.chainTokens}:{},...mutated.squads&&Object.keys(mutated.squads).length>0?{squads:mutated.squads}:{}};parseSessionAgentsFile(next,sessionId,filePath);await fs.mkdir(getSessionAgentsDir(projectRoot),{recursive:true,mode:STORE_DIR_MODE});await atomicWriteJSON(filePath,next,STORE_FILE_OPTIONS);return next})}__name(updateSessionAgents,"updateSessionAgents");async function writeSessionAgents(projectRoot,file){return updateSessionAgents(projectRoot,file.sessionId,()=>({...file,bindings:structuredClone(file.bindings),runs:structuredClone(file.runs),...file.chainTokens?{chainTokens:file.chainTokens}:{},...file.squads?{squads:structuredClone(file.squads)}:{}}))}__name(writeSessionAgents,"writeSessionAgents");async function listSessionAgentsSessionIds(projectRoot){let names;try{names=await fs.readdir(getSessionAgentsDir(projectRoot))}catch(error){if(isNodeError(error)&&error.code==="ENOENT")return[];throw error}return names.filter(name=>name.endsWith(".json")).map(name=>name.slice(0,-".json".length)).filter(isValidSessionAgentsSessionId)}__name(listSessionAgentsSessionIds,"listSessionAgentsSessionIds");async function findSessionAgentBinding(projectRoot,nativeSessionId,agentId){if(!nativeSessionId||!agentId)return void 0;const ids=(await listSessionAgentsSessionIds(projectRoot)).slice(0,MAX_BINDING_SCAN_FILES);for(const chatSessionId of ids){let file;try{file=await readFileUnlocked(projectRoot,chatSessionId)}catch{continue}if(!file)continue;const binding=file.bindings[agentId];if(binding?.nativeSessionId!==nativeSessionId)continue;const run=file.runs.find(candidate=>candidate.agentId===agentId&&EXECUTING_RUN_STATUSES.has(candidate.status)&&candidate.lease===void 0);if(!run)continue;return{chatSessionId,agentId,runId:run.id,status:run.status,...binding.remotePersona?{remotePersona:{...binding.remotePersona}}:{}}}return void 0}__name(findSessionAgentBinding,"findSessionAgentBinding");function canReuseNativeSession(binding,runtimeId,program){return(binding.runtimeId===void 0||binding.runtimeId===runtimeId)&&(binding.program===void 0||binding.program===program)}__name(canReuseNativeSession,"canReuseNativeSession");init_esbuild_shims();var MAX_EXTERNAL_RECORD_KEY_LENGTH=256;var MAX_EXTERNAL_RECORD_TEXT_LENGTH=65536;var MAX_EXTERNAL_RECORD_DISPLAY_TEXT_LENGTH=MAX_AGENT_MESSAGE_DISPLAY_TEXT_CHARS;var MAX_EXTERNAL_RECORD_STEPS=MAX_AGENT_MESSAGE_STEPS;var MAX_EXTERNAL_RECORD_MENTION_IDS=32;var MAX_EXTERNAL_RECORD_ID_LENGTH=256;var MAX_EXTERNAL_RECORD_STEP_TITLE_LENGTH=1024;var STEP_STATUSES=new Set(["running","completed","failed"]);var TERMINAL_STATUSES=new Set(["completed","failed","cancelled","offline"]);function isObject(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}__name(isObject,"isObject");function isBoundedString(value,maxLength){return typeof value==="string"&&value.length<=maxLength}__name(isBoundedString,"isBoundedString");function isIdList(value){return Array.isArray(value)&&value.length<=MAX_EXTERNAL_RECORD_MENTION_IDS&&value.every(id=>isBoundedString(id,MAX_EXTERNAL_RECORD_ID_LENGTH))}__name(isIdList,"isIdList");function isSteps(value){return Array.isArray(value)&&value.length<=MAX_EXTERNAL_RECORD_STEPS&&value.every(step=>isObject(step)&&isBoundedString(step["id"],MAX_EXTERNAL_RECORD_ID_LENGTH)&&typeof step["title"]==="string"&&step["title"].length<=MAX_EXTERNAL_RECORD_STEP_TITLE_LENGTH&&typeof step["status"]==="string"&&STEP_STATUSES.has(step["status"]))}__name(isSteps,"isSteps");function isAuthor(value){return isObject(value)&&typeof value["agentId"]==="string"&&value["agentId"].length>0&&typeof value["name"]==="string"&&value["name"].length>0}__name(isAuthor,"isAuthor");function parseSessionExternalRecordParams(params){const{kind,recordKey,modelText,payload}=params;if(kind!=="agent_mention"&&kind!=="agent_message"){return"Invalid external record kind"}if(typeof recordKey!=="string"||recordKey.length===0||recordKey.length>MAX_EXTERNAL_RECORD_KEY_LENGTH){return"Invalid or missing external record recordKey"}if(typeof modelText!=="string"||modelText.length===0||modelText.length>MAX_EXTERNAL_RECORD_TEXT_LENGTH){return"Invalid or missing external record modelText"}if(!isObject(payload)||typeof payload["displayText"]!=="string"||payload["displayText"].length>(kind==="agent_message"?MAX_EXTERNAL_RECORD_DISPLAY_TEXT_LENGTH:MAX_EXTERNAL_RECORD_TEXT_LENGTH)){return"Invalid or missing external record payload.displayText"}if(kind==="agent_message"){if(!isAuthor(payload["author"])){return"Invalid agent_message payload.author"}if(typeof payload["runId"]!=="string"||payload["runId"].length===0){return"Invalid agent_message payload.runId"}if(typeof payload["status"]!=="string"||!TERMINAL_STATUSES.has(payload["status"])){return"Invalid agent_message payload.status"}if(payload["steps"]!==void 0&&!isSteps(payload["steps"])){return"Invalid or oversized agent_message payload.steps"}return{kind,recordKey,modelText,payload}}if(!isIdList(payload["mentionedAgentIds"])){return"Invalid or oversized agent_mention payload.mentionedAgentIds"}if(payload["mentionedSquadIds"]!==void 0&&!isIdList(payload["mentionedSquadIds"])){return"Invalid or oversized agent_mention payload.mentionedSquadIds"}if(payload["author"]!==void 0&&!isAuthor(payload["author"])){return"Invalid agent_mention payload.author"}return{kind,recordKey,modelText,payload}}__name(parseSessionExternalRecordParams,"parseSessionExternalRecordParams");export{isValidSessionAgentsSessionId,isTerminalSessionAgentRunStatus,trimTerminalRuns,readSessionAgents,updateSessionAgents,writeSessionAgents,listSessionAgentsSessionIds,findSessionAgentBinding,canReuseNativeSession,MAX_EXTERNAL_RECORD_TEXT_LENGTH,MAX_EXTERNAL_RECORD_MENTION_IDS,MAX_EXTERNAL_RECORD_ID_LENGTH,MAX_EXTERNAL_RECORD_STEP_TITLE_LENGTH,parseSessionExternalRecordParams};
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{buildModelReasoningRoutePreview}from"./chunk-4XF4ZGJG.js";import{snapshotProcessEnv}from"./chunk-DWPCE3QI.js";import{publicAuxModelSelectorValue}from"./chunk-L42NTHIT.js";import{getModelConfigurationKey}from"./chunk-IA4K4PGK.js";import{STATUS_SCHEMA_VERSION}from"./chunk-LUDNUVSA.js";import{getAuthTypeFromEnv,resolveCliGenerationConfig}from"./chunk-AMTFJVDD.js";import{ACP_ROUTE_ID_PREFIX,buildAcpModelOptions,getCurrentAcpModelId,parseAcpBaseModelId,sanitizeProviderBaseUrl}from"./chunk-GT4TCQ3R.js";import{loadSettings}from"./chunk-WI4UMN3Q.js";import{APPROVAL_MODES}from"./chunk-JZK2WGXA.js";import{ModelsConfig,captureReasoningSnapshot,resolveReasoningForModel}from"./chunk-ET2Z7ZGF.js";import{tokenLimit}from"./chunk-GOR7FFVE.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();var debugLogger=createDebugLogger("WORKSPACE_PROVIDERS_STATUS");function createWorkspaceProvidersStatusProvider(options={}){return async(workspaceCwd,acpChannelLive)=>buildWorkspaceProvidersStatus(workspaceCwd,acpChannelLive,options)}__name(createWorkspaceProvidersStatusProvider,"createWorkspaceProvidersStatusProvider");function buildWorkspaceProvidersStatus(workspaceCwd,acpChannelLive,options){try{const loaded=loadSettings(workspaceCwd,options.env?{skipLoadEnvironment:true,skipWorkspaceSettings:options.workspaceTrusted===false,workspaceTrusted:options.workspaceTrusted}:{consumeCorruptionEnvVars:true,skipLoadEnvironment:options.workspaceTrusted===false,skipWorkspaceSettings:options.workspaceTrusted===false,workspaceTrusted:options.workspaceTrusted});const settings=loaded.merged;const env=options.env??snapshotProcessEnv();const selectedAuthType=settings.security?.auth?.selectedType??getAuthTypeFromEnv(env);const argv={model:options.argv?.model,openaiApiKey:options.argv?.openaiApiKey,openaiBaseUrl:options.argv?.openaiBaseUrl,openaiLogging:options.argv?.openaiLogging,openaiLoggingDir:options.argv?.openaiLoggingDir};const resolvedCliConfig=resolveCliGenerationConfig({argv,settings,selectedAuthType,env});const modelsConfig=new ModelsConfig({initialAuthType:resolvedCliConfig.authType,modelProvidersConfig:settings.modelProviders,providerProtocolConfig:settings.providerProtocol,generationConfig:resolvedCliConfig.generationConfig,generationConfigSources:resolvedCliConfig.sources});const currentAuth=resolvedCliConfig.authType;const currentModelId=(resolvedCliConfig.model||modelsConfig.getModel()||"").trim();const hasCurrentModel=currentModelId.length>0;const modelCameFromSettings=!argv.model&&settings.model?.name?.trim()===currentModelId;const currentBaseUrl=modelCameFromSettings&&settings.model?.baseUrl!==void 0?settings.model.baseUrl||void 0:resolvedCliConfig.sources["baseUrl"]?resolvedCliConfig.baseUrl||void 0:void 0;const currentRegistryBaseUrl=modelCameFromSettings&&currentAuth?settings.model?.baseUrl!==void 0?settings.model.baseUrl||null:modelsConfig.getResolvedModel(currentAuth,currentModelId)?.registryBaseUrl??null:void 0;const models=modelsConfig.getAllConfiguredModels();const modelOptions=buildAcpModelOptions(models);const reasoningSnapshot=captureReasoningSnapshot(models);const currentAcpModelId=hasCurrentModel?getCurrentAcpModelId(modelOptions,currentModelId,currentAuth,currentRegistryBaseUrl):void 0;const fastModelId=typeof settings.fastModel==="string"&&settings.fastModel.length>0?settings.fastModel:void 0;const visionModelId=typeof settings.visionModel==="string"&&settings.visionModel.length>0?settings.visionModel:void 0;const approvalMode=resolveApprovalMode(settings);const providers=new Map;for(const option of modelOptions){const{model,effectiveModelId,modelId}=option;if(model.isRuntimeModel)continue;const authType=String(model.authType);let provider=providers.get(authType);if(!provider){provider={kind:"model_provider",status:"ok",authType,current:false,models:[]};providers.set(authType,provider)}const isCurrent=currentAuth===model.authType&&currentAcpModelId===modelId;const resolved=modelsConfig.getResolvedModel(model.authType,model.id,model.registryBaseUrl);const generation={...resolved?.generationConfig,model:model.id,authType:model.authType,baseUrl:resolved?.baseUrl,reasoningSnapshot,reasoningRouteBaseUrl:model.registryBaseUrl??null};const configOptions=buildModelReasoningRoutePreview(generation,resolveReasoningForModel(void 0,generation),settings.model?.reasoningEffort,modelId.startsWith(ACP_ROUTE_ID_PREFIX));const configurationKey=getModelConfigurationKey(loaded,authType,model.id,model.registryBaseUrl);const providerModel={...configurationKey?{configurationKey}:{},modelId,baseModelId:parseAcpBaseModelId(effectiveModelId),name:model.label,...model.description!==void 0?{description:model.description}:{},contextLimit:model.contextWindowSize!==void 0&&model.contextWindowSize>0?model.contextWindowSize:tokenLimit(effectiveModelId),...model.modalities!==void 0?{modalities:model.modalities}:{},...model.baseUrl!==void 0?{baseUrl:sanitizeProviderBaseUrl(model.baseUrl)}:{},...model.envKey!==void 0?{envKey:model.envKey}:{},isCurrent,isRuntime:false,...configOptions?{configOptions}:{}};provider.models.push(providerModel);if(isCurrent)provider.current=true}const current=buildCurrent(currentAuth,currentAcpModelId,currentBaseUrl,fastModelId,visionModelId);return{v:STATUS_SCHEMA_VERSION,workspaceCwd,initialized:true,acpChannelLive,...current?{current}:{},approvalMode,providers:[...providers.values()],...resolvedCliConfig.warnings.length>0?{errors:resolvedCliConfig.warnings.map(warning=>({kind:"providers",status:"warning",error:sanitizeProviderWarning(warning)}))}:{}}}catch(error){return{v:STATUS_SCHEMA_VERSION,workspaceCwd,initialized:false,acpChannelLive,providers:[],errors:[{kind:"providers",status:"error",error:sanitizeProviderWarning(error instanceof Error?error.message:String(error))}]}}}__name(buildWorkspaceProvidersStatus,"buildWorkspaceProvidersStatus");function resolveApprovalMode(settings){const value=settings.tools?.approvalMode;if(typeof value!=="string")return"auto";const normalized=value.trim().toLowerCase().replaceAll("_","-");const mode=normalized==="autoedit"?"auto-edit":normalized;if(APPROVAL_MODES.includes(mode)){return mode}if(value.trim().length>0){debugLogger.warn(`[workspace-providers-status] unrecognized approvalMode "${value}", falling back to auto`)}return"auto"}__name(resolveApprovalMode,"resolveApprovalMode");var URL_LIKE_PATTERN=/\b[A-Za-z][A-Za-z\d+.-]*:\/\/[^\s'"`<>]+/g;var URL_START_PATTERN=/\b[A-Za-z][A-Za-z\d+.-]*:\/\//g;function sanitizeProviderWarning(warning){let result="";let index=0;let next=findNextUrlStart(warning,index);while(next){result+=warning.slice(index,next.index);const segmentEnd=findUrlSegmentEnd(warning,next.index,next.marker);const segment=warning.slice(next.index,segmentEnd);result+=sanitizeProviderWarningSegment(segment,next.marker.length);index=segmentEnd;next=findNextUrlStart(warning,index)}return result+warning.slice(index)}__name(sanitizeProviderWarning,"sanitizeProviderWarning");function findNextUrlStart(value,from){URL_START_PATTERN.lastIndex=from;const match=URL_START_PATTERN.exec(value);return match?{index:match.index,marker:match[0]}:void 0}__name(findNextUrlStart,"findNextUrlStart");function findUrlSegmentEnd(value,start,marker){const afterMarker=start+marker.length;const carriageReturn=value.indexOf("\r",afterMarker);const lineFeed=value.indexOf("\n",afterMarker);let lineEnd=value.length;if(carriageReturn!==-1)lineEnd=Math.min(lineEnd,carriageReturn);if(lineFeed!==-1)lineEnd=Math.min(lineEnd,lineFeed);const nextUrl=findNextUrlStart(value,afterMarker);return Math.min(lineEnd,nextUrl?.index??value.length)}__name(findUrlSegmentEnd,"findUrlSegmentEnd");function sanitizeProviderWarningSegment(segment,markerLength){const at=segment.indexOf("@",markerLength);if(at!==-1&&hasCredentialPrefix(segment,markerLength,at)&&segment[at+1]!==void 0&&/[A-Za-z0-9.[\]-]/.test(segment[at+1])){return`${segment.slice(0,markerLength)}${segment.slice(at+1)}`}return segment.replace(URL_LIKE_PATTERN,url=>sanitizeProviderBaseUrl(url))}__name(sanitizeProviderWarningSegment,"sanitizeProviderWarningSegment");function hasCredentialPrefix(segment,markerLength,at){const colon=segment.indexOf(":",markerLength);if(colon===-1||colon>at)return false;const username=segment.slice(markerLength,colon);return!/[/?#\s'"`<>]/.test(username)}__name(hasCredentialPrefix,"hasCredentialPrefix");function buildCurrent(authType,modelId,baseUrl,fastModelId,visionModelId){if(!authType&&!modelId&&!baseUrl&&!fastModelId&&!visionModelId)return void 0;return{...authType?{authType:String(authType)}:{},...modelId?{modelId}:{},...baseUrl?{baseUrl:sanitizeProviderBaseUrl(baseUrl)}:{},...fastModelId?{fastModelId:publicAuxModelSelectorValue(fastModelId)}:{},...visionModelId?{visionModelId:publicAuxModelSelectorValue(visionModelId)}:{}}}__name(buildCurrent,"buildCurrent");export{createWorkspaceProvidersStatusProvider};
3
+ import{buildModelReasoningRoutePreview}from"./chunk-4XF4ZGJG.js";import{snapshotProcessEnv}from"./chunk-DWPCE3QI.js";import{publicAuxModelSelectorValue}from"./chunk-L42NTHIT.js";import{getModelConfigurationKey}from"./chunk-EYPLBTMI.js";import{STATUS_SCHEMA_VERSION}from"./chunk-LUDNUVSA.js";import{getAuthTypeFromEnv,resolveCliGenerationConfig}from"./chunk-LTE4N6L3.js";import{ACP_ROUTE_ID_PREFIX,buildAcpModelOptions,getCurrentAcpModelId,parseAcpBaseModelId,sanitizeProviderBaseUrl}from"./chunk-GT4TCQ3R.js";import{loadSettings}from"./chunk-2TAJ5STJ.js";import{APPROVAL_MODES}from"./chunk-JZK2WGXA.js";import{ModelsConfig,captureReasoningSnapshot,resolveReasoningForModel}from"./chunk-ET2Z7ZGF.js";import{tokenLimit}from"./chunk-GOR7FFVE.js";import{createDebugLogger}from"./chunk-JAUJI56S.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();var debugLogger=createDebugLogger("WORKSPACE_PROVIDERS_STATUS");function createWorkspaceProvidersStatusProvider(options={}){return async(workspaceCwd,acpChannelLive)=>buildWorkspaceProvidersStatus(workspaceCwd,acpChannelLive,options)}__name(createWorkspaceProvidersStatusProvider,"createWorkspaceProvidersStatusProvider");function buildWorkspaceProvidersStatus(workspaceCwd,acpChannelLive,options){try{const loaded=loadSettings(workspaceCwd,options.env?{skipLoadEnvironment:true,skipWorkspaceSettings:options.workspaceTrusted===false,workspaceTrusted:options.workspaceTrusted}:{consumeCorruptionEnvVars:true,skipLoadEnvironment:options.workspaceTrusted===false,skipWorkspaceSettings:options.workspaceTrusted===false,workspaceTrusted:options.workspaceTrusted});const settings=loaded.merged;const env=options.env??snapshotProcessEnv();const selectedAuthType=settings.security?.auth?.selectedType??getAuthTypeFromEnv(env);const argv={model:options.argv?.model,openaiApiKey:options.argv?.openaiApiKey,openaiBaseUrl:options.argv?.openaiBaseUrl,openaiLogging:options.argv?.openaiLogging,openaiLoggingDir:options.argv?.openaiLoggingDir};const resolvedCliConfig=resolveCliGenerationConfig({argv,settings,selectedAuthType,env});const modelsConfig=new ModelsConfig({initialAuthType:resolvedCliConfig.authType,modelProvidersConfig:settings.modelProviders,providerProtocolConfig:settings.providerProtocol,generationConfig:resolvedCliConfig.generationConfig,generationConfigSources:resolvedCliConfig.sources});const currentAuth=resolvedCliConfig.authType;const currentModelId=(resolvedCliConfig.model||modelsConfig.getModel()||"").trim();const hasCurrentModel=currentModelId.length>0;const modelCameFromSettings=!argv.model&&settings.model?.name?.trim()===currentModelId;const currentBaseUrl=modelCameFromSettings&&settings.model?.baseUrl!==void 0?settings.model.baseUrl||void 0:resolvedCliConfig.sources["baseUrl"]?resolvedCliConfig.baseUrl||void 0:void 0;const currentRegistryBaseUrl=modelCameFromSettings&&currentAuth?settings.model?.baseUrl!==void 0?settings.model.baseUrl||null:modelsConfig.getResolvedModel(currentAuth,currentModelId)?.registryBaseUrl??null:void 0;const models=modelsConfig.getAllConfiguredModels();const modelOptions=buildAcpModelOptions(models);const reasoningSnapshot=captureReasoningSnapshot(models);const currentAcpModelId=hasCurrentModel?getCurrentAcpModelId(modelOptions,currentModelId,currentAuth,currentRegistryBaseUrl):void 0;const fastModelId=typeof settings.fastModel==="string"&&settings.fastModel.length>0?settings.fastModel:void 0;const visionModelId=typeof settings.visionModel==="string"&&settings.visionModel.length>0?settings.visionModel:void 0;const approvalMode=resolveApprovalMode(settings);const providers=new Map;for(const option of modelOptions){const{model,effectiveModelId,modelId}=option;if(model.isRuntimeModel)continue;const authType=String(model.authType);let provider=providers.get(authType);if(!provider){provider={kind:"model_provider",status:"ok",authType,current:false,models:[]};providers.set(authType,provider)}const isCurrent=currentAuth===model.authType&&currentAcpModelId===modelId;const resolved=modelsConfig.getResolvedModel(model.authType,model.id,model.registryBaseUrl);const generation={...resolved?.generationConfig,model:model.id,authType:model.authType,baseUrl:resolved?.baseUrl,reasoningSnapshot,reasoningRouteBaseUrl:model.registryBaseUrl??null};const configOptions=buildModelReasoningRoutePreview(generation,resolveReasoningForModel(void 0,generation),settings.model?.reasoningEffort,modelId.startsWith(ACP_ROUTE_ID_PREFIX));const configurationKey=getModelConfigurationKey(loaded,authType,model.id,model.registryBaseUrl);const providerModel={...configurationKey?{configurationKey}:{},modelId,baseModelId:parseAcpBaseModelId(effectiveModelId),name:model.label,...model.description!==void 0?{description:model.description}:{},contextLimit:model.contextWindowSize!==void 0&&model.contextWindowSize>0?model.contextWindowSize:tokenLimit(effectiveModelId),...model.modalities!==void 0?{modalities:model.modalities}:{},...model.baseUrl!==void 0?{baseUrl:sanitizeProviderBaseUrl(model.baseUrl)}:{},...model.envKey!==void 0?{envKey:model.envKey}:{},isCurrent,isRuntime:false,...configOptions?{configOptions}:{}};provider.models.push(providerModel);if(isCurrent)provider.current=true}const current=buildCurrent(currentAuth,currentAcpModelId,currentBaseUrl,fastModelId,visionModelId);return{v:STATUS_SCHEMA_VERSION,workspaceCwd,initialized:true,acpChannelLive,...current?{current}:{},approvalMode,providers:[...providers.values()],...resolvedCliConfig.warnings.length>0?{errors:resolvedCliConfig.warnings.map(warning=>({kind:"providers",status:"warning",error:sanitizeProviderWarning(warning)}))}:{}}}catch(error){return{v:STATUS_SCHEMA_VERSION,workspaceCwd,initialized:false,acpChannelLive,providers:[],errors:[{kind:"providers",status:"error",error:sanitizeProviderWarning(error instanceof Error?error.message:String(error))}]}}}__name(buildWorkspaceProvidersStatus,"buildWorkspaceProvidersStatus");function resolveApprovalMode(settings){const value=settings.tools?.approvalMode;if(typeof value!=="string")return"auto";const normalized=value.trim().toLowerCase().replaceAll("_","-");const mode=normalized==="autoedit"?"auto-edit":normalized;if(APPROVAL_MODES.includes(mode)){return mode}if(value.trim().length>0){debugLogger.warn(`[workspace-providers-status] unrecognized approvalMode "${value}", falling back to auto`)}return"auto"}__name(resolveApprovalMode,"resolveApprovalMode");var URL_LIKE_PATTERN=/\b[A-Za-z][A-Za-z\d+.-]*:\/\/[^\s'"`<>]+/g;var URL_START_PATTERN=/\b[A-Za-z][A-Za-z\d+.-]*:\/\//g;function sanitizeProviderWarning(warning){let result="";let index=0;let next=findNextUrlStart(warning,index);while(next){result+=warning.slice(index,next.index);const segmentEnd=findUrlSegmentEnd(warning,next.index,next.marker);const segment=warning.slice(next.index,segmentEnd);result+=sanitizeProviderWarningSegment(segment,next.marker.length);index=segmentEnd;next=findNextUrlStart(warning,index)}return result+warning.slice(index)}__name(sanitizeProviderWarning,"sanitizeProviderWarning");function findNextUrlStart(value,from){URL_START_PATTERN.lastIndex=from;const match=URL_START_PATTERN.exec(value);return match?{index:match.index,marker:match[0]}:void 0}__name(findNextUrlStart,"findNextUrlStart");function findUrlSegmentEnd(value,start,marker){const afterMarker=start+marker.length;const carriageReturn=value.indexOf("\r",afterMarker);const lineFeed=value.indexOf("\n",afterMarker);let lineEnd=value.length;if(carriageReturn!==-1)lineEnd=Math.min(lineEnd,carriageReturn);if(lineFeed!==-1)lineEnd=Math.min(lineEnd,lineFeed);const nextUrl=findNextUrlStart(value,afterMarker);return Math.min(lineEnd,nextUrl?.index??value.length)}__name(findUrlSegmentEnd,"findUrlSegmentEnd");function sanitizeProviderWarningSegment(segment,markerLength){const at=segment.indexOf("@",markerLength);if(at!==-1&&hasCredentialPrefix(segment,markerLength,at)&&segment[at+1]!==void 0&&/[A-Za-z0-9.[\]-]/.test(segment[at+1])){return`${segment.slice(0,markerLength)}${segment.slice(at+1)}`}return segment.replace(URL_LIKE_PATTERN,url=>sanitizeProviderBaseUrl(url))}__name(sanitizeProviderWarningSegment,"sanitizeProviderWarningSegment");function hasCredentialPrefix(segment,markerLength,at){const colon=segment.indexOf(":",markerLength);if(colon===-1||colon>at)return false;const username=segment.slice(markerLength,colon);return!/[/?#\s'"`<>]/.test(username)}__name(hasCredentialPrefix,"hasCredentialPrefix");function buildCurrent(authType,modelId,baseUrl,fastModelId,visionModelId){if(!authType&&!modelId&&!baseUrl&&!fastModelId&&!visionModelId)return void 0;return{...authType?{authType:String(authType)}:{},...modelId?{modelId}:{},...baseUrl?{baseUrl:sanitizeProviderBaseUrl(baseUrl)}:{},...fastModelId?{fastModelId:publicAuxModelSelectorValue(fastModelId)}:{},...visionModelId?{visionModelId:publicAuxModelSelectorValue(visionModelId)}:{}}}__name(buildCurrent,"buildCurrent");export{createWorkspaceProvidersStatusProvider};
4
4
  /**
5
5
  * @license
6
6
  * Copyright 2025 Qwen Team
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{HOSTNAME_RE,isOwnerRepo,normalizeGhHostForUrl}from"./chunk-UPWFKIG7.js";import{GIT_TIMEOUT_MS,git,gitOpt,gitProbe,gitRaw,redirectedAncestor,refExists,releaseWorktree,repoRoot,sanitizedGitEnv}from"./chunk-NO26JN24.js";import{normalizeSegment}from"./chunk-CTMNGGOU.js";import{isWithinRoot}from"./chunk-IDXJIDME.js";import{atomicWriteFileSync}from"./chunk-BMHYEQTI.js";import{writeStdoutLine}from"./chunk-M4ECEHLX.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{lstatSync as lstatSync2,readFileSync as readFileSync2,renameSync as renameSync2,rmSync as rmSync2}from"node:fs";import{dirname as dirname2,join as join2}from"node:path";init_esbuild_shims();import{createHash,randomUUID}from"node:crypto";import{homedir}from"node:os";import{closeSync,constants,existsSync,fstatSync,linkSync,lstatSync,mkdirSync,openSync,readFileSync,readlinkSync,realpathSync,renameSync,rmSync,statSync,unlinkSync,writeFileSync}from"node:fs";import{basename,dirname,isAbsolute,join,resolve}from"node:path";var REPLY_MARKER="<!-- qwen-autofix-pr:v1 -->";var WATCH_INTERVALS=[1,2,5,10,15,30,60];var MAX_NEEDS_HUMAN=20;var MAX_INSTRUCTIONS_CHARS=2e3;function rerunFloors(state){return[...state.rerunChecks??[],...(state.heldChecks??[]).map(entry=>entry.replace(/^\d+:/,""))]}__name(rerunFloors,"rerunFloors");var MAX_PUSHES=10;var MAX_CHECK_FIX_PUSHES=3;var MAX_FAILING_CHECKS=100;function withKnownHead(state,head){if(state.pushedShas.includes(head)||!state.failingChecks?.length){return{...state,lastKnownHeadSha:head}}const lastPush=state.pushedShas.at(-1);return{...state,lastKnownHeadSha:head,failingChecks:state.failingChecks.map(record=>({identity:record.identity,check:record.check,head:record.head,pushes:0,...lastPush===void 0?{}:{lastPush}}))}}__name(withKnownHead,"withKnownHead");function checkAttemptKey(check,headSha,attempt){return`${check}@${headSha}@${attempt}`}__name(checkAttemptKey,"checkAttemptKey");function watchRoot(){if(process.env["QWEN_CODE_SERVE"]==="1"){return git("rev-parse","--show-toplevel")}return repoRoot()}__name(watchRoot,"watchRoot");function parseWorktreePaths(nulOutput){const paths=[];for(const field of nulOutput.split("\0")){if(field.startsWith("worktree ")){paths.push(field.slice("worktree ".length))}}return paths}__name(parseWorktreePaths,"parseWorktreePaths");function cloneWorktreeRoots(){const z=gitOpt("worktree","list","--porcelain","-z");if(z!==null)return parseWorktreePaths(z);return[repoRoot()]}__name(cloneWorktreeRoots,"cloneWorktreeRoots");function findWatchRoot(prNumber){assertPositiveInteger(prNumber,"PR number");let found=null;for(const root of vouchedScanRoots(cloneWorktreeRoots())){const paths=autofixPrPaths(root,prNumber);let hasState;try{hasState=isRegularFile(paths.statePath)}catch{continue}if(!hasState)continue;if(found===null||!existsSync(autofixPrPaths(found,prNumber).worktreePath)&&existsSync(paths.worktreePath)){found=root}}return found}__name(findWatchRoot,"findWatchRoot");function resolveWatchRoot(prNumber){return findWatchRoot(prNumber)??watchRoot()}__name(resolveWatchRoot,"resolveWatchRoot");function anchorStoreRoot(){return process.env["QWEN_AUTOFIX_ANCHOR_DIR"]??join(homedir(),".qwen","autofix-anchors")}__name(anchorStoreRoot,"anchorStoreRoot");function anchorPath(repository,prNumber,cloneRoot){assertPositiveInteger(prNumber,"PR number");const slug=[normalizeGhHostForUrl(repository.host).replace(/:/g,"@"),normalizeSegment(repository.owner),normalizeSegment(repository.repo)].join("+").replace(/[^a-z0-9._@+-]/g,"_");const cloneKey=createHash("sha256").update(resolve(cloneRoot)).digest("hex").slice(0,16);return join(anchorStoreRoot(),slug,`${cloneKey}-pr-${prNumber}.json`)}__name(anchorPath,"anchorPath");function writeAnchor(repository,prNumber,trustRoot){const path=anchorPath(repository,prNumber,trustRoot);mkdirSync(dirname(path),{recursive:true});const anchor={trustRoot,...repository};atomicWriteFileSync(path,`${JSON.stringify(anchor,null,2)}
3
+ import{HOSTNAME_RE,isOwnerRepo,normalizeGhHostForUrl}from"./chunk-UPWFKIG7.js";import{GIT_TIMEOUT_MS,git,gitOpt,gitProbe,gitRaw,redirectedAncestor,refExists,releaseWorktree,repoRoot,sanitizedGitEnv}from"./chunk-T53VMDXH.js";import{normalizeSegment}from"./chunk-CTMNGGOU.js";import{isWithinRoot}from"./chunk-IDXJIDME.js";import{atomicWriteFileSync}from"./chunk-BMHYEQTI.js";import{writeStdoutLine}from"./chunk-M4ECEHLX.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();import{lstatSync as lstatSync2,readFileSync as readFileSync2,renameSync as renameSync2,rmSync as rmSync2}from"node:fs";import{dirname as dirname2,join as join2}from"node:path";init_esbuild_shims();import{createHash,randomUUID}from"node:crypto";import{homedir}from"node:os";import{closeSync,constants,existsSync,fstatSync,linkSync,lstatSync,mkdirSync,openSync,readFileSync,readlinkSync,realpathSync,renameSync,rmSync,statSync,unlinkSync,writeFileSync}from"node:fs";import{basename,dirname,isAbsolute,join,resolve}from"node:path";var REPLY_MARKER="<!-- qwen-autofix-pr:v1 -->";var WATCH_INTERVALS=[1,2,5,10,15,30,60];var MAX_NEEDS_HUMAN=20;var MAX_INSTRUCTIONS_CHARS=2e3;function rerunFloors(state){return[...state.rerunChecks??[],...(state.heldChecks??[]).map(entry=>entry.replace(/^\d+:/,""))]}__name(rerunFloors,"rerunFloors");var MAX_PUSHES=10;var MAX_CHECK_FIX_PUSHES=3;var MAX_FAILING_CHECKS=100;function withKnownHead(state,head){if(state.pushedShas.includes(head)||!state.failingChecks?.length){return{...state,lastKnownHeadSha:head}}const lastPush=state.pushedShas.at(-1);return{...state,lastKnownHeadSha:head,failingChecks:state.failingChecks.map(record=>({identity:record.identity,check:record.check,head:record.head,pushes:0,...lastPush===void 0?{}:{lastPush}}))}}__name(withKnownHead,"withKnownHead");function checkAttemptKey(check,headSha,attempt){return`${check}@${headSha}@${attempt}`}__name(checkAttemptKey,"checkAttemptKey");function watchRoot(){if(process.env["QWEN_CODE_SERVE"]==="1"){return git("rev-parse","--show-toplevel")}return repoRoot()}__name(watchRoot,"watchRoot");function parseWorktreePaths(nulOutput){const paths=[];for(const field of nulOutput.split("\0")){if(field.startsWith("worktree ")){paths.push(field.slice("worktree ".length))}}return paths}__name(parseWorktreePaths,"parseWorktreePaths");function cloneWorktreeRoots(){const z=gitOpt("worktree","list","--porcelain","-z");if(z!==null)return parseWorktreePaths(z);return[repoRoot()]}__name(cloneWorktreeRoots,"cloneWorktreeRoots");function findWatchRoot(prNumber){assertPositiveInteger(prNumber,"PR number");let found=null;for(const root of vouchedScanRoots(cloneWorktreeRoots())){const paths=autofixPrPaths(root,prNumber);let hasState;try{hasState=isRegularFile(paths.statePath)}catch{continue}if(!hasState)continue;if(found===null||!existsSync(autofixPrPaths(found,prNumber).worktreePath)&&existsSync(paths.worktreePath)){found=root}}return found}__name(findWatchRoot,"findWatchRoot");function resolveWatchRoot(prNumber){return findWatchRoot(prNumber)??watchRoot()}__name(resolveWatchRoot,"resolveWatchRoot");function anchorStoreRoot(){return process.env["QWEN_AUTOFIX_ANCHOR_DIR"]??join(homedir(),".qwen","autofix-anchors")}__name(anchorStoreRoot,"anchorStoreRoot");function anchorPath(repository,prNumber,cloneRoot){assertPositiveInteger(prNumber,"PR number");const slug=[normalizeGhHostForUrl(repository.host).replace(/:/g,"@"),normalizeSegment(repository.owner),normalizeSegment(repository.repo)].join("+").replace(/[^a-z0-9._@+-]/g,"_");const cloneKey=createHash("sha256").update(resolve(cloneRoot)).digest("hex").slice(0,16);return join(anchorStoreRoot(),slug,`${cloneKey}-pr-${prNumber}.json`)}__name(anchorPath,"anchorPath");function writeAnchor(repository,prNumber,trustRoot){const path=anchorPath(repository,prNumber,trustRoot);mkdirSync(dirname(path),{recursive:true});const anchor={trustRoot,...repository};atomicWriteFileSync(path,`${JSON.stringify(anchor,null,2)}
4
4
  `,NO_FOLLOW)}__name(writeAnchor,"writeAnchor");function readAnchor(repository,prNumber){const path=anchorPath(repository,prNumber,repoRoot());if(!isRegularFile(path))return null;try{const parsed=JSON.parse(readRegularFile(path)??"null");if(parsed&&typeof parsed.trustRoot==="string"&&typeof parsed.host==="string"&&typeof parsed.owner==="string"&&typeof parsed.repo==="string"){return parsed}return null}catch{return null}}__name(readAnchor,"readAnchor");function trustAnchor(state){const anchor=readAnchor(state,state.prNumber);if(!anchor){throw new Error(`PR #${state.prNumber} has no confirmed trust anchor; re-run \`qwen autofix-pr prepare ${state.prNumber}\` (or resume it) to confirm the clone before its worktree can be validated`)}return anchor.trustRoot}__name(trustAnchor,"trustAnchor");function vouchedScanRoots(roots){if(roots.length===0)return[];const main=roots[0];const notNested=roots.filter(r=>!roots.some(other=>other!==r&&isWithinRoot(r,join(other,".qwen","tmp"))));let genuineCommon;let genuineWorktrees;try{const dotGit=join(main,".git");genuineCommon=realpathSync(existsSync(dotGit)?dotGit:main);genuineWorktrees=realpathSync(join(genuineCommon,"worktrees"))}catch{return notNested.slice(0,1)}return notNested.filter(r=>r===main||vouchesForClone(r,genuineCommon,genuineWorktrees))}__name(vouchedScanRoots,"vouchedScanRoots");function vouchesForClone(root,genuineCommon,genuineWorktrees){const dotGit=join(root,".git");let st;try{st=lstatSync(dotGit)}catch{return false}if(st.isDirectory()){try{return realpathSync(dotGit)===genuineCommon}catch{return false}}if(!st.isFile())return false;let text;try{text=readFileSync(dotGit,"utf8")}catch{return false}if(!text.startsWith("gitdir: "))return false;const pointer=text.slice("gitdir: ".length).replace(/[\r\n]+$/,"");let entry;try{entry=realpathSync(isAbsolute(pointer)?pointer:join(root,pointer))}catch{return false}if(dirname(entry)!==genuineWorktrees)return false;let back;try{back=readFileSync(join(entry,"gitdir"),"utf8").replace(/[\r\n]+$/,"")}catch{return false}try{return realpathSync(isAbsolute(back)?back:join(entry,back))===realpathSync(dotGit)}catch{return false}}__name(vouchesForClone,"vouchesForClone");function assertPositiveInteger(value,what){if(!Number.isInteger(value)||value<1){throw new TypeError(`${what} must be a positive integer, got ${value}`)}}__name(assertPositiveInteger,"assertPositiveInteger");function statePaths(root,state){const paths=autofixPrPaths(root,state.prNumber);return state.inPlace?{...paths,worktreePath:state.worktreePath,branch:state.branch}:paths}__name(statePaths,"statePaths");function autofixPrPaths(root,prNumber){assertPositiveInteger(prNumber,"PR number");const tmp=join(root,".qwen","tmp");return{worktreePath:join(tmp,`autofix-pr-${prNumber}`),statePath:join(tmp,`autofix-pr-${prNumber}-state.json`),gatePath:join(tmp,`autofix-pr-${prNumber}-gate.json`),checkedPath:join(tmp,`autofix-pr-${prNumber}-gate.checked`),snapshotPath:join(tmp,`autofix-pr-${prNumber}-snapshot.json`),repliesPath:join(tmp,`autofix-pr-${prNumber}-replies.json`),lockPath:join(tmp,`autofix-pr-${prNumber}.lock`),instructionsPath:join(tmp,`autofix-pr-${prNumber}-instructions.txt`),fixPath:join(tmp,`autofix-pr-${prNumber}-fix.json`),branch:`qwen-autofix/pr-${prNumber}`,headRef:`refs/qwen-autofix/pr-${prNumber}/head`}}__name(autofixPrPaths,"autofixPrPaths");function isRegularFile(path){return lstatSync(path,{throwIfNoEntry:false})?.isFile()===true}__name(isRegularFile,"isRegularFile");function readRegularFile(path){let fd;try{fd=openSync(path,constants.O_RDONLY|(constants.O_NOFOLLOW??0)|(constants.O_NONBLOCK??0))}catch(err){if(err.code==="ENOENT")return null;throw err}try{if(!fstatSync(fd).isFile()){throw new Error(`${path} is not a regular file`)}return readFileSync(fd,"utf8")}finally{closeSync(fd)}}__name(readRegularFile,"readRegularFile");function readGateCursor(gatePath){if(lstatSync(gatePath,{throwIfNoEntry:false})===void 0){return null}if(!isRegularFile(gatePath)){throw new Error(`${gatePath} is not a regular file`)}const text=readRegularFile(gatePath);if(text===null)return null;const parsed=JSON.parse(text);if(parsed.version!==1){throw new Error(`unsupported autofix-pr gate cursor version in ${gatePath}: ${String(parsed.version)}`)}return{...parsed,reportedTruncated:parsed.reportedTruncated??[]}}__name(readGateCursor,"readGateCursor");function writeGateCursor(gatePath,cursor){atomicWriteFileSync(gatePath,`${JSON.stringify(cursor,null,2)}
5
5
  `,{noFollow:true})}__name(writeGateCursor,"writeGateCursor");function sameRepository(a,b){return normalizeGhHostForUrl(a.host)===normalizeGhHostForUrl(b.host)&&normalizeSegment(a.owner)===normalizeSegment(b.owner)&&normalizeSegment(a.repo)===normalizeSegment(b.repo)}__name(sameRepository,"sameRepository");var SHA_RE=/^[0-9a-f]{40,64}$/;function isBranchName(name){return!(name===""||name==="@"||name.startsWith("-")||name.endsWith("/")||name.endsWith(".")||[...name].some(char=>char.charCodeAt(0)<=32||char==="\x7F")||/[~^:?*[\\]/.test(name)||name.includes("..")||name.includes("@{")||name.includes("//")||name.split("/").some(part=>part.startsWith(".")||part.endsWith(".lock")))}__name(isBranchName,"isBranchName");var SHELL_SPECIAL=/[;&|$`<>()'"{}!#]/;function isCommandSafeName(name){return!SHELL_SPECIAL.test(name)}__name(isCommandSafeName,"isCommandSafeName");function stringList(value){return Array.isArray(value)?value.filter(item=>typeof item==="string"):[]}__name(stringList,"stringList");var isStringList=__name(value=>Array.isArray(value)&&value.every(item=>typeof item==="string"),"isStringList");var isRunList=__name(value=>Array.isArray(value)&&value.every(item=>Number.isInteger(item)),"isRunList");function isPendingPost(value){const post=value;return typeof post==="object"&&post!==null&&(post.where==="summary"||Number.isInteger(post.where))&&isStringList(post.handled)&&typeof post.bodyHash==="string"&&typeof post.sha==="string"&&(post.needsHuman===void 0||isStringList(post.needsHuman))}__name(isPendingPost,"isPendingPost");function stateDefect(state){const word=__name(value=>typeof value==="string"&&value!==""&&!value.startsWith("-"),"word");if(!word(state.remote)||!isBranchName(state.remote)||!isCommandSafeName(state.remote)){return"remote"}if(!word(state.pushTarget))return"pushTarget";if(!word(state.headRefName)||!isBranchName(state.headRefName)){return"headRefName"}if(!word(state.baseRefName)||!isBranchName(state.baseRefName)||!isCommandSafeName(state.baseRefName)){return"baseRefName"}if(!isOwnerRepo(`${state.owner}/${state.repo}`))return"owner/repo";if(typeof state.host!=="string"||!HOSTNAME_RE.test(state.host)){return"host"}if(!Number.isInteger(state.prNumber)||state.prNumber<1){return"prNumber"}if(typeof state.lastKnownHeadSha!=="string"||!SHA_RE.test(state.lastKnownHeadSha)){return"lastKnownHeadSha"}if(!Array.isArray(state.pushedShas)||!state.pushedShas.every(sha=>typeof sha==="string"&&SHA_RE.test(sha))){return"pushedShas"}if(!isStringList(state.handledCommentIds))return"handledCommentIds";if(!isStringList(state.postedCommentIds))return"postedCommentIds";if(state.handledChecks!==void 0&&!isStringList(state.handledChecks)){return"handledChecks"}if(state.rerunChecks!==void 0&&!isStringList(state.rerunChecks)){return"rerunChecks"}if(state.deferredRuns!==void 0&&!isRunList(state.deferredRuns)){return"deferredRuns"}if(state.heldChecks!==void 0&&!isStringList(state.heldChecks)){return"heldChecks"}if(state.pendingPosts!==void 0&&!(Array.isArray(state.pendingPosts)&&state.pendingPosts.every(isPendingPost))){return"pendingPosts"}if(state.pushCount!==void 0&&!(Number.isInteger(state.pushCount)&&state.pushCount>=0)){return"pushCount"}if(state.watch!==void 0&&!isWatchOptions(state.watch)){return"watch"}if(state.needsHuman!==void 0&&!(Array.isArray(state.needsHuman)&&state.needsHuman.every(isNeedsHumanItem))){return"needsHuman"}if(state.reportedNeedsHuman!==void 0&&!(typeof state.reportedNeedsHuman==="object"&&state.reportedNeedsHuman!==null&&typeof state.reportedNeedsHuman.sha==="string"&&SHA_RE.test(state.reportedNeedsHuman.sha)&&isStringList(state.reportedNeedsHuman.texts))){return"reportedNeedsHuman"}if(state.preparedAt!==void 0&&typeof state.preparedAt!=="string"){return"preparedAt"}if(state.ended!==void 0&&!(typeof state.ended==="object"&&state.ended!==null&&typeof state.ended.at==="string"&&typeof state.ended.reason==="string")){return"ended"}if(state.failingChecks!==void 0&&!(Array.isArray(state.failingChecks)&&state.failingChecks.every(isFailingCheck))){return"failingChecks"}return null}__name(stateDefect,"stateDefect");function isFailingCheck(value){const check=value;return typeof check==="object"&&check!==null&&typeof check.identity==="string"&&typeof check.check==="string"&&typeof check.head==="string"&&Number.isInteger(check.pushes)&&check.pushes>=0&&SHA_RE.test(check.head)&&(check.lastPush===void 0||SHA_RE.test(check.lastPush))&&(check.unanswered===void 0||Array.isArray(check.unanswered)&&check.unanswered.every(entry=>typeof entry==="object"&&entry!==null&&typeof entry.sha==="string"&&SHA_RE.test(entry.sha)&&Number.isInteger(entry.pushes)&&entry.pushes>=0))}__name(isFailingCheck,"isFailingCheck");function isWatchOptions(value){const watch=value;return typeof watch==="object"&&watch!==null&&WATCH_INTERVALS.includes(watch.every)&&typeof watch.reply==="boolean"&&typeof watch.instructions==="string"&&watch.instructions.length<=MAX_INSTRUCTIONS_CHARS&&!/[\p{Cc}\p{Cf}\u2028\u2029]/u.test(watch.instructions)&&(watch.task===void 0||/^[0-9a-f]{12}$/.test(watch.task))}__name(isWatchOptions,"isWatchOptions");function isNeedsHumanItem(value){const item=value;return typeof item==="object"&&item!==null&&typeof item.sha==="string"&&typeof item.at==="string"&&typeof item.text==="string"}__name(isNeedsHumanItem,"isNeedsHumanItem");function readState(statePath){const entry=lstatSync(statePath,{throwIfNoEntry:false});if(entry===void 0)return null;if(!entry.isFile()){throw new Error(`${statePath} is not a regular file; \`qwen autofix-pr cleanup <pr> --force\` discards it.`)}let text;try{text=readRegularFile(statePath)}catch{throw new Error(`${statePath} is not a regular file; \`qwen autofix-pr cleanup <pr> --force\` discards it.`)}if(text===null)return null;const parsed=JSON.parse(text);if(parsed.version!==1){throw new Error(`unsupported autofix-pr state version in ${statePath}: ${String(parsed.version)}`)}const defect=stateDefect(parsed);if(defect){throw new Error(`${statePath} has an invalid ${defect}; run \`qwen autofix-pr cleanup ${String(parsed.prNumber)} --force\` and prepare the watch again.`)}const{watch,ended,needsHuman,reportedNeedsHuman,failingChecks}=parsed;return{...parsed,...watch?{watch:{every:watch.every,reply:watch.reply,instructions:watch.instructions,...watch.task!==void 0?{task:watch.task}:{}}}:{},...ended?{ended:{at:ended.at,reason:ended.reason}}:{},...needsHuman?{needsHuman:needsHuman.map(({sha,at,text:text2})=>({sha,at,text:text2}))}:{},...reportedNeedsHuman?{reportedNeedsHuman:{sha:reportedNeedsHuman.sha,texts:[...reportedNeedsHuman.texts]}}:{},...failingChecks?{failingChecks:failingChecks.map(({identity,check,head,pushes,lastPush,unanswered})=>({identity,check,head,pushes,...lastPush===void 0?{}:{lastPush},...unanswered===void 0?{}:{unanswered:unanswered.map(({sha,pushes:pushes2})=>({sha,pushes:pushes2}))}}))}:{}}}__name(readState,"readState");var NO_FOLLOW={noFollow:true};function writeState(statePath,state){atomicWriteFileSync(statePath,`${JSON.stringify(state,null,2)}
6
6
  `,NO_FOLLOW)}__name(writeState,"writeState");function historyPath(paths,repository){const slug=[normalizeGhHostForUrl(repository.host).replace(/:/g,"@"),normalizeSegment(repository.owner),normalizeSegment(repository.repo)].join("+").replace(/[^a-z0-9._@+-]/g,"_");return join(dirname(paths.statePath),`${historyPrefix(paths)}${slug}.history.json`)}__name(historyPath,"historyPath");function historyPrefix(paths){return basename(paths.statePath).replace(/-state\.json$/,"-history-")}__name(historyPrefix,"historyPrefix");function readHistory(path){if(lstatSync(path,{throwIfNoEntry:false})===void 0)return null;if(!isRegularFile(path))throw new Error(`${path} is not a regular file`);const parsed=JSON.parse(readFileSync(path,"utf8"));if(parsed.version!==1){throw new Error(`unsupported autofix-pr history version in ${path}: ${String(parsed.version)}`)}return{...parsed,handledCommentIds:stringList(parsed.handledCommentIds),postedCommentIds:stringList(parsed.postedCommentIds),handledChecks:stringList(parsed.handledChecks),rerunChecks:stringList(parsed.rerunChecks),handledConflictSha:typeof parsed.handledConflictSha==="string"&&SHA_RE.test(parsed.handledConflictSha)?parsed.handledConflictSha:null,pendingPosts:Array.isArray(parsed.pendingPosts)?parsed.pendingPosts.filter(isPendingPost):[],deferredRuns:Array.isArray(parsed.deferredRuns)?parsed.deferredRuns.filter(run=>Number.isInteger(run)):[],heldChecks:stringList(parsed.heldChecks)}}__name(readHistory,"readHistory");function keepHistory(paths,state){const path=historyPath(paths,state);let earlier=null;try{earlier=readHistory(path)}catch{}if(earlier&&!sameRepository(earlier,state))earlier=null;const union=__name((a,b)=>[...new Set([...stringList(a),...stringList(b)])],"union");const history={version:1,host:state.host,owner:state.owner,repo:state.repo,prNumber:state.prNumber,handledCommentIds:union(earlier?.handledCommentIds,state.handledCommentIds),postedCommentIds:union(earlier?.postedCommentIds,state.postedCommentIds),handledChecks:union(earlier?.handledChecks,state.handledChecks),rerunChecks:union(earlier?.rerunChecks,state.rerunChecks),handledConflictSha:state.handledConflictSha??earlier?.handledConflictSha??null,pendingPosts:state.pendingPosts??earlier?.pendingPosts??[],deferredRuns:state.deferredRuns??earlier?.deferredRuns??[],heldChecks:state.heldChecks??earlier?.heldChecks??[]};const entry=lstatSync(path,{throwIfNoEntry:false});if(entry&&!entry.isFile()&&!entry.isSymbolicLink()){rmSync(path,{recursive:true,force:true})}atomicWriteFileSync(path,`${JSON.stringify(history,null,2)}
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{t}from"./chunk-ABJGFEES.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();function resolveVoiceTransport(model){const id=model.toLowerCase();if(/^qwen3-asr-flash-realtime(?:-|$)/.test(id)){return"qwen-asr-realtime"}if(/^qwen3-asr-flash(?:-\d{4}-\d{2}-\d{2})?$/.test(id)){return"qwen-asr-chat"}if(/^(fun-asr|paraformer).*realtime(?:-|$)/.test(id)){return"dashscope-task-realtime"}return"unsupported"}__name(resolveVoiceTransport,"resolveVoiceTransport");function isTranscribableVoiceModel(model){return model.authType==="openai"&&model.isRuntimeModel!==true&&model.imageOnly!==true&&typeof model.baseUrl==="string"&&model.baseUrl.trim().length>0}__name(isTranscribableVoiceModel,"isTranscribableVoiceModel");function isSelectableVoiceModel(model){return isTranscribableVoiceModel(model)&&resolveVoiceTransport(model.id)!=="unsupported"}__name(isSelectableVoiceModel,"isSelectableVoiceModel");function formatUnsupportedVoiceModelMessage(modelName){return t("Voice model '{{modelName}}' cannot be used for transcription. Configure an OpenAI-compatible model with baseUrl in settings.modelProviders.",{modelName})}__name(formatUnsupportedVoiceModelMessage,"formatUnsupportedVoiceModelMessage");init_esbuild_shims();function readVoiceModel(settings){const value=settings.merged?.voiceModel;if(typeof value!=="string"){return void 0}const trimmed=value.trim();return trimmed.length>0?trimmed:void 0}__name(readVoiceModel,"readVoiceModel");function isVoiceEnabled(settings){return settings.merged?.general?.voice?.enabled===true}__name(isVoiceEnabled,"isVoiceEnabled");function readVoiceMode(settings){return settings.merged?.general?.voice?.mode==="tap"?"tap":"hold"}__name(readVoiceMode,"readVoiceMode");function readVoiceLanguage(settings){const language=settings.merged.general?.voice?.language;if(typeof language!=="string"){return""}return language.trim()}__name(readVoiceLanguage,"readVoiceLanguage");function getVoiceSettingsScope(settings,workspaceTrusted=settings.isTrusted===true){return workspaceTrusted&&typeof settings.workspace?.settings?.general?.voice?.enabled==="boolean"?"Workspace":"User"}__name(getVoiceSettingsScope,"getVoiceSettingsScope");function isVoiceMode(value){return value==="hold"||value==="tap"}__name(isVoiceMode,"isVoiceMode");export{resolveVoiceTransport,isTranscribableVoiceModel,isSelectableVoiceModel,formatUnsupportedVoiceModelMessage,readVoiceModel,isVoiceEnabled,readVoiceMode,readVoiceLanguage,getVoiceSettingsScope,isVoiceMode};
3
+ import{t}from"./chunk-NO7VTKRL.js";import{init_esbuild_shims}from"./chunk-VKDAXTCZ.js";import{__name}from"./chunk-KBWJGX7I.js";init_esbuild_shims();function resolveVoiceTransport(model){const id=model.toLowerCase();if(/^qwen3-asr-flash-realtime(?:-|$)/.test(id)){return"qwen-asr-realtime"}if(/^qwen3-asr-flash(?:-\d{4}-\d{2}-\d{2})?$/.test(id)){return"qwen-asr-chat"}if(/^(fun-asr|paraformer).*realtime(?:-|$)/.test(id)){return"dashscope-task-realtime"}return"unsupported"}__name(resolveVoiceTransport,"resolveVoiceTransport");function isTranscribableVoiceModel(model){return model.authType==="openai"&&model.isRuntimeModel!==true&&model.imageOnly!==true&&typeof model.baseUrl==="string"&&model.baseUrl.trim().length>0}__name(isTranscribableVoiceModel,"isTranscribableVoiceModel");function isSelectableVoiceModel(model){return isTranscribableVoiceModel(model)&&resolveVoiceTransport(model.id)!=="unsupported"}__name(isSelectableVoiceModel,"isSelectableVoiceModel");function formatUnsupportedVoiceModelMessage(modelName){return t("Voice model '{{modelName}}' cannot be used for transcription. Configure an OpenAI-compatible model with baseUrl in settings.modelProviders.",{modelName})}__name(formatUnsupportedVoiceModelMessage,"formatUnsupportedVoiceModelMessage");init_esbuild_shims();function readVoiceModel(settings){const value=settings.merged?.voiceModel;if(typeof value!=="string"){return void 0}const trimmed=value.trim();return trimmed.length>0?trimmed:void 0}__name(readVoiceModel,"readVoiceModel");function isVoiceEnabled(settings){return settings.merged?.general?.voice?.enabled===true}__name(isVoiceEnabled,"isVoiceEnabled");function readVoiceMode(settings){return settings.merged?.general?.voice?.mode==="tap"?"tap":"hold"}__name(readVoiceMode,"readVoiceMode");function readVoiceLanguage(settings){const language=settings.merged.general?.voice?.language;if(typeof language!=="string"){return""}return language.trim()}__name(readVoiceLanguage,"readVoiceLanguage");function getVoiceSettingsScope(settings,workspaceTrusted=settings.isTrusted===true){return workspaceTrusted&&typeof settings.workspace?.settings?.general?.voice?.enabled==="boolean"?"Workspace":"User"}__name(getVoiceSettingsScope,"getVoiceSettingsScope");function isVoiceMode(value){return value==="hold"||value==="tap"}__name(isVoiceMode,"isVoiceMode");export{resolveVoiceTransport,isTranscribableVoiceModel,isSelectableVoiceModel,formatUnsupportedVoiceModelMessage,readVoiceModel,isVoiceEnabled,readVoiceMode,readVoiceLanguage,getVoiceSettingsScope,isVoiceMode};
4
4
  /**
5
5
  * @license
6
6
  * Copyright 2025 Qwen