@bryanhu/codexly 0.22.1 → 0.24.0

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 (222) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +45 -3
  3. package/README.zh-CN.md +49 -7
  4. package/dist/{chunk-4VM2ZUPT.js → chunk-MDJUQPOL.js} +179 -125
  5. package/dist/{chunk-NUJPWN62.js → chunk-YG3QMLCD.js} +433 -43
  6. package/dist/cli.js +49 -21
  7. package/dist/providers/codex/index.js +1 -1
  8. package/dist/server/index.js +2 -2
  9. package/dist/web/.vite/manifest.json +111 -111
  10. package/dist/web/.vite/manifest.json.br +0 -0
  11. package/dist/web/.vite/manifest.json.gz +0 -0
  12. package/dist/web/assets/{agent-settings-panel-Ci9mJOS-.js → agent-settings-panel-STxloEc6.js} +1 -1
  13. package/dist/web/assets/agent-settings-panel-STxloEc6.js.br +0 -0
  14. package/dist/web/assets/agent-settings-panel-STxloEc6.js.gz +0 -0
  15. package/dist/web/assets/{attachments-uWbRsPJj.js → attachments-CSV8KBYa.js} +1 -1
  16. package/dist/web/assets/attachments-CSV8KBYa.js.br +0 -0
  17. package/dist/web/assets/attachments-CSV8KBYa.js.gz +0 -0
  18. package/dist/web/assets/{background-image-picker-qGpdQPQi.js → background-image-picker-JDrclQ6O.js} +1 -1
  19. package/dist/web/assets/background-image-picker-JDrclQ6O.js.br +0 -0
  20. package/dist/web/assets/background-image-picker-JDrclQ6O.js.gz +0 -0
  21. package/dist/web/assets/{bing-wallpaper-queries-uesKD16x.js → bing-wallpaper-queries-BqjgHv5k.js} +1 -1
  22. package/dist/web/assets/bing-wallpaper-queries-BqjgHv5k.js.br +0 -0
  23. package/dist/web/assets/bing-wallpaper-queries-BqjgHv5k.js.gz +0 -0
  24. package/dist/web/assets/{button-group-075rCj_f.js → button-group-mjeW2BTr.js} +1 -1
  25. package/dist/web/assets/button-group-mjeW2BTr.js.br +0 -0
  26. package/dist/web/assets/button-group-mjeW2BTr.js.gz +0 -0
  27. package/dist/web/assets/{code-block-C9eTeWWd.js → code-block-CmzWecTa.js} +1 -1
  28. package/dist/web/assets/code-block-CmzWecTa.js.br +0 -0
  29. package/dist/web/assets/code-block-CmzWecTa.js.gz +0 -0
  30. package/dist/web/assets/{commit-settings-panel-CaMMU0oA.js → commit-settings-panel-BQRIgAaq.js} +1 -1
  31. package/dist/web/assets/commit-settings-panel-BQRIgAaq.js.br +0 -0
  32. package/dist/web/assets/commit-settings-panel-BQRIgAaq.js.gz +0 -0
  33. package/dist/web/assets/{context-menu-Dj3lnor1.js → context-menu-Dfbnk16V.js} +1 -1
  34. package/dist/web/assets/context-menu-Dfbnk16V.js.br +0 -0
  35. package/dist/web/assets/context-menu-Dfbnk16V.js.gz +0 -0
  36. package/dist/web/assets/{file-review-dialog-D8XVZ21M.js → file-review-dialog-Bv3Hor8O.js} +1 -1
  37. package/dist/web/assets/file-review-dialog-Bv3Hor8O.js.br +0 -0
  38. package/dist/web/assets/file-review-dialog-Bv3Hor8O.js.gz +0 -0
  39. package/dist/web/assets/{git-history-panel-D2fKSR66.js → git-history-panel-CofR8yva.js} +1 -1
  40. package/dist/web/assets/git-history-panel-CofR8yva.js.br +0 -0
  41. package/dist/web/assets/git-history-panel-CofR8yva.js.gz +0 -0
  42. package/dist/web/assets/{global-search-dialog-BxT-UjpZ.js → global-search-dialog-m_blFw9z.js} +2 -2
  43. package/dist/web/assets/global-search-dialog-m_blFw9z.js.br +0 -0
  44. package/dist/web/assets/global-search-dialog-m_blFw9z.js.gz +0 -0
  45. package/dist/web/assets/{global-settings-about-DiblprcD.js → global-settings-about-CJkWRRdz.js} +1 -1
  46. package/dist/web/assets/global-settings-about-CJkWRRdz.js.br +0 -0
  47. package/dist/web/assets/global-settings-about-CJkWRRdz.js.gz +0 -0
  48. package/dist/web/assets/{global-settings-fields-D5T5SPXY.js → global-settings-fields-DqWp3WpN.js} +1 -1
  49. package/dist/web/assets/global-settings-fields-DqWp3WpN.js.br +0 -0
  50. package/dist/web/assets/global-settings-fields-DqWp3WpN.js.gz +0 -0
  51. package/dist/web/assets/{global-settings-model-COz331Sr.js → global-settings-model-CqgHQlxF.js} +1 -1
  52. package/dist/web/assets/global-settings-model-CqgHQlxF.js.br +0 -0
  53. package/dist/web/assets/global-settings-model-CqgHQlxF.js.gz +0 -0
  54. package/dist/web/assets/{global-settings-page-DEBGBxSg.js → global-settings-page-BiVZofyf.js} +2 -2
  55. package/dist/web/assets/global-settings-page-BiVZofyf.js.br +0 -0
  56. package/dist/web/assets/global-settings-page-BiVZofyf.js.gz +0 -0
  57. package/dist/web/assets/{global-settings-pets-DwJnj_6N.js → global-settings-pets-DkdiEzFY.js} +1 -1
  58. package/dist/web/assets/global-settings-pets-DkdiEzFY.js.br +0 -0
  59. package/dist/web/assets/global-settings-pets-DkdiEzFY.js.gz +0 -0
  60. package/dist/web/assets/{history-task-timeline-oQRRdMbY.js → history-task-timeline-BrLtwo5_.js} +1 -1
  61. package/dist/web/assets/history-task-timeline-BrLtwo5_.js.br +0 -0
  62. package/dist/web/assets/history-task-timeline-BrLtwo5_.js.gz +0 -0
  63. package/dist/web/assets/{index-DRfXjZ2a.js → index-D9lOU2_n.js} +3 -3
  64. package/dist/web/assets/index-D9lOU2_n.js.br +0 -0
  65. package/dist/web/assets/index-D9lOU2_n.js.gz +0 -0
  66. package/dist/web/assets/{installed-skills-pane-v1IcvRKL.js → installed-skills-pane-BRcMSvrv.js} +1 -1
  67. package/dist/web/assets/installed-skills-pane-BRcMSvrv.js.br +0 -0
  68. package/dist/web/assets/installed-skills-pane-BRcMSvrv.js.gz +0 -0
  69. package/dist/web/assets/{lazy-message-response-B6dT9kbf.js → lazy-message-response-C3PwDwxE.js} +2 -2
  70. package/dist/web/assets/lazy-message-response-C3PwDwxE.js.br +0 -0
  71. package/dist/web/assets/lazy-message-response-C3PwDwxE.js.gz +0 -0
  72. package/dist/web/assets/{mcp-management-pane-DiPUaZAO.js → mcp-management-pane-CIXkOpXu.js} +1 -1
  73. package/dist/web/assets/mcp-management-pane-CIXkOpXu.js.br +0 -0
  74. package/dist/web/assets/mcp-management-pane-CIXkOpXu.js.gz +0 -0
  75. package/dist/web/assets/message-response-AwJefMK2.js +7 -0
  76. package/dist/web/assets/message-response-AwJefMK2.js.br +0 -0
  77. package/dist/web/assets/message-response-AwJefMK2.js.gz +0 -0
  78. package/dist/web/assets/{official-plugins-pane-Cis1hRgm.js → official-plugins-pane-C4i4LhS5.js} +1 -1
  79. package/dist/web/assets/official-plugins-pane-C4i4LhS5.js.br +0 -0
  80. package/dist/web/assets/official-plugins-pane-C4i4LhS5.js.gz +0 -0
  81. package/dist/web/assets/{personalization-settings-panel-BB5nguhA.js → personalization-settings-panel-BVty2pDz.js} +1 -1
  82. package/dist/web/assets/personalization-settings-panel-BVty2pDz.js.br +0 -0
  83. package/dist/web/assets/personalization-settings-panel-BVty2pDz.js.gz +0 -0
  84. package/dist/web/assets/{project-file-popup-page-CAcF7DIa.js → project-file-popup-page-hTRv5v3H.js} +1 -1
  85. package/dist/web/assets/project-file-popup-page-hTRv5v3H.js.br +0 -0
  86. package/dist/web/assets/project-file-popup-page-hTRv5v3H.js.gz +0 -0
  87. package/dist/web/assets/{project-source-dialog-DbOmvJBS.js → project-source-dialog-wuXJolJb.js} +1 -1
  88. package/dist/web/assets/project-source-dialog-wuXJolJb.js.br +0 -0
  89. package/dist/web/assets/project-source-dialog-wuXJolJb.js.gz +0 -0
  90. package/dist/web/assets/{project-source-panel-DGafRUDi.js → project-source-panel-PKAa_dbo.js} +1 -1
  91. package/dist/web/assets/project-source-panel-PKAa_dbo.js.br +0 -0
  92. package/dist/web/assets/project-source-panel-PKAa_dbo.js.gz +0 -0
  93. package/dist/web/assets/{prompt-input-DwT-XwSc.js → prompt-input-BHn4OExn.js} +1 -1
  94. package/dist/web/assets/prompt-input-BHn4OExn.js.br +0 -0
  95. package/dist/web/assets/prompt-input-BHn4OExn.js.gz +0 -0
  96. package/dist/web/assets/{prompt-input-controls-CLasQrSj.js → prompt-input-controls-D4wqb_zQ.js} +1 -1
  97. package/dist/web/assets/prompt-input-controls-D4wqb_zQ.js.br +0 -0
  98. package/dist/web/assets/prompt-input-controls-D4wqb_zQ.js.gz +0 -0
  99. package/dist/web/assets/{scheduled-task-date-time-picker-CnSPVHna.js → scheduled-task-date-time-picker-jo6dkC-Z.js} +1 -1
  100. package/dist/web/assets/scheduled-task-date-time-picker-jo6dkC-Z.js.br +0 -0
  101. package/dist/web/assets/scheduled-task-date-time-picker-jo6dkC-Z.js.gz +0 -0
  102. package/dist/web/assets/{scheduled-task-schedule-BnMdRADi.js → scheduled-task-schedule-DD3Zt60h.js} +1 -1
  103. package/dist/web/assets/scheduled-task-schedule-DD3Zt60h.js.br +0 -0
  104. package/dist/web/assets/{scheduled-task-schedule-BnMdRADi.js.gz → scheduled-task-schedule-DD3Zt60h.js.gz} +0 -0
  105. package/dist/web/assets/{scheduled-tasks-container-CNCzsjiP.js → scheduled-tasks-container-CDsipwUR.js} +2 -2
  106. package/dist/web/assets/scheduled-tasks-container-CDsipwUR.js.br +0 -0
  107. package/dist/web/assets/scheduled-tasks-container-CDsipwUR.js.gz +0 -0
  108. package/dist/web/assets/{settings-personalization-CB_nnUys.js → settings-personalization-BbAIVND-.js} +1 -1
  109. package/dist/web/assets/settings-personalization-BbAIVND-.js.br +0 -0
  110. package/dist/web/assets/settings-personalization-BbAIVND-.js.gz +0 -0
  111. package/dist/web/assets/{sheet-JpH2S7eZ.js → sheet-C6eLtEHx.js} +1 -1
  112. package/dist/web/assets/sheet-C6eLtEHx.js.br +0 -0
  113. package/dist/web/assets/sheet-C6eLtEHx.js.gz +0 -0
  114. package/dist/web/assets/{skills-market-container-BgtnwdI7.js → skills-market-container-DFzLg008.js} +2 -2
  115. package/dist/web/assets/skills-market-container-DFzLg008.js.br +0 -0
  116. package/dist/web/assets/skills-market-container-DFzLg008.js.gz +0 -0
  117. package/dist/web/assets/{task-timeline-store-BN41mX3t.js → task-timeline-store-Cj_Bcaqi.js} +1 -1
  118. package/dist/web/assets/task-timeline-store-Cj_Bcaqi.js.br +0 -0
  119. package/dist/web/assets/task-timeline-store-Cj_Bcaqi.js.gz +0 -0
  120. package/dist/web/assets/{third-party-marketplace-pane-CAI6XIWR.js → third-party-marketplace-pane-CoP9DTWX.js} +1 -1
  121. package/dist/web/assets/third-party-marketplace-pane-CoP9DTWX.js.br +0 -0
  122. package/dist/web/assets/third-party-marketplace-pane-CoP9DTWX.js.gz +0 -0
  123. package/dist/web/assets/workbench-composer-C6Sv8xDL.js +8 -0
  124. package/dist/web/assets/workbench-composer-C6Sv8xDL.js.br +0 -0
  125. package/dist/web/assets/workbench-composer-C6Sv8xDL.js.gz +0 -0
  126. package/dist/web/assets/{workbench-inspector-changes-Bl5nS-_2.js → workbench-inspector-changes-7z5diDTC.js} +1 -1
  127. package/dist/web/assets/workbench-inspector-changes-7z5diDTC.js.br +0 -0
  128. package/dist/web/assets/workbench-inspector-changes-7z5diDTC.js.gz +0 -0
  129. package/dist/web/assets/{workbench-pet-canvas-CnwZR5HG.js → workbench-pet-canvas-dWliFlKE.js} +1 -1
  130. package/dist/web/assets/workbench-pet-canvas-dWliFlKE.js.br +0 -0
  131. package/dist/web/assets/workbench-pet-canvas-dWliFlKE.js.gz +0 -0
  132. package/dist/web/assets/workbench-shell-fA7tfnac.js +3 -0
  133. package/dist/web/assets/workbench-shell-fA7tfnac.js.br +0 -0
  134. package/dist/web/assets/workbench-shell-fA7tfnac.js.gz +0 -0
  135. package/dist/web/index.html +1 -1
  136. package/dist/web/index.html.br +0 -0
  137. package/dist/web/index.html.gz +0 -0
  138. package/package.json +4 -2
  139. package/dist/web/assets/agent-settings-panel-Ci9mJOS-.js.br +0 -0
  140. package/dist/web/assets/agent-settings-panel-Ci9mJOS-.js.gz +0 -0
  141. package/dist/web/assets/attachments-uWbRsPJj.js.br +0 -0
  142. package/dist/web/assets/attachments-uWbRsPJj.js.gz +0 -0
  143. package/dist/web/assets/background-image-picker-qGpdQPQi.js.br +0 -0
  144. package/dist/web/assets/background-image-picker-qGpdQPQi.js.gz +0 -0
  145. package/dist/web/assets/bing-wallpaper-queries-uesKD16x.js.br +0 -0
  146. package/dist/web/assets/bing-wallpaper-queries-uesKD16x.js.gz +0 -0
  147. package/dist/web/assets/button-group-075rCj_f.js.br +0 -0
  148. package/dist/web/assets/button-group-075rCj_f.js.gz +0 -0
  149. package/dist/web/assets/code-block-C9eTeWWd.js.br +0 -0
  150. package/dist/web/assets/code-block-C9eTeWWd.js.gz +0 -0
  151. package/dist/web/assets/commit-settings-panel-CaMMU0oA.js.br +0 -0
  152. package/dist/web/assets/commit-settings-panel-CaMMU0oA.js.gz +0 -0
  153. package/dist/web/assets/context-menu-Dj3lnor1.js.br +0 -0
  154. package/dist/web/assets/context-menu-Dj3lnor1.js.gz +0 -0
  155. package/dist/web/assets/file-review-dialog-D8XVZ21M.js.br +0 -0
  156. package/dist/web/assets/file-review-dialog-D8XVZ21M.js.gz +0 -0
  157. package/dist/web/assets/git-history-panel-D2fKSR66.js.br +0 -0
  158. package/dist/web/assets/git-history-panel-D2fKSR66.js.gz +0 -0
  159. package/dist/web/assets/global-search-dialog-BxT-UjpZ.js.br +0 -0
  160. package/dist/web/assets/global-search-dialog-BxT-UjpZ.js.gz +0 -0
  161. package/dist/web/assets/global-settings-about-DiblprcD.js.br +0 -0
  162. package/dist/web/assets/global-settings-about-DiblprcD.js.gz +0 -0
  163. package/dist/web/assets/global-settings-fields-D5T5SPXY.js.br +0 -0
  164. package/dist/web/assets/global-settings-fields-D5T5SPXY.js.gz +0 -0
  165. package/dist/web/assets/global-settings-model-COz331Sr.js.br +0 -0
  166. package/dist/web/assets/global-settings-model-COz331Sr.js.gz +0 -0
  167. package/dist/web/assets/global-settings-page-DEBGBxSg.js.br +0 -0
  168. package/dist/web/assets/global-settings-page-DEBGBxSg.js.gz +0 -0
  169. package/dist/web/assets/global-settings-pets-DwJnj_6N.js.br +0 -0
  170. package/dist/web/assets/global-settings-pets-DwJnj_6N.js.gz +0 -0
  171. package/dist/web/assets/history-task-timeline-oQRRdMbY.js.br +0 -0
  172. package/dist/web/assets/history-task-timeline-oQRRdMbY.js.gz +0 -0
  173. package/dist/web/assets/index-DRfXjZ2a.js.br +0 -0
  174. package/dist/web/assets/index-DRfXjZ2a.js.gz +0 -0
  175. package/dist/web/assets/installed-skills-pane-v1IcvRKL.js.br +0 -0
  176. package/dist/web/assets/installed-skills-pane-v1IcvRKL.js.gz +0 -0
  177. package/dist/web/assets/lazy-message-response-B6dT9kbf.js.br +0 -0
  178. package/dist/web/assets/lazy-message-response-B6dT9kbf.js.gz +0 -0
  179. package/dist/web/assets/mcp-management-pane-DiPUaZAO.js.br +0 -0
  180. package/dist/web/assets/mcp-management-pane-DiPUaZAO.js.gz +0 -0
  181. package/dist/web/assets/message-response-BZZGbaVm.js +0 -7
  182. package/dist/web/assets/message-response-BZZGbaVm.js.br +0 -0
  183. package/dist/web/assets/message-response-BZZGbaVm.js.gz +0 -0
  184. package/dist/web/assets/official-plugins-pane-Cis1hRgm.js.br +0 -0
  185. package/dist/web/assets/official-plugins-pane-Cis1hRgm.js.gz +0 -0
  186. package/dist/web/assets/personalization-settings-panel-BB5nguhA.js.br +0 -0
  187. package/dist/web/assets/personalization-settings-panel-BB5nguhA.js.gz +0 -0
  188. package/dist/web/assets/project-file-popup-page-CAcF7DIa.js.br +0 -0
  189. package/dist/web/assets/project-file-popup-page-CAcF7DIa.js.gz +0 -0
  190. package/dist/web/assets/project-source-dialog-DbOmvJBS.js.br +0 -0
  191. package/dist/web/assets/project-source-dialog-DbOmvJBS.js.gz +0 -0
  192. package/dist/web/assets/project-source-panel-DGafRUDi.js.br +0 -0
  193. package/dist/web/assets/project-source-panel-DGafRUDi.js.gz +0 -0
  194. package/dist/web/assets/prompt-input-DwT-XwSc.js.br +0 -0
  195. package/dist/web/assets/prompt-input-DwT-XwSc.js.gz +0 -0
  196. package/dist/web/assets/prompt-input-controls-CLasQrSj.js.br +0 -0
  197. package/dist/web/assets/prompt-input-controls-CLasQrSj.js.gz +0 -0
  198. package/dist/web/assets/scheduled-task-date-time-picker-CnSPVHna.js.br +0 -0
  199. package/dist/web/assets/scheduled-task-date-time-picker-CnSPVHna.js.gz +0 -0
  200. package/dist/web/assets/scheduled-task-schedule-BnMdRADi.js.br +0 -0
  201. package/dist/web/assets/scheduled-tasks-container-CNCzsjiP.js.br +0 -0
  202. package/dist/web/assets/scheduled-tasks-container-CNCzsjiP.js.gz +0 -0
  203. package/dist/web/assets/settings-personalization-CB_nnUys.js.br +0 -0
  204. package/dist/web/assets/settings-personalization-CB_nnUys.js.gz +0 -0
  205. package/dist/web/assets/sheet-JpH2S7eZ.js.br +0 -0
  206. package/dist/web/assets/sheet-JpH2S7eZ.js.gz +0 -0
  207. package/dist/web/assets/skills-market-container-BgtnwdI7.js.br +0 -0
  208. package/dist/web/assets/skills-market-container-BgtnwdI7.js.gz +0 -0
  209. package/dist/web/assets/task-timeline-store-BN41mX3t.js.br +0 -0
  210. package/dist/web/assets/task-timeline-store-BN41mX3t.js.gz +0 -0
  211. package/dist/web/assets/third-party-marketplace-pane-CAI6XIWR.js.br +0 -0
  212. package/dist/web/assets/third-party-marketplace-pane-CAI6XIWR.js.gz +0 -0
  213. package/dist/web/assets/workbench-composer-dKix0zGK.js +0 -8
  214. package/dist/web/assets/workbench-composer-dKix0zGK.js.br +0 -0
  215. package/dist/web/assets/workbench-composer-dKix0zGK.js.gz +0 -0
  216. package/dist/web/assets/workbench-inspector-changes-Bl5nS-_2.js.br +0 -0
  217. package/dist/web/assets/workbench-inspector-changes-Bl5nS-_2.js.gz +0 -0
  218. package/dist/web/assets/workbench-pet-canvas-CnwZR5HG.js.br +0 -0
  219. package/dist/web/assets/workbench-pet-canvas-CnwZR5HG.js.gz +0 -0
  220. package/dist/web/assets/workbench-shell-B8lBrj2O.js +0 -3
  221. package/dist/web/assets/workbench-shell-B8lBrj2O.js.br +0 -0
  222. package/dist/web/assets/workbench-shell-B8lBrj2O.js.gz +0 -0
