@qwen-code/qwen-code 0.23.1 → 0.23.2-nightly.20260909.2e212144d3

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 (293) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +1 -1
  3. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +19 -15
  5. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  6. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  7. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  8. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  9. package/bundled/qc-helper/docs/features/channels/overview.md +26 -51
  10. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  11. package/bundled/qc-helper/docs/features/commands.md +79 -17
  12. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  13. package/bundled/qc-helper/docs/features/cross-session-protocol.md +291 -0
  14. package/bundled/qc-helper/docs/features/goals.md +3 -1
  15. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +62 -48
  17. package/chunks/{MaxSizedBox-UDO6Y7RB.js → MaxSizedBox-ZBGWYJZW.js} +20 -19
  18. package/chunks/{StandaloneSessionPicker-D4CUOO4H.js → StandaloneSessionPicker-NR5ACIJZ.js} +35 -34
  19. package/chunks/{acpAgent-KWLJFADK.js → acpAgent-DM6XRCDQ.js} +307 -183
  20. package/chunks/{agent-GSUPGEOL.js → agent-EF3IIYE3.js} +13 -13
  21. package/chunks/{agent-headless-HNYCQUJB.js → agent-headless-5J2KFYR4.js} +13 -13
  22. package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-VIW2FG7G.js} +4 -4
  23. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  24. package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-R3TXY77M.js} +1 -1
  25. package/chunks/{bridge-B7CV6RVI.js → bridge-LEMQM6QE.js} +21 -20
  26. package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-TGF6XFXT.js} +4 -4
  27. package/chunks/{channel-settings-store-FW45IRUP.js → channel-settings-store-FV365JSF.js} +29 -28
  28. package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-SQ5FRWOH.js} +5 -5
  29. package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-TU4ZNWOE.js} +5 -5
  30. package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  31. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  32. package/chunks/{chunk-3LPJ776W.js → chunk-2HYOOFDS.js} +9 -6
  33. package/chunks/{chunk-S6QVI3MV.js → chunk-34VPADLG.js} +2 -2
  34. package/chunks/{chunk-WJDXKQIO.js → chunk-3A2IMUDH.js} +14 -2
  35. package/chunks/{chunk-DXQ6Z7AH.js → chunk-3O77M472.js} +224 -84
  36. package/chunks/{chunk-5CVY5Q2P.js → chunk-43EUMPKQ.js} +1 -1
  37. package/chunks/{chunk-ZNO5BUAD.js → chunk-4DIMJKWU.js} +46 -37
  38. package/chunks/{chunk-O2JBJQCF.js → chunk-5HV2HPO7.js} +1 -1
  39. package/chunks/{chunk-RXT4QBDX.js → chunk-5WBA3DEF.js} +1 -1
  40. package/chunks/{chunk-ARYNBBBM.js → chunk-6GAYNM3F.js} +3 -3
  41. package/chunks/{chunk-EEKU6COG.js → chunk-6S7YYUUH.js} +3 -3
  42. package/chunks/{chunk-OPMKGOLD.js → chunk-6VIATHL7.js} +1 -1
  43. package/chunks/{chunk-ENZDGHGJ.js → chunk-76I36BEM.js} +3 -3
  44. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  45. package/chunks/{chunk-UHUT4IDM.js → chunk-7IDZFJAV.js} +9 -9
  46. package/chunks/{chunk-5Z4FCEPY.js → chunk-7K4GGN3D.js} +606 -109
  47. package/chunks/{chunk-ZPL2TZNA.js → chunk-7KZVXJ4U.js} +1 -1
  48. package/chunks/{chunk-FWRRUITH.js → chunk-7WCJEY3A.js} +4 -4
  49. package/chunks/{chunk-MFYH2VXV.js → chunk-A7QZIGRB.js} +2 -2
  50. package/chunks/{chunk-27LTEY6D.js → chunk-ATBLEXXV.js} +7 -2
  51. package/chunks/{chunk-3BTHHXXE.js → chunk-AUTUFD5X.js} +1 -1
  52. package/chunks/chunk-AXMWHKXA.js +42 -0
  53. package/chunks/{chunk-QZOXVQPK.js → chunk-AXWTG6R7.js} +2 -5
  54. package/chunks/{chunk-PDUMGZ2P.js → chunk-BDAVT6K2.js} +486 -409
  55. package/chunks/{chunk-2YS3NU4A.js → chunk-BDP3NTWD.js} +3 -3
  56. package/chunks/{chunk-IKG2YVRZ.js → chunk-BZUHZCUO.js} +2 -2
  57. package/chunks/{chunk-USN6VNTO.js → chunk-C24ZDDNY.js} +1 -1
  58. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  59. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  60. package/chunks/{chunk-3VDLQUR2.js → chunk-D6AGS266.js} +1 -1
  61. package/chunks/{chunk-DO5SMV52.js → chunk-D7DFZAK2.js} +17 -11
  62. package/chunks/{chunk-GM44O6F7.js → chunk-DARWOZY6.js} +1 -1
  63. package/chunks/{chunk-HUX2DOTF.js → chunk-DGNRLJ6S.js} +3 -3
  64. package/chunks/{chunk-FW4E4QPG.js → chunk-DVOCOIS5.js} +1 -1
  65. package/chunks/{chunk-OESZTXTG.js → chunk-E4LXNQAK.js} +1 -1
  66. package/chunks/{chunk-TWAMIEQ2.js → chunk-EATP5QCN.js} +16 -18
  67. package/chunks/{chunk-DZ6D4B3K.js → chunk-EDSU3VUG.js} +12 -5
  68. package/chunks/{chunk-EOET4H7C.js → chunk-EE5ZD4XU.js} +3 -3
  69. package/chunks/{chunk-B3EL44K3.js → chunk-EN3Q2S3J.js} +3 -3
  70. package/chunks/{chunk-N7YQEKGX.js → chunk-EOLGAQ25.js} +16 -15
  71. package/chunks/{chunk-3YQMUBTS.js → chunk-EYCW6UF2.js} +7 -7
  72. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  73. package/chunks/{chunk-FPGTNKCP.js → chunk-F3M6P6IQ.js} +199 -1
  74. package/chunks/{chunk-B44JBZBB.js → chunk-F4SAL7WM.js} +91 -3
  75. package/chunks/{chunk-XZ3Z43XL.js → chunk-FEEVHJOR.js} +3 -3
  76. package/chunks/{chunk-CHVU543W.js → chunk-FN4KHWCL.js} +1 -1
  77. package/chunks/{chunk-6QV7Z74P.js → chunk-FRS3P7MQ.js} +15 -2
  78. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  79. package/chunks/{chunk-XBVNNDPK.js → chunk-GSYD7MYP.js} +8 -3
  80. package/chunks/{chunk-VF6D6EGV.js → chunk-HSO6D4KX.js} +82 -25
  81. package/chunks/{chunk-L7V52QEZ.js → chunk-HUJJFSMO.js} +10 -10
  82. package/chunks/{chunk-CIKL2DQP.js → chunk-HW4MRP4V.js} +1 -1
  83. package/chunks/{chunk-TWWS7XUW.js → chunk-HWLLUDIA.js} +108 -16
  84. package/chunks/{chunk-75LBC7SV.js → chunk-IKK6NNS6.js} +32 -29
  85. package/chunks/{chunk-UXDVUFKU.js → chunk-JFAGT5YG.js} +2 -2
  86. package/chunks/{chunk-6SADVYQQ.js → chunk-JGTMTJSQ.js} +1 -1
  87. package/chunks/{chunk-45ROPFQY.js → chunk-JYGIJA4W.js} +1 -1
  88. package/chunks/{chunk-5WC2ECUK.js → chunk-KECCLCXM.js} +42 -8
  89. package/chunks/{chunk-CABDNUJ4.js → chunk-KEPC5BOL.js} +5 -5
  90. package/chunks/{chunk-WNISCNTA.js → chunk-L5VHJYHH.js} +2 -2
  91. package/chunks/{chunk-25CBAK3H.js → chunk-LKBOBUA2.js} +2 -2
  92. package/chunks/{chunk-6QILGINT.js → chunk-LOBKNYPR.js} +2 -2
  93. package/chunks/{chunk-2ZFO5JD7.js → chunk-LOVGQ3HZ.js} +9 -9
  94. package/chunks/{chunk-QK4K76T6.js → chunk-MUF4UGPB.js} +2 -2
  95. package/chunks/{chunk-JGDRB4FP.js → chunk-N3Z6Q7KC.js} +125 -10
  96. package/chunks/chunk-NFXXBWSE.js +463 -0
  97. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  98. package/chunks/{chunk-YCEKI7QX.js → chunk-NV4YYXFT.js} +1 -1
  99. package/chunks/{chunk-5IL2BZHW.js → chunk-O6BFERWN.js} +3 -3
  100. package/chunks/{chunk-TGC4264Q.js → chunk-OVTPETDL.js} +5 -5
  101. package/chunks/chunk-PLEBBGHL.js +1401 -0
  102. package/chunks/{chunk-3VWPPK5Q.js → chunk-PWR6BQ3U.js} +4 -4
  103. package/chunks/{chunk-D6AQNMUA.js → chunk-QA2B26PL.js} +3 -3
  104. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  105. package/chunks/{chunk-LNCNUMJ5.js → chunk-SK6VACCM.js} +558 -158
  106. package/chunks/{chunk-YAC7H4K3.js → chunk-SM66GFKJ.js} +1 -1
  107. package/chunks/{chunk-MA5OUNN6.js → chunk-SNMUO5Z7.js} +1 -1
  108. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  109. package/chunks/{chunk-6JXHO7LG.js → chunk-SYKPMH2X.js} +3 -3
  110. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  111. package/chunks/{chunk-EHTKOO6W.js → chunk-TRQNRP2H.js} +2 -2
  112. package/chunks/{chunk-LZGFVUWZ.js → chunk-UQOP2APG.js} +4 -24
  113. package/chunks/{chunk-T2IHCZLS.js → chunk-VAWM3A5N.js} +1 -1
  114. package/chunks/{chunk-M73KHGNR.js → chunk-VJJXG73H.js} +404 -226
  115. package/chunks/{chunk-WAASYFPK.js → chunk-VJWJOKOQ.js} +2 -2
  116. package/chunks/{chunk-WQMUGQ6G.js → chunk-VR6Y23FW.js} +1 -1
  117. package/chunks/{chunk-E7XSUYCZ.js → chunk-VX2NR3SD.js} +19 -4
  118. package/chunks/{chunk-XVTCSVBK.js → chunk-WDVV3LRM.js} +193 -169
  119. package/chunks/{chunk-RNYENHN5.js → chunk-WEU6O6VN.js} +2 -2
  120. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  121. package/chunks/{chunk-66JBCTJF.js → chunk-Y7YHAY32.js} +23 -6
  122. package/chunks/{chunk-7SL55L5H.js → chunk-YIE6REQ5.js} +20 -15
  123. package/chunks/{chunk-ZU2T5JIS.js → chunk-ZEFWBG2C.js} +736 -1148
  124. package/chunks/{chunk-6TPVIESH.js → chunk-ZM2TCZZ7.js} +3 -3
  125. package/chunks/{chunk-2TMJRF46.js → chunk-ZZ7RVOTU.js} +50 -18
  126. package/chunks/{config-utils-KTDSQ4MU.js → config-utils-SXFK3G4X.js} +24 -23
  127. package/chunks/{contextCommand-UQ3KRYGK.js → contextCommand-QFPD26QO.js} +21 -20
  128. package/chunks/{core-runtime-JR34JAFH.js → core-runtime-VXKNBODM.js} +26 -24
  129. package/chunks/{create-sub-session-RGPJOI4S.js → create-sub-session-7WSQETFR.js} +20 -19
  130. package/chunks/{daemon-UI6SQSBV.js → daemon-U2456K5H.js} +2 -2
  131. package/chunks/{daemon-git-worktree-guard-H3OA26KQ.js → daemon-git-worktree-guard-I4DCSDUS.js} +20 -19
  132. package/chunks/{daemon-status-provider-6WZLKSZU.js → daemon-status-provider-5UV56RI4.js} +25 -24
  133. package/chunks/{daemon-trust-policy-3EDP2BYD.js → daemon-trust-policy-DKIBWTKU.js} +25 -24
  134. package/chunks/{daemon-trust-policy-monitor-CRHZPK52.js → daemon-trust-policy-monitor-CPSD7UKT.js} +25 -24
  135. package/chunks/{deferred-core-runtime-LO5NTQQ4.js → deferred-core-runtime-D2RF35BL.js} +20 -19
  136. package/chunks/{dist-STAGIFNB.js → dist-6YDUH3BB.js} +388 -102
  137. package/chunks/{dist-XJ25G6OH.js → dist-BNQVF565.js} +2 -8
  138. package/chunks/{dist-NQ2636VT.js → dist-F34J4FZX.js} +1 -1
  139. package/chunks/{dist-OR2ZQTXZ.js → dist-F6JLAJLE.js} +1 -1
  140. package/chunks/{dist-24TCWK5H.js → dist-K5GHMXIG.js} +2 -2
  141. package/chunks/{dist-WZTUKIDR.js → dist-NP7QKLVG.js} +2 -2
  142. package/chunks/{dist-M4CBX53H.js → dist-UFTFGI6I.js} +1 -1
  143. package/chunks/{dist-5I4HLUTO.js → dist-XLV33CLY.js} +1 -2
  144. package/chunks/{dist-FDISN4AK.js → dist-ZDNJK74R.js} +3 -7
  145. package/chunks/{edit-LB7Z7XK5.js → edit-4IBADZ3O.js} +13 -13
  146. package/chunks/{enterPlanMode-P6TVUFIY.js → enterPlanMode-YN3GPQU5.js} +13 -13
  147. package/chunks/{environment-QATJNNKI.js → environment-E272IJMF.js} +22 -21
  148. package/chunks/{errors-3XJ37PS2.js → errors-CVAH3RWQ.js} +22 -21
  149. package/chunks/{exitPlanMode-A3OKL5UO.js → exitPlanMode-24J5IHGC.js} +13 -13
  150. package/chunks/{fast-path-DBIT5YQQ.js → fast-path-M5IDBMXF.js} +3 -3
  151. package/chunks/{glob-73EDTXUE.js → glob-ERBD7JYP.js} +13 -13
  152. package/chunks/{goal-tools-DFI6YMSD.js → goal-tools-245ULLQT.js} +13 -13
  153. package/chunks/{handleAutoUpdate-2FUNJO3B.js → handleAutoUpdate-JDZHHZKK.js} +22 -21
  154. package/chunks/{i18n-FDIA6KFI.js → i18n-LA4D5IXM.js} +20 -19
  155. package/chunks/{initializer-4MJTJOTW.js → initializer-SHPTSWUZ.js} +25 -24
  156. package/chunks/{installationInfo-232RA2OK.js → installationInfo-QEQEPB3G.js} +20 -19
  157. package/chunks/{list-WN6WSGEB.js → list-IBHCQWTF.js} +28 -27
  158. package/chunks/{list-agents-I5TRH3J7.js → list-agents-EDPZCGKN.js} +5 -4
  159. package/chunks/{llm-UDFWQWZA.js → llm-JAWCQLA4.js} +68 -62
  160. package/chunks/{llm-content-generator-VLMZ2A7A.js → llm-content-generator-GOV3A23T.js} +2 -2
  161. package/chunks/{loadedSettingsAdapter-OBQEIXM7.js → loadedSettingsAdapter-RVE2GNVU.js} +25 -24
  162. package/chunks/{loggingContentGenerator-RGVUMUVX.js → loggingContentGenerator-SSHNN5YW.js} +15 -15
  163. package/chunks/{managed-npm-update-QBAJYCFU.js → managed-npm-update-BHSTITQO.js} +20 -19
  164. package/chunks/{mcp-OTIZZCPY.js → mcp-6ZZ7P2HU.js} +25 -24
  165. package/chunks/{monitor-BV5XF6LL.js → monitor-RKK6GSHG.js} +13 -13
  166. package/chunks/{nonInteractiveCli-W6MUKDVJ.js → nonInteractiveCli-UQHP3G6P.js} +58 -57
  167. package/chunks/{notebook-edit-HGBEKGTE.js → notebook-edit-YM47A7WO.js} +13 -13
  168. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  169. package/chunks/{openaiContentGenerator-NSU3ERBH.js → openaiContentGenerator-FHKDWNI2.js} +9 -9
  170. package/chunks/{pidfile-LE3TU4GE.js → pidfile-SIIEJEEH.js} +23 -20
  171. package/chunks/{processUtils-YFBGJK67.js → processUtils-JF7CWBJC.js} +2 -2
  172. package/chunks/{prompt-terminal-ledger-4W4W7DSO.js → prompt-terminal-ledger-FXXHAEQU.js} +21 -20
  173. package/chunks/{qwenContentGenerator-HTA57WFC.js → qwenContentGenerator-KFJ77JP6.js} +16 -16
  174. package/chunks/{read-file-KHPQ2MB6.js → read-file-S2NOCBIL.js} +4 -4
  175. package/chunks/{resumeHistoryUtils-K7RV3QBN.js → resumeHistoryUtils-QHHPSQWU.js} +22 -21
  176. package/chunks/{ripGrep-NBBVCMG4.js → ripGrep-F6TNOJUO.js} +5 -5
  177. package/chunks/{run-qwen-serve-A3JBOZCM.js → run-qwen-serve-KYBDQRDD.js} +216 -64
  178. package/chunks/{runtime-7YOU2KJ3.js → runtime-3WNOFLCR.js} +32 -29
  179. package/chunks/{scheduled-tasks-52LXK7LN.js → scheduled-tasks-RNBH56DJ.js} +23 -22
  180. package/chunks/{scheduler-J44M72VM.js → scheduler-ERMW7Q7B.js} +22 -21
  181. package/chunks/{send-message-AWKUDJBH.js → send-message-V5T3NMFM.js} +3 -3
  182. package/chunks/{serve-TRC6XJUB.js → serve-7NV46RMP.js} +25 -24
  183. package/chunks/{server-YPNTJLX2.js → server-6RZJR5QF.js} +106 -154
  184. package/chunks/{session-FMMIBFYX.js → session-Z4EV7NVV.js} +91 -63
  185. package/chunks/{session-attachments-root-LDJMNK7K.js → session-attachments-root-SG5FC52X.js} +20 -19
  186. package/chunks/{session-pr-refresh-NLR4EK2J.js → session-pr-refresh-ILC4Z3ZM.js} +22 -21
  187. package/chunks/{settings-A46L577J.js → settings-Y47SPE3X.js} +24 -23
  188. package/chunks/{shell-Q5LSQPPY.js → shell-YBVCOPVO.js} +13 -13
  189. package/chunks/{skill-75KPJRCM.js → skill-AXC63EBA.js} +4 -4
  190. package/chunks/{skill-settings-775YT4YR.js → skill-settings-AFPAYGLO.js} +24 -23
  191. package/chunks/{spawnChannel-XY73I5CU.js → spawnChannel-ZFL4J2V3.js} +20 -19
  192. package/chunks/{standalone-update-L46XXNQ2.js → standalone-update-Y2OZPLNJ.js} +21 -20
  193. package/chunks/{start-opentui-ui-WLV43247.js → start-opentui-ui-G6TKT4LI.js} +449 -210
  194. package/chunks/{startInteractiveUI-F5DKMLOV.js → startInteractiveUI-YTNDPW7J.js} +1182 -1245
  195. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  196. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  197. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  198. package/chunks/{team-create-2PATB77U.js → team-create-BUFLGGSH.js} +13 -13
  199. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  200. package/chunks/{team-plan-approval-QTANEWOS.js → team-plan-approval-OUWWM42U.js} +13 -13
  201. package/chunks/{terminal-image-renderer-OGULCFNF.js → terminal-image-renderer-WH2WV5ES.js} +20 -19
  202. package/chunks/{theme-manager-CNO3QERP.js → theme-manager-5UDRARM2.js} +20 -19
  203. package/chunks/{tool-search-VXWEOZE7.js → tool-search-MCDIRPHN.js} +4 -4
  204. package/chunks/{total-session-admission-4KAADZPB.js → total-session-admission-VL27U74Z.js} +21 -20
  205. package/chunks/{trustedFolders-PPJSOPOT.js → trustedFolders-MSXT4VDD.js} +21 -20
  206. package/chunks/{update-relaunch-4PT4MW7B.js → update-relaunch-JKLEWVCB.js} +5 -5
  207. package/chunks/{updateCheck-WAVFLWNG.js → updateCheck-ARTHAJT2.js} +20 -19
  208. package/chunks/{useAutoAcceptIndicator-XNED4NRB.js → useAutoAcceptIndicator-YEAAGYVU.js} +26 -25
  209. package/chunks/{validateNonInterActiveAuth-J676DUQ2.js → validateNonInterActiveAuth-EMRQKH5S.js} +56 -55
  210. package/chunks/{version-J6SRRQB2.js → version-HFQU35WD.js} +3 -1
  211. package/chunks/{web-fetch-FMZZYX44.js → web-fetch-QBXAO6VF.js} +4 -4
  212. package/chunks/{web-search-3G2KXCX5.js → web-search-2URQXA3A.js} +186 -9
  213. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  214. package/chunks/{workflow-PPZZICQ7.js → workflow-JDD6WDAH.js} +204 -68
  215. package/chunks/{workspace-providers-status-IIYTAQST.js → workspace-providers-status-B4IKR6YJ.js} +27 -26
  216. package/chunks/{workspace-registration-store-VHCDXAV7.js → workspace-registration-store-PJ3YHR45.js} +1 -2
  217. package/chunks/{workspace-registry-I7VQIPS2.js → workspace-registry-WVYJ5UGB.js} +21 -20
  218. package/chunks/{workspace-runtime-coordinator-DBGNY32G.js → workspace-runtime-coordinator-DXL5YVAG.js} +21 -20
  219. package/chunks/{workspace-service-QSKB2T54.js → workspace-service-QNGAMVH7.js} +26 -25
  220. package/chunks/{workspace-skills-status-T7GPT65J.js → workspace-skills-status-BEISJIII.js} +25 -24
  221. package/chunks/{workspace-trust-reconciler-2PKRDAU4.js → workspace-trust-reconciler-ORYJF5L4.js} +26 -25
  222. package/chunks/{write-file-L76CGFTQ.js → write-file-DWLKFBTJ.js} +14 -14
  223. package/chunks/{zoom-image-TDJJY2VZ.js → zoom-image-BYVIXSNQ.js} +4 -4
  224. package/cli.js +12 -12
  225. package/export-transcript-document.js +106 -106
  226. package/package.json +4 -4
  227. package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-C_8kzsly.js} +1 -1
  228. package/web-shell/assets/{arc-BQ9m8TDV.js → arc-CDg7Zfpm.js} +1 -1
  229. package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-DZzdCWyF.js} +1 -1
  230. package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-DI3B4gyR.js} +1 -1
  231. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-CfOgwHZW.js} +1 -1
  232. package/web-shell/assets/channel-e4xwS72w.js +1 -0
  233. package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-B_PUth0g.js} +1 -1
  234. package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-CrKtvBIL.js} +1 -1
  235. package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-B4z2n8Py.js} +1 -1
  236. package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-BUtrFEO8.js} +1 -1
  237. package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-Cqw3aXW0.js} +1 -1
  238. package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-CZolnvls.js} +1 -1
  239. package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-DivgasCa.js} +1 -1
  240. package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG--seyb1B6.js} +1 -1
  241. package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-D7pHtuVM.js} +1 -1
  242. package/web-shell/assets/classDiagram-DTDB5LWJ-CzXfUUOt.js +1 -0
  243. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CzXfUUOt.js +1 -0
  244. package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-4MWaRF_3.js} +1 -1
  245. package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-nhJhAjgD.js} +1 -1
  246. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-NF-PwXlq.js} +1 -1
  247. package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-Bu0ncdWP.js} +1 -1
  248. package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-CsvhFHZC.js} +1 -1
  249. package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-Ck61sIB3.js} +1 -1
  250. package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-D0171zrb.js} +1 -1
  251. package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-DvdxY4UL.js} +1 -1
  252. package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-CGGpseiB.js} +1 -1
  253. package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-K8-QMvY8.js} +1 -1
  254. package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-D316nAem.js} +1 -1
  255. package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-B7siy_mn.js} +1 -1
  256. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-BZQDxzTu.js} +1 -1
  257. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-DZynLCSV.js} +1 -1
  258. package/web-shell/assets/{index-BbMXfhNG.js → index-9ie6xLTM.js} +1 -1
  259. package/web-shell/assets/{index-Bu-rZoJ-.js → index-DirkXQEg.js} +488 -474
  260. package/web-shell/assets/index-DzdST_7L.css +36 -0
  261. package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-B0gr769A.js} +1 -1
  262. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-0pQFfjvX.js} +1 -1
  263. package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-DEGtClWb.js} +1 -1
  264. package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-CnN8gPzw.js} +1 -1
  265. package/web-shell/assets/{layout-BEWc0Al9.js → layout-C_70RhaT.js} +1 -1
  266. package/web-shell/assets/{linear-CNuNxirL.js → linear-BJ2ZLmcq.js} +1 -1
  267. package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-RlY0zPNC.js} +6 -6
  268. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-CpVAxTNl.js} +1 -1
  269. package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-DmrSv3hD.js} +1 -1
  270. package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-CJmgp8KJ.js} +1 -1
  271. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-UsgOyNco.js} +1 -1
  272. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-DQ6gMs_W.js} +1 -1
  273. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-DhqadamF.js} +1 -1
  274. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-R4WnURaE.js} +1 -1
  275. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-D7BwMi_D.js} +1 -1
  276. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-Bqngz088.js} +1 -1
  277. package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-DwaXPGqn.js} +1 -1
  278. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-8GCQZAvv.js +1 -0
  279. package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-BsaLeRDY.js} +1 -1
  280. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BoRBF2Yw.js +8 -0
  281. package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-NJ9G-NUU.js} +1 -1
  282. package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-Ca3W4rSq.js} +1 -1
  283. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-OabvjC-6.js} +1 -1
  284. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-C7rbjvpc.js} +1 -1
  285. package/web-shell/index.html +2 -2
  286. package/chunks/chunk-6YEOCHSE.js +0 -142
  287. package/chunks/chunk-X35VIWWJ.js +0 -276
  288. package/web-shell/assets/channel-uMMdTrYk.js +0 -1
  289. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
  290. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
  291. package/web-shell/assets/index-CsPwZ1ut.css +0 -36
  292. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
  293. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