@@ -1,13 +1,13 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { value_exports } from './chunk-6JWQNFM2.js';
3
- import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-NUJPWN62.js';
3
+ import { require_pino, require_safe_stable_stringify, CodexProtocolMappingError, CodexProviderConnectionError, RpcConnectionClosedError, RpcProtocolError, RpcResponseError, RpcTimeoutError } from './chunk-YG3QMLCD.js';
4
4
  import { WorkbenchPetProviderError, listTaskCatalog, PendingRequestResolutionError, deleteArchivedTasks, queryCompletedTasks, CompletedTasksQueryError, submitTask, TaskSubmissionError, collectQuestionGroups, formatQuestionAnswers, ProjectTodoError, saveProjectTodo } from './chunk-B2673ODM.js';
5
5
  import { Type, SkillInstallScopeSchema, ScheduledTaskSchema, SubmitTaskResponseSchema, AgentTaskSchema, AsyncQuestionGroupSchema, AnswerAsyncQuestionResultSchema, AgentTurnSchema, DEFAULT_COMMIT_MESSAGE_MODEL, TEMPORARY_TASK_API_PATH, TEMPORARY_TASK_SCOPE_ID, MAX_AGENT_FILE_BYTES, AccessStatusResponseSchema, PairAccessRequestSchema, BingWallpaperCatalogSchema, HealthResponseSchema, AppInfoResponseSchema, AppUpdateProgressResponseSchema, AgentMutationErrorSchema, InstallAppUpdateResponseSchema, InstallAppUpdateRequestSchema, EventStreamMetricsResponseSchema, AgentCapabilitiesSchema, AgentModelPageSchema, AgentGlobalSettingsResponseSchema, AgentGlobalSettingsSchema, MAX_AGENT_IMAGE_BYTES, MAX_AGENT_TEXT_BYTES, GlobalInstructionsSchema, MemorySettingsSchema, AgentPreferencesSchema, SaveGlobalInstructionsSchema, MemorySettingsUpdateSchema, PersonalizationResetSchema, AgentProviderConnectionStatusSchema, StartOfficialProviderLoginResponseSchema, StartOfficialProviderLoginRequestSchema, AgentProviderConnectionMutationResponseSchema, CancelProviderLoginRequestSchema, ConfigureCustomProviderResponseSchema, ConfigureCustomProviderRequestSchema, WorkbenchPetCatalogResponseSchema, WorkbenchPetDownloadResponseSchema, WorkbenchPetDownloadRequestSchema, ProjectPageSchema, HostFileListingSchema, HostFileQuerySchema, ProjectDirectoryListingSchema, ProjectDirectoryQuerySchema, ProjectOpenCapabilitiesResponseSchema, OpenProjectResponseSchema, ProjectRootQuerySchema, OpenProjectRequestSchema, ReorderProjectsResponseSchema, ReorderProjectsRequestSchema, AgentSkillPageSchema, AgentProjectDefaultsResponseSchema, AgentProjectDefaultsSchema, AddProjectResponseSchema, AddProjectRequestSchema, RenameProjectResponseSchema, RenameProjectRequestSchema, RemoveProjectResponseSchema, RemoveProjectRequestSchema, InstalledSkillPageSchema, OfficialPluginPageSchema, OfficialPluginDetailSchema, OfficialPluginInstallResponseSchema, OfficialPluginUninstallResponseSchema, ClawhubSkillPageSchema, ClawhubSkillDetailSchema, ConfiguredMcpServerPageSchema, OpenSkillDirectoryResponseSchema, SetSkillEnabledResponseSchema, SetMcpServerEnabledResponseSchema, SkillInstallResponseSchema, ScheduledTaskPreviewSchema, ScheduledTaskPreviewRequestSchema, ScheduledTaskPageSchema, ScheduledTaskMutationResponseSchema, ScheduledTaskInputSchema, DeleteScheduledTaskResponseSchema, SetScheduledTaskEnabledRequestSchema, AgentTaskPageSchema, UnsubscribeAgentTaskResponseSchema, AgentTaskSnapshotResponseSchema, AgentMcpServerPageSchema, AgentBackgroundTerminalPageSchema, TerminateAgentBackgroundTerminalResponseSchema, PinAgentTaskResponseSchema, PinAgentTaskRequestSchema, RenameAgentTaskResponseSchema, RenameAgentTaskRequestSchema, ArchiveAgentTaskResponseSchema, ArchiveAgentTaskRequestSchema, UnarchiveAgentTaskResponseSchema, UnarchiveAgentTaskRequestSchema, DeleteAgentTaskResponseSchema, DeleteAgentTaskRequestSchema, TaskSearchPageSchema, TaskSearchQuerySchema, SearchOccurrencesPageSchema, SearchOccurrencesQuerySchema, StartAgentTaskResponseSchema, StartAgentTaskRequestSchema, StartAgentTurnResponseSchema, StartAgentTurnRequestSchema, SteerAgentTurnResponseSchema, SteerAgentTurnRequestSchema, InterruptAgentTurnResponseSchema, InterruptAgentTurnRequestSchema, ResolvePendingRequestResponseSchema, ResolvePendingRequestRequestSchema, SubmitTaskRequestSchema, AsyncQuestionPageSchema, AnswerAsyncQuestionResponseSchema, AnswerAsyncQuestionRequestSchema, DismissAsyncQuestionsRequestSchema, ProjectTodoPageSchema, ProjectTodoResponseSchema, ProjectTodoDraftSchema, SaveProjectTodoRequestSchema, DeleteProjectTodoResponseSchema, DeleteProjectTodoRequestSchema, AgentQueuedSubmissionListSchema, AddAgentQueuedSubmissionResponseSchema, AddAgentQueuedSubmissionRequestSchema, UpdateAgentQueuedSubmissionResponseSchema, UpdateAgentQueuedSubmissionRequestSchema, DeleteAgentQueuedSubmissionResponseSchema, ReorderAgentQueuedSubmissionsResponseSchema, ReorderAgentQueuedSubmissionsRequestSchema, StartAgentQueuedSubmissionResponseSchema, StartAgentQueuedSubmissionRequestSchema, AgentPromptInputSchema, AgentProviderConnectionRecordSchema, MAX_AGENT_IMAGES, MAX_AGENT_IMAGE_TOTAL_BYTES, MAX_AGENT_FILE_TOTAL_BYTES, ProjectGitStatusSchema, ProjectGitStatusQuerySchema, ProjectGitHistoryPageSchema, ProjectGitHistoryQuerySchema, ProjectGitCommitFilesPageSchema, ProjectGitCommitFilesQuerySchema, ProjectGitCommitFileDiffSchema, ProjectGitCommitFileDiffQuerySchema, SwitchProjectBranchRequestSchema, CreateProjectBranchRequestSchema, GenerateCommitMessageResponseSchema, GenerateCommitMessageRequestSchema, CommitProjectChangesResponseSchema, CommitProjectChangesRequestSchema, ProjectFileTreeSchema, ProjectFileTreeQuerySchema, ProjectFileSearchPageSchema, ProjectFileSearchQuerySchema, StopProjectFileSearchResponseSchema, StopProjectFileSearchRequestSchema, ProjectSourceFileQuerySchema, ProjectSourceFileSchema, AgentAttachmentUploadResponseSchema, HostFileKindSchema, ImportHostAttachmentRequestSchema, AgentAttachmentKindSchema, AgentTaskSettingsResponseSchema, AgentTaskSettingsSchema, ReloadAgentMcpServersResponseSchema, ReloadAgentMcpServersRequestSchema, ReviewAgentTaskResponseSchema, ReviewAgentTaskRequestSchema, CompactAgentTaskResponseSchema, CompactAgentTaskRequestSchema, ForkAgentTaskResponseSchema, ForkAgentTaskRequestSchema, UploadAgentFeedbackResponseSchema, UploadAgentFeedbackRequestSchema, DeleteArchivedTasksResponseSchema, DeleteArchivedTasksRequestSchema, AgentTaskCatalogSchema, TaskCatalogQuerySchema, CompletedTasksPageSchema, CompletedTasksQuerySchema, UpdateTaskSettingsAndDefaultsResponseSchema, UpdateTaskSettingsAndDefaultsRequestSchema, NavigableAgentTaskResponseSchema, OpenAgentTaskAttachmentResponseSchema, OpenAgentTaskAttachmentRequestSchema, UpdateAgentGoalResponseSchema, UpdateAgentGoalRequestSchema, ClearAgentGoalResponseSchema, ProjectTodoSchema, AgentMessageAttachmentSchema, ProjectGitWorktreePageSchema, CreateProjectWorktreeResponseSchema, CreateProjectWorktreeRequestSchema, ProjectWorktreeMutationResponseSchema, SwitchProjectWorktreeRequestSchema, RenameProjectFileResponseSchema, RenameProjectFileRequestSchema, DeleteProjectFileResponseSchema, DeleteProjectFileRequestSchema, MAX_EVENT_BATCH_SIZE } from './chunk-ZXTTTT25.js';