@@ -0,0 +1,463 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ isSameProcess,
5
+ readLocalBootId,
6
+ readPidNamespaceId,
7
+ readProcStartToken
8
+ } from "./chunk-CH2YDT6X.js";
9
+ import {
10
+ require_proper_lockfile
11
+ } from "./chunk-MLXTMF7H.js";
12
+ import {
13
+ Storage
14
+ } from "./chunk-ZAFYHRVY.js";
15
+ import {
16
+ init_esbuild_shims
17
+ } from "./chunk-5O2XNYP6.js";
18
+ import {
19
+ __name,
20
+ __toESM
21
+ } from "./chunk-J2S4EL5Y.js";
22
+
23
+ // packages/cli/src/commands/channel/pidfile.ts
24
+ init_esbuild_shims();
25
+ import {
26
+ existsSync,
27
+ readFileSync,
28
+ writeFileSync,
29
+ mkdirSync,
30
+ unlinkSync,
31
+ openSync,
32
+ closeSync,
33
+ constants,
34
+ ftruncateSync,
35
+ writeSync
36
+ } from "node:fs";
37
+ import * as path2 from "node:path";
38
+
39
+ // packages/cli/src/commands/channel/pidfile-lock.ts
40
+ init_esbuild_shims();
41
+ var import_proper_lockfile = __toESM(require_proper_lockfile(), 1);
42
+ import fs from "node:fs";
43
+ import path from "node:path";
44
+ var RETRY_DELAYS_MS = [10, 20, 30, 40, 50];
45
+ var STALE_LOCK_MS = 1e4;
46
+ var sleepState = new Int32Array(new SharedArrayBuffer(4));
47
+ function sleepSync(ms) {
48
+ Atomics.wait(sleepState, 0, 0, ms);
49
+ }
50
+ __name(sleepSync, "sleepSync");
51
+ function withChannelPidfileLock(filePath, operation) {
52
+ const dir = path.dirname(filePath);
53
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
54
+ let release;
55
+ for (let attempt = 0; ; attempt += 1) {
56
+ try {
57
+ release = import_proper_lockfile.default.lockSync(filePath, {
58
+ realpath: false,
59
+ stale: STALE_LOCK_MS
60
+ });
61
+ break;
62
+ } catch (error) {
63
+ const lockError = error;
64
+ if (lockError.code !== "ELOCKED") {
65
+ throw error;
66
+ }
67
+ if (attempt >= RETRY_DELAYS_MS.length) {
68
+ throw Object.assign(
69
+ new Error(
70
+ `Channel pidfile lock ${filePath}.lock is held; an abandoned lock recovers automatically after ${STALE_LOCK_MS / 1e3} seconds.`,
71
+ { cause: error }
72
+ ),
73
+ { code: "ELOCKED" }
74
+ );
75
+ }
76
+ sleepSync(RETRY_DELAYS_MS[attempt]);
77
+ }
78
+ }
79
+ try {
80
+ return operation();
81
+ } finally {
82
+ release();
83
+ }
84
+ }
85
+ __name(withChannelPidfileLock, "withChannelPidfileLock");
86
+
87
+ // packages/cli/src/commands/channel/pidfile.ts
88
+ function pidFilePath() {
89
+ return path2.join(Storage.getGlobalQwenDir(), "channels", "service.pid");
90
+ }
91
+ __name(pidFilePath, "pidFilePath");
92
+ function isValidPid(pid) {
93
+ return typeof pid === "number" && Number.isSafeInteger(pid) && pid > 0;
94
+ }
95
+ __name(isValidPid, "isValidPid");
96
+ function parseServiceInfo(value) {
97
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
98
+ return null;
99
+ }
100
+ const info = value;
101
+ const owner = info.owner ?? "channel";
102
+ if (owner !== "channel" && owner !== "serve") return null;
103
+ if (!isValidPid(info.pid) || typeof info.startedAt !== "string" || Number.isNaN(Date.parse(info.startedAt)) || !Array.isArray(info.channels) || !info.channels.every((channel) => typeof channel === "string")) {
104
+ return null;
105
+ }
106
+ if (info.servePid !== void 0 && !isValidPid(info.servePid)) return null;
107
+ if (info.workerPid !== void 0 && !isValidPid(info.workerPid)) return null;
108
+ if (info.procStart !== void 0 && info.procStart !== null && typeof info.procStart !== "string") {
109
+ return null;
110
+ }
111
+ if (info.pidNs !== void 0 && info.pidNs !== null && typeof info.pidNs !== "number") {
112
+ return null;
113
+ }
114
+ const workers = parseServiceInfoWorkers(info.workers);
115
+ if (workers === null) return null;
116
+ return {
117
+ owner,
118
+ pid: info.pid,
119
+ ...info.procStart !== void 0 ? { procStart: info.procStart } : {},
120
+ ...info.pidNs !== void 0 ? { pidNs: info.pidNs } : {},
121
+ startedAt: info.startedAt,
122
+ channels: info.channels,
123
+ ...info.servePid !== void 0 ? { servePid: info.servePid } : {},
124
+ ...info.workerPid !== void 0 ? { workerPid: info.workerPid } : {},
125
+ ...workers !== void 0 ? { workers } : {}
126
+ };
127
+ }
128
+ __name(parseServiceInfo, "parseServiceInfo");
129
+ function parseServiceInfoWorkers(value) {
130
+ if (value === void 0) return void 0;
131
+ if (!Array.isArray(value)) return null;
132
+ const workers = [];
133
+ for (const raw of value) {
134
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
135
+ return null;
136
+ }
137
+ const worker = raw;
138
+ if (!Array.isArray(worker.channels) || !worker.channels.every((channel) => typeof channel === "string")) {
139
+ return null;
140
+ }
141
+ if (worker.workspaceId !== void 0 && typeof worker.workspaceId !== "string") {
142
+ return null;
143
+ }
144
+ if (worker.workspaceCwd !== void 0 && typeof worker.workspaceCwd !== "string") {
145
+ return null;
146
+ }
147
+ if (worker.workerPid !== void 0 && !isValidPid(worker.workerPid)) {
148
+ return null;
149
+ }
150
+ workers.push({
151
+ channels: worker.channels,
152
+ ...worker.workspaceId !== void 0 ? { workspaceId: worker.workspaceId } : {},
153
+ ...worker.workspaceCwd !== void 0 ? { workspaceCwd: worker.workspaceCwd } : {},
154
+ ...worker.workerPid !== void 0 ? { workerPid: worker.workerPid } : {}
155
+ });
156
+ }
157
+ return workers;
158
+ }
159
+ __name(parseServiceInfoWorkers, "parseServiceInfoWorkers");
160
+ function unlinkPidFile(filePath) {
161
+ try {
162
+ unlinkSync(filePath);
163
+ return true;
164
+ } catch {
165
+ return false;
166
+ }
167
+ }
168
+ __name(unlinkPidFile, "unlinkPidFile");
169
+ function bootIdOf(procStart) {
170
+ if (procStart == null) return null;
171
+ const separator = procStart.indexOf(":");
172
+ return separator === -1 ? null : procStart.slice(0, separator);
173
+ }
174
+ __name(bootIdOf, "bootIdOf");
175
+ function isLocalIdentity(info) {
176
+ if (info.pidNs !== void 0 && info.pidNs !== readPidNamespaceId()) {
177
+ return false;
178
+ }
179
+ const recordBootId = bootIdOf(info.procStart);
180
+ return recordBootId === null || recordBootId === readLocalBootId();
181
+ }
182
+ __name(isLocalIdentity, "isLocalIdentity");
183
+ function isOwnServeReservation(info, servePid) {
184
+ return info !== null && info.owner === "serve" && info.pid === servePid && info.servePid === servePid && isLocalIdentity(info);
185
+ }
186
+ __name(isOwnServeReservation, "isOwnServeReservation");
187
+ function withPidFileLock(operation) {
188
+ const filePath = pidFilePath();
189
+ return withChannelPidfileLock(filePath, () => operation(filePath));
190
+ }
191
+ __name(withPidFileLock, "withPidFileLock");
192
+ function readServiceInfo() {
193
+ const filePath = pidFilePath();
194
+ if (!existsSync(filePath)) return null;
195
+ try {
196
+ return withChannelPidfileLock(
197
+ filePath,
198
+ () => readServiceInfoRecord(filePath, true)
199
+ );
200
+ } catch {
201
+ return readServiceInfoRecord(filePath, false);
202
+ }
203
+ }
204
+ __name(readServiceInfo, "readServiceInfo");
205
+ function readServiceInfoRecord(filePath, sweep) {
206
+ if (!existsSync(filePath)) return null;
207
+ let raw;
208
+ try {
209
+ raw = readFileSync(filePath, "utf-8");
210
+ } catch {
211
+ return null;
212
+ }
213
+ let parsed;
214
+ try {
215
+ parsed = JSON.parse(raw);
216
+ } catch {
217
+ if (sweep) unlinkPidFile(filePath);
218
+ return null;
219
+ }
220
+ const info = parseServiceInfo(parsed);
221
+ if (!info) {
222
+ if (sweep) unlinkPidFile(filePath);
223
+ return null;
224
+ }
225
+ if (!isLocalIdentity(info)) {
226
+ return null;
227
+ }
228
+ if (!isSameProcess(info.pid, info.procStart)) {
229
+ if (sweep) unlinkPidFile(filePath);
230
+ return null;
231
+ }
232
+ return info;
233
+ }
234
+ __name(readServiceInfoRecord, "readServiceInfoRecord");
235
+ function writeInfo(info, flag = "w") {
236
+ const filePath = pidFilePath();
237
+ const dir = path2.dirname(filePath);
238
+ if (!existsSync(dir)) {
239
+ mkdirSync(dir, { recursive: true });
240
+ }
241
+ writeFileSync(filePath, JSON.stringify(info, null, 2), {
242
+ encoding: "utf-8",
243
+ flag
244
+ });
245
+ }
246
+ __name(writeInfo, "writeInfo");
247
+ function fileExistsError(message) {
248
+ const err = new Error(message);
249
+ err.code = "EEXIST";
250
+ return err;
251
+ }
252
+ __name(fileExistsError, "fileExistsError");
253
+ function writeInfoExclusive(info) {
254
+ const filePath = pidFilePath();
255
+ try {
256
+ writeInfo(info, "wx");
257
+ } catch (err) {
258
+ if (err.code !== "EEXIST") throw err;
259
+ let existing = null;
260
+ try {
261
+ existing = parseServiceInfo(JSON.parse(readFileSync(filePath, "utf-8")));
262
+ } catch {
263
+ throw err;
264
+ }
265
+ if (existing && !isLocalIdentity(existing)) {
266
+ const conflict = new Error(
267
+ `Channel service pidfile ${filePath} holds a record this machine cannot verify, written before a reboot or by another machine or PID namespace sharing this home. Confirm no channel service is running, then delete that file to start again.`
268
+ );
269
+ conflict.code = "channel_service_conflict";
270
+ throw conflict;
271
+ }
272
+ if (existing && isSameProcess(existing.pid, existing.procStart)) {
273
+ throw err;
274
+ }
275
+ unlinkPidFile(filePath);
276
+ writeInfo(info, "wx");
277
+ }
278
+ }
279
+ __name(writeInfoExclusive, "writeInfoExclusive");
280
+ function readPidfileProcessToken(pid) {
281
+ let procStart = readProcStartToken(pid);
282
+ if (process.platform !== "linux" || procStart !== null) return procStart;
283
+ procStart = readProcStartToken(pid);
284
+ if (procStart !== null) return procStart;
285
+ throw new Error(
286
+ `Unable to read the process start token for PID ${pid}; refusing to write an impersonable Channel pidfile.`
287
+ );
288
+ }
289
+ __name(readPidfileProcessToken, "readPidfileProcessToken");
290
+ function readPidfileNamespaceId() {
291
+ let pidNs = readPidNamespaceId();
292
+ if (process.platform !== "linux" || pidNs !== null) return pidNs;
293
+ pidNs = readPidNamespaceId();
294
+ if (pidNs !== null) return pidNs;
295
+ throw new Error(
296
+ "Unable to read the PID namespace id; refusing to write an unreclaimable Channel pidfile."
297
+ );
298
+ }
299
+ __name(readPidfileNamespaceId, "readPidfileNamespaceId");
300
+ function writeServiceInfo(channels) {
301
+ const info = {
302
+ owner: "channel",
303
+ pid: process.pid,
304
+ procStart: readPidfileProcessToken(process.pid),
305
+ pidNs: readPidfileNamespaceId(),
306
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
307
+ channels
308
+ };
309
+ withPidFileLock(() => writeInfoExclusive(info));
310
+ }
311
+ __name(writeServiceInfo, "writeServiceInfo");
312
+ function writeServeServiceInfo({
313
+ channels,
314
+ servePid = process.pid,
315
+ workerPid,
316
+ workers
317
+ }) {
318
+ const buildInfo = /* @__PURE__ */ __name((startedAt, procStart) => ({
319
+ owner: "serve",
320
+ pid: servePid,
321
+ procStart,
322
+ pidNs: readPidfileNamespaceId(),
323
+ startedAt,
324
+ channels,
325
+ servePid,
326
+ ...workerPid !== void 0 ? { workerPid } : {},
327
+ ...workers !== void 0 ? { workers } : {}
328
+ }), "buildInfo");
329
+ withPidFileLock((filePath) => {
330
+ let fd;
331
+ try {
332
+ fd = openSync(filePath, constants.O_RDWR | constants.O_NOFOLLOW);
333
+ } catch (err) {
334
+ if (err.code === "ENOENT") {
335
+ writeInfo(
336
+ buildInfo(
337
+ (/* @__PURE__ */ new Date()).toISOString(),
338
+ readPidfileProcessToken(servePid)
339
+ ),
340
+ "wx"
341
+ );
342
+ return;
343
+ }
344
+ throw err;
345
+ }
346
+ try {
347
+ let existing = null;
348
+ try {
349
+ existing = parseServiceInfo(JSON.parse(readFileSync(fd, "utf-8")));
350
+ } catch {
351
+ }
352
+ if (!isOwnServeReservation(existing, servePid)) {
353
+ throw fileExistsError(
354
+ "Channel service pidfile is owned by another process."
355
+ );
356
+ }
357
+ const info = buildInfo(
358
+ existing.startedAt,
359
+ existing.procStart ?? readPidfileProcessToken(servePid)
360
+ );
361
+ ftruncateSync(fd, 0);
362
+ writeSync(fd, JSON.stringify(info, null, 2), 0, "utf-8");
363
+ } finally {
364
+ closeSync(fd);
365
+ }
366
+ });
367
+ }
368
+ __name(writeServeServiceInfo, "writeServeServiceInfo");
369
+ function reserveServeServiceInfo({
370
+ channels,
371
+ servePid = process.pid
372
+ }) {
373
+ const info = {
374
+ owner: "serve",
375
+ pid: servePid,
376
+ procStart: readPidfileProcessToken(servePid),
377
+ pidNs: readPidfileNamespaceId(),
378
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
379
+ channels,
380
+ servePid
381
+ };
382
+ withPidFileLock(() => writeInfoExclusive(info));
383
+ }
384
+ __name(reserveServeServiceInfo, "reserveServeServiceInfo");
385
+ function removeServiceInfo(expected) {
386
+ try {
387
+ withPidFileLock((filePath) => {
388
+ if (!expected) {
389
+ if (existsSync(filePath)) unlinkPidFile(filePath);
390
+ return;
391
+ }
392
+ try {
393
+ const current = parseServiceInfo(
394
+ JSON.parse(readFileSync(filePath, "utf-8"))
395
+ );
396
+ if (current?.owner === expected.owner && current.pid === expected.pid && current.procStart === expected.procStart && current.startedAt === expected.startedAt) {
397
+ unlinkPidFile(filePath);
398
+ }
399
+ } catch {
400
+ }
401
+ });
402
+ } catch {
403
+ }
404
+ }
405
+ __name(removeServiceInfo, "removeServiceInfo");
406
+ function removeServeServiceInfo(servePid = process.pid) {
407
+ try {
408
+ return withPidFileLock((filePath) => {
409
+ if (!existsSync(filePath)) return false;
410
+ let parsed;
411
+ try {
412
+ parsed = JSON.parse(readFileSync(filePath, "utf-8"));
413
+ } catch {
414
+ return false;
415
+ }
416
+ if (!isOwnServeReservation(parseServiceInfo(parsed), servePid)) {
417
+ return false;
418
+ }
419
+ return unlinkPidFile(filePath);
420
+ });
421
+ } catch {
422
+ return false;
423
+ }
424
+ }
425
+ __name(removeServeServiceInfo, "removeServeServiceInfo");
426
+ function signalService(pid, signal = "SIGTERM", procStart) {
427
+ if (!isValidPid(pid)) {
428
+ return "refused";
429
+ }
430
+ if (procStart != null) {
431
+ const current = readProcStartToken(pid) ?? readProcStartToken(pid);
432
+ if (current !== procStart) return "refused";
433
+ }
434
+ try {
435
+ process.kill(pid, signal);
436
+ return "sent";
437
+ } catch (err) {
438
+ return err.code === "EPERM" ? "not-permitted" : "refused";
439
+ }
440
+ }
441
+ __name(signalService, "signalService");
442
+ async function waitForExit(pid, timeoutMs = 5e3, pollMs = 200, procStart) {
443
+ const isOriginalProcessAlive = /* @__PURE__ */ __name(() => isSameProcess(pid, procStart), "isOriginalProcessAlive");
444
+ const start = Date.now();
445
+ while (Date.now() - start < timeoutMs) {
446
+ if (!isOriginalProcessAlive()) return true;
447
+ await new Promise((r) => setTimeout(r, pollMs));
448
+ }
449
+ return !isOriginalProcessAlive();
450
+ }
451
+ __name(waitForExit, "waitForExit");
452
+
453
+ export {
454
+ pidFilePath,
455
+ readServiceInfo,
456
+ writeServiceInfo,
457
+ writeServeServiceInfo,
458
+ reserveServeServiceInfo,
459
+ removeServiceInfo,
460
+ removeServeServiceInfo,
461
+ signalService,
462
+ waitForExit
463
+ };
@@ -244,6 +244,19 @@ function convertLlmToolParametersToOpenAI(parameters) {
244
244
  }
245
245
  __name(convertLlmToolParametersToOpenAI, "convertLlmToolParametersToOpenAI");
246
246
  var grammarSchemaValidationCache = /* @__PURE__ */ new WeakMap();
247
+ var PARAMETERLESS_SCHEMA_KEYS = /* @__PURE__ */ new Set([
248
+ "$comment",
249
+ "$schema",
250
+ "additionalProperties",
251
+ "deprecated",
252
+ "description",
253
+ "examples",
254
+ "properties",
255
+ "readOnly",
256
+ "title",
257
+ "type",
258
+ "writeOnly"
259
+ ]);
247
260
  function isStrictlyValidSchema(schema) {
248
261
  const cached = grammarSchemaValidationCache.get(schema);
249
262
  if (cached !== void 0) {
@@ -278,13 +291,24 @@ async function convertLlmToolsToOpenAI(llmTools, schemaCompliance = "auto") {
278
291
  );
279
292
  }
280
293
  if (parameters) {
281
- const sourceSchema = func.parametersJsonSchema;
282
- const canValidateLocally = typeof sourceSchema === "object" && sourceSchema !== null && !Array.isArray(sourceSchema) && !("$id" in sourceSchema) && isStrictlyValidSchema(sourceSchema);
294
+ const sourceSchema = typeof func.parametersJsonSchema === "object" && func.parametersJsonSchema !== null && !Array.isArray(func.parametersJsonSchema) ? func.parametersJsonSchema : void 0;
295
+ const canValidateLocally = sourceSchema !== void 0 && !("$id" in sourceSchema) && isStrictlyValidSchema(sourceSchema);
296
+ const sourceProperties = sourceSchema?.["properties"];
297
+ const sourceAdditionalProperties = sourceSchema?.["additionalProperties"];
298
+ const hasEmptyProperties = typeof sourceProperties === "object" && sourceProperties !== null && !Array.isArray(sourceProperties) && Object.keys(sourceProperties).length === 0;
299
+ const declaresEmptyArgumentList = sourceSchema !== void 0 && (hasEmptyProperties && (sourceAdditionalProperties === false || sourceAdditionalProperties === void 0) || sourceProperties === void 0 && sourceAdditionalProperties === false) && Object.keys(sourceSchema).every(
300
+ (key) => PARAMETERLESS_SCHEMA_KEYS.has(key)
301
+ );
283
302
  parameters = convertSchema(parameters, schemaCompliance);
284
303
  parameters = relaxSchemaForFunctionCalling(
285
304
  parameters,
286
305
  canValidateLocally
287
306
  );
307
+ if (canValidateLocally && declaresEmptyArgumentList && parameters["type"] === "object" && Object.keys(parameters).every(
308
+ (key) => PARAMETERLESS_SCHEMA_KEYS.has(key)
309
+ )) {
310
+ parameters = void 0;
311
+ }
288
312
  }
289
313
  openAITools.push({
290
314
  type: "function",
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-CRZBDVP2.js";
12
12
  import {
13
13
  So
14
- } from "./chunk-PDUMGZ2P.js";
14
+ } from "./chunk-BDAVT6K2.js";
15
15
  import {
16
16
  createDebugLogger
17
17
  } from "./chunk-ZAFYHRVY.js";
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  GIT_COMMIT_INFO
5
- } from "./chunk-6QILGINT.js";
5
+ } from "./chunk-LOBKNYPR.js";
6
6
  import {
7
7
  getCliVersion
8
- } from "./chunk-27LTEY6D.js";
8
+ } from "./chunk-ATBLEXXV.js";
9
9
  import {
10
10
  IdeClient
11
- } from "./chunk-PDUMGZ2P.js";
11
+ } from "./chunk-BDAVT6K2.js";
12
12
  import {
13
13
  formatMemoryUsage
14
14
  } from "./chunk-CHEIIBT3.js";