6
6
  import { __commonJS, __require, __toESM } from './chunk-K6J42667.js';
7
7
  import { Buffer as Buffer$1 } from 'buffer';
8
8
  import { randomBytes, createHash, timingSafeEqual, randomUUID } from 'crypto';
9
9
  import { createWriteStream, constants, createReadStream } from 'fs';
10
- import { mkdtemp, rm, realpath, lstat, stat, readFile, open, mkdir, readdir, access, writeFile, rename, unlink, link, rmdir, readlink } from 'fs/promises';
10
+ import { mkdtemp, rm, realpath, lstat, stat, readFile, open, readdir, mkdir, access, writeFile, rename, unlink, link, rmdir, readlink } from 'fs/promises';
11
11
  import { tmpdir, homedir } from 'os';
12
12
  import { join, isAbsolute, dirname, resolve, relative, sep, basename, extname, normalize, win32, posix } from 'path';
13
13
  import { Transform, Readable } from 'stream';
@@ -13180,49 +13180,49 @@ var require_fast_uri = __commonJS({
13180
13180
  schemelessOptions.skipEscape = true;
13181
13181
  return serialize(resolved, schemelessOptions);
13182
13182
  }
13183
- function resolveComponent(base, relative8, options, skipNormalization) {
13183
+ function resolveComponent(base, relative9, options, skipNormalization) {
13184
13184
  const target = {};
13185
13185
  if (!skipNormalization) {
13186
13186
  base = parse2(serialize(base, options), options);
13187
- relative8 = parse2(serialize(relative8, options), options);
13187
+ relative9 = parse2(serialize(relative9, options), options);
13188
13188
  }
13189
13189
  options = options || {};
13190
- if (!options.tolerant && relative8.scheme) {
13191
- target.scheme = relative8.scheme;
13192
- target.userinfo = relative8.userinfo;
13193
- target.host = relative8.host;
13194
- target.port = relative8.port;
13195
- target.path = removeDotSegments(relative8.path || "");
13196
- target.query = relative8.query;
13190
+ if (!options.tolerant && relative9.scheme) {
13191
+ target.scheme = relative9.scheme;
13192
+ target.userinfo = relative9.userinfo;
13193
+ target.host = relative9.host;
13194
+ target.port = relative9.port;
13195
+ target.path = removeDotSegments(relative9.path || "");
13196
+ target.query = relative9.query;
13197
13197
  } else {
13198
- if (relative8.userinfo !== void 0 || relative8.host !== void 0 || relative8.port !== void 0) {
13199
- target.userinfo = relative8.userinfo;
13200
- target.host = relative8.host;
13201
- target.port = relative8.port;
13202
- target.path = removeDotSegments(relative8.path || "");
13203
- target.query = relative8.query;
13198
+ if (relative9.userinfo !== void 0 || relative9.host !== void 0 || relative9.port !== void 0) {
13199
+ target.userinfo = relative9.userinfo;
13200
+ target.host = relative9.host;
13201
+ target.port = relative9.port;
13202
+ target.path = removeDotSegments(relative9.path || "");
13203
+ target.query = relative9.query;
13204
13204
  } else {
13205
- if (!relative8.path) {
13205
+ if (!relative9.path) {
13206
13206
  target.path = base.path;
13207
- if (relative8.query !== void 0) {
13208
- target.query = relative8.query;
13207
+ if (relative9.query !== void 0) {
13208
+ target.query = relative9.query;
13209
13209
  } else {
13210
13210
  target.query = base.query;
13211
13211
  }
13212
13212
  } else {
13213
- if (relative8.path[0] === "/") {
13214
- target.path = removeDotSegments(relative8.path);
13213
+ if (relative9.path[0] === "/") {
13214
+ target.path = removeDotSegments(relative9.path);
13215
13215
  } else {
13216
13216
  if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
13217
- target.path = "/" + relative8.path;
13217
+ target.path = "/" + relative9.path;
13218
13218
  } else if (!base.path) {
13219
- target.path = relative8.path;
13219
+ target.path = relative9.path;
13220
13220
  } else {
13221
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative8.path;
13221
+ target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative9.path;
13222
13222
  }
13223
13223
  target.path = removeDotSegments(target.path);
13224
13224
  }
13225
- target.query = relative8.query;
13225
+ target.query = relative9.query;
13226
13226
  }
13227
13227
  target.userinfo = base.userinfo;
13228
13228
  target.host = base.host;
@@ -13230,7 +13230,7 @@ var require_fast_uri = __commonJS({
13230
13230
  }
13231
13231
  target.scheme = base.scheme;
13232
13232
  }
13233
- target.fragment = relative8.fragment;
13233
+ target.fragment = relative9.fragment;
13234
13234
  return target;
13235
13235
  }
13236
13236
  function equal(uriA, uriB, options) {
@@ -19715,49 +19715,49 @@ var require_fast_uri2 = __commonJS({
19715
19715
  schemelessOptions.skipEscape = true;
19716
19716
  return serialize(resolved, schemelessOptions);
19717
19717
  }
19718
- function resolveComponent(base, relative8, options, skipNormalization) {
19718
+ function resolveComponent(base, relative9, options, skipNormalization) {
19719
19719
  const target = {};
19720
19720
  if (!skipNormalization) {
19721
19721
  base = parse2(serialize(base, options), options);
19722
- relative8 = parse2(serialize(relative8, options), options);
19722
+ relative9 = parse2(serialize(relative9, options), options);
19723
19723
  }
19724
19724
  options = options || {};
19725
- if (!options.tolerant && relative8.scheme) {
19726
- target.scheme = relative8.scheme;
19727
- target.userinfo = relative8.userinfo;
19728
- target.host = relative8.host;
19729
- target.port = relative8.port;
19730
- target.path = removeDotSegments(relative8.path || "");
19731
- target.query = relative8.query;
19725
+ if (!options.tolerant && relative9.scheme) {
19726
+ target.scheme = relative9.scheme;
19727
+ target.userinfo = relative9.userinfo;
19728
+ target.host = relative9.host;
19729
+ target.port = relative9.port;
19730
+ target.path = removeDotSegments(relative9.path || "");
19731
+ target.query = relative9.query;
19732
19732
  } else {
19733
- if (relative8.userinfo !== void 0 || relative8.host !== void 0 || relative8.port !== void 0) {
19734
- target.userinfo = relative8.userinfo;
19735
- target.host = relative8.host;
19736
- target.port = relative8.port;
19737
- target.path = removeDotSegments(relative8.path || "");
19738
- target.query = relative8.query;
19733
+ if (relative9.userinfo !== void 0 || relative9.host !== void 0 || relative9.port !== void 0) {
19734
+ target.userinfo = relative9.userinfo;
19735
+ target.host = relative9.host;
19736
+ target.port = relative9.port;
19737
+ target.path = removeDotSegments(relative9.path || "");
19738
+ target.query = relative9.query;
19739
19739
  } else {
19740
- if (!relative8.path) {
19740
+ if (!relative9.path) {
19741
19741
  target.path = base.path;
19742
- if (relative8.query !== void 0) {
19743
- target.query = relative8.query;
19742
+ if (relative9.query !== void 0) {
19743
+ target.query = relative9.query;
19744
19744
  } else {
19745
19745
  target.query = base.query;
19746
19746
  }
19747
19747
  } else {
19748
- if (relative8.path[0] === "/") {
19749
- target.path = removeDotSegments(relative8.path);
19748
+ if (relative9.path[0] === "/") {
19749
+ target.path = removeDotSegments(relative9.path);
19750
19750
  } else {
19751
19751
  if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
19752
- target.path = "/" + relative8.path;
19752
+ target.path = "/" + relative9.path;
19753
19753
  } else if (!base.path) {
19754
- target.path = relative8.path;
19754
+ target.path = relative9.path;
19755
19755
  } else {
19756
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative8.path;
19756
+ target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative9.path;
19757
19757
  }
19758
19758
  target.path = removeDotSegments(target.path);
19759
19759
  }
19760
- target.query = relative8.query;
19760
+ target.query = relative9.query;
19761
19761
  }
19762
19762
  target.userinfo = base.userinfo;
19763
19763
  target.host = base.host;
@@ -19765,7 +19765,7 @@ var require_fast_uri2 = __commonJS({
19765
19765
  }
19766
19766
  target.scheme = base.scheme;
19767
19767
  }
19768
- target.fragment = relative8.fragment;
19768
+ target.fragment = relative9.fragment;
19769
19769
  return target;
19770
19770
  }
19771
19771
  function equal(uriA, uriB, options) {
@@ -36591,10 +36591,10 @@ var require_resolve_block_map = __commonJS({
36591
36591
  let offset = bm.offset;
36592
36592
  let commentEnd = null;
36593
36593
  for (const collItem of bm.items) {
36594
- const { start, key, sep: sep7, value } = collItem;
36594
+ const { start, key, sep: sep8, value } = collItem;
36595
36595
  const keyProps = resolveProps.resolveProps(start, {
36596
36596
  indicator: "explicit-key-ind",
36597
- next: key ?? sep7?.[0],
36597
+ next: key ?? sep8?.[0],
36598
36598
  offset,
36599
36599
  onError: onError2,
36600
36600
  parentIndent: bm.indent,
@@ -36608,7 +36608,7 @@ var require_resolve_block_map = __commonJS({
36608
36608
  else if ("indent" in key && key.indent !== bm.indent)
36609
36609
  onError2(offset, "BAD_INDENT", startColMsg);
36610
36610
  }
36611
- if (!keyProps.anchor && !keyProps.tag && !sep7) {
36611
+ if (!keyProps.anchor && !keyProps.tag && !sep8) {
36612
36612
  commentEnd = keyProps.end;
36613
36613
  if (keyProps.comment) {
36614
36614
  if (map.comment)
@@ -36632,7 +36632,7 @@ var require_resolve_block_map = __commonJS({
36632
36632
  ctx.atKey = false;
36633
36633
  if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
36634
36634
  onError2(keyStart, "DUPLICATE_KEY", "Map keys must be unique");
36635
- const valueProps = resolveProps.resolveProps(sep7 ?? [], {
36635
+ const valueProps = resolveProps.resolveProps(sep8 ?? [], {
36636
36636
  indicator: "map-value-ind",
36637
36637
  next: value,
36638
36638
  offset: keyNode.range[2],
@@ -36648,7 +36648,7 @@ var require_resolve_block_map = __commonJS({
36648
36648
  if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024)
36649
36649
  onError2(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key");
36650
36650
  }
36651
- const valueNode = value ? composeNode(ctx, value, valueProps, onError2) : composeEmptyNode(ctx, offset, sep7, null, valueProps, onError2);
36651
+ const valueNode = value ? composeNode(ctx, value, valueProps, onError2) : composeEmptyNode(ctx, offset, sep8, null, valueProps, onError2);
36652
36652
  if (ctx.schema.compat)
36653
36653
  utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError2);
36654
36654
  offset = valueNode.range[2];
@@ -36737,7 +36737,7 @@ var require_resolve_end = __commonJS({
36737
36737
  let comment = "";
36738
36738
  if (end) {
36739
36739
  let hasSpace = false;
36740
- let sep7 = "";
36740
+ let sep8 = "";
36741
36741
  for (const token of end) {
36742
36742
  const { source, type } = token;
36743
36743
  switch (type) {
@@ -36751,13 +36751,13 @@ var require_resolve_end = __commonJS({
36751
36751
  if (!comment)
36752
36752
  comment = cb;
36753
36753
  else
36754
- comment += sep7 + cb;
36755
- sep7 = "";
36754
+ comment += sep8 + cb;
36755
+ sep8 = "";
36756
36756
  break;
36757
36757
  }
36758
36758
  case "newline":
36759
36759
  if (comment)
36760
- sep7 += source;
36760
+ sep8 += source;
36761
36761
  hasSpace = true;
36762
36762
  break;
36763
36763
  default:
@@ -36799,18 +36799,18 @@ var require_resolve_flow_collection = __commonJS({
36799
36799
  let offset = fc.offset + fc.start.source.length;
36800
36800
  for (let i2 = 0; i2 < fc.items.length; ++i2) {
36801
36801
  const collItem = fc.items[i2];
36802
- const { start, key, sep: sep7, value } = collItem;
36802
+ const { start, key, sep: sep8, value } = collItem;
36803
36803
  const props = resolveProps.resolveProps(start, {
36804
36804
  flow: fcName,
36805
36805
  indicator: "explicit-key-ind",
36806
- next: key ?? sep7?.[0],
36806
+ next: key ?? sep8?.[0],
36807
36807
  offset,
36808
36808
  onError: onError2,
36809
36809
  parentIndent: fc.indent,
36810
36810
  startOnNewline: false
36811
36811
  });
36812
36812
  if (!props.found) {
36813
- if (!props.anchor && !props.tag && !sep7 && !value) {
36813
+ if (!props.anchor && !props.tag && !sep8 && !value) {
36814
36814
  if (i2 === 0 && props.comma)
36815
36815
  onError2(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`);
36816
36816
  else if (i2 < fc.items.length - 1)
@@ -36864,8 +36864,8 @@ var require_resolve_flow_collection = __commonJS({
36864
36864
  }
36865
36865
  }
36866
36866
  }
36867
- if (!isMap && !sep7 && !props.found) {
36868
- const valueNode = value ? composeNode(ctx, value, props, onError2) : composeEmptyNode(ctx, props.end, sep7, null, props, onError2);
36867
+ if (!isMap && !sep8 && !props.found) {
36868
+ const valueNode = value ? composeNode(ctx, value, props, onError2) : composeEmptyNode(ctx, props.end, sep8, null, props, onError2);
36869
36869
  coll.items.push(valueNode);
36870
36870
  offset = valueNode.range[2];
36871
36871
  if (isBlock(value))
@@ -36877,7 +36877,7 @@ var require_resolve_flow_collection = __commonJS({
36877
36877
  if (isBlock(key))
36878
36878
  onError2(keyNode.range, "BLOCK_IN_FLOW", blockMsg);
36879
36879
  ctx.atKey = false;
36880
- const valueProps = resolveProps.resolveProps(sep7 ?? [], {
36880
+ const valueProps = resolveProps.resolveProps(sep8 ?? [], {
36881
36881
  flow: fcName,
36882
36882
  indicator: "map-value-ind",
36883
36883
  next: value,
@@ -36888,8 +36888,8 @@ var require_resolve_flow_collection = __commonJS({
36888
36888
  });
36889
36889
  if (valueProps.found) {
36890
36890
  if (!isMap && !props.found && ctx.options.strict) {
36891
- if (sep7)
36892
- for (const st of sep7) {
36891
+ if (sep8)
36892
+ for (const st of sep8) {
36893
36893
  if (st === valueProps.found)
36894
36894
  break;
36895
36895
  if (st.type === "newline") {
@@ -36906,7 +36906,7 @@ var require_resolve_flow_collection = __commonJS({
36906
36906
  else
36907
36907
  onError2(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`);
36908
36908
  }
36909
- const valueNode = value ? composeNode(ctx, value, valueProps, onError2) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep7, null, valueProps, onError2) : null;
36909
+ const valueNode = value ? composeNode(ctx, value, valueProps, onError2) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep8, null, valueProps, onError2) : null;
36910
36910
  if (valueNode) {
36911
36911
  if (isBlock(value))
36912
36912
  onError2(valueNode.range, "BLOCK_IN_FLOW", blockMsg);
@@ -37084,7 +37084,7 @@ var require_resolve_block_scalar = __commonJS({
37084
37084
  chompStart = i2 + 1;
37085
37085
  }
37086
37086
  let value = "";
37087
- let sep7 = "";
37087
+ let sep8 = "";
37088
37088
  let prevMoreIndented = false;
37089
37089
  for (let i2 = 0; i2 < contentStart; ++i2)
37090
37090
  value += lines[i2][0].slice(trimIndent) + "\n";
@@ -37101,24 +37101,24 @@ var require_resolve_block_scalar = __commonJS({
37101
37101
  indent = "";
37102
37102
  }
37103
37103
  if (type === Scalar.Scalar.BLOCK_LITERAL) {
37104
- value += sep7 + indent.slice(trimIndent) + content;
37105
- sep7 = "\n";
37104
+ value += sep8 + indent.slice(trimIndent) + content;
37105
+ sep8 = "\n";
37106
37106
  } else if (indent.length > trimIndent || content[0] === " ") {
37107
- if (sep7 === " ")
37108
- sep7 = "\n";
37109
- else if (!prevMoreIndented && sep7 === "\n")
37110
- sep7 = "\n\n";
37111
- value += sep7 + indent.slice(trimIndent) + content;
37112
- sep7 = "\n";
37107
+ if (sep8 === " ")
37108
+ sep8 = "\n";
37109
+ else if (!prevMoreIndented && sep8 === "\n")
37110
+ sep8 = "\n\n";
37111
+ value += sep8 + indent.slice(trimIndent) + content;
37112
+ sep8 = "\n";
37113
37113
  prevMoreIndented = true;
37114
37114
  } else if (content === "") {
37115
- if (sep7 === "\n")
37115
+ if (sep8 === "\n")
37116
37116
  value += "\n";
37117
37117
  else
37118
- sep7 = "\n";
37118
+ sep8 = "\n";
37119
37119
  } else {
37120
- value += sep7 + content;
37121
- sep7 = " ";
37120
+ value += sep8 + content;
37121
+ sep8 = " ";
37122
37122
  prevMoreIndented = false;
37123
37123
  }
37124
37124
  }
@@ -37299,25 +37299,25 @@ var require_resolve_flow_scalar = __commonJS({
37299
37299
  if (!match)
37300
37300
  return source;
37301
37301
  let res = match[1];
37302
- let sep7 = " ";
37302
+ let sep8 = " ";
37303
37303
  let pos = first2.lastIndex;
37304
37304
  line.lastIndex = pos;
37305
37305
  while (match = line.exec(source)) {
37306
37306
  if (match[1] === "") {
37307
- if (sep7 === "\n")
37308
- res += sep7;
37307
+ if (sep8 === "\n")
37308
+ res += sep8;
37309
37309
  else
37310
- sep7 = "\n";
37310
+ sep8 = "\n";
37311
37311
  } else {
37312
- res += sep7 + match[1];
37313
- sep7 = " ";
37312
+ res += sep8 + match[1];
37313
+ sep8 = " ";
37314
37314
  }
37315
37315
  pos = line.lastIndex;
37316
37316
  }
37317
37317
  const last2 = /[ \t]*(.*)/sy;
37318
37318
  last2.lastIndex = pos;
37319
37319
  match = last2.exec(source);
37320
- return res + sep7 + (match?.[1] ?? "");
37320
+ return res + sep8 + (match?.[1] ?? "");
37321
37321
  }
37322
37322
  function doubleQuotedValue(source, onError2) {
37323
37323
  let res = "";
@@ -38120,14 +38120,14 @@ var require_cst_stringify = __commonJS({
38120
38120
  }
38121
38121
  }
38122
38122
  }
38123
- function stringifyItem({ start, key, sep: sep7, value }) {
38123
+ function stringifyItem({ start, key, sep: sep8, value }) {
38124
38124
  let res = "";
38125
38125
  for (const st of start)
38126
38126
  res += st.source;
38127
38127
  if (key)
38128
38128
  res += stringifyToken(key);
38129
- if (sep7)
38130
- for (const st of sep7)
38129
+ if (sep8)
38130
+ for (const st of sep8)
38131
38131
  res += st.source;
38132
38132
  if (value)
38133
38133
  res += stringifyToken(value);
@@ -39289,18 +39289,18 @@ var require_parser = __commonJS({
39289
39289
  if (this.type === "map-value-ind") {
39290
39290
  const prev = getPrevProps(this.peek(2));
39291
39291
  const start = getFirstKeyStartProps(prev);
39292
- let sep7;
39292
+ let sep8;
39293
39293
  if (scalar.end) {
39294
- sep7 = scalar.end;
39295
- sep7.push(this.sourceToken);
39294
+ sep8 = scalar.end;
39295
+ sep8.push(this.sourceToken);
39296
39296
  delete scalar.end;
39297
39297
  } else
39298
- sep7 = [this.sourceToken];
39298
+ sep8 = [this.sourceToken];
39299
39299
  const map = {
39300
39300
  type: "block-map",
39301
39301
  offset: scalar.offset,
39302
39302
  indent: scalar.indent,
39303
- items: [{ start, key: scalar, sep: sep7 }]
39303
+ items: [{ start, key: scalar, sep: sep8 }]
39304
39304
  };
39305
39305
  this.onKeyLine = true;
39306
39306
  this.stack[this.stack.length - 1] = map;
@@ -39453,15 +39453,15 @@ var require_parser = __commonJS({
39453
39453
  } else if (isFlowToken(it.key) && !includesToken(it.sep, "newline")) {
39454
39454
  const start2 = getFirstKeyStartProps(it.start);
39455
39455
  const key = it.key;
39456
- const sep7 = it.sep;
39457
- sep7.push(this.sourceToken);
39456
+ const sep8 = it.sep;
39457
+ sep8.push(this.sourceToken);
39458
39458
  delete it.key;
39459
39459
  delete it.sep;
39460
39460
  this.stack.push({
39461
39461
  type: "block-map",
39462
39462
  offset: this.offset,
39463
39463
  indent: this.indent,
39464
- items: [{ start: start2, key, sep: sep7 }]
39464
+ items: [{ start: start2, key, sep: sep8 }]
39465
39465
  });
39466
39466
  } else if (start.length > 0) {
39467
39467
  it.sep = it.sep.concat(start, this.sourceToken);
@@ -39655,13 +39655,13 @@ var require_parser = __commonJS({
39655
39655
  const prev = getPrevProps(parent);
39656
39656
  const start = getFirstKeyStartProps(prev);
39657
39657
  fixFlowSeqItems(fc);
39658
- const sep7 = fc.end.splice(1, fc.end.length);
39659
- sep7.push(this.sourceToken);
39658
+ const sep8 = fc.end.splice(1, fc.end.length);
39659
+ sep8.push(this.sourceToken);
39660
39660
  const map = {
39661
39661
  type: "block-map",
39662
39662
  offset: fc.offset,
39663
39663
  indent: fc.indent,
39664
- items: [{ start, key: fc, sep: sep7 }]
39664
+ items: [{ start, key: fc, sep: sep8 }]
39665
39665
  };
39666
39666
  this.onKeyLine = true;
39667
39667
  this.stack[this.stack.length - 1] = map;
@@ -41495,7 +41495,7 @@ var require_parseParams = __commonJS({
41495
41495
  // node_modules/.pnpm/@fastify+busboy@3.2.0/node_modules/@fastify/busboy/lib/utils/basename.js
41496
41496
  var require_basename = __commonJS({
41497
41497
  "node_modules/.pnpm/@fastify+busboy@3.2.0/node_modules/@fastify/busboy/lib/utils/basename.js"(exports, module) {
41498
- module.exports = function basename7(path) {
41498
+ module.exports = function basename8(path) {
41499
41499
  if (typeof path !== "string") {
41500
41500
  return "";
41501
41501
  }
@@ -41521,7 +41521,7 @@ var require_multipart = __commonJS({
41521
41521
  var Dicer = require_Dicer();
41522
41522
  var parseParams = require_parseParams();
41523
41523
  var decodeText = require_decodeText();
41524
- var basename7 = require_basename();
41524
+ var basename8 = require_basename();
41525
41525
  var getLimit = require_getLimit();
41526
41526
  var RE_BOUNDARY = /^boundary$/i;
41527
41527
  var RE_FIELD = /^form-data$/i;
@@ -41638,7 +41638,7 @@ var require_multipart = __commonJS({
41638
41638
  } else if (RE_FILENAME.test(parsed[i2][0])) {
41639
41639
  filename = parsed[i2][1];
41640
41640
  if (!preservePath) {
41641
- filename = basename7(filename);
41641
+ filename = basename8(filename);
41642
41642
  }
41643
41643
  }
41644
41644
  }
@@ -46561,7 +46561,7 @@ var require_parseTokenList = __commonJS({
46561
46561
  // node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js
46562
46562
  var require_depd = __commonJS({
46563
46563
  "node_modules/.pnpm/depd@2.0.0/node_modules/depd/index.js"(exports, module) {
46564
- var relative8 = __require("path").relative;
46564
+ var relative9 = __require("path").relative;
46565
46565
  module.exports = depd;
46566
46566
  var basePath = process.cwd();
46567
46567
  function containsNamespace(str, namespace) {
@@ -46753,7 +46753,7 @@ var require_depd = __commonJS({
46753
46753
  return formatted;
46754
46754
  }
46755
46755
  function formatLocation(callSite) {
46756
- return relative8(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2];
46756
+ return relative9(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2];
46757
46757
  }
46758
46758
  function getStack() {
46759
46759
  var limit = Error.stackTraceLimit;
@@ -47283,7 +47283,7 @@ var require_send = __commonJS({
47283
47283
  var join12 = path.join;
47284
47284
  var normalize2 = path.normalize;
47285
47285
  var resolve8 = path.resolve;
47286
- var sep7 = path.sep;
47286
+ var sep8 = path.sep;
47287
47287
  var Readable4 = stream.Readable;
47288
47288
  var BYTES_RANGE_REGEXP = /^ *bytes=/;
47289
47289
  var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3;
@@ -47360,20 +47360,20 @@ var require_send = __commonJS({
47360
47360
  let parts;
47361
47361
  if (root !== null) {
47362
47362
  if (path2) {
47363
- path2 = normalize2("." + sep7 + path2);
47363
+ path2 = normalize2("." + sep8 + path2);
47364
47364
  }
47365
47365
  if (UP_PATH_REGEXP.test(path2)) {
47366
47366
  debug2('malicious path "%s"', path2);
47367
47367
  return { statusCode: 403 };
47368
47368
  }
47369
- parts = path2.split(sep7);
47369
+ parts = path2.split(sep8);
47370
47370
  path2 = normalize2(join12(root, path2));
47371
47371
  } else {
47372
47372
  if (UP_PATH_REGEXP.test(path2)) {
47373
47373
  debug2('malicious path "%s"', path2);
47374
47374
  return { statusCode: 403 };
47375
47375
  }
47376
- parts = normalize2(path2).split(sep7);
47376
+ parts = normalize2(path2).split(sep8);
47377
47377
  path2 = resolve8(path2);
47378
47378
  }
47379
47379
  return { path: path2, parts };
@@ -47666,7 +47666,7 @@ var require_send = __commonJS({
47666
47666
  }
47667
47667
  async function sendFile(request2, path2, options) {
47668
47668
  const { error, stat: stat6 } = await tryStat(path2);
47669
- if (error && error.code === "ENOENT" && !extname3(path2) && path2[path2.length - 1] !== sep7) {
47669
+ if (error && error.code === "ENOENT" && !extname3(path2) && path2[path2.length - 1] !== sep8) {
47670
47670
  let err2 = error;
47671
47671
  for (let i2 = 0; i2 < options.extensions.length; i2++) {
47672
47672
  const extension = options.extensions[i2];
@@ -48404,7 +48404,7 @@ var require_static = __commonJS({
48404
48404
  var path = __require("path");
48405
48405
  var { fileURLToPath } = __require("url");
48406
48406
  var { statSync } = __require("fs");
48407
- var { basename: basename7 } = __require("path");
48407
+ var { basename: basename8 } = __require("path");
48408
48408
  var { glob } = require_index_min();
48409
48409
  var fp = require_fastify_plugin();
48410
48410
  var send = require_send2();
@@ -48429,7 +48429,7 @@ var require_static = __commonJS({
48429
48429
  deflate: ".deflate"
48430
48430
  };
48431
48431
  function contentDisposition(filename) {
48432
- return create(basename7(filename));
48432
+ return create(basename8(filename));
48433
48433
  }
48434
48434
  async function fastifyStatic2(fastify, opts) {
48435
48435
  const suppressWarning = opts.suppressWarning ?? false;
@@ -61757,6 +61757,10 @@ function createGitEnvironment() {
61757
61757
  ([key]) => !UNSAFE_GIT_ENVIRONMENT_KEYS.has(key.toLowerCase())
61758
61758
  )
61759
61759
  );
61760
+ const globalConfig = process.env["CODEXLY_GIT_CONFIG"];
61761
+ if (globalConfig !== void 0 && globalConfig.length > 0) {
61762
+ environment["GIT_CONFIG_GLOBAL"] = globalConfig;
61763
+ }
61760
61764
  environment["GIT_OPTIONAL_LOCKS"] = "0";
61761
61765
  return environment;
61762
61766
  }
@@ -61769,11 +61773,13 @@ function createGitCommandExecutor(options = {}) {
61769
61773
  abort: controller.signal,
61770
61774
  baseDir: repositoryRoot,
61771
61775
  maxConcurrentProcesses: 1,
61772
- trimmed: false
61776
+ trimmed: false,
61777
+ // GIT_CONFIG_GLOBAL 仅能由 CODEXLY_GIT_CONFIG 映射,允许 simple-git 使用该受控路径。
61778
+ unsafe: { allowUnsafeConfigPaths: true }
61773
61779
  };
61774
61780
  if (options.binary !== void 0) {
61775
61781
  clientOptions.binary = options.binary;
61776
- clientOptions.unsafe = { allowUnsafeCustomBinary: true };
61782
+ clientOptions.unsafe = { allowUnsafeConfigPaths: true, allowUnsafeCustomBinary: true };
61777
61783
  }
61778
61784
  const git = simpleGit(clientOptions);
61779
61785
  let failure;
@@ -64583,6 +64589,12 @@ var ProjectOpenTargetInvalidError = class extends Error {
64583
64589
  this.name = "ProjectOpenTargetInvalidError";
64584
64590
  }
64585
64591
  };
64592
+ function createDisabledProjectOpenService(platform = process.platform) {
64593
+ return {
64594
+ getCapabilities: () => Promise.resolve({ apps: [], platform }),
64595
+ open: (_projectRoot, appId) => Promise.reject(new ProjectOpenAppUnavailableError(appId))
64596
+ };
64597
+ }
64586
64598
  function isOutsideProject3(relativePath) {
64587
64599
  return relativePath === ".." || relativePath.startsWith(`..${sep}`) || isAbsolute(relativePath);
64588
64600
  }
@@ -66470,6 +66482,31 @@ var ProjectDirectoryBrowserError = class extends Error {
66470
66482
  }
66471
66483
  reason;
66472
66484
  };
66485
+ function isWithinRoot(root, path) {
66486
+ const relativePath = relative(root, path);
66487
+ return relativePath === "" || !relativePath.startsWith(`..${sep}`) && relativePath !== ".." && !isAbsolute(relativePath);
66488
+ }
66489
+ async function normalizeWorkspaceRoots(roots) {
66490
+ if (roots === void 0) return [];
66491
+ return Promise.all(
66492
+ roots.map(async (root) => {
66493
+ if (!isAbsolute(root)) {
66494
+ throw new ProjectDirectoryBrowserError(
66495
+ "Workspace root path must be absolute",
66496
+ "invalid-directory"
66497
+ );
66498
+ }
66499
+ const normalizedRoot = await realpath(root);
66500
+ if (!(await lstat(normalizedRoot)).isDirectory()) {
66501
+ throw new ProjectDirectoryBrowserError(
66502
+ "Workspace root path must identify a directory",
66503
+ "invalid-directory"
66504
+ );
66505
+ }
66506
+ return normalizedRoot;
66507
+ })
66508
+ );
66509
+ }
66473
66510
  function toDirectoryError(error) {
66474
66511
  const code = error.code;
66475
66512
  const unavailable = code === "EACCES" || code === "EPERM";
@@ -66483,7 +66520,14 @@ function compareDirectories(left, right) {
66483
66520
  return left.name.localeCompare(right.name, "en", { sensitivity: "base" }) || left.name.localeCompare(right.name, "en");
66484
66521
  }
66485
66522
  async function resolveProjectDirectory(requestedPath, options = {}) {
66486
- const path = requestedPath ?? options.homePath ?? homedir();
66523
+ let workspaceRoots;
66524
+ try {
66525
+ workspaceRoots = await normalizeWorkspaceRoots(options.workspaceRoots);
66526
+ } catch (error) {
66527
+ if (error instanceof ProjectDirectoryBrowserError) throw error;
66528
+ throw toDirectoryError(error);
66529
+ }
66530
+ const path = requestedPath ?? workspaceRoots[0] ?? options.homePath ?? homedir();
66487
66531
  if (!isAbsolute(path)) {
66488
66532
  throw new ProjectDirectoryBrowserError(
66489
66533
  "Project directory path must be absolute",
@@ -66498,6 +66542,12 @@ async function resolveProjectDirectory(requestedPath, options = {}) {
66498
66542
  "invalid-directory"
66499
66543
  );
66500
66544
  }
66545
+ if (workspaceRoots.length > 0 && !workspaceRoots.some((root) => isWithinRoot(root, normalizedPath))) {
66546
+ throw new ProjectDirectoryBrowserError(
66547
+ "Project directory is outside the configured workspace roots",
66548
+ "invalid-directory"
66549
+ );
66550
+ }
66501
66551
  return normalizedPath;
66502
66552
  } catch (error) {
66503
66553
  if (error instanceof ProjectDirectoryBrowserError) {
@@ -66507,10 +66557,11 @@ async function resolveProjectDirectory(requestedPath, options = {}) {
66507
66557
  }
66508
66558
  }
66509
66559
  async function readProjectDirectory(requestedPath, options = {}) {
66510
- const [path, roots] = await Promise.all([
66560
+ const [path, workspaceRoots] = await Promise.all([
66511
66561
  resolveProjectDirectory(requestedPath, options),
66512
- (options.filesystemRoots ?? listFilesystemRoots)()
66562
+ normalizeWorkspaceRoots(options.workspaceRoots)
66513
66563
  ]);
66564
+ const roots = workspaceRoots.length > 0 ? workspaceRoots.map((root) => ({ name: basename(root), path: root })) : await (options.filesystemRoots ?? listFilesystemRoots)();
66514
66565
  let entries;
66515
66566
  try {
66516
66567
  const children = await readdir(path, { withFileTypes: true });
@@ -66525,7 +66576,7 @@ async function readProjectDirectory(requestedPath, options = {}) {
66525
66576
  const parentPath = dirname(path);
66526
66577
  return {
66527
66578
  entries,
66528
- parentPath: parentPath === path ? null : parentPath,
66579
+ parentPath: parentPath === path || workspaceRoots.some((root) => root === path) ? null : parentPath,
66529
66580
  path,
66530
66581
  roots
66531
66582
  };
@@ -72960,7 +73011,10 @@ async function createCodexlyServer(options) {
72960
73011
  });
72961
73012
  const readImageFile = options.readProjectImageFile ?? readProjectImageFile;
72962
73013
  const readSourceFile = options.readProjectSourceFile ?? readProjectSourceFile;
72963
- const projectOpenService = options.projectOpenService ?? createProjectOpenService();
73014
+ const projectOpenService = options.access === void 0 ? options.projectOpenService ?? createProjectOpenService() : createDisabledProjectOpenService();
73015
+ const workspaceBrowserOptions = options.workspaceRoots === void 0 ? {} : { workspaceRoots: options.workspaceRoots };
73016
+ const browseProjectDirectory = options.readProjectDirectory ?? ((path, browserOptions) => readProjectDirectory(path, { ...browserOptions, ...workspaceBrowserOptions }));
73017
+ const selectProjectDirectory = options.resolveProjectDirectory ?? ((path) => resolveProjectDirectory(path, workspaceBrowserOptions));
72964
73018
  const skillMarketService = options.skillMarketService ?? createSkillMarketService({
72965
73019
  catalog: createClawhubClient(),
72966
73020
  projectOpenService,
@@ -73203,7 +73257,7 @@ async function createCodexlyServer(options) {
73203
73257
  searchProjectFiles,
73204
73258
  stopProjectFileSearch,
73205
73259
  readHostFileDirectory: options.readHostFileDirectory ?? readHostFileDirectory,
73206
- readProjectDirectory: options.readProjectDirectory ?? readProjectDirectory,
73260
+ readProjectDirectory: browseProjectDirectory,
73207
73261
  readImageFile,
73208
73262
  readInheritedTaskSettings,
73209
73263
  readProjectGitHistory: options.readProjectGitHistory ?? readProjectGitHistory,
@@ -73215,7 +73269,7 @@ async function createCodexlyServer(options) {
73215
73269
  releaseProjectContext,
73216
73270
  resolveProviderTurnInput,
73217
73271
  runIdempotent: idempotencyRunner.run,
73218
- resolveProjectDirectory: options.resolveProjectDirectory ?? resolveProjectDirectory,
73272
+ resolveProjectDirectory: selectProjectDirectory,
73219
73273
  resolveHostAttachment: options.resolveHostAttachment ?? resolveHostAttachment,
73220
73274
  readScheduledTaskAttachment: async (projectId, attachmentId) => scheduledTaskAttachmentManager === void 0 ? void 0 : scheduledTaskAttachmentManager.read(projectId, attachmentId),
73221
73275
  settingsRepository: options.settingsRepository,