@@ -2,19 +2,19 @@
2
2
  "use strict";
3
3
  import {
4
4
  loadSettings
5
- } from "./chunk-66JBCTJF.js";
5
+ } from "./chunk-Y7YHAY32.js";
6
6
  import {
7
7
  getCurrentLanguage
8
8
  } from "./chunk-CRZBDVP2.js";
9
9
  import {
10
10
  isWorkspaceTrusted
11
- } from "./chunk-3VDLQUR2.js";
11
+ } from "./chunk-D6AGS266.js";
12
12
  import {
13
13
  require_strip_json_comments
14
14
  } from "./chunk-NPQ5ZKRP.js";
15
15
  import {
16
16
  hashMcpServerConfig
17
- } from "./chunk-ZU2T5JIS.js";
17
+ } from "./chunk-ZEFWBG2C.js";
18
18
  import {
19
19
  Config,
20
20
  ExtensionManager,
@@ -25,11 +25,11 @@ import {
25
25
  isGatedMcpScope,
26
26
  normalizeClaudeMcpServer,
27
27
  runWithTimeout
28
- } from "./chunk-PDUMGZ2P.js";
28
+ } from "./chunk-BDAVT6K2.js";
29
29
  import {
30
30
  getMCPServerLastError,
31
31
  getMCPServerStatus
32
- } from "./chunk-6QV7Z74P.js";
32
+ } from "./chunk-FRS3P7MQ.js";
33
33
  import {
34
34
  atomicWriteFile
35
35
  } from "./chunk-XFFRI3WM.js";